:root{--background:#fff;--foreground:#171717;--color-primary:#2f6fed;--color-primary-hover:#2559c4;--color-primary-ink:#1a4fb4;--color-ink:#171717;--color-ink-strong:#333;--color-ink-muted:#555;--color-ink-subtle:#666;--color-ink-faint:#6d6d6d;--surface:#fff;--surface-hover:#f5f5f5;--surface-track:#f0f0f0;--border:#e2e2e2;--border-strong:#d0d0d0;--border-control:#ccc;--border-subtle:#eee;--danger-ink:#7a1212;--danger-surface:#fdecec;--danger-border:#f3b6b6;--success-ink:#1e7a37;--success-surface:#e6f5ea;--chart-created:#2f6fed;--chart-completed:#2f9e5c;--chart-failed:#d34d4d;--radius-sm:.375rem;--radius-md:.5rem;--radius-pill:999px;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--shadow-sm:0 1px 2px #1717170d;--shadow-md:0 1px 3px #17171714, 0 1px 2px #1717170a;--focus-ring:0 0 0 3px #2f6fed66;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--badge-gray-surface:#eceef1;--badge-gray-ink:#384049;--badge-blue-surface:#e8f0fe;--badge-blue-ink:#1a4fb4;--badge-cyan-surface:#e0f7fa;--badge-cyan-ink:#006064;--badge-amber-surface:#fff6d6;--badge-amber-ink:#7a5c00;--badge-orange-surface:#fdece0;--badge-orange-ink:#9a4a00;--badge-purple-surface:#f3e8fd;--badge-purple-ink:#6a1b9a;--badge-green-surface:#e6f5ea;--badge-green-ink:#1e7a37;--badge-red-surface:#fdecec;--badge-red-ink:#7a1212}*{box-sizing:border-box;margin:0;padding:0}html,body{max-width:100vw;overflow-x:hidden}body{color:var(--foreground);background:var(--background);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.5}a{color:inherit;text-decoration:none}:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-sm);outline:none}.auth-screen{min-height:100vh;padding:var(--space-6);background:var(--surface-hover);justify-content:center;align-items:center;display:flex}.auth-card{width:100%;max-width:24rem;padding:var(--space-8);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);text-align:center}.auth-card h1{margin-bottom:var(--space-2);font-size:1.25rem}.auth-subtitle{color:var(--color-ink-muted);margin-bottom:var(--space-6)}.auth-message{margin-bottom:var(--space-5);padding:var(--space-3);border-radius:var(--radius-sm);font-size:.9rem}.auth-message-error{color:var(--danger-ink);background:var(--danger-surface);border:1px solid var(--danger-border)}.auth-button{color:#fff;background:var(--color-primary);border-radius:var(--radius-sm);cursor:pointer;border:none;width:100%;padding:.65rem 1rem;font-size:.95rem;transition:background .15s}.auth-button:hover{background:var(--color-primary-hover)}.auth-button:disabled{opacity:.6;cursor:default}.page{max-width:60rem;padding:var(--space-8) var(--space-6);margin:0 auto}.page h1{margin-bottom:var(--space-1);font-size:1.5rem}.page-subtitle{color:var(--color-ink-muted);margin-bottom:var(--space-6)}.app-shell{flex-direction:column;min-height:100vh;display:flex}.topbar{align-items:center;gap:var(--space-4) var(--space-6);padding:var(--space-3) var(--space-6);background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);flex-wrap:wrap;display:flex}.brand{align-items:center;gap:var(--space-3);display:flex}.brand-dot{border-radius:var(--radius-pill);background:var(--color-primary);width:.8rem;height:.8rem;box-shadow:0 0 0 3px #2f6fed26}.brand-text{flex-direction:column;line-height:1.2;display:flex}.brand-text strong{font-size:.95rem}.brand-sub{color:var(--color-ink-faint);font-size:.75rem}.main-nav{gap:var(--space-2);display:flex}.nav-link{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--color-ink-muted);font-size:.9rem;transition:background .15s,color .15s}.nav-link:hover{background:var(--surface-hover);color:var(--color-ink)}.nav-link.active{background:var(--badge-blue-surface);color:var(--color-primary-ink);font-weight:600}.user-box{align-items:center;gap:var(--space-3);margin-left:auto;display:flex}.user-email{color:var(--color-ink-muted);font-size:.85rem}.content{width:100%;max-width:80rem;padding:var(--space-6);flex:1;margin:0 auto}.panel{padding:var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:var(--space-6)}.panel h2{margin-bottom:var(--space-4);font-size:1.05rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:var(--space-6)}.card-header{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle);display:flex}.card-title{font-size:1.05rem}.card-body{padding:var(--space-5)}.kpi-grid{gap:var(--space-3);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));display:grid}.kpi-card,.stat-card{gap:var(--space-1);padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.kpi-label,.stat-label{color:var(--color-ink-subtle);font-size:.8rem}.kpi-value,.stat-value{font-size:1.5rem;font-weight:600;line-height:1.2}.stat-hint{color:var(--color-ink-faint);font-size:.8rem}.stat-card.accent-green{border-left:3px solid var(--success-ink)}.stat-card.accent-red{border-left:3px solid var(--danger-ink)}.stat-card.accent-amber{border-left:3px solid var(--badge-amber-ink)}.stat-card.accent-blue{border-left:3px solid var(--color-primary)}.stat-card.accent-neutral{border-left:3px solid var(--border-strong)}.btn{padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--color-ink);cursor:pointer;font-family:inherit;font-size:.9rem;transition:background .15s,border-color .15s}.btn:hover{background:var(--surface-hover)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{background:var(--surface);color:var(--color-ink)}.btn-ghost{color:var(--color-ink-muted);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--color-ink)}.link-button{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:.85rem;text-decoration:underline}.link-button:disabled{color:var(--color-ink-faint);cursor:default;text-decoration:none}.form{gap:var(--space-3);flex-direction:column;max-width:24rem;display:flex}.form-row{gap:var(--space-1);flex-direction:column;display:flex}.form-row label{color:var(--color-ink-strong);font-size:.85rem}.form-row input[type=text],.form-row input[type=email]{padding:var(--space-2) .65rem;border:1px solid var(--border-control);border-radius:var(--radius-sm);font-size:.95rem}.form-row-checkbox{align-items:center;gap:var(--space-2);flex-direction:row}.form-row-checkbox label{color:inherit;font-size:.95rem}.form .auth-button{align-self:flex-start;width:auto;padding:.55rem 1.25rem}.filter-bar{align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;display:flex}.field{gap:var(--space-1);color:var(--color-ink-strong);flex-direction:column;font-size:.85rem;display:flex}.field select,.field input{padding:var(--space-2) .65rem;border:1px solid var(--border-control);border-radius:var(--radius-sm);background:var(--surface);font-family:inherit;font-size:.95rem}.form-row input:hover,.field select:hover,.field input:hover{border-color:var(--border-strong)}.filter-actions{gap:var(--space-2);display:flex}.form-error{color:var(--danger-ink);background:var(--danger-surface);border:1px solid var(--danger-border);border-radius:var(--radius-sm);padding:.6rem var(--space-3);font-size:.85rem}.form-error-inline{margin-top:var(--space-1)}.table-scroll{overflow-x:auto}.roster-table,.predictions-table{border-collapse:collapse;width:100%;font-size:.85rem}.roster-table th,.roster-table td{text-align:left;padding:.6rem var(--space-2);border-bottom:1px solid var(--border-subtle);vertical-align:top}.roster-actions{gap:var(--space-3);flex-wrap:wrap;align-items:baseline;display:flex}.predictions-table th,.predictions-table td{padding:var(--space-2) .6rem;border-bottom:1px solid var(--border-subtle);text-align:left;white-space:nowrap}.predictions-table th{color:var(--color-ink-muted);border-bottom-width:2px;font-weight:600}.predictions-table tbody tr:hover{background:var(--surface-hover)}.status-badge{padding:.15rem var(--space-2);border-radius:var(--radius-pill);white-space:nowrap;background:var(--badge-gray-surface);color:var(--badge-gray-ink);font-size:.8rem;font-weight:500;line-height:1.4;display:inline-block;box-shadow:inset 0 0 0 1px #1717170f}.status-badge-admin{background:var(--badge-blue-surface);color:var(--color-primary-ink)}.status-badge-enabled{background:var(--success-surface);color:var(--success-ink)}.status-badge-disabled{background:var(--danger-surface);color:var(--danger-ink)}.badge-gray{background:var(--badge-gray-surface);color:var(--badge-gray-ink)}.badge-blue{background:var(--badge-blue-surface);color:var(--badge-blue-ink)}.badge-cyan{background:var(--badge-cyan-surface);color:var(--badge-cyan-ink)}.badge-amber{background:var(--badge-amber-surface);color:var(--badge-amber-ink)}.badge-orange{background:var(--badge-orange-surface);color:var(--badge-orange-ink)}.badge-purple{background:var(--badge-purple-surface);color:var(--badge-purple-ink)}.badge-green{background:var(--badge-green-surface);color:var(--badge-green-ink)}.badge-red{background:var(--badge-red-surface);color:var(--badge-red-ink)}.bar-list{gap:var(--space-2);flex-direction:column;list-style:none;display:flex}.bar-row{grid-template-columns:9rem 1fr 3rem;align-items:center;gap:.6rem;font-size:.85rem;display:grid}.bar-row-label{color:var(--color-ink-strong)}.bar-track{background:var(--surface-track);border-radius:.3rem;height:.6rem;overflow:hidden}.bar-fill{background:var(--color-primary);border-radius:.3rem;height:100%;display:block}.bar-row-value{text-align:right;color:var(--color-ink-strong);font-variant-numeric:tabular-nums}.stat-list{gap:var(--space-2);margin-bottom:var(--space-3);flex-direction:column;display:flex}.stat-list:last-child{margin-bottom:0}.stat-row{justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--border-subtle);font-size:.85rem;display:flex}.stat-row:last-child{border-bottom:none;padding-bottom:0}.stat-row dt{color:var(--color-ink-muted)}.stat-row dd{font-variant-numeric:tabular-nums;font-weight:600}.throughput-legend{gap:var(--space-4);margin-bottom:var(--space-3);font-size:.8rem;display:flex}.legend-item{padding-left:var(--space-4);color:var(--color-ink-muted);position:relative}.legend-item:before{content:"";border-radius:.15rem;width:.7rem;height:.7rem;position:absolute;top:.15rem;left:0}.legend-created:before{background:var(--chart-created)}.legend-completed:before{background:var(--chart-completed)}.legend-failed:before{background:var(--chart-failed)}.throughput-chart{height:9rem;padding-bottom:var(--space-1);align-items:flex-end;gap:.4rem;display:flex;overflow-x:auto}.throughput-day{flex-direction:column;align-items:center;min-width:1.6rem;display:flex}.throughput-bars{align-items:flex-end;gap:2px;width:100%;height:7.5rem;display:flex}.throughput-bar{border-radius:2px 2px 0 0;flex:1;min-height:1px}.throughput-bar-created{background:var(--chart-created)}.throughput-bar-completed{background:var(--chart-completed)}.throughput-bar-failed{background:var(--chart-failed)}.throughput-day-label{color:var(--color-ink-faint);white-space:nowrap;margin-top:.35rem;font-size:.7rem}.dashboard{max-width:72rem;padding:var(--space-6);margin:0 auto}.dashboard-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--border);display:flex}.dashboard-header h1{font-size:1.4rem}.dashboard-subtitle{color:var(--color-ink-muted);font-size:.9rem}.dashboard-signout{padding:var(--space-2) var(--space-4);color:var(--color-ink);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;font-size:.9rem;transition:background .15s}.dashboard-signout:hover{background:var(--surface-hover)}.dashboard-muted{color:var(--color-ink-faint);font-size:.9rem}.dashboard-grid{gap:var(--space-4);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));display:grid}.dashboard-grid .panel{margin-bottom:0}.predictions-screen{width:100%}.predictions-screen h1{margin-bottom:var(--space-1);font-size:1.4rem}.empty-state{padding:var(--space-8) var(--space-6);text-align:center;background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-md);margin-bottom:var(--space-6)}.empty-title{margin-bottom:var(--space-1);font-weight:600}.empty-description{color:var(--color-ink-faint);font-size:.9rem}.error-state{padding:var(--space-5) var(--space-6);background:var(--danger-surface);border:1px solid var(--danger-border);border-radius:var(--radius-md);margin-bottom:var(--space-6)}.error-title{color:var(--danger-ink);margin-bottom:var(--space-1);font-weight:600}.error-message{color:var(--danger-ink);margin-bottom:var(--space-3);font-size:.9rem}.error-actions{gap:var(--space-3);display:flex}.spinner{padding:var(--space-6);color:var(--color-ink-muted);align-items:center;gap:.6rem;font-size:.9rem;display:flex}.spinner-ring{border:2px solid var(--border-strong);border-top-color:var(--color-primary);border-radius:50%;width:1.1rem;height:1.1rem;animation:.8s linear infinite spinner-rotate}.spinner-label{color:var(--color-ink-muted)}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.pagination{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.pagination-info{color:var(--color-ink-muted);font-size:.85rem}.pagination-controls{align-items:flex-end;gap:var(--space-2);display:flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.spinner-ring{animation-duration:0s}}
