:root{--brand:#1f5fbf;--brand-2:#0f766e;--bg:#f6f7f9;--surface:#ffffff;--surface-2:#f0f2f5;--text:#16191d;--text-2:#4a5260;--border:#d9dde3;--danger:#b42318;--danger-bg:#fef3f2;--success:#067647;--success-bg:#ecfdf3;--warn:#93370d;--warn-bg:#fffaeb;--focus:#1f5fbf;--radius:10px;--shadow:0 1px 2px rgba(16,24,40,0.06);--font:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#111418;--surface:#181c21;--surface-2:#20252c;--text:#eef0f3;--text-2:#a9b1bd;--border:#2e3540;--danger:#fda29b;--danger-bg:#2d1412;--success:#75e0a7;--success-bg:#0d2a1d;--warn:#fec84b;--warn-bg:#2b2109;--focus:#84adff;color-scheme:dark}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font:15px/1.5 var(--font)}a{color:var(--brand)}h1{font-size:1.5rem;margin:0 0 4px}h2{font-size:1.1rem;margin:0 0 12px}p.lead{color:var(--text-2);margin:0 0 24px}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}.skip-link{position:absolute;left:-999px;top:8px;background:var(--surface);padding:8px 12px;z-index:10}.skip-link:focus{left:8px}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:4px}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;font-weight:650}.brand img{width:32px;height:32px;object-fit:contain;border-radius:6px}.brand .mark{width:32px;height:32px;border-radius:8px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:700}.nav a{display:block;padding:9px 10px;border-radius:8px;color:var(--text);text-decoration:none;min-height:40px}.nav a:hover{background:var(--surface-2)}.nav a[aria-current=page]{background:color-mix(in srgb,var(--brand) 12%,transparent);color:var(--brand);font-weight:600}.nav .group{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);padding:14px 10px 4px}.sidebar .spacer{flex:1 1}.sidebar .signout{margin:8px 10px 0}.main{padding:28px 32px 48px;max-width:1180px;width:100%;min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.demo-banner{background:var(--warn-bg);color:var(--warn);border:1px solid;border-radius:8px;padding:6px 12px;font-size:.85rem}@media (max-width:860px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{min-width:0;border-right:0;border-bottom:1px solid var(--border);padding:12px}.nav{display:flex;gap:4px;overflow-x:auto}.nav .group,.sidebar .spacer{display:none}.nav a{white-space:nowrap}.nav>div{display:contents}.sidebar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;grid-gap:8px;gap:8px}.sidebar .brand{padding:0}.sidebar .nav{grid-column:1/-1;grid-row:2;padding-bottom:4px}.sidebar .who{display:none}.sidebar .signout{margin:0;grid-column:2;grid-row:1;padding:8px 12px}.main{padding:20px 16px 40px}}.card{min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);margin-bottom:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px}.grid-2,.grid-3{display:grid;gap:16px}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px}@media (max-width:860px){.grid-2,.grid-3{grid-template-columns:1fr}}.stat{font-size:1.8rem;font-weight:650}.muted{color:var(--text-2)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-weight:550;font-size:.92rem}.field .hint{color:var(--text-2);font-size:.82rem}.field .error{color:var(--danger);font-size:.85rem}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 12px;min-height:44px;width:100%}input[aria-invalid=true],select[aria-invalid=true]{border-color:var(--danger)}input[type=color]{padding:4px;width:64px}.row{align-items:center}.actions,.row{display:flex;gap:10px;flex-wrap:wrap}.actions{justify-content:flex-end;margin-top:8px}.btn{font:inherit;font-weight:600;border-radius:8px;padding:10px 16px;min-height:44px;border:1px solid transparent;cursor:pointer;background:var(--brand);color:#fff}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.btn.danger{background:var(--danger)}.btn.link{background:none;color:var(--brand);padding:0;min-height:auto}.alert{border-radius:8px;padding:12px 14px;margin-bottom:14px;border:1px solid}.alert.error{background:var(--danger-bg);color:var(--danger)}.alert.success{background:var(--success-bg);color:var(--success)}.alert.info{background:var(--surface-2);border-color:var(--border)}.alert.info,.empty{color:var(--text-2)}.empty{text-align:center;padding:36px 16px}.skeleton{height:14px;background:linear-gradient(90deg,var(--surface-2),var(--border),var(--surface-2));border-radius:6px;margin:10px 0;animation:pulse 1.2s infinite}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}.table-wrap{overflow-x:auto;position:relative}table{width:100%;border-collapse:collapse;font-size:.92rem}td,th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}th{text-transform:uppercase;letter-spacing:.03em;font-weight:600}.badge,th{font-size:.78rem;color:var(--text-2)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border)}.badge.ok{background:var(--success-bg);color:var(--success)}.badge.ok,.badge.warn{border-color:transparent}.badge.warn{background:var(--warn-bg);color:var(--warn)}.mono,code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem}.auth{min-height:100vh;display:grid;place-items:center;padding:16px}.auth .card{width:100%;max-width:420px}.role-list{list-style:none;padding:0;margin:0 0 12px;display:grid;grid-gap:8px;gap:8px}.role-list li{padding:8px 0;border-bottom:1px solid var(--border);justify-content:space-between}.matrix th[scope=row]{font-weight:500;min-width:200px}.matrix thead th{white-space:nowrap;font-size:.85rem}.matrix td.center{text-align:center}.table-wrap:focus-visible{outline:3px solid var(--focus,#1f5fbf);outline-offset:2px}.eyebrow{text-transform:uppercase;letter-spacing:.06em;font-size:.75rem;font-weight:600;color:var(--text-2);margin:0 0 4px}.field.check{display:flex;flex-direction:row;align-items:center;gap:10px}.field.check input{width:20px;height:20px}.btn.danger{background:#a3261b;border-color:#a3261b;color:#fff}.env-banner{background:#7a2e00;color:#fff;text-align:center;font-weight:600;font-size:.85rem;padding:6px 16px}.crumbs{margin:0 0 6px;font-size:.9rem;color:var(--text-2)}.seg{gap:4px}.check-inline,.seg{display:inline-flex}.check-inline{align-items:center;gap:6px;font-size:.95rem}.check-inline input{width:18px;height:18px}fieldset.plain{border:0;padding:0;margin:0 0 12px;min-width:0}fieldset.plain legend{font-weight:600;margin-bottom:6px;padding:0}.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(230px,1fr);grid-gap:12px;gap:12px;overflow-x:auto;padding-bottom:8px;margin-bottom:16px}.board:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.board .col{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:10px;min-width:0}.col-title{font-size:.95rem;margin:0 0 4px;display:flex;justify-content:space-between;align-items:center;gap:6px}.col-meta{font-size:.8rem;margin:0 0 8px}.cards{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.ref-card{display:grid;grid-gap:2px;gap:2px;background:var(--surface);border-left:1px solid var(--border);border:1px solid var(--border);border-left-width:4px;border-radius:8px;padding:8px 10px;color:var(--text);text-decoration:none;font-size:.9rem}.ref-card:hover{border-color:var(--brand)}.ref-card.p-high,.ref-card.p-urgent{border-left-color:var(--warn)}.facts{display:grid;grid-template-columns:minmax(120px,34%) 1fr;grid-gap:8px 14px;gap:8px 14px;margin:0}.facts dt{color:var(--text-2);font-weight:600}.facts dd{margin:0;min-width:0;overflow-wrap:anywhere}.align-start{align-items:start}.stack{display:grid;grid-gap:16px;gap:16px;min-width:0}.stack>.card{margin-bottom:0}.activity,.timeline{list-style:none;padding:0;margin:0;display:grid;grid-gap:10px;gap:10px}.timeline li{border-left:3px solid var(--border);padding-left:10px}.activity li{border-bottom:1px solid var(--border);padding-bottom:8px}.client-head{display:grid;grid-template-columns:1fr auto;grid-gap:12px 24px;gap:12px 24px;align-items:center}.head-facts{display:flex;gap:20px;margin:0;flex-wrap:wrap}.head-facts dt{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2)}.head-facts dd{margin:2px 0 0;font-weight:600}@media (max-width:860px){.client-head{grid-template-columns:1fr}}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin:0 0 16px;overflow-x:auto}.tabs [role=tab]{font:inherit;background:none;border:0;border-bottom:3px solid transparent;padding:10px 14px;min-height:44px;cursor:pointer;color:var(--text-2);white-space:nowrap}.tabs [role=tab][aria-selected=true]{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}.later{columns:220px 2;margin:0;padding-left:20px}.sub-card{border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:12px}.g-list{list-style:none;padding:0;margin:0}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}fieldset.rights{border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin:10px 0;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.checklist,fieldset.rights{display:grid;grid-gap:8px;gap:8px}.checklist{list-style:none;padding:0;margin:0}.checklist li{border:1px solid var(--border);border-radius:8px;padding:8px 12px}.checklist li.st-done{background:var(--success-bg);border-color:transparent}progress{vertical-align:middle;width:90px;accent-color:var(--brand)}.btn.small{min-height:36px;padding:6px 12px;font-size:.9rem}.app-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:32px;padding-top:14px;border-top:1px solid var(--border);font-size:.85rem}.app-footer>.muted{overflow-wrap:anywhere;min-width:0}.footer-actions{display:flex;gap:8px;flex-wrap:wrap}.modal{border:1px solid var(--border);border-radius:var(--radius);padding:22px;width:min(560px,calc(100vw - 32px));background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.modal::-webkit-backdrop{background:rgb(0 0 0/.45)}.modal::backdrop{background:rgb(0 0 0/.45)}.modal h2{margin-top:0}.tour{position:fixed;right:16px;bottom:16px;z-index:20;width:min(380px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;background:var(--surface);border:2px solid var(--brand);border-radius:var(--radius);padding:16px 18px;box-shadow:0 10px 30px rgb(0 0 0/.2)}.tour h2{margin:4px 0 6px;font-size:1.1rem}.tour h2:focus{outline:none}.subform{border:1px solid var(--border);border-radius:8px;padding:14px;margin:10px 0;background:var(--surface-2);min-width:0}.subform legend{font-weight:600;padding:0 6px}.error-text{color:var(--danger);font-weight:600}.queue-counts{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.queue-counts button[aria-pressed=true]{outline:2px solid var(--brand)}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px}@media (max-width:860px){.grid-4{grid-template-columns:minmax(0,1fr)}}.segmented{display:inline-flex;gap:4px}.queue-counts button[aria-pressed=true],.segmented button[aria-pressed=true]{background:color-mix(in srgb,var(--brand) 14%,var(--surface));border-color:var(--brand);color:var(--brand)}.sched-toolbar .row{justify-content:space-between}.week{display:grid;grid-gap:0 6px;gap:0 6px;min-width:0}.week-head{font-weight:600;font-size:.85rem;padding:4px 2px 8px;border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;background:var(--surface)}.week-hours{display:grid;grid-auto-rows:44px;font-size:.75rem;color:var(--text-2)}.week-hour{border-top:1px dashed var(--border);padding-top:2px}.week-col{position:relative;border-left:1px solid var(--border);background:repeating-linear-gradient(to bottom,transparent 0 43px,var(--border) 43px 44px)}.week-col .slot{position:absolute;left:0;right:0;height:22px}.week-col .slot:hover{background:color-mix(in srgb,var(--brand) 6%,transparent)}.appt{position:absolute;left:0;width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:0;overflow:hidden;text-align:left;font:inherit;font-size:.75rem;line-height:1.2;padding:2px 6px;border-radius:6px;border:1px solid color-mix(in srgb,var(--brand) 40%,transparent);background:color-mix(in srgb,var(--brand) 12%,var(--surface));color:var(--text);cursor:pointer;z-index:1}.appt.open{border-style:dashed;background:var(--warn-bg);color:var(--warn)}.appt.cancelled{text-decoration:line-through;background:var(--surface-2);border-style:dotted}.appt.supervision,.appt.treatment_modification{background:color-mix(in srgb,var(--brand-2) 16%,var(--surface));border-color:var(--brand-2)}.appt.admin,.appt.meeting,.appt.pto,.appt.training,.appt.travel{background:var(--surface-2);border-color:var(--border)}.appt-time{font-weight:600}.appt-staff,.appt-who{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:4px;gap:4px}.month-day{min-height:72px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:6px;border:1px solid var(--border);border-radius:8px;background:var(--surface);font:inherit;cursor:pointer;color:var(--text)}.month-day.other{background:var(--surface-2);border-style:dashed}.month-num{font-weight:600}.agenda h3{margin:16px 0 6px;font-size:1rem}dialog.drawer{margin:0 0 0 auto;inset:0 0 0 auto;height:100vh;max-height:100vh;height:100dvh;max-height:100dvh;overscroll-behavior:contain;width:min(720px,100vw);border:0;border-left:1px solid var(--border);padding:20px;background:var(--surface);color:var(--text);overflow:auto}dialog.drawer::-webkit-backdrop{background:rgb(0 0 0/.4)}dialog.drawer::backdrop{background:rgb(0 0 0/.4)}.findings{border-radius:8px;padding:10px 12px;margin:10px 0;border:1px solid var(--border)}.findings.error{background:var(--danger-bg)}.findings.warn{background:var(--warn-bg)}.findings.success{background:var(--success-bg)}.findings ul{margin:6px 0 0;padding-left:18px;display:grid;grid-gap:6px;gap:6px}.findings-head{margin:0}.badge.danger{background:var(--danger-bg);color:var(--danger);border-color:transparent}.matches{padding-left:18px;display:grid;grid-gap:10px;gap:10px}.label-text{display:block;font-weight:600;margin-bottom:6px}.plain{list-style:none;padding:0;margin:0;display:grid;grid-gap:4px;gap:4px}.alert.warn{background:var(--warn-bg);color:var(--warn)}.alert.warn ul{margin:6px 0 0;padding-left:18px}.card.inset{background:var(--surface-2);box-shadow:none;margin:10px 0}textarea{font:inherit;width:100%;border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:var(--surface);color:var(--text);resize:vertical}textarea[aria-invalid=true]{border-color:var(--danger)}.plan-section{margin:10px 0}.plan-domain h5,.plan-section h5{font-size:1rem;margin:10px 0 4px}.plan-domain{border-left:3px solid var(--border);padding-left:12px;margin:12px 0}.plan-goals{grid-gap:10px;gap:10px}.plan-goals,.plan-objectives{padding-left:18px;display:grid}.plan-objectives{grid-gap:4px;gap:4px;margin:6px 0}.target-table td{vertical-align:top}.check-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:6px;gap:6px;border:0;padding:0;margin:8px 0}.check-grid legend{font-weight:600;margin-bottom:6px}tr[aria-current=true] td{background:var(--surface-2)}.diff-table td{vertical-align:top;white-space:pre-wrap}.diff-before{color:var(--text-2)}.aba-graph{margin:12px 0}.aba-graph-svg{width:100%;height:auto;max-width:900px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.aba-graph-svg .grid{stroke:var(--border);stroke-width:1}.aba-graph-svg .axis-line{stroke:var(--text-2);stroke-width:1}.aba-graph-svg .axis,.aba-graph-svg .phase-label{fill:var(--text-2);font-size:11px}.aba-graph-svg .phase-label{font-weight:600}.aba-graph-svg .phase-line{stroke:var(--text);stroke-width:1.5;stroke-dasharray:5 4}.aba-graph-svg .criterion{stroke:#2e7d32;stroke-width:1.5;stroke-dasharray:2 3}.aba-graph-svg .series{fill:none;stroke:var(--brand);stroke-width:2}.aba-graph-svg .pt{fill:var(--brand);stroke:var(--surface);stroke-width:1.5}.aba-graph-svg .pt.phase-baseline{fill:var(--surface);stroke:var(--brand)}.aba-graph-svg .pt.phase-maintenance,.aba-graph-svg .pt.phase-mastered{fill:#2e7d32}.aba-graph-svg .annotation{fill:#b45309}.aba-graph-svg .candidate{fill:#b45309;font-size:16px}.aba-graph-svg .candidate.accepted{fill:#2e7d32}table.scatter td.cell{text-align:center;min-width:18px;padding:2px;font-size:.75rem;color:#1a1a1a}table.scatter td.l0{background:transparent;color:inherit}table.scatter td.l1{background:#fde7c7}table.scatter td.l2{background:#fbc78a}table.scatter td.l3{background:#f6a85a}table.scatter td.l4{background:#e8893a}.trend-up{color:var(--success)}.trend-down{color:var(--danger)}.trial-buttons{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.trial-buttons .btn{min-width:64px;font-size:1.1rem}.trial-strip{font-family:ui-monospace,monospace;letter-spacing:2px}.session-app{max-width:760px;margin:0 auto;padding:16px}.session-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px}.session-head h1{margin:8px 0}.session-list li{gap:12px}.session-bar,.session-list li{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}.session-bar{position:-webkit-sticky;position:sticky;top:0;z-index:5;gap:8px}.session-clock{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:1.4rem;font-weight:700}.session-subject .trial-buttons .btn{min-height:52px;min-width:64px}.session-subject input,.session-subject select{max-width:100%}label.check{display:flex;gap:8px;align-items:center;min-height:44px}label.check input{width:22px;height:22px}