:root,:root[data-theme=light]{--bg:oklch(97.6% .006 286);--surface:oklch(100% 0 0);--surface-2:oklch(96.8% .007 286);--surface-3:oklch(93.8% .011 286);--border:oklch(92.2% .009 286);--border-strong:oklch(87% .013 286);--topbar:oklch(97.6% .006 286/.82);--text:oklch(22% .03 284);--text-soft:oklch(38% .025 284);--muted:oklch(55% .02 284);--primary:oklch(52.7% .244 281.6);--primary-hover:oklch(47% .24 281.6);--primary-text:oklch(100% 0 0);--primary-soft:oklch(95.5% .03 284);--primary-soft-2:oklch(91.5% .055 284);--primary-border:oklch(82% .1 283);--ring:oklch(52.7% .244 281.6/.22);--gradient-brand:linear-gradient(135deg, oklch(52.7% .244 281.6), oklch(60% .21 302));--gradient-brand-deep:linear-gradient(135deg, oklch(36% .2 282) 0%, oklch(47% .24 281.6) 55%, oklch(55% .21 302) 100%);--sb-bg:oklch(20.5% .05 281);--sb-bg-2:oklch(24.5% .06 281);--sb-text:oklch(86% .025 284);--sb-strong:oklch(98.5% .005 284);--sb-muted:oklch(64% .045 284);--sb-hover:oklch(100% 0 0/.06);--sb-border:oklch(100% 0 0/.08);--sb-active:oklch(60% .22 282);--sb-active-text:oklch(100% 0 0);--good:oklch(53% .13 155);--good-soft:oklch(96% .035 155);--bad:oklch(55% .2 25);--bad-soft:oklch(96.5% .025 20);--warn:oklch(58% .13 65);--warn-soft:oklch(97% .04 80);--info:oklch(53% .14 245);--info-soft:oklch(96% .025 240);--t-brand:oklch(52.7% .244 281.6);--t-teal:oklch(58% .11 190);--t-amber:oklch(65% .15 62);--t-rose:oklch(60% .2 10);--t-sky:oklch(58% .15 245);--t-green:oklch(58% .14 155);--series-1:oklch(52.7% .244 281.6);--series-2:oklch(65% .13 195);--series-3:oklch(70% .16 55);--radius:16px;--radius-sm:10px;--radius-xs:7px;--shadow-xs:0 1px 2px oklch(25% .03 284/.05);--shadow:0 1px 2px oklch(25% .03 284/.04), 0 2px 8px -2px oklch(25% .05 284/.06);--shadow-md:0 10px 24px -8px oklch(25% .06 284/.14), 0 2px 6px -2px oklch(25% .03 284/.06);--shadow-lg:0 24px 48px -12px oklch(25% .06 284/.2);--shadow-primary:0 1px 2px oklch(40% .2 282/.3), 0 6px 16px -6px oklch(52.7% .244 281.6/.55);--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238b8fa3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}:root[data-theme=dark]{--bg:oklch(15.5% .014 284);--surface:oklch(19.8% .016 284);--surface-2:oklch(23.2% .018 284);--surface-3:oklch(27.5% .02 284);--border:oklch(28.5% .018 284);--border-strong:oklch(35.5% .022 284);--topbar:oklch(15.5% .014 284/.8);--text:oklch(95% .008 284);--text-soft:oklch(82% .012 284);--muted:oklch(67% .018 284);--primary:oklch(68% .158 276.9);--primary-hover:oklch(74% .14 276.9);--primary-text:oklch(18% .04 280);--primary-soft:oklch(27% .06 280);--primary-soft-2:oklch(33% .08 280);--primary-border:oklch(48% .12 278);--ring:oklch(68% .158 276.9/.3);--gradient-brand:linear-gradient(135deg, oklch(68% .158 276.9), oklch(68% .16 302));--gradient-brand-deep:linear-gradient(135deg, oklch(30% .12 282) 0%, oklch(40% .16 279) 55%, oklch(44% .15 300) 100%);--sb-bg:oklch(13% .016 284);--sb-bg-2:oklch(17% .022 284);--sb-active:oklch(68% .158 276.9);--sb-active-text:oklch(16% .04 280);--good:oklch(76% .14 155);--good-soft:oklch(29% .05 155);--bad:oklch(72% .16 22);--bad-soft:oklch(30% .06 22);--warn:oklch(80% .13 75);--warn-soft:oklch(31% .05 70);--info:oklch(76% .11 240);--info-soft:oklch(29% .05 245);--t-brand:oklch(72% .15 277);--t-teal:oklch(76% .11 190);--t-amber:oklch(80% .13 70);--t-rose:oklch(74% .15 12);--t-sky:oklch(76% .12 240);--t-green:oklch(76% .13 155);--series-1:oklch(68% .158 276.9);--series-2:oklch(78% .12 195);--series-3:oklch(78% .14 60);--shadow-xs:0 1px 2px oklch(0% 0 0/.3);--shadow:0 1px 2px oklch(0% 0 0/.3), 0 2px 8px -2px oklch(0% 0 0/.25);--shadow-md:0 10px 24px -8px oklch(0% 0 0/.5);--shadow-lg:0 24px 48px -12px oklch(0% 0 0/.6);--shadow-primary:0 6px 16px -6px oklch(68% .158 276.9/.5);--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}::selection{background:var(--primary-soft-2)}a{color:var(--primary);font-weight:550;text-decoration:none;transition:color .15s}a:hover{color:var(--primary-hover);text-underline-offset:3px;text-decoration:underline}h1,h2,h3{color:var(--text);margin:0;line-height:1.25}h1{letter-spacing:-.028em;font-size:26px;font-weight:750}h2{letter-spacing:-.012em;font-size:15.5px;font-weight:700}h3{font-size:14px;font-weight:650}p{margin:0}input,select,textarea,button{font:inherit;color:inherit}input:not([type=checkbox]):not([type=radio]),select,textarea{background-color:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-width:0;min-height:40px;box-shadow:var(--shadow-xs);padding:8px 12px;transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:var(--muted);opacity:.85}input:not([type=checkbox]):not([type=radio]):hover,select:hover,textarea:hover{border-color:var(--primary-border)}select{appearance:none;background-image:var(--select-chevron);cursor:pointer;background-position:right 10px center;background-repeat:no-repeat;padding-right:34px}textarea{resize:vertical}input:disabled,select:disabled,textarea:disabled{background-color:var(--surface-2);color:var(--muted);cursor:not-allowed}input[type=checkbox],input[type=radio]{accent-color:var(--primary);cursor:pointer;width:16px;height:16px;margin:0}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--primary);box-shadow:0 0 0 4px var(--ring);outline:none}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--radius-xs)}.tone-brand{--tone:var(--t-brand)}.tone-teal{--tone:var(--t-teal)}.tone-amber{--tone:var(--t-amber)}.tone-rose{--tone:var(--t-rose)}.tone-sky{--tone:var(--t-sky)}.tone-green{--tone:var(--t-green)}.shell{min-height:100vh;display:flex}.sidebar{background:linear-gradient(180deg, var(--sb-bg-2), var(--sb-bg) 40%);width:264px;color:var(--sb-text);scrollbar-width:thin;flex-direction:column;flex-shrink:0;height:100vh;padding:22px 14px 16px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{align-items:center;gap:12px;padding:0 8px 20px;display:flex}.brand-mark{background:var(--gradient-brand);color:oklch(100% 0 0);width:38px;height:38px;box-shadow:var(--shadow-primary);border-radius:11px;flex-shrink:0;place-items:center;font-size:16px;font-weight:800;display:grid}.brand-mark svg{width:21px;height:21px}.brand-name{letter-spacing:-.02em;color:var(--text);font-size:16px;font-weight:800}.brand-sub{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:170px;font-size:12px;line-height:1.35;overflow:hidden}.sidebar .brand-name{color:var(--sb-strong)}.sidebar .brand-sub{color:var(--sb-muted)}.school-card{border-radius:var(--radius-sm);border:1px solid var(--sb-border);background:oklch(100% 0 0/.05);align-items:center;gap:10px;margin:0 2px 22px;padding:10px 12px;display:flex}.school-card-icon{width:30px;height:30px;color:var(--sb-strong);background:oklch(100% 0 0/.08);border-radius:8px;flex-shrink:0;place-items:center;display:grid}.school-card-icon svg{width:16px;height:16px}.school-card-text{min-width:0;line-height:1.3}.school-card-name{color:var(--sb-strong);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;overflow:hidden}.school-card-sub{color:var(--sb-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}nav{flex-direction:column;flex:1;gap:2px;display:flex}.nav-group{flex-direction:column;gap:2px;margin-bottom:18px;display:flex}.nav-group-label{color:var(--sb-muted);text-transform:uppercase;letter-spacing:.1em;padding:2px 12px 8px;font-size:10.5px;font-weight:700}.nav-link{border-radius:var(--radius-sm);color:var(--sb-text);align-items:center;gap:12px;padding:9px 12px;font-weight:550;transition:background .15s,color .15s;display:flex;position:relative}.nav-link svg{width:18px;height:18px;color:var(--sb-muted);flex-shrink:0;transition:color .15s}.nav-link:hover{background:var(--sb-hover);color:var(--sb-strong);text-decoration:none}.nav-link:hover svg{color:var(--sb-strong)}.nav-link.active,.nav-link.active:hover{background:var(--sb-active);color:var(--sb-active-text);box-shadow:0 8px 20px -8px var(--sb-active);font-weight:650}.nav-link.active svg{color:var(--sb-active-text)}.nav-link:focus-visible{outline-color:var(--sb-strong)}.sidebar-footer{border-top:1px solid var(--sb-border);padding:14px 4px 0}.who{align-items:center;gap:10px;min-width:0;display:flex}.who-text{min-width:0;line-height:1.35}.who-name{color:var(--sb-strong);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;overflow:hidden}.who-sub{color:var(--sb-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.avatar{background:color-mix(in oklab, var(--tone,var(--t-brand)) 16%, var(--surface));width:36px;height:36px;color:var(--tone,var(--t-brand));letter-spacing:.01em;border-radius:999px;flex-shrink:0;place-items:center;font-size:13px;font-weight:700;display:grid}.avatar-sm{width:32px;height:32px;font-size:12px}.sidebar .avatar{background:var(--gradient-brand);color:oklch(100% 0 0)}.person{align-items:center;gap:11px;min-width:0;display:flex}.person-text{min-width:0;line-height:1.35}.main{background:radial-gradient(900px 320px at 85% -120px, color-mix(in oklab, var(--primary) 9%, transparent), transparent 70%), var(--bg);flex-direction:column;flex:1;min-width:0;display:flex}.topbar{z-index:15;background:var(--topbar);-webkit-backdrop-filter:saturate(1.6)blur(12px);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;height:60px;padding:0 36px;display:flex;position:sticky;top:0}.crumbs{align-items:center;gap:6px;min-width:0;font-size:13px;display:flex}.crumbs svg{width:14px;height:14px;color:var(--muted)}.crumb-muted{color:var(--muted);font-weight:500}.crumb-current{color:var(--text);font-weight:650}.topbar-actions{align-items:center;gap:6px;display:flex}.topbar-divider{background:var(--border-strong);width:1px;height:20px;margin:0 4px}.theme-toggle-btn{-webkit-user-select:none;user-select:none}.theme-toggle-btn svg{flex-shrink:0}.content{flex-direction:column;gap:22px;width:100%;max-width:1400px;margin:0 auto;padding:30px 36px 64px;animation:.3s ease-out fade-in;display:flex}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=860px){.shell{flex-direction:column}.sidebar{width:auto;height:auto;padding:14px 16px 10px;position:relative;overflow:visible}.brand{padding:0 0 12px}.school-card,.sidebar-footer{display:none}nav{scrollbar-width:none;flex-direction:row;gap:4px;padding-bottom:4px;overflow-x:auto}.nav-group{flex-direction:row;margin:0}.nav-group-label{display:none}.nav-link{white-space:nowrap;padding:7px 11px}.topbar{height:54px;padding:0 16px}.content{padding:22px 16px 44px}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;padding-bottom:2px;display:flex}.page-header p{max-width:640px;margin:6px 0 0;font-size:14px}.page-actions{flex-wrap:wrap;gap:8px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;padding:22px}.card-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:-22px -22px 18px;padding:16px 22px;display:flex}.card-header h2{font-size:15px}.link-arrow{align-items:center;gap:4px;font-size:13px;font-weight:600;display:inline-flex}.link-arrow svg{width:15px;height:15px;transition:transform .15s}.link-arrow:hover{text-decoration:none}.link-arrow:hover svg{transform:translate(2px)}.stats{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;transition:box-shadow .2s,transform .2s,border-color .2s;position:relative;overflow:hidden}.stat:after{content:"";background:radial-gradient(circle, color-mix(in oklab, var(--tone,var(--t-brand)) 14%, transparent), transparent 70%);pointer-events:none;border-radius:999px;width:120px;height:120px;position:absolute;bottom:-40px;right:-40px}.stat:hover{box-shadow:var(--shadow-md);border-color:color-mix(in oklab, var(--tone,var(--t-brand)) 30%, var(--border));transform:translateY(-2px)}@media (width<=560px){.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat{padding:14px 16px}.stat-value{font-size:26px}.hero{padding:24px 22px}}.stat-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.stat-label{color:var(--muted);font-size:13px;font-weight:600}.stat-icon{background:color-mix(in oklab, var(--tone,var(--t-brand)) 13%, var(--surface));width:38px;height:38px;color:var(--tone,var(--t-brand));border-radius:11px;flex-shrink:0;place-items:center;display:grid}.stat-icon svg{width:19px;height:19px}.stat-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text);margin-top:6px;font-size:30px;font-weight:800;line-height:1.1}.stat-hint{color:var(--muted);margin-top:6px;font-size:12.5px}.hero{border-radius:calc(var(--radius) + 4px);background:var(--gradient-brand-deep);color:oklch(97% .01 284);box-shadow:var(--shadow-md);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;padding:30px 32px;display:flex;position:relative;overflow:hidden}.hero:before,.hero:after{content:"";pointer-events:none;border-radius:999px;position:absolute}.hero:before{background:radial-gradient(circle,oklch(100% 0 0/.18),#0000 65%);width:360px;height:360px;top:-200px;right:-90px}.hero:after{background:radial-gradient(circle,oklch(80% .15 320/.3),#0000 65%);width:260px;height:260px;bottom:-180px;right:220px}.hero>*{z-index:1;position:relative}.hero-eyebrow{color:oklch(88% .05 284);margin-bottom:6px;font-size:12.5px;font-weight:600}.hero h1{color:oklch(100% 0 0);font-size:28px}.hero p{color:oklch(90% .035 284);margin-top:6px;font-size:14.5px}.hero-actions{flex-wrap:wrap;gap:10px;display:flex}a.btn-hero,.btn-hero{color:oklch(36% .2 282);background:oklch(100% 0 0);border-color:oklch(100% 0 0);box-shadow:0 8px 20px -8px oklch(15% .1 282/.6)}a.btn-hero:hover,.btn-hero:hover:not(:disabled){color:oklch(32% .2 282);background:oklch(96% .02 284);border-color:oklch(96% .02 284)}a.btn-hero-ghost,.btn-hero-ghost{color:oklch(100% 0 0);box-shadow:none;background:oklch(100% 0 0/.12);border-color:oklch(100% 0 0/.28)}a.btn-hero-ghost:hover,.btn-hero-ghost:hover:not(:disabled){color:oklch(100% 0 0);background:oklch(100% 0 0/.2);border-color:oklch(100% 0 0/.4)}.dash-grid{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);align-items:start;gap:22px;display:grid}@media (width<=1100px){.dash-grid{grid-template-columns:1fr}}.quick-links{flex-direction:column;gap:8px;display:flex}a.quick-link{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);align-items:center;gap:12px;padding:12px;transition:border-color .15s,background .15s,box-shadow .15s;display:flex}a.quick-link:hover{border-color:var(--primary-border);background:var(--primary-soft);color:var(--text);text-decoration:none}.quick-link-icon{background:var(--primary-soft);width:36px;height:36px;color:var(--primary);border-radius:10px;flex-shrink:0;place-items:center;display:grid}a.quick-link:hover .quick-link-icon{background:var(--primary);color:var(--primary-text)}.quick-link-icon svg{width:18px;height:18px}.quick-link-text{flex-direction:column;flex:1;min-width:0;line-height:1.35;display:flex}.quick-link-title{font-weight:650}.quick-link-arrow{width:16px;height:16px;color:var(--muted);transition:transform .15s,color .15s}a.quick-link:hover .quick-link-arrow{color:var(--primary);transform:translate(2px)}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);min-height:38px;box-shadow:var(--shadow-xs);cursor:pointer;white-space:nowrap;color:var(--text);justify-content:center;align-items:center;gap:7px;padding:7px 15px;font-size:13.5px;font-weight:600;line-height:1.2;transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform 50ms;display:inline-flex}.btn svg{flex-shrink:0;width:16px;height:16px}a.btn:hover{color:var(--text);text-decoration:none}.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--border-strong)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary,a.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text);box-shadow:var(--shadow-primary)}.btn-primary:hover:not(:disabled),a.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:var(--primary-text)}.btn-ghost{box-shadow:none;color:var(--text-soft);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--surface-3);color:var(--text);border-color:#0000}.btn-danger,a.btn-danger{color:var(--bad)}.btn-danger:hover:not(:disabled){background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.btn-sm{border-radius:var(--radius-xs);min-height:32px;padding:5px 12px;font-size:12.5px}.btn-sm svg{width:15px;height:15px}.btn-block{width:100%;min-height:44px;font-size:14px}.badge{background:var(--surface-2);color:var(--text-soft);border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 10px;font-size:12px;font-weight:650;line-height:1.6;display:inline-flex}.badge-good,.badge-bad,.badge-info,.badge-warn{border-color:#0000}.badge-good:before,.badge-bad:before,.badge-warn:before{content:"";background:currentColor;border-radius:999px;width:6px;height:6px}.badge-good{background:var(--good-soft);color:var(--good)}.badge-bad{background:var(--bad-soft);color:var(--bad)}.badge-info{background:var(--primary-soft);color:var(--primary)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.alert{border-radius:var(--radius-sm);border:1px solid #0000;border-left-width:4px;padding:12px 40px 12px 16px;font-weight:500;position:relative}.alert ul{margin:6px 0 0;padding-left:20px;font-weight:400}.alert-error{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.alert-warn{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.alert-good{background:var(--good-soft);border-color:var(--good);color:var(--good)}.alert-close{border-radius:var(--radius-xs);cursor:pointer;width:26px;height:26px;color:inherit;opacity:.75;background:0 0;border:0;font-size:18px;line-height:1;position:absolute;top:8px;right:10px}.alert-close:hover{opacity:1;background:oklch(50% 0 0/.08)}.loading{color:var(--muted);justify-content:center;align-items:center;gap:10px;padding:48px 8px;font-weight:500;display:flex}.loading:before{content:"";border:2.5px solid var(--primary-soft-2);border-top-color:var(--primary);border-radius:999px;width:20px;height:20px;animation:.7s linear infinite spin}.empty{color:var(--muted);text-align:center;border:1.5px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);padding:40px 16px}.muted{color:var(--muted)}.small{font-size:12.5px}.strong{font-weight:650}.nowrap{white-space:nowrap}.pre-wrap{white-space:pre-wrap;overflow-wrap:anywhere}.row{flex-wrap:wrap;align-items:center;display:flex}.between{justify-content:space-between}.gap-sm{gap:8px}.stack{flex-direction:column;gap:20px;display:flex}.table-wrap{margin:0 -22px;padding:0 22px;overflow-x:auto}.table{border-collapse:separate;border-spacing:0;width:100%}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:12px 14px}.table thead th{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;background:var(--surface-2);border-top:1px solid var(--border);padding-top:10px;padding-bottom:10px;font-size:11px;font-weight:700}.table thead th:first-child{border-left:1px solid var(--border);border-top-left-radius:var(--radius-sm);border-bottom-left-radius:var(--radius-sm)}.table thead th:last-child{border-right:1px solid var(--border);border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm)}.table th:not(thead th){color:var(--text);font-weight:600}.table tbody tr{transition:background .12s}.table tbody tr:hover{background:var(--surface-2)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom:0}.table td{font-variant-numeric:tabular-nums;color:var(--text-soft)}.table td a{font-weight:600}.actions{white-space:nowrap;text-align:right!important}.actions .btn+.btn{margin-left:6px}.sort{cursor:pointer;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;background:0 0;border:0;padding:0}.sort:hover{color:var(--primary)}.pagination{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:4px;padding-top:16px;font-size:13px;display:flex}.pagination .row>span{color:var(--text-soft);padding:0 4px;font-weight:500}.progress{background:var(--surface-3);border-radius:999px;min-width:80px;height:6px;overflow:hidden}.progress>div{background:var(--gradient-brand);border-radius:999px;height:100%;transition:width .4s ease-out}.progress-label{color:var(--text-soft);margin-bottom:4px;font-size:12.5px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238b8fa3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E");background-position:12px;background-repeat:no-repeat;width:280px;max-width:100%;padding-left:36px!important}.tabs{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.tab{cursor:pointer;min-height:30px;color:var(--text-soft);background:0 0;border:1px solid #0000;border-radius:7px;padding:5px 14px;font-size:13px;font-weight:550;transition:background .15s,color .15s}.tab:hover:not(.active){color:var(--text);background:var(--surface-3)}.tab.active{background:var(--surface);border-color:var(--border);color:var(--primary);box-shadow:var(--shadow-xs);font-weight:650}.tabs-page{align-self:flex-start;margin-bottom:-4px}.filters{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.filters .field{min-width:160px}.filters-clear{margin-bottom:1px}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--text);font-size:13px;font-weight:600}.field-hint{color:var(--muted);font-size:12px}.required{color:var(--bad)}.check{cursor:pointer;align-items:center;gap:8px;font-weight:500;display:inline-flex}.grid-2,.grid-3,.grid-4{gap:16px;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.split{grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:20px;display:grid}@media (width<=480px){.split{grid-template-columns:1fr}}.list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.list-item{text-align:left;border-radius:var(--radius-sm);cursor:pointer;width:100%;color:var(--text-soft);background:0 0;border:0;padding:9px 12px;font-weight:500;transition:background .12s}.list-item:hover{background:var(--surface-2);color:var(--text)}.list-item.active{background:var(--primary-soft);color:var(--primary);font-weight:650}.assignment{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);flex-direction:column;gap:12px;padding:14px;display:flex}.assignment-section{padding-left:4px}.checks{flex-wrap:wrap;gap:8px 18px;padding:6px 0 0 24px;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--primary-soft);color:var(--primary);border:1px solid var(--primary-soft-2);border-radius:999px;align-items:center;gap:4px;padding:3px 4px 3px 11px;font-size:13px;font-weight:550;display:inline-flex}.chip button{cursor:pointer;width:20px;height:20px;color:inherit;background:0 0;border:0;border-radius:999px;place-items:center;padding:0;font-size:15px;line-height:1;display:grid}.chip button:hover{background:var(--primary-soft-2)}.picker{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);max-height:300px;overflow-y:auto}.picker-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.picker-row:hover{background:var(--surface-2)}.picker-row:last-child{border-bottom:0}.picker>.muted{padding:12px}.day-chips{flex-wrap:wrap;gap:8px;display:flex}.day-chip{border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:999px;padding:6px 16px;font-weight:550;transition:background .15s,border-color .15s,color .15s;position:relative}.day-chip:hover{border-color:var(--primary-border)}.day-chip input{opacity:0;pointer-events:none;position:absolute}.day-chip.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary);font-weight:650}.day-chip:has(input:focus-visible){outline:2px solid var(--primary);outline-offset:2px}.timetable{border-collapse:separate;border-spacing:6px;min-width:100%}.timetable th{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;text-align:center;white-space:nowrap;padding:6px 4px;font-size:11.5px;font-weight:650}.timetable tbody th{text-align:left;color:var(--text);text-transform:none;letter-spacing:0;font-size:13px}.period-time{text-transform:none;letter-spacing:0;font-size:11.5px;font-weight:500}.timetable td.cell{min-width:160px}.timetable td select{background-position:right 8px center;width:100%;min-height:36px;padding:7px 30px 7px 10px;font-size:12.5px}.timetable td.filled select{background-color:var(--primary-soft);border-color:var(--primary-soft-2);color:var(--text);font-weight:550}.timetable td.changed select{border-color:var(--warn);background-color:var(--warn-soft)}.timetable td.conflict select{border-color:var(--bad);background-color:var(--bad-soft);color:var(--bad)}.timetable .break{background:repeating-linear-gradient(45deg, var(--surface-2), var(--surface-2) 6px, var(--surface-3) 6px, var(--surface-3) 12px);border-radius:var(--radius-xs);min-width:36px}.chart{width:100%;min-height:300px}.insight-title{margin-bottom:10px}.insight-title.good{color:var(--good)}.insight-title.bad{color:var(--bad)}.insight-group{margin-bottom:14px}.insight-students{margin:6px 0 0;padding:0;list-style:none}.insight-students li{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:7px 0;display:flex}.insight-students li:last-child{border-bottom:0}.score{font-variant-numeric:tabular-nums;font-weight:650}.score.good{color:var(--good)}.score.bad{color:var(--bad)}.details{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);padding:12px 14px;transition:border-color .15s}.details+.details{margin-top:8px}.details:hover{border-color:var(--border-strong)}.details summary{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:6px;list-style:none;display:flex}.details summary::-webkit-details-marker{display:none}.details summary:before{content:"";border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);align-self:center;width:7px;height:7px;margin-right:6px;transition:transform .15s;transform:rotate(-45deg)}.details[open] summary:before{transform:rotate(45deg)}.details[open] summary{margin-bottom:12px}.summary-meta{color:var(--muted);margin-left:auto;font-size:12.5px}.responses{flex-direction:column;gap:8px;margin:0;padding-left:20px;display:flex}.summary-text{background:var(--surface-2);border-radius:var(--radius-sm);max-height:260px;padding:12px 14px;overflow-y:auto}.messages{flex-direction:column;gap:8px;margin-top:10px;display:flex}.message{border-radius:14px;max-width:85%;padding:9px 13px}.message.from-user{background:var(--primary-soft);border-bottom-right-radius:4px;align-self:flex-end}.message.from-bot{background:var(--surface-2);border-bottom-left-radius:4px}.flashcards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.flashcard{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-xs);flex-direction:column;gap:6px;padding:12px 14px;display:flex}.recharts-default-tooltip{box-shadow:var(--shadow-md);color:var(--text)!important}.login-page{background:var(--bg);grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);min-height:100vh;display:grid}.login-aside{background:linear-gradient(160deg, var(--sb-bg-2), var(--sb-bg) 60%);color:oklch(97% .01 284);border-radius:24px;flex-direction:column;justify-content:space-between;gap:40px;margin:14px 0 14px 14px;padding:44px 52px;display:flex;position:relative;overflow:hidden}.login-aside:before{content:"";pointer-events:none;background-image:linear-gradient(oklch(100% 0 0/.045) 1px,#0000 1px),linear-gradient(90deg,oklch(100% 0 0/.045) 1px,#0000 1px);background-size:36px 36px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(at 30% 40%,#000 20%,#0000 75%);mask-image:radial-gradient(at 30% 40%,#000 20%,#0000 75%)}.login-aside:after{content:"";background:radial-gradient(circle, color-mix(in oklab, var(--primary) 60%, transparent), transparent 65%);opacity:.7;pointer-events:none;border-radius:999px;width:560px;height:560px;position:absolute;top:-180px;right:-200px}.login-aside>*{z-index:1;position:relative}.login-aside .brand{padding:0}.login-aside .brand-name{color:oklch(100% 0 0)}.login-aside .brand-sub{color:oklch(80% .04 284)}.login-hero-badge{color:oklch(92% .03 284);background:oklch(100% 0 0/.08);border:1px solid oklch(100% 0 0/.14);border-radius:999px;align-items:center;gap:8px;margin-bottom:18px;padding:5px 12px 5px 6px;font-size:12.5px;font-weight:600;display:inline-flex}.login-hero-badge span{background:var(--gradient-brand);color:oklch(100% 0 0);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.login-hero h2{color:oklch(100% 0 0);letter-spacing:-.035em;max-width:480px;font-size:40px;font-weight:800;line-height:1.1}.login-hero h2 em{color:#0000;background:linear-gradient(90deg,oklch(82% .12 284),oklch(82% .13 320));-webkit-background-clip:text;background-clip:text;font-style:normal}.login-hero p{color:oklch(84% .03 284);max-width:440px;margin-top:16px;font-size:15.5px}.login-points{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:560px;margin:32px 0 0;padding:0;list-style:none;display:grid}.login-points li{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:oklch(95% .015 284);background:oklch(100% 0 0/.06);border:1px solid oklch(100% 0 0/.1);border-radius:14px;flex-direction:column;gap:12px;padding:16px;font-size:13px;font-weight:600;line-height:1.35;display:flex}.login-points svg{background:var(--gradient-brand);color:oklch(100% 0 0);border-radius:10px;flex-shrink:0;width:34px;height:34px;padding:8px}.login-foot{color:oklch(72% .04 284);font-size:12.5px}.login-main{place-items:center;padding:48px 24px;display:grid;position:relative}.login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:420px;box-shadow:var(--shadow-lg);border-radius:20px;flex-direction:column;gap:18px;padding:36px;display:flex}.login-card h1{font-size:26px}.login-intro{flex-direction:column;gap:6px;margin-bottom:4px;display:flex}.login-brand{padding:0 0 8px;display:none}.login-theme-toggle{z-index:10;position:absolute;top:24px;right:24px}.login-secure{color:var(--muted);justify-content:center;align-items:center;gap:6px;font-size:12px;display:flex}.login-secure svg{width:14px;height:14px}.login-page.simple{grid-template-columns:1fr;place-items:center;padding:24px;display:grid}@media (width<=1100px){.login-points{grid-template-columns:1fr}.login-points li{flex-direction:row;align-items:center}}@media (width<=900px){.login-page{grid-template-columns:1fr}.login-aside{display:none}.login-brand{display:flex}.login-card{padding:28px}}[data-sonner-toaster]{z-index:999999;font-family:var(--font-sans)!important}[data-sonner-toaster] [data-sonner-toast]{border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:14px 16px;font-size:14px;line-height:1.4;font-family:var(--font-sans)!important}[data-sonner-toaster] [data-sonner-toast] [data-title]{font-size:14px;font-weight:600}[data-sonner-toaster] [data-sonner-toast] [data-description]{margin-top:2px;font-size:13px}
