:root{--bg:#eef3f0;--bg-accent:#d9ebe3;--surface:#fff;--ink:#12241c;--muted:#5a6f65;--brand:#0b6e4f;--brand-2:#14966c;--warn:#c49212;--danger:#c0392b;--info:#1a6fbf;--purple:#7030a0;--orange:#e8a87c;--ok:#00a85a;--radius:14px;--shadow:0 10px 30px #12241c14;--font:"DM Sans", system-ui, sans-serif;--display:"Fraunces", Georgia, serif}*{box-sizing:border-box}html,body,#app{min-height:100%;font-family:var(--font);color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%, #cfe8dc 0%, transparent 55%), radial-gradient(900px 500px at 100% 0%, #f3e6c8 0%, transparent 45%), var(--bg);margin:0}a{color:var(--brand);text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{grid-template-rows:auto 1fr auto;min-height:100vh;display:grid}.topbar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:20;background:#ffffffd1;border-bottom:1px solid #0b6e4f14;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1.1rem;display:flex;position:sticky;top:0}.brand{font-family:var(--display);color:var(--brand);letter-spacing:-.02em;font-size:1.35rem;font-weight:700}.main{width:min(1100px,100%);margin:0 auto;padding:1rem 1rem 5.5rem}.bottom-nav{padding:.55rem .4rem calc(.55rem + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff0;border-top:1px solid #0b6e4f1a;grid-template-columns:repeat(5,1fr);gap:.25rem;display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{text-align:center;color:var(--muted);border-radius:10px;padding:.35rem .2rem;font-size:.72rem;font-weight:600}.bottom-nav a.router-link-active{color:var(--brand);background:#e5f4ec}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:.9rem;padding:1rem}.grid-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}@media (width>=720px){.grid-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}.stat{background:linear-gradient(160deg,#fff,#f3faf6);border:1px solid #0b6e4f14;border-radius:12px;padding:.85rem}.stat strong{color:var(--brand);font-size:1.4rem;display:block}.stat span{color:var(--muted);font-size:.82rem}h1,h2{font-family:var(--display);letter-spacing:-.02em;margin:0 0 .75rem}h1{font-size:1.6rem}h2{font-size:1.2rem}.muted{color:var(--muted)}.row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.btn{background:var(--brand);color:#fff;cursor:pointer;border:0;border-radius:999px;padding:.55rem 1rem;font-weight:600}.btn.secondary{color:var(--brand);background:#e8f2ec}.btn.danger{background:var(--danger)}.btn:disabled{opacity:.55;cursor:not-allowed}.input,.select,.textarea{background:#fff;border:1px solid #cfdcd5;border-radius:10px;width:100%;padding:.65rem .75rem}.textarea{resize:vertical;min-height:90px}.label{color:var(--muted);margin-bottom:.25rem;font-size:.82rem;display:block}.field{margin-bottom:.75rem}.badge{text-transform:uppercase;letter-spacing:.03em;border-radius:999px;align-items:center;padding:.15rem .55rem;font-size:.72rem;font-weight:700;display:inline-flex}.badge.active,.badge.complete,.badge.paid,.badge.in_progress_or_done{color:#0a7a4b;background:#d8f5e6}.badge.not_enrolled,.badge.missing,.badge.pending{color:#a1281f;background:#fde2e0}.badge.incomplete,.badge.partial{color:#8a6a00;background:#fff3bf}.badge.unknown_status{color:#9a4e12;background:#ffe2cc}.badge.instructor{color:#6a248f;background:#edd9f7}.badge.minor{color:#145a9c;background:#d6e9fb}.badge.interested,.badge.confirmed{color:var(--brand);background:#e5f4ec}.list-item{border-bottom:1px solid #e7eee9;justify-content:space-between;gap:.75rem;padding:.85rem 0;display:flex}.list-item:last-child{border-bottom:0}.list-item a{color:inherit;font-weight:600}.login-wrap{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{width:min(400px,100%);box-shadow:var(--shadow);background:#ffffffeb;border-radius:22px;padding:1.6rem}.login-card .brand{margin-bottom:.25rem;font-size:2rem}.error{color:var(--danger);margin-top:.5rem;font-size:.9rem}.empty{color:var(--muted);padding:1rem 0}table.data{border-collapse:collapse;width:100%;font-size:.9rem}table.data th,table.data td{text-align:left;border-bottom:1px solid #e7eee9;padding:.55rem .35rem}
