: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,.badge.certified,.badge.in_progress,.badge.present{color:#0a7a4b;background:#d8f5e6}.badge.not_enrolled,.badge.missing,.badge.pending,.badge.dropped,.badge.absent{color:#a1281f;background:#fde2e0}.badge.incomplete,.badge.partial,.badge.late,.badge.justified{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}.person-header{flex-direction:column;gap:.75rem;margin-bottom:.9rem;display:flex}.person-actions{flex-wrap:wrap;gap:.5rem;display:flex}.person-actions .btn{text-align:center;flex:auto}.form-stack{flex-direction:column;gap:.55rem;display:flex}.form-stack .input,.form-stack .select,.form-stack .btn{width:100%}.btn-row{flex-wrap:wrap;gap:.5rem;display:flex}.btn-row .btn,.btn-row a.btn,.btn-row label.btn{text-align:center;flex:calc(50% - .25rem);min-width:0}.btn-sm{font-size:.8rem;padding:.3rem .65rem!important}.doc-block{border-bottom:1px solid #e7eee9;padding:.85rem 0}.doc-block:last-child{border-bottom:0}.doc-head{justify-content:space-between;align-items:flex-start;gap:.6rem;margin-bottom:.55rem;display:flex}.doc-pages{flex-direction:column;gap:.35rem;margin-top:.55rem;display:flex}.page-row{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.page-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}button.linkish{color:var(--brand);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.select-compact{flex-shrink:0;width:auto;min-width:7.5rem}.subblock{border-bottom:1px solid #e7eee9;margin-bottom:1rem;padding-bottom:1rem}.subblock:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}.path-steps{margin:.5rem 0 0;padding-left:1.2rem;font-size:.85rem}.list-item.stack-mobile{align-items:flex-start}@media (width>=720px){.person-header{flex-direction:row;justify-content:space-between;align-items:flex-start}.person-actions .btn{flex:none}.form-stack{flex-flow:wrap;align-items:center}.form-stack .input,.form-stack .select{flex:140px;width:auto}.form-stack>.btn{flex:none;width:auto}.btn-row .btn,.btn-row a.btn,.btn-row label.btn{flex:none}}
