:root{color-scheme:light;--canvas:oklch(97.5% 0.004 250);--surface:#ffffff;--inset:oklch(95.5% 0.004 250);--border-card:#e2e7ed;--border-control:#dde2e9;--divider-row:#f0f2f6;--divider-head:#e8ecf1;--ink:#16202b;--muted-2:#5c6672;--faint:#8b95a3;--accent:#2b5fb8;--accent-tint:oklch(94% 0.02 255);--chart-blue:oklch(50% 0.13 255);--chart-green:oklch(55% 0.13 155);--green:oklch(50% 0.12 155);--green-tint:oklch(94% 0.05 155);--green-on-tint:oklch(40% 0.1 155);--red:oklch(55% 0.15 25);--red-tint:oklch(95% 0.03 25);--red-on-tint:oklch(45% 0.15 25);--amber:oklch(60% 0.12 75);--amber-tint:oklch(95% 0.04 85);--amber-on-tint:oklch(45% 0.1 75);--row-hover:oklch(97% 0.008 255);--bg:var(--canvas);--panel:var(--surface);--panel-2:var(--inset);--border:var(--border-card);--text:var(--ink);--muted:var(--muted-2);--hover:var(--row-hover);--shimmer:rgba(255,255,255,0.6)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--canvas);color:var(--ink);font-family:Instrument Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}a{color:var(--accent);text-decoration:none}.container{max-width:1400px;margin:0 auto;padding:0}.appmain{padding:28px 32px 40px}@media (max-width:640px){.appmain{padding:20px 16px 40px}}header.app{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}header.app h1{font-size:20px;margin:0}.tabs{display:flex;gap:8px;margin-bottom:16px}.tab{background:var(--panel);border:1px solid var(--border);color:var(--muted);padding:8px 16px;border-radius:8px;cursor:pointer;font-size:14px}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:16px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px}.toolbar label{color:var(--muted);font-size:12px;display:flex;flex-direction:column;gap:4px}button,input,select{font-family:inherit;font-size:14px}input[type=date],input[type=search],select{padding:6px 8px}button.btn,input[type=date],input[type=search],select{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px}button.btn{padding:7px 12px;cursor:pointer}button.btn:hover{border-color:var(--accent)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));grid-gap:12px;gap:12px;margin-bottom:20px}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px}.card .label{color:var(--muted);font-size:12px;margin-bottom:6px}.card .value{font-size:22px;font-weight:600}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:var(--panel)}table{width:100%;border-collapse:collapse;white-space:nowrap}td,th{padding:9px 12px;text-align:right;border-bottom:1px solid var(--border)}td.left,td:first-child,th.left,th:first-child{text-align:left}thead th{position:-webkit-sticky;position:sticky;top:0;background:var(--panel-2);color:var(--muted);font-weight:600;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}thead th:hover{color:var(--text)}tbody tr:hover{background:var(--hover)}.pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.pill.active{background:rgba(46,204,113,.15);color:var(--green)}.pill.paused{background:rgba(245,166,35,.15);color:var(--amber)}.pill.other{background:rgba(154,164,178,.15);color:var(--muted)}.trend-up{color:var(--green)}.trend-down{color:var(--red)}.trend-flat{color:var(--muted)}.rag-good{color:var(--green);font-weight:600}.rag-bad{color:var(--red);font-weight:600}.rag-warn{color:var(--amber);font-weight:600}.sparkline{display:block}.budget-input{width:90px;background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:4px;padding:3px 6px;text-align:right}.trend-cards .card{min-width:240px}.unrebooked{margin:6px 0 0;padding-left:18px}.rowcount,.unrebooked{color:var(--muted);font-size:12px}.rowcount{margin-top:10px}.notice{background:rgba(245,166,35,.1);border:1px solid rgba(245,166,35,.3);color:var(--amber);padding:10px 12px;border-radius:8px;font-size:13px}.error,.notice{margin-bottom:16px}.error{background:rgba(255,92,92,.1);border:1px solid rgba(255,92,92,.35);color:var(--red);padding:12px 14px;border-radius:8px}.loading,.muted{color:var(--muted)}.loading{padding:24px;text-align:center}.goal-input{width:80px}.metric-name{font-weight:600}.metric-src{color:var(--muted);font-weight:400}.brand{align-items:baseline;gap:10px}.brand,.nav{display:flex;flex-wrap:wrap}.nav{gap:6px;align-items:center}.navlink{color:var(--muted);padding:7px 12px;border-radius:8px;border:1px solid transparent}.navlink.active,.navlink:hover{color:var(--text)}.navlink.active{background:var(--panel);border-color:var(--border)}.daterange{gap:12px;align-items:flex-end}.daterange,.presets{display:flex;flex-wrap:wrap}.presets{gap:4px}.preset{background:var(--panel-2);border:1px solid var(--border);color:var(--muted);border-radius:6px;padding:6px 10px;cursor:pointer;font-size:13px}.preset:hover{color:var(--text)}.preset.active{background:var(--accent);border-color:var(--accent);color:#fff}.skeleton{position:relative;overflow:hidden;background:var(--panel-2);border-radius:4px;vertical-align:middle}.skeleton:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--shimmer),transparent);animation:shimmer 1.4s infinite}@keyframes shimmer{to{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){.skeleton:after{animation:none}}.btn-group{display:inline-flex;gap:4px}.notice.info{background:rgba(79,140,255,.1);border-color:rgba(79,140,255,.3);color:var(--accent)}.asof{color:var(--muted);font-size:11px;white-space:nowrap}.asof.stale{color:var(--amber)}.cardbtn{cursor:pointer;text-align:left;font-family:inherit;font-size:inherit}.cardbtn.selected,.cardbtn:hover{border-color:var(--accent)}.cardbtn.selected{outline:1px solid var(--accent)}.asof-group{color:var(--muted);font-size:12px}.delta{font-size:12px;font-weight:600;margin-left:4px;white-space:nowrap}.delta.good{color:var(--green)}.delta.bad{color:var(--red)}.delta.flat{color:var(--muted)}.collapsible{margin:0 0 16px}.collapsible-head{display:flex;align-items:center;gap:8px;width:100%;background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:9px 12px;cursor:pointer;text-align:left;font-family:inherit;font-size:14px;font-weight:600;margin-bottom:8px}.collapsible-head:hover{border-color:var(--accent)}.collapsible-head .muted{font-weight:400}.collapsible-right{margin-left:auto;font-weight:400}.collapsible-body{position:relative}.collapsible-body.clamped{overflow:hidden}.fade-more{position:absolute;left:0;right:0;bottom:0;height:110px;align-items:flex-end;padding-bottom:10px;background:linear-gradient(180deg,transparent,var(--bg) 80%)}.fade-more,.show-less{display:flex;justify-content:center}.show-less{margin-top:8px}.panel{margin-bottom:16px}.panel-toggle{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 12px;cursor:pointer;width:100%;text-align:left;margin-bottom:8px}.detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.detail-head h2{margin:4px 0 2px}h3{margin:20px 0 10px}.dim{opacity:.45}.chip{display:inline-flex;align-items:center;gap:4px;background:var(--panel-2);border:1px solid var(--border);border-radius:999px;padding:2px 8px;margin:2px 4px 2px 0;font-size:12px}.plain-link{text-decoration:none}.chip.suggestion{background:rgba(79,140,255,.12);border-color:rgba(79,140,255,.4);color:var(--accent);cursor:pointer;font-family:inherit}.chip.suggestion:hover{background:rgba(79,140,255,.22)}.chip.suggestion:disabled{opacity:.5;cursor:default}.chip-x{background:none;border:none;color:var(--muted);cursor:pointer;padding:0 2px;font-size:13px}.chip-x:hover{color:var(--red)}.inline-input{background:transparent;border:1px solid transparent;color:var(--text);border-radius:4px;padding:4px 6px;min-width:160px}.inline-input:focus,.inline-input:hover{border-color:var(--border);background:var(--panel-2)}.btn.small{padding:3px 8px;font-size:12px}.btn.danger:hover{border-color:var(--red);color:var(--red)}.panel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));grid-gap:16px;gap:16px;margin:16px 0}.settings-panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px}.settings-panel h3{margin:0 0 10px}.settings-panel h4{margin:18px 0 6px}.settings-panel label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:12px;margin:10px 0}.settings-panel input{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:7px 9px}.btnrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}table.plain{border-collapse:collapse}table.plain td{border-bottom:none;padding:4px 10px 4px 0}.success{background:rgba(46,204,113,.1);border:1px solid rgba(46,204,113,.35);color:var(--green);padding:12px 14px;border-radius:8px;margin-bottom:16px}@media (max-width:600px){.card .value{font-size:18px}td,th{padding:7px 8px}}.search-select{position:relative;display:inline-block}.search-select-trigger{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:12px;cursor:pointer}.search-select-trigger:hover{background:var(--hover)}.search-select-trigger:disabled{opacity:.5;cursor:default}.search-select-caret{color:var(--muted);font-size:10px}.search-select-panel{position:absolute;z-index:40;top:calc(100% + 4px);left:0;min-width:280px;max-width:420px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.18);padding:6px}.search-select-input{width:100%;box-sizing:border-box;margin-bottom:6px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:12px}.search-select-list{max-height:280px;overflow-y:auto}.search-select-option{display:block;width:100%;text-align:left;background:none;border:none;color:var(--text);padding:6px 8px;font-size:12px;border-radius:6px;cursor:pointer}.search-select-option:hover{background:var(--hover)}.search-select-option.special{color:var(--accent)}.search-select-group{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:6px 8px 2px}.search-select-empty{color:var(--muted);font-size:12px;padding:8px}.modal-overlay{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:24px}.modal-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 48px rgba(0,0,0,.3);width:min(720px,100%);max-height:90vh;overflow-y:auto;padding:16px 18px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}.modal-head h3{margin:0 0 2px}.modal-close{background:none;border:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px}.modal-close:hover{background:var(--hover);color:var(--text)}.modal-chart svg{width:100%;height:auto;display:block}.whop-attach-warning{width:min(920px,100%)}.whop-attach-warning h4{margin:16px 0 8px}.whop-warning-account{display:flex;flex-direction:column;gap:3px;padding:12px;border:1px solid var(--border);border-radius:10px;background:var(--hover)}.whop-warning-account span{color:var(--muted);font-size:12px}.whop-existing-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:10px;gap:10px}.whop-detail-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:9px 14px;gap:9px 14px;padding:12px;border:1px solid var(--border);border-radius:10px}.whop-detail-card.incoming{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent)}.whop-detail-card div{display:flex;flex-direction:column;gap:2px;min-width:0}.whop-detail-card span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.whop-detail-card strong{font-size:12px;overflow-wrap:anywhere}.whop-warning-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}.chart-grid{stroke:var(--border);stroke-width:1;stroke-dasharray:2 3}.chart-tick{fill:var(--muted);font-size:10px}.chart-dot:hover{r:4.5}.issue-more{padding:10px 0 2px;display:flex;justify-content:center}.chart-wrap{position:relative}.chart-crosshair{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3;opacity:.6}.chart-tip{position:absolute;transform:translate(-50%,calc(-100% - 12px));background:var(--surface);border:1px solid var(--border-control);border-radius:8px;box-shadow:0 6px 18px rgba(22,32,43,.14);padding:7px 10px;display:flex;flex-direction:column;gap:2px;pointer-events:none;white-space:nowrap;z-index:30}.chart-tip .tip-value{font-size:14px;font-weight:650;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chart-tip .tip-date{font-size:11px;color:var(--muted)}.chart-tip .tip-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted-2)}.chart-tip .tip-row b{color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chart-tip .tip-key{width:10px;height:3px;border-radius:2px;display:inline-block}.modal-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:10px;gap:10px;margin-top:12px;border-top:1px solid var(--border);padding-top:12px}.modal-stats .label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.modal-stats .value{font-size:16px;font-weight:600}.metric-detail-modal{width:min(960px,100%);overflow:hidden;display:flex;flex-direction:column}.metric-modal-actions{display:flex;align-items:center;gap:8px}.metric-definition{display:grid;grid-template-columns:180px 1fr 1fr;grid-gap:14px;gap:14px;background:var(--inset);border:1px solid var(--border-card);border-radius:10px;padding:14px;margin:10px 0 16px}.metric-definition>div{display:flex;flex-direction:column;gap:4px}.metric-definition p strong,.metric-definition>div span{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-2)}.metric-definition>div strong{font-size:24px;color:var(--ink)}.metric-definition p{display:flex;flex-direction:column;gap:4px;margin:0;font-size:12.5px;line-height:1.45;color:var(--muted-2)}.metric-table-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.metric-filters{display:flex;align-items:center;gap:7px}.metric-filters input,.metric-filters select{height:34px;background:var(--inset);border:1px solid var(--border-control);border-radius:8px;padding:7px 9px}.metric-filters input{width:220px}.metric-student-scroll{max-height:52vh;border:1px solid var(--border-card);border-radius:10px}.metric-student-scroll table{white-space:normal}.metric-student-scroll td:nth-child(2),.metric-student-scroll th:nth-child(2){width:170px}.metric-student-scroll td small{display:block;color:var(--faint);font-size:11px;margin-top:2px}.mini-kpi.clickable{cursor:pointer;transition:border-color .12s,transform .12s}.mini-kpi.clickable:focus-visible,.mini-kpi.clickable:hover{border-color:var(--accent);transform:translateY(-1px);outline:none}@media(max-width:720px){.metric-definition{grid-template-columns:1fr}.metric-filters,.metric-table-head{align-items:stretch;flex-direction:column}.metric-filters input,.metric-filters select{width:100%}}.student-section-link{color:var(--ink)}.student-section-link:hover{color:var(--accent)}.column-filter-row th{top:34px;padding:5px 4px;background:var(--surface);cursor:default}.column-filter-row input{width:100%;min-width:72px;height:28px;background:var(--inset);border:1px solid var(--border-control);border-radius:6px;padding:4px 6px;font-size:11px;font-weight:400;color:var(--ink)}.column-filter-row input:focus{outline:none;border-color:var(--accent);background:#fff}.card.clickable{cursor:pointer;transition:border-color .12s,transform .12s}.card.clickable:hover{border-color:var(--accent);transform:translateY(-1px)}.card.clickable .label:after{content:" ⤢";color:var(--muted);font-size:10px;opacity:0;transition:opacity .12s}.card.clickable:hover .label:after{opacity:1}.spark-btn{background:none;border:none;padding:0;cursor:pointer;display:inline-block;border-radius:4px}.spark-btn:hover{background:var(--hover)}.topbar{align-items:center;justify-content:space-between;gap:16px;padding:18px 32px;background:var(--surface);border-bottom:1px solid var(--border-card)}.topbar,.topbar-left{display:flex;flex-wrap:wrap}.topbar-left{align-items:baseline;gap:14px}.topbar-brand{font-size:18px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.navpills{display:flex;gap:4px;flex-wrap:wrap}.navpill{padding:6px 14px;border-radius:8px;color:var(--muted-2);font-size:14px;font-weight:500;display:inline-flex;align-items:center;gap:6px}.navpill:hover{color:var(--ink)}.navpill.active{background:var(--accent-tint);color:var(--accent);font-weight:600}.navpill .count{display:inline-block;background:var(--red);color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:1px 6px}.topbar-right{gap:12px;flex-wrap:wrap}.topbar-right,.topbar-slot{display:flex;align-items:center}.topbar-fresh{font-size:12px;color:var(--muted-2);white-space:nowrap}.topbar-fresh.stale{color:var(--amber-on-tint)}.refresh-wrap{position:relative}.btn-refresh{background:var(--surface);border:1px solid var(--border-control);color:var(--ink);border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer;font-family:inherit}.btn-refresh:hover{border-color:var(--accent)}.btn-refresh:disabled{opacity:.55;cursor:default}.refresh-menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--border-control);border-radius:10px;box-shadow:0 8px 24px rgba(22,32,43,.12);padding:6px;min-width:190px;z-index:50;display:flex;flex-direction:column;gap:2px}.refresh-menu button{text-align:left;background:none;border:none;color:var(--ink);font-size:13px;padding:8px 10px;border-radius:7px;cursor:pointer;font-family:inherit}.refresh-menu button:hover{background:var(--inset)}.refresh-menu button:disabled{opacity:.5;cursor:default}.global-search{position:relative}.global-search input{background:var(--inset);border:1px solid var(--border-control);border-radius:8px;padding:6px 10px;font-size:13px;font-family:inherit;color:var(--ink);width:220px}.global-search input:focus{outline:none;border-color:var(--muted)}.global-search .search-results{position:absolute;left:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--border-control);border-radius:10px;box-shadow:0 8px 24px rgba(22,32,43,.12);padding:6px;min-width:280px;max-height:340px;overflow-y:auto;z-index:50;display:flex;flex-direction:column;gap:2px}.search-results button{display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;background:none;border:none;color:var(--ink);font-size:13px;padding:7px 10px;border-radius:7px;cursor:pointer;font-family:inherit}.search-results button.active,.search-results button:hover{background:var(--inset)}.search-results .search-sub{font-size:11px;color:var(--muted)}.search-results .search-empty{padding:8px 10px;font-size:12px;color:var(--muted)}.segmented{display:inline-flex;background:var(--inset);border:1px solid var(--border-control);border-radius:8px;padding:2px}.segmented button{padding:5px 12px;border-radius:6px;font-size:13px;color:var(--muted-2);background:none;border:none;cursor:pointer;font-family:inherit}.segmented button:hover:not(.active){color:var(--ink)}.segmented button.active{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(22,32,43,.12)}.segmented-custom{display:inline-flex;gap:6px;align-items:center;margin-left:8px}.segmented-custom input{background:var(--surface);border:1px solid var(--border-control);border-radius:6px;padding:5px 8px;font-size:12px;color:var(--ink);font-family:inherit}.shell-banners{padding:12px 32px 0;display:flex;flex-direction:column;gap:8px}.shell-banners .error,.shell-banners .notice{margin:0}.overview{display:flex;flex-direction:column;gap:24px}.kpi-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px}.kpi-card{background:var(--surface);border:1px solid var(--border-card);border-radius:12px;padding:18px 20px;display:flex;flex-direction:column;gap:6px}.kpi-card.clickable{cursor:pointer;transition:border-color .12s,transform .12s}.kpi-card.clickable:hover{border-color:var(--accent);transform:translateY(-1px)}.kpi-label{font-size:13px;color:var(--muted-2);font-weight:500}.kpi-valuerow{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.kpi-value{font-size:30px;font-weight:700;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink);line-height:1.1}.kpi-delta{font-size:13px;font-weight:600}.kpi-delta.good{color:var(--green)}.kpi-delta.bad{color:var(--red)}.kpi-delta.warn{color:var(--amber)}.kpi-valuerow .delta{font-size:13px;margin-left:0}.kpi-sub{font-size:12px;color:var(--muted-2);display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.mid-band{display:grid;grid-template-columns:1fr 420px;grid-gap:16px;gap:16px;align-items:stretch}.panel-card{background:var(--surface);border:1px solid var(--border-card);border-radius:12px;padding:20px 24px}.panel-title{font-size:15px;font-weight:600;color:var(--ink)}.trend-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px;flex-wrap:wrap}.trend-legend{display:flex;gap:16px;font-size:12px;color:var(--muted-2)}.trend-legend .item{display:flex;align-items:center;gap:6px}.swatch{width:10px;height:10px;border-radius:3px;display:inline-block}.trend-empty{color:var(--muted-2);font-size:13px;padding:40px 0;text-align:center}.needs-card{display:flex;flex-direction:column;gap:12px}.needs-head{display:flex;align-items:center;justify-content:space-between}.link-accent{color:var(--accent);font-size:13px;font-weight:500}.needs-item{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border:1px solid #eceff3;border-radius:10px;background:oklch(98.5% .003 250)}.needs-dot{width:8px;height:8px;border-radius:999px;margin-top:6px;flex-shrink:0}.needs-dot.red{background:var(--red)}.needs-dot.amber{background:var(--amber)}.needs-body{display:flex;flex-direction:column;gap:2px}.needs-title{font-size:13.5px;font-weight:600;color:var(--ink)}.needs-title .tag{font-weight:500;color:var(--muted-2)}.needs-detail{font-size:12.5px;color:var(--muted-2);line-height:1.45}.needs-empty{font-size:13px;color:var(--muted-2);padding:8px 0}.students-card{background:var(--surface);border:1px solid var(--border-card);border-radius:12px;overflow:hidden}.students-head{display:flex;align-items:center;justify-content:space-between;padding:16px 24px 12px;gap:12px;flex-wrap:wrap}.students-head .title{font-size:15px;font-weight:600;color:var(--ink)}.students-head .title .muted{color:var(--muted-2);font-weight:400}.students-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.students-search{background:var(--inset);padding:7px 12px;width:220px;max-width:100%}.students-search,.students-sort{border:1px solid var(--border-control);border-radius:8px;font-size:13px;font-family:inherit;color:var(--ink)}.students-sort{background:var(--surface);padding:7px 10px}.students-scroll{overflow-x:auto}.students-table{width:100%;border-collapse:collapse;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.students-table thead th{padding:10px 16px;text-align:right;font-size:12px;color:var(--muted-2);font-weight:600;border-bottom:1px solid var(--divider-head);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.students-table thead th.left{text-align:left}.students-table thead th:first-child{padding-left:24px}.students-table thead th:last-child{padding-right:24px}.students-table tbody td{padding:11px 16px;text-align:right;border-bottom:1px solid var(--divider-row);font-size:14px;color:var(--ink)}.students-table tbody td.left{text-align:left}.students-table tbody td:first-child{padding-left:24px}.students-table tbody td:last-child{padding-right:24px}.students-table tbody tr:hover{background:var(--row-hover)}.students-table tbody tr:last-child td{border-bottom:none}.student-name{font-weight:600;font-size:14px;color:var(--ink)}.student-name:hover{color:var(--accent)}.students-foot{padding:12px 24px;font-size:12.5px;color:var(--muted-2);border-top:1px solid var(--divider-row)}.pacebar{display:inline-flex;align-items:center;gap:8px}.pacebar-track{width:72px;height:6px;border-radius:999px;background:#eceff3;overflow:hidden;flex-shrink:0}.pacebar-fill{height:100%;border-radius:999px}.pacebar-label{font-size:12.5px;color:var(--muted-2)}.status-pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.status-pill.green{background:var(--green-tint);color:var(--green-on-tint)}.status-pill.red{background:var(--red-tint);color:var(--red-on-tint)}.status-pill.amber{background:var(--amber-tint);color:var(--amber-on-tint)}.ov-skel{background:var(--surface);border:1px solid var(--border-card);border-radius:12px;padding:18px 20px}@media (max-width:1180px){.kpi-row{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}}@media (max-width:1000px){.mid-band{grid-template-columns:1fr}}.detail-page,.issues-page,.scorecard-page,.settings-page,.students-page{display:flex;flex-direction:column;gap:24px}.issues-heading h1,.page-heading h1{font-size:22px;line-height:1.2;margin:0;color:var(--ink);letter-spacing:-.015em}.issues-heading p,.page-heading p{font-size:13.5px;color:var(--muted-2);margin:5px 0 0}.student-toolbar{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.filter-chips{display:flex;gap:6px}.filter-chips button{border:0;background:var(--inset);color:var(--muted-2);padding:6px 12px;border-radius:999px;font-size:13px;cursor:pointer}.filter-chips button.active{background:var(--ink);color:#fff;font-weight:600}.inline-totals{display:flex;align-items:center;gap:18px;flex:1 1;flex-wrap:wrap;color:var(--muted-2);font-size:13px}.inline-totals strong{color:var(--ink);margin-left:4px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.students-full .students-table{min-width:2200px}.flag-note{font-size:12px}.flag-note.red{color:var(--red)}.flag-note.amber{color:var(--amber-on-tint)}.budget-input{width:92px;background:var(--inset);border:1px solid transparent;border-radius:6px;padding:5px 7px}.budget-input:focus,.budget-input:hover{border-color:var(--border-control);background:#fff;outline:none}.scorecard-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.scorecard-controls>select{min-width:190px;background:#fff;border-color:var(--border-control);border-radius:8px;padding:6px 10px}.scorecard-card{background:#fff;border:1px solid var(--border-card);border-radius:12px;overflow:hidden}.scorecard-table{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:1000px}.scorecard-table td,.scorecard-table th{padding:11px 14px;border-bottom:1px solid var(--divider-row);text-align:right}.scorecard-table th{background:#fff;color:var(--muted-2);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.scorecard-table th.average{background:var(--row-hover)}.scorecard-table td.average{background:oklch(98.5% .004 255);font-weight:600}.scorecard-table .left{text-align:left}.scorecard-table tbody tr:hover{background:var(--row-hover)}.metric-src{display:inline-block;margin-left:7px;color:var(--faint);font-size:11px}.score-goal{width:76px;text-align:right;background:var(--inset);border:1px solid transparent;border-radius:6px;padding:5px 7px}.score-goal:focus{background:#fff;border-color:var(--border-control);outline:none}.wow{font-size:11px;margin-left:3px}.wow.good{color:var(--green)}.wow.bad{color:var(--red)}.wow.flat{color:var(--faint)}.issues-heading{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.issues-heading p{margin:0}.issue-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.issue-card{background:#fff;border:1px solid var(--border-card);border-radius:12px;padding:18px 20px;min-width:0}.issue-card-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.issue-card h2,.settings-card h2{font-size:15px;margin:0;font-weight:600}.issue-card .collapsible{margin:0}.issue-card .collapsible-head{border:0;background:transparent;padding:0 0 12px;margin:0;border-bottom:1px solid var(--divider-row);border-radius:0}.issue-card .fade-more{background:linear-gradient(180deg,transparent,#fff 80%)}.issue-count{font-size:11px;font-weight:700;border-radius:999px;padding:2px 7px}.issue-count.red{background:var(--red-tint);color:var(--red-on-tint)}.issue-count.amber{background:var(--amber-tint);color:var(--amber-on-tint)}.issue-list{display:flex;flex-direction:column}.issue-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--divider-row);font-size:13px;line-height:1.45}.issue-row:last-child{border-bottom:0}.issue-row>input[type=checkbox]{flex:0 0 auto}.issue-copy{min-width:0;flex:1 1}.issue-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}.issue-student{font-weight:600;color:var(--ink)}.issue-detail{color:var(--muted-2)}.issue-action,.secondary-button{display:inline-flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--border-control);border-radius:7px;padding:6px 10px;color:var(--ink);font-size:12.5px;white-space:nowrap;cursor:pointer}.issue-action:hover,.secondary-button:hover{border-color:var(--accent);color:var(--accent)}.issue-empty{font-size:13px;color:var(--muted-2);padding:12px 0}.issues-toolbar{display:grid;grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(150px,1fr)) auto auto;grid-gap:8px;gap:8px;align-items:center}.issues-toolbar input,.issues-toolbar select{width:100%;height:36px}.issue-action.danger,.secondary-button.danger{color:var(--red);border-color:var(--red-border)}.issue-action.danger:hover,.secondary-button.danger:hover{background:var(--red-tint);color:var(--red)}.dismissed-list{background:#fff;border:1px solid var(--border-card);border-radius:12px;padding:0 16px}.detail-titlebar{display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.breadcrumb{display:flex;gap:7px;color:var(--muted-2);font-size:13px;margin-bottom:7px}.detail-title{display:flex;align-items:center;gap:10px}.detail-title h1{font-size:26px;letter-spacing:-.02em;margin:0}.detail-titlebar p{font-size:13px;color:var(--muted-2);margin:6px 0 0}.detail-kpis .kpi-value{font-size:28px}.detail-middle{display:grid;grid-template-columns:1fr 420px;grid-gap:16px;gap:16px}.bookings-card{padding-bottom:10px}.booking-list{margin-top:8px}.booking-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--divider-row)}.booking-row:last-child{border-bottom:0}.booking-row strong{display:block;font-size:13.5px}.booking-row div span{display:block;font-size:12px;color:var(--muted-2);margin-top:2px}.status-pill.blue{background:var(--accent-tint);color:var(--accent)}.status-pill.offboarded{background:color-mix(in srgb,var(--muted) 18%,transparent);color:var(--muted-2);border:1px solid color-mix(in srgb,var(--muted) 42%,transparent)}tr.offboarded-row{opacity:.68;background:color-mix(in srgb,var(--muted) 5%,transparent)}tr.offboarded-row:hover{opacity:.9}.detail-table-card strong{font-weight:600}.launches{color:var(--ink)}.launches summary{font-size:14px;font-weight:600;cursor:pointer;margin-bottom:10px}.settings-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;align-items:start}.settings-stack{display:flex;flex-direction:column;gap:16px}.settings-card{background:#fff;border:1px solid var(--border-card);border-radius:12px;padding:18px 20px}.settings-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.settings-summary{font-size:12.5px;color:var(--muted-2);line-height:1.45;margin:9px 0 15px}.settings-card label{display:flex;flex-direction:column;gap:5px;color:var(--muted-2);font-size:12px;margin:11px 0}.settings-card input{background:var(--inset);border:1px solid var(--border-control);border-radius:8px;padding:8px 10px;color:var(--ink);width:100%}.settings-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.primary-button{background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:8px;padding:7px 12px;font-size:12.5px;cursor:pointer}.primary-button:disabled,.secondary-button:disabled{opacity:.5;cursor:default}.advanced-settings{border-top:1px solid var(--divider-row);margin-top:18px;padding-top:13px}.advanced-settings summary{font-size:12.5px;color:var(--accent);cursor:pointer}.advanced-settings .secondary-button{margin-top:3px}.sync-row{display:grid;grid-template-columns:10px 1fr auto 30px;align-items:center;grid-gap:8px;gap:8px;padding:9px 0;border-bottom:1px solid var(--divider-row);font-size:12.5px}.sync-row strong{font-weight:500;color:var(--muted-2)}.sync-row.sync-head{padding:0 0 5px;border-bottom:1px solid var(--border-control)}.sync-row.sync-head span,.sync-row.sync-head strong{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.sync-row .row-refresh{padding:2px 0;width:28px;text-align:center;font-size:13px;line-height:1.4}.health-dot{width:8px;height:8px;border-radius:999px}.health-dot.green{background:var(--green)}.health-dot.amber{background:var(--amber)}.sync-actions{gap:6px}.sync-actions .secondary-button{padding:5px 8px}.data-quality{display:flex;flex-direction:column}.data-quality h2{margin-bottom:8px}.data-quality>a{display:flex;flex-direction:column;padding:11px 0;border-bottom:1px solid var(--divider-row);font-size:13px;font-weight:600;color:var(--ink)}.data-quality>a:last-child{border-bottom:0}.data-quality>a span{font-size:12px;font-weight:400;color:var(--accent);margin-top:3px}.goals-settings{margin-top:0}.goal-settings-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px 16px;gap:10px 16px}.goal-settings-grid label{margin:0}.goal-control{display:flex;align-items:center;position:relative}.goal-control input{padding-right:30px}.goal-control em{position:absolute;right:10px;font-style:normal;color:var(--faint);font-size:12px}.health-definition{display:flex;flex-direction:column;gap:4px;margin-top:16px;padding-top:14px;border-top:1px solid var(--divider-row);font-size:12.5px;color:var(--muted-2)}.health-definition strong{color:var(--ink);font-size:13px}.portfolio-kpi-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:12px;gap:12px}.mini-kpi{background:#fff;border:1px solid var(--border-card);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:5px}.mini-kpi>span{font-size:12px;color:var(--muted-2);font-weight:500}.mini-kpi strong{font-size:22px;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mini-kpi small{font-size:11px;color:var(--faint)}.campaign-table{min-width:1350px}.campaign-table th{cursor:pointer}.campaign-table th:hover{color:var(--accent)}.audit-page .table-wrap,.mapping-page .table-wrap,.table-wrap{border-color:var(--border-card);border-radius:12px;background:#fff}.card,.settings-panel{border-radius:12px;border-color:var(--border-card);box-shadow:none}.toolbar{background:transparent;border:0;padding:0;margin-bottom:20px}.collapsible-head{border-radius:10px;padding:11px 14px}.collapsible-head:hover{background:var(--row-hover)}@media(max-width:1180px){.settings-grid{grid-template-columns:1fr 1fr}.settings-stack{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.detail-middle{grid-template-columns:1fr}.portfolio-kpi-row{grid-template-columns:repeat(4,1fr)}.goal-settings-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:820px){.issue-grid,.settings-grid{grid-template-columns:1fr}.settings-stack{grid-column:auto;display:flex}.inline-totals{order:3;width:100%}.detail-titlebar{align-items:flex-start;flex-direction:column}.topbar{padding:14px 16px}.topbar-right{width:100%}.appmain{padding-left:16px;padding-right:16px}.portfolio-kpi-row{grid-template-columns:repeat(2,1fr)}.goal-settings-grid{grid-template-columns:1fr}}.login-page{min-height:100vh;display:grid;place-items:center;padding:32px;background:var(--canvas)}.login-card{width:min(100%,400px);background:#fff;border:1px solid var(--border-card);border-radius:14px;padding:30px;box-shadow:0 18px 50px rgba(22,32,43,.08)}.login-brand{font-size:15px;font-weight:700;color:var(--accent);margin-bottom:22px}.login-card h1{font-size:24px;letter-spacing:-.02em;margin:0 0 8px}.login-card>p{color:var(--muted-2);margin:0 0 24px}.login-card form{display:flex;flex-direction:column;gap:8px}.login-card label{font-size:12.5px;font-weight:600;color:var(--ink)}.login-card input{width:100%;background:var(--inset);border:1px solid var(--border-control);border-radius:8px;padding:10px 12px;color:var(--ink);outline:none}.login-card input:focus{background:#fff;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}.login-card button{margin-top:8px;background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:8px;padding:10px 14px;font-weight:600;cursor:pointer}.login-card button:disabled{opacity:.55;cursor:default}.login-error{font-size:12.5px;color:var(--red-on-tint);background:var(--red-tint);border-radius:7px;padding:8px 10px;margin-top:3px}