:root{--bg: #f4f1ea;--bg-elev: #fffcf6;--ink: #1c2430;--muted: #5b6675;--line: #d9d2c4;--accent: #0f6e56;--accent-soft: #d8f0e7;--warn: #b45309;--warn-soft: #fef3c7;--flag: #b91c1c;--admin: #102a43;--admin-ink: #e0fcff;--shadow: 0 12px 40px rgba(28, 36, 48, .12);--radius: 14px;font-family:DM Sans,system-ui,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at top left,#e7f6ef 0,transparent 40%),radial-gradient(circle at top right,#fde7c7 0,transparent 35%),var(--bg)}button,input,select,textarea{font:inherit}h1,h2,h3{margin:0 0 .35rem;letter-spacing:-.02em}p{margin:0}.app{max-width:1200px;margin:0 auto;padding:1rem 1.25rem 3rem}.admin-strip{display:flex;flex-wrap:wrap;gap:.85rem;align-items:center;background:var(--admin);color:var(--admin-ink);border-radius:16px;padding:.85rem 1rem;margin-bottom:1.25rem}.admin-brand{display:flex;align-items:center;gap:.55rem;font-size:.85rem;opacity:.9}.admin-pill{background:#243b53;color:#9fb3c8;border-radius:999px;padding:.15rem .55rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700}.admin-metrics{display:flex;flex-wrap:wrap;gap:.55rem;flex:1}.metric{background:#ffffff0f;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:.45rem .7rem;min-width:7.5rem;display:grid;gap:.05rem}.metric.accent{background:#0e7c66;border-color:transparent}.metric-value{font-family:IBM Plex Mono,monospace;font-weight:500;font-size:1.05rem}.metric-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;opacity:.75}.metric-hint{font-size:.65rem;opacity:.55}.topbar{display:flex;justify-content:space-between;gap:1rem;align-items:end;margin-bottom:.85rem}.topbar-meta{display:flex;gap:1.5rem}.topbar-meta .label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.eyebrow{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-weight:600;margin-bottom:.2rem}.banner{background:var(--warn-soft);border:1px solid #f6d58a;color:#7c4a03;border-radius:12px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.92rem}.matrix-wrap{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);overflow:auto;box-shadow:var(--shadow)}.matrix{width:100%;border-collapse:collapse;min-width:820px}.matrix th,.matrix td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:.75rem;vertical-align:top;text-align:left}.matrix th:last-child,.matrix td:last-child{border-right:none}.matrix thead th{background:#efe9dc;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.student-col{width:160px}.student-col strong{display:block}.muted{color:var(--muted);font-size:.85rem}.tile{width:100%;text-align:left;border:1px solid var(--line);background:#f8faf7;border-radius:12px;padding:.65rem .7rem;display:grid;gap:.2rem;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.tile:hover:not(.empty){transform:translateY(-1px);box-shadow:0 6px 16px #1c243014}.tile.empty{background:transparent;color:var(--muted);border-style:dashed;cursor:default;justify-content:center;text-align:center;padding:1.2rem .5rem}.tile.status-pending_review{background:var(--warn-soft);border-color:#f0c36a}.tile.status-approved{background:var(--accent-soft);border-color:#9ed5c2}.tile.flagged{box-shadow:inset 3px 0 0 var(--flag)}.tile-top{font-weight:600;display:flex;justify-content:space-between;gap:.4rem}.tile-bot{font-size:.82rem}.tile-status{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.flag{background:var(--flag);color:#fff;border-radius:999px;width:1.15rem;height:1.15rem;display:inline-grid;place-items:center;font-size:.75rem;font-weight:700}.btn{border:1px solid transparent;border-radius:999px;padding:.55rem 1rem;cursor:pointer;font-weight:600}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){filter:brightness(1.05)}.btn.ghost{background:transparent;border-color:#fff3;color:inherit}.admin-strip .btn.ghost{color:var(--admin-ink)}.topbar .btn.ghost,.modal .btn.ghost{border-color:var(--line);color:var(--ink);background:#fff}.btn.small{padding:.35rem .7rem;font-size:.8rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1018288c;display:grid;place-items:center;padding:1rem;z-index:40}.modal{width:min(860px,100%);max-height:min(92vh,920px);overflow:auto;background:var(--bg-elev);border-radius:18px;box-shadow:var(--shadow);display:flex;flex-direction:column}.modal-head,.modal-foot{padding:1rem 1.2rem;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:1rem;align-items:start;position:sticky;top:0;background:var(--bg-elev);z-index:1}.modal-foot{border-bottom:none;border-top:1px solid var(--line);top:auto;bottom:0;align-items:center}.modal-body{padding:1rem 1.2rem 1.5rem;display:grid;gap:1.25rem}.modal-body section{display:grid;gap:.55rem}.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.85rem;display:grid;gap:.55rem}.card.abc{border-left:4px solid var(--flag)}.card-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}label{display:grid;gap:.3rem;font-size:.8rem;color:var(--muted);font-weight:600}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:.55rem .65rem;background:#fff;color:var(--ink)}textarea{resize:vertical;line-height:1.4}.hint{font-size:.85rem;color:var(--muted)}.badge{display:inline-block;padding:.1rem .45rem;border-radius:999px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.badge.status-pending_review{background:var(--warn-soft);color:var(--warn)}.badge.status-approved{background:var(--accent-soft);color:var(--accent)}.foot-actions{display:flex;gap:.5rem;margin-left:auto}.toast{color:var(--accent);font-weight:600;font-size:.88rem}@media (max-width: 720px){.topbar{flex-direction:column;align-items:start}.card-row{grid-template-columns:1fr}}.pipeline{margin:1rem 0 1.25rem;padding:1rem 1.25rem;border:1px solid #d8e2ef;border-radius:12px;background:#fbfdff}.pipeline-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.pipeline-head h2{margin:0 0 .2rem;font-size:1.05rem}.pipeline-filters{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-start;margin-top:.75rem}.multi-filter{position:relative}.filter-btn{display:inline-flex;align-items:center;gap:.45rem;background:#fff;border:1px solid #d8e2ef;border-radius:999px;padding:.35rem .75rem;cursor:pointer;color:var(--ink);font-weight:600;font-size:.85rem;max-width:18rem}.filter-label{color:var(--muted);font-weight:700;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}.filter-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-btn:focus-visible,.filter-panel input:focus-visible,.filter-reset:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.filter-panel{position:absolute;z-index:6;top:calc(100% + .3rem);left:0;min-width:14rem;max-height:16rem;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:.35rem}.filter-panel label{display:flex;flex-direction:row;align-items:center;gap:.45rem;font-size:.85rem;color:var(--ink);font-weight:500;padding:.28rem .4rem;border-radius:8px}.filter-panel input{width:auto;accent-color:var(--accent)}.filter-reset{background:#fff;border:1px solid #d8e2ef;border-radius:999px;padding:.35rem .75rem;cursor:pointer;color:var(--accent);font-weight:700;font-size:.85rem}.filter-reset:disabled{opacity:.45;cursor:not-allowed}.filter-count{margin-top:.45rem}.pipeline-table{width:100%;border-collapse:collapse;margin-top:.6rem;font-size:.9rem}.pipeline-table th,.pipeline-table td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid #e7edf5}.transcript{border:1px solid #e7edf5;border-radius:8px;background:#fff;padding:0}.turns{list-style:none;padding:.45rem .8rem .6rem;margin:0;font-size:.88rem;line-height:1.45;max-height:320px;overflow:auto;position:relative}.turns li.turn{margin:.35rem 0;border-radius:8px;padding:.35rem .5rem;outline:none}.turns li.turn.turn-flash{animation:turn-flash 1.8s ease-out;box-shadow:0 0 0 3px #1c2430}@keyframes turn-flash{0%,60%{box-shadow:0 0 0 3px #1c2430}to{box-shadow:0 0 0 3px transparent}}.turns .ts,.turns .speaker-label,.turns .turn-text{color:var(--ink)}.turns .ts{font-variant-numeric:tabular-nums}.turns .speaker-label{font-weight:700}.speaker-timeline{--tl-label: 10.5rem;display:grid;gap:.35rem;padding:.6rem .8rem .7rem;border-bottom:1px solid #e7edf5}.tl-row{display:grid;grid-template-columns:var(--tl-label) minmax(0,1fr);gap:.6rem;align-items:stretch}.tl-label{min-width:0}.speaker-assign{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;border-radius:10px;padding:.35rem .5rem;border:1px solid var(--line);border-left-width:5px}.speaker-name{font-weight:700;color:var(--ink)}.speaker-assign select{background:#fff;color:var(--ink);padding:.15rem .25rem;font-size:.8rem;width:100%}.speaker-assign select:disabled{opacity:.85}.tl-track{position:relative;min-width:0}.tl-axis-row .tl-label{font-size:.72rem;color:var(--muted);align-self:end;text-align:right;font-variant-numeric:tabular-nums}.tl-axis{height:1.2rem;border-bottom:1px solid #c9d3df}.tl-tick{position:absolute;bottom:2px;transform:translate(-50%);font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.tl-tick:after{content:"";position:absolute;left:50%;bottom:-3px;width:1px;height:4px;background:#9aa6b5}.tl-tick.tl-tick-start{transform:none}.tl-tick.tl-tick-start:after{left:0}.tl-tick.tl-tick-end{transform:translate(-100%)}.tl-tick.tl-tick-end:after{left:100%}.tl-speaker-track{border-radius:8px;border:1px solid #e3e8ef;overflow:hidden;min-height:2.4rem}.tl-grid{position:absolute;top:0;bottom:0;width:1px;background:#1c243012}.tl-guide{position:absolute;top:0;bottom:0;width:0;border-left:1.5px dashed;pointer-events:none;z-index:2}.tl-guide-incident{border-color:#b91c1cb3}.tl-guide-note{border-color:#1e407899}.tl-block{position:absolute;top:18%;bottom:18%;min-width:4px;padding:0;margin:0;border:1.5px solid;border-radius:4px;cursor:pointer;z-index:1}.tl-block:hover{filter:brightness(.93);top:10%;bottom:10%}.tl-block:focus-visible,.tl-marker:focus-visible{outline:3px solid #1c2430;outline-offset:1px;z-index:3}.tl-markers-label{font-size:.8rem;font-weight:700;color:var(--ink);padding:.3rem .5rem;border-radius:10px;border:1px solid var(--line);background:#f7f7f4;display:flex;align-items:center}.tl-marker-track{border-radius:8px;border:1px solid #e3e8ef;background:#fafbfc}.tl-flagpole{position:absolute;top:0;width:2px;margin-left:-1px}.tl-marker{position:absolute;height:18px;line-height:16px;padding:0 6px 0 7px;font-size:.72rem;font-weight:700;white-space:nowrap;border-radius:0 4px 4px 0;border:1px solid;cursor:pointer;z-index:1;border-left-width:3px;background:#fff}.tl-marker.tl-marker-left{transform:translate(-100%);border-radius:4px 0 0 4px;border-left-width:1px;border-right-width:3px;padding:0 7px 0 6px}.tl-marker.tl-incident{color:#8f1414;border-color:#b91c1c;background:#fdecea}.tl-marker.tl-note{color:#1e3a66;border-color:#2c5aa0;background:#e6eefa}.tl-flagpole.tl-incident{background:#b91c1c}.tl-flagpole.tl-note{background:#2c5aa0}.tl-marker:hover{filter:brightness(.95)}.tl-empty{position:absolute;left:.5rem;top:4px;font-size:.75rem;color:var(--muted)}@media (max-width: 640px){.speaker-timeline{--tl-label: 7.5rem}}.modal-foot .btn{white-space:nowrap}.foot-actions{flex-shrink:0}.foot-note{display:flex;flex-direction:column;gap:.15rem;min-width:0}.markers-line{margin:0}.badge.status-needs_class{background:#fdecea;color:#a4262c}.banner.warn{background:#fdecea;border-color:#f1b0b0;color:#7a1c1c;margin:0}.demo-notice{background:#1f2a44;color:#fff;text-align:center;font-size:14px;font-weight:600;padding:8px 12px;letter-spacing:.01em}.auth-page{min-height:calc(100vh - 40px);display:flex;align-items:flex-start;justify-content:center;padding:64px 16px}.auth-card{width:100%;max-width:420px;background:#fffdf8;border:1px solid #e7dfcf;border-radius:14px;padding:28px 28px 22px;box-shadow:0 10px 30px #10182814}.auth-card h1{font-size:26px;margin:4px 0 16px}.auth-form{display:grid;gap:14px}.auth-form label{display:grid;gap:6px;font-size:14px;font-weight:600}.auth-form input{font:inherit;padding:10px 12px;border:1px solid #d6cdb8;border-radius:8px;background:#fff}.auth-error{color:#a4262c;margin:0;font-size:14px}.auth-ok{color:#1d6b45;margin:0;font-size:14px}.signup-notice{font-size:13px;color:#555;margin:14px 0 0}.auth-switch{font-size:14px;margin:16px 0 0;color:#555}.auth-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}button.link{background:none;border:0;padding:0;color:#1d6b45;font:inherit;text-decoration:underline;cursor:pointer}.tabs{display:flex;gap:.35rem;margin:0 0 1rem;border-bottom:1px solid var(--line)}.tab{background:none;border:none;padding:.55rem .9rem;cursor:pointer;font-weight:600;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px}.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}.planner{display:grid;gap:.85rem}.pl-toolbar{display:flex;justify-content:space-between;gap:1.5rem;align-items:end}.pl-toolbar h2{font-size:1.3rem}.pl-toolbar .muted{max-width:46rem}.pl-class{display:grid;gap:.2rem}.pl-class .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.pl-class select{padding:.4rem .6rem;border:1px solid var(--line);border-radius:10px;background:#fff;min-width:11rem}.pl-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;align-items:start}.pl-loading{opacity:.7;transition:opacity .15s}.pl-week{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.85rem .9rem 1rem;display:grid;gap:.75rem;min-width:0}.pl-week.pl-current{border:2px solid var(--accent);box-shadow:0 14px 40px #0f6e5629}.pl-week.pl-next{background:#fbf9f4}.pl-week-head{display:flex;align-items:center;gap:.5rem;justify-content:center}.pl-week-title{display:grid;text-align:center;flex:1}.pl-week-name{font-weight:700;font-size:1.02rem;display:inline-flex;gap:.45rem;justify-content:center;align-items:center}.pl-week-range{color:var(--muted);font-size:.85rem;font-family:IBM Plex Mono,monospace}.pl-anchor{font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;background:var(--accent);color:#fff;border-radius:999px;padding:.1rem .45rem}.pl-arrow{width:2rem;height:2rem;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:1.25rem;line-height:1;cursor:pointer;color:var(--ink);display:grid;place-items:center}.pl-arrow:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.pl-arrow:disabled{opacity:.35;cursor:not-allowed}.pl-reset{justify-self:center;margin-top:-.4rem;font-size:.8rem}.pl-sub{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--muted);display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.pl-plan{display:grid;gap:.3rem;padding-bottom:.75rem;border-bottom:1px dashed var(--line)}.pl-plan h4{margin:.35rem 0 0;font-size:.85rem}.pl-plan ul{margin:0;padding-left:1.1rem;display:grid;gap:.15rem;font-size:.9rem}.pl-plan-text{font-size:.9rem;line-height:1.45;white-space:pre-wrap}.pl-pill{font-size:.65rem;border-radius:999px;padding:.08rem .45rem;letter-spacing:.04em;text-transform:uppercase;font-weight:700;border:1px solid transparent}.pl-pill.approved{background:var(--accent-soft);color:var(--accent);border-color:#9ed5c2}.pl-pill.draft{background:var(--warn-soft);color:var(--warn);border-color:#f0c36a}.pl-pill.none{background:#eee9df;color:var(--muted)}.pl-pill.suggest{background:#e8eef7;color:#2c4a7a;border-color:#c4d3ea}.pl-students{display:grid;gap:.55rem}.pl-student{border:1px solid var(--line);background:#fff;border-radius:12px;padding:.7rem .75rem;display:grid;gap:.4rem}.pl-student>header{display:flex;justify-content:space-between;gap:.5rem;align-items:baseline;flex-wrap:wrap}.pl-summary{font-size:.9rem;line-height:1.4}.pl-iep{list-style:none;margin:0;padding:0;display:grid;gap:.3rem}.pl-iep li{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;font-size:.82rem}.pl-goal-tag{font-size:.7rem;font-weight:700;color:var(--admin);background:#e6edf3;border-radius:6px;padding:.05rem .4rem}.pl-check{font-weight:600;border-radius:6px;padding:.05rem .4rem;font-size:.75rem}.pl-check.evidence_seen{background:var(--accent-soft);color:var(--accent)}.pl-check.not_seen{background:var(--warn-soft);color:var(--warn)}.pl-check.not_enough,.pl-check.none{background:#eee9df;color:var(--muted)}.pl-check-note{color:var(--muted);font-size:.78rem;flex-basis:100%;padding-left:.1rem}.pl-note{border-top:1px dashed var(--line);padding-top:.4rem;display:grid;gap:.2rem;font-size:.9rem}.pl-hint{font-size:.75rem;color:var(--muted);font-style:italic}.pl-wait{padding:1rem 0;text-align:center}.pl-form{display:grid;gap:.45rem}.pl-form label{display:grid;gap:.2rem;font-size:.8rem;font-weight:600}.pl-form textarea,.pl-form input,.pl-form select{width:100%;border:1px solid var(--line);border-radius:8px;padding:.4rem .5rem;font-size:.85rem;font-weight:400;background:#fff}.pl-check-row{display:grid;grid-template-columns:auto 1fr;gap:.3rem;align-items:center}.pl-check-row input,.pl-check-row textarea{grid-column:1 / -1;resize:vertical}.pl-actions{display:flex;gap:.35rem;justify-content:flex-end;flex-wrap:wrap}.btn.ghost-line{background:#fff;border-color:var(--line);color:var(--ink)}.pl-error{background:#fdecec;color:var(--flag);border:1px solid #f5c2c2;border-radius:8px;padding:.45rem .6rem;font-size:.82rem}.pl-error q{font-style:italic}@media (max-width: 900px){.pl-board{grid-template-columns:1fr}.pl-toolbar{flex-direction:column;align-items:stretch}}.pl-week button.link{justify-self:start;font-size:.82rem}.pl-week .pl-reset{justify-self:center}.pl-links{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;justify-self:stretch}.btn.ai-btn{background:#eef0fb;color:#3a3f8f;border-color:#cfd3f1;padding:.22rem .6rem;font-size:.75rem}.btn.ai-btn:hover:not(:disabled){background:#e3e6f8}.pl-form .btn.ai-btn{justify-self:start}.pl-pill.ai{background:#3a3f8f;color:#fff}.pl-pill.ai-saved{background:#eef0fb;color:#3a3f8f;border-color:#cfd3f1}.pl-ai-note{background:#f4f5fd;border:1px dashed #b9bfe9;border-radius:8px;padding:.4rem .55rem;font-size:.8rem;display:grid;gap:.15rem}.pl-ai-note .muted{font-size:.74rem}.pl-ai-note .pl-pill{justify-self:start}.pl-versions{font-weight:500;text-transform:none;letter-spacing:0;color:var(--muted);margin-left:.15rem}.pl-versions:before{content:"· "}.admin-actions{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}.btn.admin-btn{background:#e0fcff;color:var(--admin)}.btn.admin-btn:hover{filter:brightness(.95)}.admin-panel{width:min(1000px,100%);color:var(--ink)}.admin-panel.narrow{width:min(520px,100%)}.admin-filters{display:flex;flex-wrap:wrap;gap:.75rem;align-items:end}.admin-filters input,.admin-filters select{border:1px solid var(--line);border-radius:8px;padding:.35rem .5rem;background:#fff;color:var(--ink)}.admin-filters .auth-error{flex-basis:100%}.admin-choice{border:1px solid var(--line);border-radius:12px;padding:.6rem .85rem;display:flex;gap:1.25rem}.admin-choice legend{font-size:.8rem;color:var(--muted);font-weight:600;padding:0 .3rem}.admin-choice label{display:flex;align-items:center;gap:.4rem;color:var(--ink);font-size:.9rem;white-space:nowrap}.admin-msg{background:#fff;border:1px dashed var(--line);border-radius:12px;padding:.85rem;color:var(--muted)}.admin-msg.error{border:1px solid #f3b4b4;background:#fff1f1;color:#8a1c1c}.admin-msg.ok{border:1px solid #b7e4d3;background:var(--accent-soft);color:#0b4f3e}.admin-panel-foot{display:flex;justify-content:space-between;align-items:center;gap:1rem}.journal-table td{vertical-align:top}.journal-table .mono{font-family:IBM Plex Mono,monospace;font-size:.8rem;white-space:nowrap}.journal-record{font-size:.72rem}
