:root{--g-purple:#5e4590;--g-purple-dark:#2d1b48;--g-purple-700:#4a3673;--g-green:#690;--g-green-600:#5c8a00;--g-green-700:#527a00;--g-bg:#f4f2f8;--g-surface:#fff;--g-border:#e4e0ec;--g-border-muted:#efedf4;--g-text:#241b33;--g-text-muted:#6b6480;--g-text-inverse:#fff;--g-success:#690;--g-success-bg:#eef6df;--g-warning:#b7791f;--g-warning-bg:#fdf3e0;--g-error:#c0392b;--g-error-bg:#fbe9e7;--g-info:#5e4590;--g-info-bg:#efeaf7;--g-font-heading:"Nunito", system-ui, sans-serif;--g-font-body:"Roboto", system-ui, sans-serif;--g-font-mono:"Roboto Mono", ui-monospace, "Cascadia Code", monospace;--g-radius-sm:6px;--g-radius:10px;--g-radius-lg:16px;--g-radius-pill:999px;--g-space-1:4px;--g-space-2:8px;--g-space-3:12px;--g-space-4:16px;--g-space-5:24px;--g-space-6:32px;--g-space-8:48px;--g-shadow-sm:0 1px 2px #2d1b480f;--g-shadow:0 4px 16px #2d1b4814;--g-shadow-lg:0 12px 32px #2d1b4829;--g-rail-width:248px}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--g-font-body);color:var(--g-text);background:var(--g-bg);-webkit-font-smoothing:antialiased;line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:var(--g-font-heading);color:var(--g-text);margin:0;font-weight:800;line-height:1.2}a{color:var(--g-purple);text-decoration:none}a:hover{text-decoration:underline}.g-btn{justify-content:center;align-items:center;gap:var(--g-space-2);font-family:var(--g-font-heading);text-transform:uppercase;letter-spacing:.03em;border-radius:var(--g-radius);background:var(--g-green);color:var(--g-text-inverse);cursor:pointer;border:0;padding:.7rem 1.25rem;font-size:.82rem;font-weight:700;transition:background .15s;display:inline-flex}.g-btn:hover{background:var(--g-green-700);text-decoration:none}.g-btn:disabled{opacity:.5;cursor:not-allowed}.g-btn.is-submitting:before{content:"";border:2px solid;border-right-color:#0000;border-radius:50%;flex:none;width:.85em;height:.85em;animation:.6s linear infinite g-spin}@keyframes g-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.g-btn.is-submitting:before{animation-duration:1.5s}}.g-btn--secondary{color:var(--g-purple);border:1.5px solid var(--g-border);background:0 0}.g-btn--secondary:hover{background:var(--g-border-muted)}.g-card{background:var(--g-surface);border:1px solid var(--g-border);border-radius:var(--g-radius-lg);box-shadow:var(--g-shadow-sm);padding:var(--g-space-5)}.g-badge{align-items:center;gap:var(--g-space-1);border-radius:var(--g-radius-pill);text-transform:uppercase;letter-spacing:.03em;background:var(--g-info-bg);color:var(--g-info);padding:.2rem .7rem;font-size:.72rem;font-weight:700;display:inline-flex}.g-badge--success{background:var(--g-success-bg);color:var(--g-success)}.g-badge--warning{background:var(--g-warning-bg);color:var(--g-warning)}.g-badge--error{background:var(--g-error-bg);color:var(--g-error)}.g-mono{font-family:var(--g-font-mono)}.g-auth{min-height:100vh;padding:var(--g-space-5);background:var(--g-purple-dark);place-items:center;display:grid}.g-auth__card{background:var(--g-surface);border-radius:var(--g-radius-lg);width:100%;max-width:400px;box-shadow:var(--g-shadow-lg);padding:var(--g-space-6);gap:var(--g-space-4);flex-direction:column;display:flex}.g-auth__brand{font-family:var(--g-font-heading);color:var(--g-purple);font-size:1.5rem;font-weight:800}.g-auth__brand span{color:var(--g-text-muted);font-size:.9rem;font-weight:700;display:block}.g-auth__title{margin-top:var(--g-space-1);font-size:1.2rem}.g-auth__sub{color:var(--g-text-muted);margin:0;font-size:.85rem}.g-auth__link{text-align:center;font-size:.82rem}.g-field{gap:var(--g-space-2);color:var(--g-text);flex-direction:column;font-size:.85rem;font-weight:600;display:flex}.g-field input,.g-field select{font-family:var(--g-font-body);border:1.5px solid var(--g-border);border-radius:var(--g-radius);background:#fff;width:100%;padding:.65rem .8rem;font-size:.95rem}.g-field input:focus,.g-field select:focus{border-color:var(--g-purple);outline:none}.g-field input:disabled{background:var(--g-border-muted);color:var(--g-text-muted)}.g-field__hint{color:var(--g-text-muted);font-size:.78rem;font-weight:400}.g-alert{border-radius:var(--g-radius);padding:.6rem .8rem;font-size:.85rem}.g-alert--error{background:var(--g-error-bg);color:var(--g-error)}.g-alert--success{background:var(--g-success-bg);color:var(--g-success)}.g-btn--block{width:100%}#app-error{text-align:center;max-width:32rem;margin:4rem auto;padding:0 1rem}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--g-space-5);margin-bottom:var(--g-space-6);flex-wrap:wrap;display:flex}.page-eyebrow{font-family:var(--g-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--g-text-muted);margin-bottom:.5rem;font-size:.7rem}.page-eyebrow a{color:inherit;font-weight:700}.page-head h1{letter-spacing:-.01em;font-size:clamp(1.7rem,3vw,2rem);font-weight:500;line-height:1.1}.page-sub{color:var(--g-text-muted);max-width:60ch;margin:.5rem 0 0;font-size:.95rem}.page-actions{gap:var(--g-space-3);flex-wrap:wrap;align-items:center;margin-left:auto;display:flex}.stat-grid{gap:var(--g-space-4);margin-bottom:var(--g-space-5);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.stat{background:var(--g-surface);border:1px solid var(--g-border);border-radius:var(--g-radius-lg);box-shadow:var(--g-shadow-sm);padding:var(--g-space-4) var(--g-space-5);flex-direction:column;gap:.4rem;display:flex}.stat__label{font-family:var(--g-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--g-text-muted);font-size:.68rem;font-weight:600}.stat__value{font-family:var(--g-font-heading);color:var(--g-text);font-variant-numeric:tabular-nums;font-size:2.1rem;font-weight:500;line-height:1}.stat__sub{color:var(--g-text-muted);font-size:.8rem}.section-head{justify-content:space-between;align-items:baseline;gap:var(--g-space-3);margin-bottom:var(--g-space-4);display:flex}.section-title{font-family:var(--g-font-heading);font-size:1.1rem;font-weight:600}.section-meta{font-family:var(--g-font-mono);letter-spacing:.04em;color:var(--g-text-muted);font-size:.72rem}.g-table{border-collapse:collapse;width:100%;font-size:.9rem}.g-table thead th{text-align:left;font-family:var(--g-font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--g-text-muted);border-bottom:1px solid var(--g-border);padding:0 .9rem .7rem;font-size:.68rem;font-weight:600}.g-table tbody td{border-bottom:1px solid var(--g-border-muted);padding:.85rem .9rem}.g-table tbody tr:last-child td{border-bottom:0}.g-table tbody tr:hover td{background:var(--g-border-muted)}
