:root{
  --blue:#2f80c4;--teal:#3fb6a8;--green:#7ac143;--yellow:#f4c430;--orange:#f08a24;--magenta:#e6007e;
  --ink:#1d2a36;--ink-soft:#647383;--bg:#f5f7fa;--surface:#fff;--line:#dce5ec;--line-soft:#edf2f6;
  --primary:#2f80c4;--primary-deep:#1f639b;
  --lv-ind:#1f9d57;--lv-ver:#6bb83c;--lv-ges:#dca20c;--lv-vis:#ef8a24;--lv-phy:#e2533a;--lv-hoh:#c0392b;--lv-non:#9aa7b2;
  --radius:8px;--shadow:0 1px 2px rgba(15,35,55,.05),0 12px 28px rgba(15,35,55,.07);
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,system-ui,Segoe UI,sans-serif;color:var(--ink);background:linear-gradient(180deg,#fbfcfd 0,#f5f7fa 180px,var(--bg) 100%);line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,.brandname,.nm,.stcard .nm{font-family:Fraunces,Georgia,serif}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}
a{color:var(--primary)}
.rainbow{height:5px;background:linear-gradient(90deg,var(--magenta),var(--orange),var(--yellow),var(--green),var(--teal),var(--blue))}
.wrap{max-width:1080px;margin:0 auto;padding:0 18px}
.hidden{display:none!important}

.topbar{background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:40;backdrop-filter:blur(10px)}
.topbar .inner{display:flex;align-items:center;gap:14px;padding:10px 18px;max-width:1180px;margin:0 auto}
.topbar img{height:40px;width:auto;display:block}
.topbar .titles .co{font-size:13px;font-weight:700;color:#172636}
.topbar .titles .sub{font-size:11px;color:var(--ink-soft)}
.topbar .spacer{flex:1}
.whoami{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-soft)}
.whoami .av{width:30px;height:30px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:600;font-size:13px}
.linkbtn{background:none;border:none;color:var(--primary);font-size:13px;font-weight:600;padding:6px 8px;border-radius:8px}
.linkbtn:hover{background:var(--line-soft)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:8px 13px;border-radius:8px;font-size:13px;font-weight:700;transition:.15s;min-height:36px}
.btn:hover{border-color:#c8d5df;background:#fafcfe;box-shadow:0 2px 8px rgba(15,35,55,.05)}
.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn.primary:hover{background:var(--primary-deep);border-color:var(--primary-deep)}
.btn.ghost{border-color:transparent;background:transparent;color:var(--primary)}
.btn.ghost:hover{background:var(--line-soft)}
.btn.sm{padding:5px 9px;font-size:12px;border-radius:7px;min-height:30px}
.btn.danger{color:var(--lv-phy);border-color:#f2cabf}
.btn:disabled{opacity:.5;cursor:not-allowed}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.muted{color:var(--ink-soft)}
.eyebrow{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--teal)}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.field label{font-size:12px;font-weight:600;color:var(--ink-soft)}
.field input,.field select,.field textarea{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;outline:none;transition:.15s}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(47,128,196,.12)}
.row{display:flex;gap:14px;flex-wrap:wrap}.row>*{flex:1;min-width:150px}

.login-stage{min-height:calc(100vh - 53px);display:grid;place-items:center;padding:42px 18px}
.login-card{width:100%;max-width:430px;padding:34px 30px;text-align:center;border-top:5px solid var(--primary)}
.login-card img{height:108px;margin:0 auto 6px}
.login-card h1{font-size:25px;margin:6px 0 2px}
.login-card .tag{color:var(--ink-soft);font-size:13px;margin-bottom:22px}
.err{color:var(--lv-phy);font-size:13px;margin:6px 0}

.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:24px 0 14px}
.pagehead h2{font-size:22px;margin:2px 0 0}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.search{flex:1;min-width:200px;position:relative}
.search input{width:100%;padding:10px 12px 10px 36px;border:1px solid var(--line);border-radius:10px;background:#fff}
.search svg{position:absolute;left:11px;top:11px;color:var(--ink-soft)}
.tabs{display:flex;gap:4px;border:1px solid var(--line);background:#fff;border-radius:8px;margin:18px 0;padding:5px;box-shadow:0 1px 2px rgba(15,35,55,.03);overflow:auto}
.tab{padding:8px 12px;border:none;background:transparent;font-weight:700;color:var(--ink-soft);border-radius:6px;white-space:nowrap}
.tab:hover{background:#f4f8fb;color:var(--ink)}
.tab.active{color:#fff;background:linear-gradient(135deg,var(--primary),var(--teal));box-shadow:0 4px 12px rgba(47,128,196,.18)}

/* ===== Premium caseload ===== */
.cl-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 16px}
.cl-stat{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px 13px;overflow:hidden;box-shadow:0 1px 2px rgba(15,35,55,.04)}
.cl-stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--sa,var(--primary))}
.cl-stat span{display:block;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft)}
.cl-stat b{font-family:Fraunces,Georgia,serif;font-size:30px;line-height:1.1;color:var(--ink)}

.cl-toolbar{display:grid;grid-template-columns:1fr auto;grid-template-areas:"search controls" "filters filters" "count count";gap:12px 14px;align-items:center;padding:14px;border-radius:16px;margin-bottom:18px}
.cl-search{grid-area:search;position:relative;display:flex;align-items:center}
.cl-search>svg{position:absolute;left:14px;color:var(--ink-soft);pointer-events:none}
.cl-search input{width:100%;padding:12px 40px 12px 42px;border:1px solid var(--line);border-radius:12px;background:#fbfdff;font-size:14px;transition:.15s}
.cl-search input:focus{outline:none;border-color:var(--primary);background:#fff;box-shadow:0 0 0 4px rgba(47,128,196,.12)}
.cl-clear{position:absolute;right:8px;display:none;border:none;background:var(--line-soft);color:var(--ink-soft);width:24px;height:24px;border-radius:50%;font-size:11px;place-items:center}
.cl-search.has-text .cl-clear{display:grid}
.cl-clear:hover{background:#dfe8ef;color:var(--ink)}
.cl-controls{grid-area:controls;display:flex;gap:8px;align-items:center}
.cl-sort{padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#fff;font-weight:600;font-size:13px;color:var(--ink)}
.cl-sort:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(47,128,196,.12)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:11px;overflow:hidden;background:#fff;flex-shrink:0}
.seg button{border:none;background:transparent;padding:9px 11px;color:var(--ink-soft);display:grid;place-items:center;transition:.15s}
.seg button+button{border-left:1px solid var(--line)}
.seg button.active{background:linear-gradient(135deg,var(--primary),var(--teal));color:#fff}
.seg button:hover:not(.active){background:var(--line-soft);color:var(--ink)}
.cl-filters{grid-area:filters;display:flex;gap:8px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:#fff;color:var(--ink-soft);padding:7px 12px;border-radius:999px;font-size:12.5px;font-weight:700;display:inline-flex;align-items:center;gap:7px;transition:.15s}
.chip>span{background:var(--line-soft);color:var(--ink-soft);font-size:11px;padding:1px 7px;border-radius:999px;font-weight:700}
.chip:hover{border-color:#c4d3de;color:var(--ink)}
.chip.active{background:linear-gradient(135deg,var(--primary),var(--teal));border-color:transparent;color:#fff}
.chip.active>span{background:rgba(255,255,255,.25);color:#fff}
.chip:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(47,128,196,.3)}
.cl-count{grid-area:count;font-size:12px;color:var(--ink-soft);font-weight:600}

.roster-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:16px;margin-bottom:44px}
.s-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px;cursor:pointer;display:flex;flex-direction:column;gap:14px;overflow:hidden;box-shadow:0 1px 2px rgba(15,35,55,.05);transition:transform .18s,box-shadow .18s,border-color .18s}
.s-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--accent,var(--primary))}
.s-card:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(15,35,55,.13);border-color:transparent}
.s-card:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(47,128,196,.35),0 16px 36px rgba(15,35,55,.13)}
.s-top{display:flex;align-items:center;gap:13px}
.s-avatar{position:relative;width:52px;height:52px;border-radius:16px;display:grid;place-items:center;color:#fff;font-family:Fraunces,Georgia,serif;font-weight:600;font-size:20px;flex-shrink:0;box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 6px 14px rgba(15,35,55,.16)}
.s-avatar.sm{width:42px;height:42px;border-radius:13px;font-size:15px}
.s-dot{position:absolute;right:-3px;bottom:-3px;width:14px;height:14px;border-radius:50%;border:2.5px solid var(--surface)}
.s-name{font-family:Fraunces,Georgia,serif;font-size:18px;font-weight:600;color:var(--ink);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s-sub{font-size:12.5px;color:var(--ink-soft);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}
.s-chip-id{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10.5px;font-weight:700;letter-spacing:.03em;color:var(--ink-soft);background:var(--line-soft);padding:3px 8px;border-radius:7px;flex-shrink:0}
.s-ther{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-soft);font-weight:600;min-width:0;flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s-ther-av{width:20px;height:20px;border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--teal));color:#fff;font-size:9px;font-weight:700;display:grid;place-items:center;flex-shrink:0}
.s-ther.unassigned{color:var(--ink-soft)}
.s-ther.unassigned .s-ther-av{background:var(--line);color:var(--ink-soft)}
.s-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:12px;border-top:1px solid var(--line-soft)}
.review-chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--line-soft);color:var(--ink-soft);white-space:nowrap}
.review-chip .rc-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.review-chip.overdue{background:#fdeaf3;color:#b30a63}
.review-chip.due{background:#fff3e6;color:#b5631a}
.review-chip.ok{background:#e9f8f4;color:#1f8a78}
.s-last{font-size:11.5px;color:var(--ink-soft);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.s-add{border:2px dashed #cbd8e2;background:rgba(255,255,255,.5);border-radius:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:150px;color:var(--ink-soft);font-weight:700;font-size:13px;transition:.15s}
.s-add:hover{border-color:var(--primary);color:var(--primary);background:#fff}

.roster{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:44px;box-shadow:var(--shadow)}
.r-row{display:grid;grid-template-columns:42px 1fr auto auto 18px;gap:14px;align-items:center;padding:13px 16px;cursor:pointer;border-bottom:1px solid var(--line-soft);transition:background .15s}
.r-row:last-child{border-bottom:none}
.r-row:hover{background:#f7fbfe}
.r-row:focus-visible{outline:none;background:#eef6fc;box-shadow:inset 3px 0 0 var(--primary)}
.r-main{min-width:0}
.r-ther{font-size:12.5px;color:var(--ink-soft);font-weight:600;white-space:nowrap}
.r-chev{color:var(--ink-soft)}

.calendar-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px;margin-bottom:14px}
.calendar-toolbar select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-bottom:18px}
.cal-head{background:#f8fbfd;color:var(--ink-soft);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;text-align:center;padding:8px}
.cal-day{min-height:116px;background:#fff;border:0;text-align:left;padding:8px;display:flex;flex-direction:column;gap:4px;overflow:hidden}
.cal-day:hover{background:#fafdff}
.cal-day.muted-day{background:#f4f7f9;cursor:default}
.cal-num{font-size:12px;font-weight:700;color:var(--ink-soft)}
.cal-event{display:block;border-left:3px solid var(--primary);background:#eef6fc;color:var(--ink);font-size:11px;font-weight:600;line-height:1.25;padding:4px 5px;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-event.class{border-color:var(--teal);background:#edf9f7}
.cal-event.assessment{border-color:var(--orange);background:#fff6ed}
.cal-event.review{border-color:var(--magenta);background:#fff0f7}
.cal-event.parent_meeting{border-color:var(--green);background:#f1faec}
.cal-more{font-size:11px;color:var(--ink-soft);font-weight:700}
.agenda-list{display:grid;gap:10px;margin-bottom:40px}
.agenda-row{display:flex;align-items:center;gap:12px;padding:12px}
.agenda-time{width:76px;display:flex;flex-direction:column;gap:2px;color:var(--ink-soft);font-size:12px}
.agenda-time b{color:var(--ink)}
.agenda-main{flex:1;min-width:0;display:flex;flex-direction:column}
.agenda-main b,.agenda-main span,.agenda-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.agenda-main small{color:var(--ink-soft);font-size:12px}

.table{width:100%;border-collapse:collapse;font-size:13px}
.table th,.table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line-soft)}
.table th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);background:#f8fbfd}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}
.kpi{padding:15px;border-top:4px solid var(--primary)}
.kpi:nth-child(2){border-top-color:var(--magenta)}.kpi:nth-child(3){border-top-color:var(--orange)}.kpi:nth-child(4){border-top-color:var(--teal)}
.kpi span{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.kpi b{font-size:28px;line-height:1.2;font-family:Fraunces,Georgia,serif}
.work-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:14px;margin-bottom:14px}
.work-grid h3{font-size:16px;margin:0 0 10px}
.pane{padding:16px}
.mini-row{display:grid;grid-template-columns:92px 1fr;gap:10px;padding:9px 0;border-bottom:1px solid var(--line-soft);font-size:13px}
.mini-row:last-child{border-bottom:none}
.mini-row b{font-size:12px;color:var(--ink-soft)}
.status-bar{position:relative;display:grid;grid-template-columns:1fr 32px;gap:10px;padding:7px 0;border-bottom:1px solid var(--line-soft);overflow:hidden}
.status-bar span,.status-bar b{position:relative;z-index:1;font-size:12px;text-transform:capitalize}
.status-bar i{position:absolute;left:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--teal),var(--blue));border-radius:999px}
.chart-row{position:relative;display:grid;grid-template-columns:1fr 42px;gap:10px;padding:9px 0;border-bottom:1px solid var(--line-soft);overflow:hidden;text-transform:capitalize}
.chart-row span,.chart-row b{position:relative;z-index:1;font-size:13px}
.chart-row i{position:absolute;left:0;bottom:0;height:4px;background:linear-gradient(90deg,var(--magenta),var(--orange),var(--teal));border-radius:999px}
.goal-list{display:grid;gap:12px;margin-bottom:40px}
.goal-card{padding:16px;border-left:5px solid var(--primary)}
.goal-card:nth-child(3n+2){border-left-color:var(--magenta)}.goal-card:nth-child(3n+3){border-left-color:var(--orange)}
.goal-card h3{font-size:17px;margin:10px 0 6px}
.goal-card p{margin:0 0 8px;color:var(--ink-soft)}
.goal-card ul{margin:8px 0 10px;padding-left:20px}
.check-list{display:grid;gap:6px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff;max-height:160px;overflow:auto}
.check-list .opt{font-size:13px;color:var(--ink)}

.doc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-bottom:40px}
.doc-card{padding:18px;display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start;border-top:4px solid var(--primary)}
.doc-card h3{margin:0 0 6px;font-size:17px}
.doc-card p{margin:0 0 12px}
.doc-card .btn{grid-column:2}
.doc-icon{width:52px;height:52px;border-radius:8px;background:linear-gradient(135deg,var(--primary),var(--teal));color:#fff;display:grid;place-items:center;font-size:12px;font-weight:800;letter-spacing:.04em}
.doc-icon.alt{background:linear-gradient(135deg,var(--magenta),var(--orange))}

.stbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:18px 0 6px}
.stbar h2{font-size:22px;margin:0}
.pill{font-size:12px;font-weight:600;color:var(--ink-soft);background:var(--line-soft);padding:4px 10px;border-radius:20px}
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0;padding:8px;margin-bottom:16px}
.profile-item{padding:12px;border-bottom:1px solid var(--line-soft)}
.profile-item span{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin-bottom:3px}
.profile-item b{font-size:14px;font-weight:600}
.iep-layout{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
.iep-block{padding:16px}
.iep-block h3{font-size:15px;margin:0 0 8px;font-family:Fraunces}
.iep-block p{margin:0 0 8px}
.iep-block ul{margin:6px 0 0;padding-left:20px}
.sessionbar{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;padding:16px;margin:10px 0 18px}
.sessionbar .field{margin:0}
.save-state{font-size:12px;color:var(--ink-soft);margin-left:auto;align-self:center}
.save-state.saved{color:var(--lv-ind)}

.legend{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:11px;color:var(--ink-soft);margin:0 0 16px}
.lvchip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;color:#fff;white-space:nowrap}
.lvchip .dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.85)}

.domain{margin-bottom:14px;overflow:hidden}
.domain-head{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;user-select:none;border-left:5px solid var(--c,var(--primary))}
.domain-head .dnum{width:26px;height:26px;border-radius:8px;background:var(--c,var(--primary));color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700}
.domain-head h3{font-size:16px;margin:0;flex:1;font-family:Fraunces}
.domain-head .count{font-size:12px;color:var(--ink-soft);background:var(--line-soft);padding:2px 9px;border-radius:20px}
.chev{transition:.2s;color:var(--ink-soft)}.domain.collapsed .chev{transform:rotate(-90deg)}
.domain.collapsed .domain-body{display:none}
.domain-body{padding:0 16px 8px;border-top:1px solid var(--line-soft)}
.area{padding:14px 0;border-bottom:1px solid var(--line-soft)}.area:last-child{border-bottom:none}
.area-title{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--teal);margin-bottom:10px}
.target{padding:12px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:#fcfdfe}
.target.logged{border-color:#cfe6d8;background:#fbfefc}
.target .goal{font-size:14px;font-weight:600;display:flex;gap:8px;align-items:flex-start}
.target .goal .info-toggle{margin-left:auto;font-size:11px;color:var(--primary);background:none;border:none;font-weight:600;white-space:nowrap}
.target .ref{font-size:12.5px;color:var(--ink-soft);background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;margin-top:8px}
.target .ref b{color:var(--ink)}
.target .ref textarea{width:100%;min-height:46px;padding:8px;border:1px solid var(--line);border-radius:8px;resize:vertical;margin-top:8px}
.target .controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.lvselect{display:inline-flex;align-items:center;gap:8px}
.lvselect select{padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;font-weight:600}
.note-row{display:flex;gap:8px;align-items:flex-start;margin-top:10px}
.note-row textarea{flex:1;min-height:54px;padding:10px;border:1px solid var(--line);border-radius:10px;resize:vertical}

.ai-panel{padding:18px;margin-top:18px}
.ai-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.ai-head .spark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--magenta),var(--orange));display:grid;place-items:center;color:#fff;flex-shrink:0}
.ai-panel h3{font-size:16px;margin:0;font-family:Fraunces}
.ai-panel .desc{font-size:12.5px;color:var(--ink-soft);margin:0 0 12px}
.ai-output{font-size:14px;line-height:1.6;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;min-height:30px}
.ai-output p{margin:0 0 8px}.ai-output ul{margin:6px 0 10px;padding-left:20px}.ai-output li{margin:3px 0}
.ai-output h4{font-size:13px;font-weight:700;color:var(--primary-deep);margin:12px 0 4px}
.ai-empty{color:var(--ink-soft);font-style:italic}
.ai-disclaimer{font-size:11px;color:var(--ink-soft);margin-top:8px}

.matrix-wrap{overflow-x:auto}
.matrix{border-collapse:collapse;font-size:12px;min-width:100%}
.matrix th,.matrix td{padding:6px 8px;border-bottom:1px solid var(--line-soft);white-space:nowrap}
.matrix th{font-size:11px;color:var(--ink-soft);text-align:center}
.matrix td.goal{white-space:normal;min-width:220px;font-weight:500}
.matrix .domain-row td{background:var(--line-soft);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}
.mdot{width:16px;height:16px;border-radius:50%;display:inline-block;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}

.stickybar{position:sticky;bottom:0;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:12px 0;margin-top:24px;z-index:30}
.stickybar .inner{display:flex;gap:10px;align-items:center;flex-wrap:wrap;max-width:1080px;margin:0 auto;padding:0 18px}
.stickybar .opt{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-soft)}

.modal-bg{position:fixed;inset:0;background:rgba(17,29,42,.52);display:grid;place-items:center;z-index:60;padding:18px}
.modal{width:100%;max-width:560px;padding:24px;max-height:90vh;overflow:auto;border-top:5px solid var(--primary)}
.modal h3{margin:0 0 14px;font-size:19px;font-family:Fraunces}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px;padding-top:12px;border-top:1px solid var(--line-soft)}

.spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}
.spinner.dark{border:2px solid rgba(47,128,196,.25);border-top-color:var(--primary)}
@keyframes spin{to{transform:rotate(360deg)}}
.empty{text-align:center;padding:44px 20px;color:var(--ink-soft);background:rgba(255,255,255,.55);border:1px dashed var(--line);border-radius:8px}
.toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;z-index:80;box-shadow:var(--shadow)}
.footer{text-align:center;padding:26px 18px 40px;color:var(--ink-soft);font-size:12px}.footer a{font-weight:600}

@media(max-width:560px){.topbar .titles .sub{display:none}.note-row{flex-direction:column}.calendar-grid{grid-template-columns:repeat(7,120px);overflow-x:auto}.agenda-row{align-items:flex-start}.agenda-time{width:62px}.cal-day{min-height:100px}.doc-card{grid-template-columns:1fr}.doc-card .btn{grid-column:1}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ===== Premium modal (sectioned form) ===== */
.modal.lg{max-width:720px}
.modal-head{margin-bottom:6px}
.modal-head h3{margin:4px 0 0;font-size:22px}
.modal-sub{margin:6px 0 0;font-size:13px;color:var(--ink-soft);line-height:1.5}
.fgroup{padding:16px 0;border-top:1px solid var(--line-soft)}
.fgroup-label{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--teal);margin-bottom:12px}
.field textarea{min-height:56px;resize:vertical;line-height:1.5}
.field textarea.tall{min-height:84px}
.modal-actions{position:sticky;bottom:-24px;margin:16px -24px -24px;padding:14px 24px;background:var(--surface);border-top:1px solid var(--line-soft);display:flex;gap:10px;justify-content:flex-end;z-index:2}

/* ===== Caseload responsive ===== */
@media(max-width:860px){
  .cl-toolbar{grid-template-columns:1fr;grid-template-areas:"search" "controls" "filters" "count"}
  .cl-controls{justify-content:space-between}
  .cl-sort{flex:1}
}
@media(max-width:640px){
  .cl-stats{grid-template-columns:repeat(2,1fr)}
  .cl-stat b{font-size:26px}
  .r-row{grid-template-columns:42px 1fr 18px}
  .r-row .review-chip{display:none}
}

/* ===== Analytics grid ===== */
.an-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:32px}
.an-grid .pane{padding:16px}
.an-grid h3{margin:0 0 14px;font-size:14px;font-weight:700;color:var(--ink)}

/* ===== Alert rows (review dashboard) ===== */
.alert-row{border-left:4px solid var(--line)}
.alert-danger{border-left-color:var(--magenta)!important;background:#fdf0f7}
.alert-warn{border-left-color:var(--orange)!important;background:#fff8f0}
.alert-info{border-left-color:var(--blue)!important;background:#f0f6fd}
.alert-heading{font-size:14px;font-weight:700;color:var(--magenta);margin:0 0 10px;display:flex;align-items:center;gap:6px}
.alert-heading.info{color:var(--blue)}
.kpi-alert{border-top:3px solid var(--magenta)}
.kpi-warn{border-top:3px solid var(--orange)}
.kpi-alert b{color:var(--magenta)}
.kpi-warn b{color:var(--orange)}

/* ===== File link ===== */
.file-link{color:var(--primary);text-decoration:none;word-break:break-all}
.file-link:hover{text-decoration:underline}

/* ===== Attendance kpi strip ===== */
.cl-stat::before,.card.kpi{position:relative}

/* ===== Progress chart ===== */
.progressTarget-select{flex:1;min-width:200px;padding:6px 10px;border:1px solid var(--line);border-radius:9px;font-size:13px}

/* ===== Responsive ===== */
@media(max-width:640px){.an-grid{grid-template-columns:1fr}}

/* ===== Settings ===== */
.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start;margin-bottom:32px}
.settings-card{padding:22px}.settings-card h3{margin:5px 0 8px}.settings-card>.muted{line-height:1.5;margin:0 0 14px}
.settings-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}
.settings-status{margin:12px 0;padding:10px 12px;border-radius:10px;background:var(--surface);border:1px solid var(--line);font-size:13px;color:var(--muted)}
.settings-status.good{background:#ecf8f1;border-color:#bfe6ce;color:#176c3a}
.settings-warning{margin-top:14px;padding:10px 12px;border-radius:10px;background:#fff7e8;border:1px solid #f1d49b;color:#76551a;font-size:13px;line-height:1.45}
.settings-kv{display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,1.5fr);gap:10px 16px;margin-top:14px;font-size:13px}.settings-kv span{color:var(--muted)}.settings-kv b{overflow-wrap:anywhere}
@media(max-width:760px){.settings-grid{grid-template-columns:1fr}}
