:root{--bg:#f6f7f4;--surface:#fff;--text:#1d2420;--muted:#5d6862;--line:#d6dbd6;--accent:#1f6f5c;--accent-text:#fff;--accent-soft:#e2f0ea;--warn:#9a4a00;--warn-soft:#fff1e0;--error:#b3261e;--focus:#2a63c9;--radius:14px;--g-beg:#fde2e1;--g-beg-text:#7a1d17;--g-beg-line:#c9473e;--g-prog:#ffe8c7;--g-prog-text:#6b3d00;--g-prog-line:#c77800;--g-at:#fff3b0;--g-at-text:#574800;--g-at-line:#a68b00;--g-ach:#d7f0e0;--g-ach-text:#155234;--g-ach-line:#2f8a57;--g-exc:#cfe3ff;--g-exc-text:#123f7a;--g-exc-line:#3b74c4;--d-beg:#a32a26;--d-prog:#e2735f;--d-at:#d8d6d0;--d-ach:#6f9bd8;--d-exc:#1f4f99;--s0:#2f8a57;--s1:#3b74c4;--s2:#a05a00;--s3:#8a3fb0;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#141816;--surface:#1d2320;--text:#e6ebe7;--muted:#a1aca6;--line:#36403b;--accent:#5cc0a2;--accent-text:#0d1f19;--accent-soft:#1f3a31;--warn:#f0b070;--warn-soft:#3a2a17;--error:#ff8a80;--focus:#8ab4ff;--g-beg:#4a1f1d;--g-beg-text:#ffd8d4;--g-beg-line:#e0766c;--g-prog:#4a3313;--g-prog-text:#ffe2b8;--g-prog-line:#e0a24a;--g-at:#453d12;--g-at-text:#fff0a8;--g-at-line:#d6c050;--g-ach:#1d4030;--g-ach-text:#c8f0d8;--g-ach-line:#5cc08a;--g-exc:#1c3352;--g-exc-text:#d4e6ff;--g-exc-line:#7aa8ea;--d-beg:#f29a8c;--d-prog:#b0473c;--d-at:#4f4c47;--d-ach:#3b66ad;--d-exc:#9cc3f7;--s0:#5cc08a;--s1:#7aa8ea;--s2:#e0a24a;--s3:#c48ae0;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#141816;--surface:#1d2320;--text:#e6ebe7;--muted:#a1aca6;--line:#36403b;--accent:#5cc0a2;--accent-text:#0d1f19;--accent-soft:#1f3a31;--warn:#f0b070;--warn-soft:#3a2a17;--error:#ff8a80;--focus:#8ab4ff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--g-beg:#4a1f1d;--g-beg-text:#ffd8d4;--g-beg-line:#e0766c;--g-prog:#4a3313;--g-prog-text:#ffe2b8;--g-prog-line:#e0a24a;--g-at:#453d12;--g-at-text:#fff0a8;--g-at-line:#d6c050;--g-ach:#1d4030;--g-ach-text:#c8f0d8;--g-ach-line:#5cc08a;--g-exc:#1c3352;--g-exc-text:#d4e6ff;--g-exc-line:#7aa8ea;--d-beg:#f29a8c;--d-prog:#b0473c;--d-at:#4f4c47;--d-ach:#3b66ad;--d-exc:#9cc3f7;--s0:#5cc08a;--s1:#7aa8ea;--s2:#e0a24a;--s3:#c48ae0}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;margin:0;line-height:1.45}main{max-width:760px;padding:24px 16px calc(48px + env(safe-area-inset-bottom));margin:0 auto}h1{outline:none;margin:8px 0;font-size:1.6rem;line-height:1.2}h2{margin:28px 0 10px;font-size:1.05rem}p{margin:0 0 12px}.lead{color:var(--muted);font-size:1.05rem}.muted{color:var(--muted)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}[tabindex="-1"]:focus{outline:none}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.45}.primary,.secondary{border:2px solid var(--accent);border-radius:999px;min-height:52px;padding:0 28px;font-size:1.05rem;font-weight:600}.primary{background:var(--accent);color:var(--accent-text)}.secondary{color:var(--accent);background:0 0}.link{color:var(--accent);background:0 0;border:none;min-height:44px;padding:0 4px;text-decoration:underline}.drop{border:2px dashed var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:160px;margin:20px 0 12px;padding:16px;display:flex}.drop:hover,.drop.over{border-color:var(--accent);background:var(--accent-soft)}#file:focus-visible+.drop{outline:3px solid var(--focus);outline-offset:2px}.drop-title{color:var(--accent);font-size:1.2rem;font-weight:600}.privacy{color:var(--muted);font-size:.95rem}.privacy:before{content:"🔒︎ "}.samples,.choices{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;display:grid}.card{text-align:left;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);flex-direction:column;align-items:flex-start;gap:4px;min-height:64px;padding:14px 16px;display:flex;position:relative}.card:hover{border-color:var(--accent)}.card-title{overflow-wrap:anywhere;font-size:1.05rem;font-weight:600}.choice[aria-checked=true]{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.choice[aria-checked=true] .card-title:before{content:"✓ ";color:var(--accent)}.choice.none{border-style:dashed;justify-content:center}.examples{color:var(--muted);overflow-wrap:anywhere;font-size:.92rem}.tag{color:var(--warn);background:var(--warn-soft);border-radius:999px;padding:2px 8px;font-size:.8rem}.topline{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.file{overflow-wrap:anywhere;font-size:.92rem}.progress{background:var(--line);border-radius:999px;height:8px;margin-top:8px;overflow:hidden}.bar-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .25s}.step{margin:6px 0 4px;font-size:.9rem}.hint{background:var(--accent-soft);border-radius:10px;padding:10px 14px}.error{color:var(--error);font-weight:600}.actions{border-top:1px solid var(--line);align-items:center;gap:12px;margin-top:28px;padding-top:16px;display:flex}.actions .primary{margin-left:auto}.field-label{margin:16px 0 6px;font-weight:600;display:block}input[type=text]{font:inherit;width:100%;max-width:420px;min-height:52px;color:var(--text);background:var(--surface);border:2px solid var(--line);border-radius:10px;padding:0 14px;font-size:1.1rem}input[type=text]:focus{border-color:var(--accent);outline:none}.value-row{border-bottom:1px solid var(--line);padding:12px 0}.value-raw{overflow-wrap:anywhere;margin-bottom:8px;font-weight:600;display:block}.segments{flex-wrap:wrap;gap:8px;display:flex}.segment{background:var(--surface);border:2px solid var(--line);border-radius:10px;min-width:48px;min-height:48px;padding:0 16px}.segment[aria-checked=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin:16px 0;position:relative;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.95rem}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:10px 12px}thead th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);white-space:nowrap;font-size:.82rem}tbody tr:last-child>*{border-bottom:none}tbody th{font-weight:600}td.warn{color:var(--warn);font-weight:600}tr.flagged{background:var(--warn-soft)}td.flags{color:var(--muted);min-width:140px}tr.flagged td.flags{color:var(--warn)}.finish{flex-direction:column;align-items:flex-start;gap:10px;display:flex}@media (width<=480px){h1{font-size:1.35rem}.actions{flex-wrap:wrap}.actions .primary{flex:100%;order:-1;margin-left:0}.actions .secondary{flex:1}.samples,.choices{grid-template-columns:1fr}}.strip{z-index:10;padding:calc(8px + env(safe-area-inset-top)) 16px 8px;background:var(--surface);border-bottom:1px solid var(--line);color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 16px;font-size:.88rem;display:flex;position:sticky;top:0}.strip:empty{display:none}.strip-changes{color:var(--text);font-weight:600}.strip-changes.warn{color:var(--warn)}.strip-online{white-space:nowrap;margin-left:auto}.strip-online:before{content:"";vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.strip-online.on:before{background:var(--accent)}.strip-online.off:before{background:var(--warn)}.strip-error{color:var(--error);flex-basis:100%;font-weight:600}a.card{color:inherit;text-decoration:none}a{color:var(--accent)}.gap{margin-top:16px}.hint p:last-child{margin-bottom:0}main.wide{max-width:1400px}.small{font-size:.85rem}.page-head .back{align-items:center;min-height:44px;font-weight:600;text-decoration:none;display:inline-flex}.year-line{color:var(--muted);align-items:center;gap:10px;margin-bottom:8px;display:flex}.button-link{align-items:center;text-decoration:none;display:inline-flex}.select{font:inherit;min-height:44px;color:var(--text);background:var(--surface);border:2px solid var(--line);border-radius:10px;padding:0 12px;font-size:1rem}.year-pick{align-items:center;gap:8px;display:flex}.tiles{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;display:grid}.tile{min-height:110px;color:inherit;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);flex-direction:column;justify-content:space-between;padding:16px;text-decoration:none;display:flex}.tile:hover{border-color:var(--accent)}.tile-name{overflow-wrap:anywhere;font-size:1.5rem;font-weight:700}.chip{white-space:nowrap;border:2px solid #0000;border-radius:999px;justify-content:center;align-items:center;min-width:52px;min-height:30px;padding:0 8px;font-size:.85rem;font-weight:700;display:inline-flex}.chip.g-beg{background:var(--g-beg);color:var(--g-beg-text)}.chip.g-prog{background:var(--g-prog);color:var(--g-prog-text)}.chip.g-at{background:var(--g-at);color:var(--g-at-text)}.chip.g-ach{background:var(--g-ach);color:var(--g-ach-text)}.chip.g-exc{background:var(--g-exc);color:var(--g-exc-text)}.chip.carried{background:var(--surface);color:var(--text);border-style:dashed;font-weight:600}.chip.carried.g-beg{border-color:var(--g-beg-line)}.chip.carried.g-prog{border-color:var(--g-prog-line)}.chip.carried.g-at{border-color:var(--g-at-line)}.chip.carried.g-ach{border-color:var(--g-ach-line)}.chip.carried.g-exc{border-color:var(--g-exc-line)}.chip.none{color:var(--muted);border:1px dashed var(--line);font-size:.78rem;font-weight:500}.prev{color:var(--muted);white-space:nowrap;margin-top:2px;font-size:.75rem;display:block}.grid-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);-webkit-overflow-scrolling:touch;max-height:calc(100vh - 220px);margin:12px 0;position:relative;overflow:auto}table.grid{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}table.grid th,table.grid td{border-bottom:1px solid var(--line);text-align:center;vertical-align:middle;padding:6px 8px}table.grid thead th{z-index:2;background:var(--surface);text-transform:none;letter-spacing:0;white-space:normal;vertical-align:bottom;min-width:72px;max-width:120px;font-size:.8rem;position:sticky;top:0}table.grid .name-col{z-index:1;background:var(--surface);text-align:left;border-right:1px solid var(--line);min-width:150px;max-width:200px;position:sticky;left:0}table.grid thead .name-col{z-index:3}table.grid tfoot th,table.grid tfoot td{background:var(--accent-soft);font-weight:600;position:sticky;bottom:0}table.grid tfoot .name-col{z-index:2}table.grid td.summary-col{background:var(--bg)}table.grid thead a{color:var(--text)}tr.focus-row>*{background:var(--accent-soft)}button.name{text-align:left;min-height:44px;color:var(--accent);text-underline-offset:3px;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline}a.cell-link{align-items:center;min-height:44px;text-decoration:none;display:inline-flex}.crit{font-weight:500}.crit-num{color:var(--text);font-size:.95rem;font-weight:700;display:block}.crit-text{-webkit-line-clamp:3;line-clamp:3;color:var(--muted);-webkit-box-orient:vertical;font-size:.75rem;line-height:1.25;display:-webkit-box;overflow:hidden}.crit-age{color:var(--muted);margin-top:2px;font-size:.72rem;display:block}button.mark{border:2px solid var(--line);background:var(--surface);border-radius:10px;width:48px;height:48px;font-size:1.15rem;font-weight:700;position:relative}button.mark.yes{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button.mark.no{color:var(--text);border-color:var(--muted)}button.mark.lvl0,button.mark.lvl1,button.mark.lvl2,button.mark.lvl3,button.mark.lvl4{background:var(--accent-soft);border-color:var(--accent)}button.mark.carried{background:var(--surface);color:var(--text);border-style:dashed;border-color:var(--muted);font-weight:500}button.mark sup{color:var(--muted);font-size:.62rem;font-weight:600;position:absolute;top:2px;right:3px}button.mark:disabled{opacity:1;cursor:default}.secondary.small,.primary.small{min-height:44px;padding:0 14px;font-size:.9rem}.score,.total{font-variant-numeric:tabular-nums;white-space:nowrap}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;display:flex}.toggle{border:2px solid var(--accent);background:var(--surface);min-height:44px;color:var(--accent);border-radius:999px;padding:0 16px;font-weight:600}.toggle[aria-pressed=true]{background:var(--accent);color:var(--accent-text)}.counts{flex-wrap:wrap;gap:6px 14px;margin:0;font-size:.9rem;display:flex}details.about{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:0 14px}details.about summary{cursor:pointer;align-items:center;min-height:44px;font-weight:600;display:flex}details.about[open]{padding-bottom:8px}ol.criteria{padding-left:22px}.legend{font-size:.85rem}.backdrop{z-index:50;background:#00000059;justify-content:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);color:var(--text);flex-direction:column;max-height:100%;display:flex;overflow:hidden;box-shadow:-4px 0 24px #00000040}.sheet.side{width:min(600px,100%);height:100%}.sheet.picker{border-radius:var(--radius);width:min(460px,100% - 32px);max-height:90vh;margin:auto}.sheet-head{border-bottom:1px solid var(--line);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.sheet-head h2{outline:none;margin:0}.sheet-body{padding:8px 16px 24px;overflow:auto}.levels{flex-direction:column;gap:8px;display:flex}.level{text-align:left;border:2px solid var(--line);background:var(--surface);border-radius:12px;align-items:flex-start;gap:12px;min-height:56px;padding:10px 12px;display:flex}.level[aria-checked=true]{border-color:var(--accent);background:var(--accent-soft)}.level-num{min-width:24px;font-size:1.4rem;font-weight:700}.level-text{flex-direction:column;gap:2px;font-size:.92rem;display:flex}.time-field{flex-direction:column;align-items:center;gap:4px;display:flex}.time-field .track{color:var(--muted);font-size:.75rem}input.time{font:inherit;text-align:center;width:96px;min-height:48px;color:var(--text);background:var(--surface);border:2px solid var(--line);font-variant-numeric:tabular-nums;border-radius:10px;font-size:1.1rem}input.time:focus{border-color:var(--accent);outline:none}input.time[aria-invalid=true]{border-color:var(--error)}.field-error{color:var(--error);font-size:.78rem;font-weight:600}.mq{color:var(--muted);margin:4px 0 2px;font-size:.78rem;display:block}.profile dl.details{grid-template-columns:max-content 1fr;gap:6px 16px;margin:12px 0;display:grid}.profile dt{color:var(--muted)}.profile dd{overflow-wrap:anywhere;margin:0;font-weight:600}table.by-year td,table.by-year th{white-space:nowrap}td.growth{color:var(--muted);white-space:normal;min-width:140px;font-size:.85rem}tr.summary-row>*{background:var(--bg)}details.shown{border-bottom:1px solid var(--line)}details.shown summary{cursor:pointer;align-items:center;min-height:44px;display:flex}figure.chart{margin:20px 0}figure.chart figcaption{margin-bottom:6px;font-weight:600}figure.chart svg{width:100%;max-width:620px;height:auto;display:block}.chart-grid{stroke:var(--line);stroke-width:1px}.chart-label{fill:var(--muted);font-size:11px}polyline.chart-line{fill:none;stroke-width:2.5px}polyline.s0{stroke:var(--s0)}polyline.s1{stroke:var(--s1)}polyline.s2{stroke:var(--s2)}polyline.s3{stroke:var(--s3)}circle.s0{fill:var(--s0)}circle.s1{fill:var(--s1)}circle.s2{fill:var(--s2)}circle.s3{fill:var(--s3)}.key{vertical-align:middle;border-radius:3px;width:12px;height:12px;margin-right:6px;display:inline-block}.key.s0{background:var(--s0)}.key.s1{background:var(--s1)}.key.s2{background:var(--s2)}.key.s3{background:var(--s3)}.bar-cell{flex-direction:column;gap:4px;min-width:220px;display:flex}.bar-svg{border-radius:4px;width:100%;height:14px}rect.bar.g-beg{fill:var(--g-beg-line)}rect.bar.g-prog{fill:var(--g-prog-line)}rect.bar.g-at{fill:var(--g-at-line)}rect.bar.g-ach{fill:var(--g-ach-line)}rect.bar.g-exc{fill:var(--g-exc-line)}.bar-text{color:var(--muted);font-size:.82rem}.chart-key{flex-wrap:wrap;gap:4px 14px;margin:6px 0 10px;padding:0;font-size:.85rem;list-style:none;display:flex}.key.d-beg{background:var(--d-beg)}.key.d-prog{background:var(--d-prog)}.key.d-at{background:var(--d-at)}.key.d-ach{background:var(--d-ach)}.key.d-exc{background:var(--d-exc)}.key.gr-down{background:var(--d-prog)}.key.gr-same{background:var(--d-at)}.key.gr-up{background:var(--d-ach)}.share-rows{gap:10px;max-width:720px;display:grid}.share-row{grid-template-columns:minmax(9rem,14rem) 1fr;align-items:center;gap:4px 12px;display:grid}.share-svg{width:100%;height:20px;display:block}rect.seg{stroke:var(--surface);stroke-width:2px;vector-effect:non-scaling-stroke}rect.seg.d-beg{fill:var(--d-beg)}rect.seg.d-prog{fill:var(--d-prog)}rect.seg.d-at{fill:var(--d-at)}rect.seg.d-ach{fill:var(--d-ach)}rect.seg.d-exc{fill:var(--d-exc)}rect.seg.gr-down{fill:var(--d-prog)}rect.seg.gr-same{fill:var(--d-at)}rect.seg.gr-up{fill:var(--d-ach)}line.mid-line{stroke:var(--text);stroke-width:1.5px;vector-effect:non-scaling-stroke}.chart-controls{margin:8px 0 4px}@media (width<=600px){.share-row{grid-template-columns:1fr}}@media (width<=480px){.tiles{grid-template-columns:repeat(2,1fr)}.grid-wrap{max-height:calc(100vh - 180px)}table.grid .name-col{min-width:112px;max-width:132px}.tile-name{font-size:1.25rem}}.field{flex-direction:column;gap:2px;margin-bottom:4px;display:flex}.field .field-label{margin:10px 0 4px}input.text{font:inherit;width:100%;max-width:360px;min-height:44px;color:var(--text);background:var(--surface);border:2px solid var(--line);border-radius:10px;padding:0 12px;font-size:1rem}input.text:focus{border-color:var(--accent);outline:none}input.text[aria-invalid=true]{border-color:var(--error)}input.text.short{max-width:160px}.grid-form{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0 16px;padding-bottom:8px;display:grid}.grid-form>.error,.grid-form>p{grid-column:1/-1}.grid-form .select,.form .select{width:100%;max-width:360px}details.add-student{margin:12px 0}.class-block{margin-top:8px}.class-block h2{margin-bottom:0}.check{align-items:center;gap:10px;min-height:44px;display:flex}.check input{width:22px;height:22px;accent-color:var(--accent);flex:none;margin:0}ul.plain{margin:0;padding:0;list-style:none}.sheet .actions{margin-top:16px}.hint .levels{margin:8px 0}.hint .level,.who{width:100%}fieldset.choice-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin:0 0 12px;padding:8px 14px 12px}fieldset.choice-row legend{padding:0 6px;font-weight:600}.pick-students{border:1px solid var(--line,#ccc);border-radius:8px;flex-wrap:wrap;gap:4px 16px;padding:8px 12px;display:flex}.report-page{border-top:2px solid var(--line,#ccc);margin-top:24px;padding-top:12px}table.report{border-collapse:collapse;width:100%;margin:8px 0}table.report caption{text-align:left;padding:4px 0;font-weight:600}table.report th,table.report td{text-align:left;border-bottom:1px solid var(--line,#ddd);padding:4px 8px}textarea.comment{width:100%;font:inherit;box-sizing:border-box;padding:8px}.print-only{display:none}@media print{#strip,.no-print,.page-head .back,.page-head .year-line{display:none!important}.print-only{display:block}body,main{color:#000;background:#fff}.report-page{break-after:page;border-top:none;margin:0;padding:0}.report-page:last-child{break-after:auto}.report-page table{break-inside:avoid}}.file-box{border:1px solid var(--line);border-radius:12px;margin:16px 0;padding:4px 16px 12px}.file-box h2{margin-top:12px}
