:root{color-scheme:light;--bg:#f1f4ef;--surface:#fff;--surface2:#f4f7f2;--ink:#192822;--muted:#51665b;--line:#dce5dc;--primary:#166044;--primary-strong:#134d38;--tint:#e4f2e8;--good:#1d6445;--accent:#407a56;--danger:#9d3d31;--danger-bg:#fbece7;--caution:#775013;--caution-bg:#fff1d6;--shadow:0 12px 36px #223a2510;--radius:17px;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans CJK SC","Microsoft YaHei",system-ui,sans-serif;font-size:16px}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);min-height:100vh;line-height:1.5}
button,input,select,textarea{font:inherit}
a{color:var(--primary);text-underline-offset:3px}
h1,h2,h3,p,figure{margin:0}
h1{font-size:clamp(2rem,4vw,3.2rem);line-height:1.12;letter-spacing:-.055em;font-weight:820}
h2{font-size:1.37rem;line-height:1.3;letter-spacing:-.02em}
h3{font-size:1.08rem}
svg{vertical-align:middle;flex:none}
:focus-visible{outline:3px solid #3589ad;outline-offset:3px}
button:disabled{opacity:.49;cursor:not-allowed}
button:disabled:hover{transform:none}
[aria-busy=true]{cursor:progress}
.skip{position:fixed;z-index:30;left:1em;top:-6em;padding:.6em;background:white;border-radius:7px}
.skip:focus{top:1em}
.wrap{width:min(100% - 56px,1400px);margin-inline:auto}
.top{background:var(--surface);border-bottom:1px solid var(--line)}
.top .wrap{min-height:69px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand{display:inline-flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);font-size:1.2rem;font-weight:820;letter-spacing:-.055em;line-height:1}
.brand img{border-radius:8px}
.brand-se{color:var(--accent)}
.brand small{display:block;margin-top:5px;font-size:.51rem;font-weight:750;letter-spacing:.145em;color:var(--muted)}
.eyebrow{display:block;color:var(--accent);font-weight:810;font-size:.68rem;letter-spacing:.15em;line-height:1.5;margin-bottom:.4rem}
.chips .eyebrow{margin-bottom:0}
.label{font-size:.75rem;font-weight:760;letter-spacing:.04em}
.muted,.axis{color:var(--muted)}
.muted{font-size:.91rem}
.lead{color:var(--muted);margin:.85em 0 1.2em}
.card{min-width:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:clamp(15px,2vw,25px);box-shadow:var(--shadow)}
.card+.card{margin-top:15px}
.card h2{margin-bottom:.4em}
.card h3{margin-bottom:.25em}
.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:.8em}
.section-head h2,.section-head h3{margin-bottom:0}
.pill{display:inline-flex;align-items:center;gap:.3em;white-space:nowrap;font-size:.75rem;border-radius:999px;border:1px solid var(--line);background:var(--surface2);color:var(--muted);padding:.25em .7em;font-weight:720;max-width:100%}
.pill.success,.pill.accent{color:var(--good);background:var(--tint);border-color:transparent}
.pill.danger{background:var(--danger-bg);color:var(--danger);border-color:transparent}
.pill.caution{background:var(--caution-bg);color:var(--caution);border-color:transparent}
.chips{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.btn{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:.55em;border:1px solid transparent;border-radius:9px;padding:.55em .83em;font-size:.91rem;font-weight:740;text-decoration:none;line-height:1.25;white-space:normal;cursor:pointer;transition:background .15s,transform .15s;color:var(--ink)}
.btn:not(:disabled):active{transform:translateY(1px)}
.btn.primary{background:var(--primary);color:#fff}
.btn.primary:not(:disabled):hover{background:var(--primary-strong)}
.btn.secondary{background:var(--surface2);border-color:var(--line);color:var(--ink)}
.btn.secondary:not(:disabled):hover,.btn.ghost:not(:disabled):hover{background:var(--tint)}
.btn.ghost{background:transparent;color:var(--primary)}
.btn.small{min-height:38px;font-size:.82rem}
.btn.full{width:100%;justify-content:space-between}
.button-row{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:.5em 0}
.grow{flex:1}
label{display:block;font-size:.88rem;font-weight:720;margin:.82em 0}
label .muted{font-size:.76rem;font-weight:550}
input:not([type=checkbox],[type=radio],[type=range]),select,textarea{width:100%;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:.62em .74em;margin-top:.3em;min-height:43px;font-weight:520}
textarea{resize:vertical;line-height:1.5;min-height:65px}
input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--primary)}
.check{display:flex;align-items:center;gap:.5rem;margin:.65rem 0}
.check input{width:17px;height:17px;flex:none}
details{border-radius:8px;background:var(--surface2);padding:.55em .65em;margin:.55em 0}
summary{cursor:pointer;font-size:.86rem;font-weight:730}
details[open] summary{margin-bottom:.5em}
.divider{height:1px;background:var(--line);margin:1em 0}
.alert{color:var(--danger);background:var(--danger-bg);border-left:3px solid currentColor;border-radius:7px;padding:.8em .95em;margin:.6em 0;font-size:.92rem}
.empty,.loading{display:grid;justify-items:center;align-content:center;gap:8px;text-align:center;color:var(--muted);padding:1.6em .7em;min-height:130px;border-radius:11px;background:var(--surface2)}
.empty strong{color:var(--ink)}
.empty p{font-size:.86rem}
.empty>svg{color:var(--accent)}
.loading{min-height:100vh}
.spinner{width:20px;height:20px;border:2px solid var(--line);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#toast{position:fixed;z-index:40;bottom:20px;left:50%;transform:translate(-50%,16px);opacity:0;pointer-events:none;color:#fff;background:#1c513c;border-radius:9px;padding:.7em 1em;box-shadow:0 6px 24px #17331e35;width:max-content;max-width:calc(100% - 28px);transition:opacity .18s,transform .18s}
#toast.show{opacity:1;transform:translate(-50%,0)}
#toast[data-kind=error]{background:#8b372d}
.model-note{border-top:1px solid var(--line);margin:1.5rem 0 0;padding:1em 0;color:var(--muted);font-size:.76rem;display:flex;flex-wrap:wrap;gap:.5em 1em}
.model-note strong{color:var(--accent)}
.connection{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.75rem;font-weight:700;white-space:nowrap}
.connection i{width:8px;height:8px;background:#b78b36;border-radius:50%}
.connection[data-state=live] i{background:#3cab71;box-shadow:0 0 0 3px #3cab7133}
.connection:is([data-state=lost],[data-state=expired]) i{background:#d36446;box-shadow:0 0 0 3px #d3644633}
.landing{display:grid;grid-template-columns:1.3fr minmax(290px,.72fr);gap:clamp(24px,7vw,118px);align-items:center;min-height:calc(100vh - 70px);padding:60px clamp(0px,3.2vw,44px)}
.landing-copy{background:radial-gradient(ellipse at left top,#d3e6d8 0%,transparent 64%);padding:1.6em 0}
.landing h1{font-size:clamp(2.4rem,5vw,5rem);line-height:1.08}
.landing-copy p{font-size:clamp(1rem,1.4vw,1.24rem);max-width:28em;color:var(--muted);margin:1em 0 1.35em}
.landing-flow{display:flex;gap:8px;flex-wrap:wrap}
.landing-flow span{border:1px solid var(--line);background:var(--surface);padding:.45em .65em;border-radius:7px;font-weight:700;color:var(--accent);font-size:.78rem}
.join-card{padding:clamp(22px,3vw,38px)}
.join-card h1{font-size:2rem;letter-spacing:-.04em}
.join-card h2{font-size:1.75rem;margin-bottom:.28em}
.entry-icon,.room-icon{display:grid;place-items:center;width:49px;height:49px;background:var(--tint);color:var(--primary);border-radius:11px;margin-bottom:14px}
.privacy{display:flex;align-items:flex-start;gap:.5em;color:var(--muted);font-size:.82rem;margin:1em 0}
.privacy svg{margin-top:2px}
.workspace{padding:30px 0}
.workspace-head{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:20px}
.workspace-head h1{margin:.15em 0 .22em;font-size:clamp(1.8rem,3.4vw,3.1rem)}
.workspace-head p{color:var(--muted)}
.workspace-head .button-row{flex:none}
.teacher-nav{display:flex;align-items:center;gap:clamp(6px,2vw,24px)}
.nav-link,.backline a{font-size:.88rem;font-weight:740;text-decoration:none}
.backline{font-size:.82rem;color:var(--muted);display:flex;align-items:center;gap:8px;margin-bottom:12px}
.dash-grid{display:grid;grid-template-columns:1.4fr minmax(290px,1fr);gap:15px;align-items:start}
.dash-grid>.card+.card{margin-top:0}
.room-list a{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.75em;padding:.85em 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink)}
.room-list a:last-child{border-bottom:none}
.room-list a:hover b{text-decoration:underline}
.room-list a .room-icon{width:38px;height:38px;margin:0}
.room-list a small{display:block;color:var(--muted);font-size:.75rem}
.split{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.work-tabs{display:flex;gap:5px;margin:0 0 15px;border-bottom:1px solid var(--line)}
.work-tabs a{padding:.6em .95em;color:var(--muted);text-decoration:none;font-weight:740}
.work-tabs a[aria-current=page]{color:var(--primary);box-shadow:inset 0 -3px var(--primary)}
.teacher-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,325px);gap:15px;align-items:start}
.teacher-qr{display:flex;gap:13px;align-items:center}
.teacher-qr img{width:min(44%,130px);aspect-ratio:1;border-radius:8px;border:1px solid var(--line)}
.teacher-qr strong{display:block;font-size:1.43rem;letter-spacing:.06em;font-variant-numeric:tabular-nums}
.teacher-qr small,.teacher-qr p{font-size:.78rem;color:var(--muted)}
.access-url{display:flex;align-items:center;gap:8px;margin:.45em 0}
.access-url a{min-width:0;overflow-wrap:anywhere;font-size:.77rem}
.control-state{display:flex;align-items:center;gap:6px;font-size:.9rem}
.control-state>span:first-child{margin-right:auto;font-weight:720}
.control-state b{font-size:.83rem;font-variant-numeric:tabular-nums}
.utility .health{display:grid;grid-template-columns:1fr 1fr;gap:3px 6px;color:var(--muted);font-size:.75rem}
.health dt{overflow-wrap:anywhere}.health dd{margin:0}
.pulse{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.pulse>div,.evo-grid>div{background:var(--surface2);border:1px solid var(--line);border-radius:10px;padding:.65em .7em;min-width:0}
.pulse small,.evo-grid small{display:block;color:var(--muted);font-size:.72rem;font-weight:700}
.pulse b{display:block;font-size:clamp(1.5rem,2.6vw,2.4rem);line-height:1.12;letter-spacing:-.05em;font-variant-numeric:tabular-nums;transition:color .15s}
.pulse b.good{color:var(--good)}
.pulse em,.present-budget em{font-style:normal;color:var(--muted);font-size:.42em;white-space:nowrap;letter-spacing:0}
.heat-map{display:grid;grid-template-columns:48px repeat(7,minmax(0,1fr));gap:5px;align-items:center;text-align:center}
.heat-map .axis{font-size:.72rem;white-space:nowrap}
.heat{background:color-mix(in srgb,var(--tint) calc(100% - 100% * var(--intensity)),var(--accent));color:var(--ink);min-height:31px;border:1px solid var(--line);border-radius:6px;display:grid;place-items:center;font-weight:800;font-size:.88rem;transition:background .3s}
.weight-chart{display:grid;grid-template-columns:48px repeat(7,minmax(0,1fr));gap:5px;align-items:end;text-align:center;margin-top:.8em}
.weight-chart .axis,.weight-chart small{font-size:.68rem}
.weight-chart div{display:flex;flex-direction:column;align-items:center;justify-content:end;min-height:42px;color:var(--muted)}
.weight-chart div span{width:58%;min-height:2px;height:calc(var(--level) * 26px);border-radius:4px 4px 0 0;background:var(--accent);transition:height .3s}
.systems{margin:.8rem 0 .45rem}
.system-boundary{position:relative;border:1px dashed var(--accent);padding:1.1em .55em .6em;border-radius:10px}
.system-boundary>span{position:absolute;left:.7em;top:-.72em;background:var(--surface);padding:0 .4em;color:var(--accent);font-size:.69em;font-weight:770}
.system-nodes{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}
.sys-node{position:relative;background:var(--surface2);border:1px solid var(--line);border-radius:7px;min-width:0;padding:.37em .32em;text-align:center;transition:background .2s,transform .2s}
.sys-node:not(:last-child)::after{content:"›";position:absolute;right:-10px;top:40%;color:var(--accent);font-weight:900;animation:signal 2s ease-in-out infinite}
.sys-node:nth-child(2)::after{animation-delay:.2s}.sys-node:nth-child(3)::after{animation-delay:.4s}.sys-node:nth-child(4)::after{animation-delay:.6s}
@keyframes signal{50%{opacity:.36;transform:translateX(1px)}}
.sys-node small{display:flex;align-items:center;justify-content:center;gap:.25em;color:var(--accent);font-size:.64em;font-weight:760}
.sys-node b{display:block;font-size:.95em}
.sys-node>span{display:block;font-size:.65em;color:var(--muted);overflow-wrap:anywhere}
.sys-node.active{border-color:var(--accent);background:var(--tint);transform:translateY(-2px)}
.systems figcaption{display:flex;align-items:center;gap:.45em;color:var(--muted);font-size:.75em;margin-top:.5em;flex-wrap:wrap}
.systems figcaption>span:first-child{font-size:1.35em;color:var(--accent)}
.outside{margin-left:auto;color:var(--accent)}
.teacher-question{font-size:.9rem;color:var(--primary);margin-top:.8em;font-weight:730}
.evo-grid{display:grid;grid-template-columns:.8fr .8fr 1.4fr;gap:8px}
.evo-grid strong{display:block;font-size:1.23rem;margin-top:.1em}
.coverage{font-size:.8rem;color:var(--primary);background:var(--tint);padding:.55em .65em;border-radius:7px;margin:.7em 0}
.candidate-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:.8em 0}
.candidate{border:1px solid var(--line);border-radius:9px;padding:.7em;min-width:0}
.candidate.selected{background:var(--surface2);border-color:var(--accent)}
.candidate-top{display:flex;align-items:center;gap:.3em;justify-content:space-between;flex-wrap:wrap}
.candidate-top .check{margin:0}
.candidate p{font-size:.79rem;margin:.4em 0}
.candidate-params,.ai-label{color:var(--accent);font-weight:760}
#teaching-notes dt{margin-top:.65rem}
#teaching-notes dd{margin:0 0 .35rem;color:var(--muted)}
.candidate-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px}
.candidate-metrics small{display:block;font-size:.64rem;color:var(--muted)}
.candidate-metrics b{font-size:.86rem;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.add-tools{align-items:end}.add-tools label{margin:0}
.manual{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:6px;align-items:end}
.manual label{margin:0}
.reason-list article{border-bottom:1px solid var(--line);padding:.65em 0}
.reason-list p{overflow-wrap:anywhere;font-size:.88rem;margin:.25em 0}
.reason-list .section-head{align-items:center;margin-bottom:.2em}
.plan-strip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:9px}
.plan-tile{flex:1 1 150px;display:flex;align-items:center;gap:6px;text-align:left;background:var(--surface2);border:1px solid var(--line);border-radius:9px;padding:.45em .5em;cursor:pointer;color:var(--ink);min-width:0}
.plan-tile[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.plan-letter{background:var(--plan-color);color:#fff;display:grid;place-items:center;width:27px;height:27px;flex:none;border-radius:7px;font-weight:800}
.plan-tile strong{display:block;font-size:.82em;line-height:1.2}
.plan-tile small{display:block;font-size:.66em;color:var(--muted);margin-top:.2em}
.plan-tile .pill{font-size:.63em;margin-left:auto}
.chart-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px}
.chart-grid .card{margin:0;box-shadow:none;padding:clamp(8px,1.25vw,16px)}
.mini-chart h3{font-size:1.03em}
.chart-title{display:flex;align-items:baseline;flex-wrap:wrap;gap:.3em .55em}
.chart-focus{outline:1px solid var(--accent);outline-offset:-1px}
.concept-note{color:var(--muted);font-size:.86em;margin:.45em 0 .65em}
.mini-chart svg{width:100%;max-height:190px}
.mini-chart svg text{fill:var(--muted);font-size:11px}
.mini-chart svg .chart-letter{font-weight:850;fill:var(--ink)}
.gridline{stroke:var(--line);fill:none}
.axisline{stroke:var(--muted);fill:none}
.front{stroke:var(--accent);stroke-width:2;fill:none;stroke-dasharray:5 3}
.chart-caption{color:var(--muted);font-size:.69em;margin-bottom:.3em}
.cost-bars{padding:.4em 0}
.cost-line{display:grid;grid-template-columns:1em 1fr 1.85em;align-items:center;gap:6px;font-size:.86em;margin:.43em 0}
.cost-track{position:relative;height:11px;background:var(--surface2);border-radius:4px}
.cost-parts{display:flex;height:100%;overflow:hidden;border-radius:4px;transition:width .28s}
.cost-parts i{display:block}
.part-screen,.cost-legend span:nth-child(1)::before{background:#619b79}
.part-trial,.cost-legend span:nth-child(2)::before{background:#2d7455}
.part-integration,.cost-legend span:nth-child(3)::before{background:#739db0}
.part-reserve,.cost-legend span:nth-child(4)::before{background:#c6a25d}
.budget-line{position:absolute;top:-3px;bottom:-3px;border-left:2px dashed var(--ink);transition:left .28s}
.cost-legend{display:flex;flex-wrap:wrap;gap:4px 8px;color:var(--muted);font-size:.63em}
.cost-legend span:not(:last-child)::before{content:"";width:.6em;height:.6em;display:inline-block;border-radius:2px;margin-right:3px}
.warn{color:var(--danger)}
.dim{opacity:.27}
.metric-details tr.dim{opacity:1}
.metric-details tr.marked{background:var(--tint)}
[data-mark]{transition:opacity .22s}
.metric-details{padding:.55em .65em!important;box-shadow:none}
.table-scroll{overflow-x:auto}
table{border-collapse:collapse;width:100%;min-width:535px;font-size:.76em}
th,td{text-align:left;padding:.46em .48em;border-bottom:1px solid var(--line)}
thead{color:var(--muted)}
tbody tr:last-child td,tbody tr:last-child th{border-bottom:none}
.validation{margin:.7em 0;padding:.8em;box-shadow:none}
.validation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px;margin-top:.6em}
.validation-item{padding:.45em;background:var(--surface2);border:1px solid var(--line);border-radius:8px;font-size:.79em}
.validation-item small{color:var(--muted);font-size:.78em}
.gap-pair{display:grid;grid-template-columns:minmax(2.6em,max-content) 1fr minmax(3em,max-content);gap:4px;align-items:center;margin:.35em 0;font-size:.86em}
.gap-pair i{display:block;width:calc(var(--level)*100%);height:6px;border-radius:4px;background:#5e9e71}.gap-pair i:nth-of-type(2){background:#3c7eab}
.student-wrap{width:min(100% - 28px,650px);margin:0 auto;padding:23px 0}
.student-wrap>.join-card{margin:clamp(10px,5vh,65px) 0}
.student-wrap>*+*{margin-top:13px}
.student-wrap>div:empty,.student-wrap>section:empty{display:none}
.student-hero{border-radius:var(--radius);background:linear-gradient(125deg,#183b2d,#25523b);color:#f6fff7;padding:clamp(18px,4vw,31px)}
.student-hero .pill{background:#ffffff16;border-color:#ffffff3a;color:#e5f5e7}
.student-hero .eyebrow{color:#bde6bf;margin:1.2em 0 .35em}
.student-hero p{margin:.6em 0 .7em;color:#e4f3e7}
.mission-constraint{font-size:.86em;font-weight:730;display:flex;align-items:center;gap:.4em;flex-wrap:wrap}
.mission-constraint span{color:#d0e9d4;font-weight:500}
.range-label{display:flex;justify-content:space-between;gap:.5em;margin-bottom:.3em}
output{color:var(--primary);font-weight:800;font-variant-numeric:tabular-nums;text-align:right}
input[type=range]{width:100%;height:24px;display:block;margin:0}
.scale{display:flex;justify-content:space-between;color:var(--muted);font-size:.75rem;margin:.16em 0 .9em}
.environment-choices{border:none;padding:0;margin:1.2em 0}
legend{font-size:.88rem;font-weight:750}
.segments{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:.25em 0 .45em}
.segments label{position:relative;margin:0;cursor:pointer}
.segments input{position:absolute;opacity:0;inset:0;cursor:pointer}
.segments label>span{display:block;text-align:center;padding:.42em .2em;border:1px solid var(--line);border-radius:8px;background:var(--surface2)}
.segments label>span small{display:block;color:var(--muted)}
.segments input:checked+span{border-color:var(--primary);background:var(--tint);color:var(--primary)}
.segments input:focus-visible+span{outline:3px solid #3589ad}
.budget-meter{padding:.7em .8em;margin:1em 0;border-radius:9px;background:var(--tint);color:var(--good)}
.budget-meter.over{background:var(--danger-bg);color:var(--danger)}
.budget-meter>div:not(.meter){display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:.8em;font-weight:740}
.budget-meter strong{font-size:1.32em;white-space:nowrap}
.budget-meter strong small{font-size:.68em;font-weight:600}
.meter{height:7px;margin:.5em 0;background:#5570602b;border-radius:8px;overflow:hidden}
.meter i{display:block;height:100%;background:currentColor;transition:width .18s}
.receipt,.previous{display:flex;align-items:center;gap:.6em;border-radius:8px;background:var(--tint);padding:.55em .75em;color:var(--good);margin:.55em 0}
.receipt small{display:block;color:var(--muted);font-size:.76em}
.previous{justify-content:space-between}
.previous p,#submit-message{color:var(--muted);font-size:.79em}
#submit-message:not(:empty){margin:.5em 0}
#receipt-review-content{overflow-wrap:anywhere}
.student-wrap .chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.student-result-link{margin-top:.9rem}
#student-comparison{scroll-margin-top:1rem}
.result-guide{display:flex;flex-wrap:wrap;gap:.45rem .9rem;margin:.7rem 0;color:var(--good);font-size:.88rem}
.result-guide>span{display:flex;align-items:center;gap:.28em}
.result-guide p{flex-basis:100%;color:var(--muted);font-size:.82rem}
.result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,255px),1fr));gap:10px;margin-bottom:12px}
.result-tile{display:flex;flex-direction:column;align-items:stretch;gap:.65rem;padding:.85rem;border-radius:13px;background:var(--surface)}
.result-tile-head{display:flex;align-items:center;gap:.5rem}
.result-tile-head strong{font-size:.98rem;overflow-wrap:anywhere}
.result-tile .pill{white-space:nowrap;font-size:.71rem}
.result-tile .result-parameters{margin-top:-.25rem;font-size:.76rem}
.result-budget{display:grid;gap:.4rem;color:var(--good)}
.result-budget.over{color:var(--danger)}
.result-budget-label{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.15rem .5rem;font-size:.79rem}
.result-budget-track{position:relative;display:block;height:.45rem;border-radius:5px;background:var(--surface2)}
.result-budget-fill{display:block;height:100%;border-radius:inherit;background:currentColor}
.result-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.result-metric{display:block;min-width:0;padding:.4rem .55rem;background:var(--tint);border-radius:8px;font-size:.68rem}
.result-metric:nth-child(2){background:#e9f0fa}
.result-metric small{margin:0;font-size:.73rem}
.result-metric>span>b{font-size:1.27rem;line-height:1.2;font-variant-numeric:tabular-nums}
.result-metric .result-verified{margin-top:.3rem;padding-top:.24rem;border-top:1px solid var(--line);font-size:.66rem}
.student-forecast{margin:1em 0;padding:.85rem;border:1px solid var(--line);border-radius:12px;background:var(--surface2)}
.student-forecast h3{display:flex;align-items:center;gap:.4em}
.student-forecast p{color:var(--muted);font-size:.8rem;margin:.35rem 0}
.forecast-metrics{margin-top:.65rem;grid-template-columns:repeat(3,minmax(0,1fr))}
.forecast-metrics .result-metric{display:grid;gap:.15rem}
.forecast-metrics .result-metric:nth-child(3){background:var(--caution-bg)}
.forecast-metrics .result-metric>span>b{font-size:1.1rem;overflow-wrap:anywhere}
@media(max-width:460px){.forecast-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.forecast-metrics .result-metric:last-child{grid-column:1/-1}}
.presentation .wrap{width:min(100% - 64px,1770px)}
.presentation .top .wrap{min-height:65px}
.present-tools{display:flex;align-items:center;gap:10px}
.clock{color:var(--muted);font-size:.84rem;font-variant-numeric:tabular-nums}
.present-main{padding:clamp(18px,2.3vw,35px) 0}
.present-heading{display:flex;justify-content:space-between;align-items:end;gap:15px;margin-bottom:clamp(12px,1.4vw,23px)}
.present-heading>div:first-child{min-width:0;overflow-wrap:anywhere}
.present-heading h1{font-size:clamp(2.1rem,4.4vw,5rem);margin:.16em 0 .08em}
.present-heading p{color:var(--muted);font-size:clamp(.86rem,1.18vw,1.26rem)}
.present-budget{border-left:2px solid var(--accent);padding:.2em 0 .2em 1.1em;min-width:max-content}
.present-budget small{display:block;color:var(--muted);font-size:.82em}
.present-budget strong{display:block;font-size:clamp(2.1rem,4vw,4.3rem);line-height:1.1;letter-spacing:-.06em;font-variant-numeric:tabular-nums}
.present-lobby{display:grid;grid-template-columns:1fr 1.32fr;gap:13px}
.present-lobby>.card+.card{margin-top:0}
.present-lobby .card h2,.analysis-header h2{font-size:clamp(1.3rem,2vw,2rem)}
.present-lobby .systems{font-size:clamp(.86rem,1.3vw,1.36rem);margin-top:1.3em}
.class-budget-split{margin:.65em 0 1em;font-size:1.1em}
.class-budget-split>div{display:flex;justify-content:space-between;gap:.5em;margin-bottom:.35em}
.class-budget-split b:first-child{color:var(--good)}
.class-budget-split b:last-child{color:var(--danger)}
.class-budget-track{display:block;overflow:hidden;height:.7em;border-radius:999px;background:var(--danger)}
.class-budget-track i{display:block;height:100%;background:var(--accent)}
.project-qr{display:flex;align-items:center;gap:clamp(8px,1.5vw,27px);margin:.75em 0}
.project-qr img{display:block;width:min(49%,320px);aspect-ratio:1;background:white;border-radius:10px}
.project-qr strong{display:block;font-size:clamp(1.3rem,3vw,3.2rem);letter-spacing:.085em;white-space:nowrap;font-variant-numeric:tabular-nums}
.project-qr p,.project-qr small,.project-url{color:var(--muted);font-size:clamp(.76rem,1.08vw,1.12rem)}
.project-url span{color:var(--accent);margin:0 .35em;overflow-wrap:anywhere}
.present-question{margin-top:.85em;border-radius:10px;background:var(--tint);padding:.65em .8em;color:var(--good)}
.present-question strong,.present-question span{display:block}
.present-question strong{font-size:clamp(.88rem,1.2vw,1.2rem)}
.present-question .concept-note{margin-bottom:0}
.present-blank{min-height:70vh;display:grid;place-items:center;color:var(--muted);font-size:clamp(1rem,2.1vw,2rem)}
.late-join{display:flex;align-items:center;gap:10px;color:var(--muted);margin-top:.7em;font-size:.85em}
.late-join b{color:var(--ink);letter-spacing:.08em}
.analysis-header{display:grid;grid-template-columns:.9fr 1.1fr;gap:8px;align-items:stretch;margin-bottom:9px}
.analysis-header .present-question{margin:0}
.presentation .comparison{font-size:clamp(.9rem,1.2vw,1.21rem)}
.presentation .plan-tile{flex-basis:165px}
.presentation .result-tile{padding:.65em;gap:.4em}
.presentation .result-tile-head strong{font-size:.97em}
.presentation .result-metric>span>b{font-size:1.4em}
.presentation.dark .result-metric:nth-child(2){background:#243a52}
.present-main:not([data-view="overview"]) :is(.result-guide,.result-tile .result-budget,.result-tile .result-metrics){display:none}
.presentation .mini-chart svg{max-height:200px}
.presentation .validation{margin-bottom:8px}
.present-modes{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.present-modes[hidden],.present-modes button[hidden]{display:none}
.present-modes [aria-pressed=true]{background:var(--tint);color:var(--good);border-color:var(--accent)}
.present-main.has-comparison .present-heading h1{font-size:clamp(1.75rem,3vw,3.2rem)}
.present-main[data-view="validation"] .analysis-header{grid-template-columns:1fr}
.present-main:is([data-view="validation"],[data-view="metrics"]) :is(.recap,.evolution,.chart-grid),
.present-main[data-view="validation"] .analysis-header .pulse,
.present-main[data-view="validation"] .metric-details,
.present-main[data-view="metrics"] .analysis-header,
.present-main[data-view="metrics"] .validation{display:none}
.present-main[data-view="validation"] .validation-item{font-size:.94em;padding:.68em}
.present-main[data-view="validation"] .gap-pair{font-size:1em}
.present-main[data-view="metrics"] .metric-details summary{display:none}
.present-main[data-view="metrics"] .metric-details table{font-size:.96em}
.recap{margin-bottom:9px}
.recap .systems{max-width:850px}
.dark{color-scheme:dark;--bg:#101d1b;--surface:#192a26;--surface2:#203430;--ink:#f0f7ef;--muted:#b8cbbf;--line:#314940;--primary:#8bda9e;--primary-strong:#a2ebb0;--accent:#93d8a3;--tint:#29483b;--good:#b8f0c5;--danger:#ffd4c8;--danger-bg:#522b24;--caution:#ffe4a8;--caution-bg:#4c3824;--shadow:none}
.dark .btn.primary{color:#103724}
.dark .heat{color:#eaf6ed;background:color-mix(in srgb,#243d36 calc(100% - 100% * var(--intensity)),#4f8564)}
body:not(.dark) .heat{background:color-mix(in srgb,var(--tint) calc(100% - 60% * var(--intensity)),var(--accent))}
@media(max-width:1000px){.teacher-grid{grid-template-columns:minmax(0,1fr) minmax(240px,290px)}.teacher-grid .chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.teacher-grid .chart-grid .mini-chart:last-child{grid-column:1/-1}.workspace-head{align-items:start}.workspace-head .button-row{flex:none}.candidate-grid{grid-template-columns:1fr}}
@media(max-width:750px){.wrap,.presentation .wrap{width:calc(100% - 30px)}.teacher-grid,.dash-grid,.landing,.present-lobby,.analysis-header{grid-template-columns:1fr}.landing{min-height:auto;padding:22px 0;gap:18px}.landing-copy{padding:1em 0 0}.workspace-head{flex-direction:column;gap:5px}.workspace-head p{font-size:.91rem}.workspace{padding:19px 0}.teacher-nav .nav-link{display:none}.candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.present-tools .clock{display:none}.present-heading{align-items:start}.present-budget{font-size:.82em;padding-left:.5em}.presentation .chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:460px){.brand{font-size:1.04rem}.brand img{width:30px;height:30px}.brand small{font-size:.45rem}.top .wrap{min-height:60px}.card{border-radius:13px}.student-wrap .card+.card{margin-top:9px}.student-wrap .pulse{grid-template-columns:repeat(2,minmax(0,1fr))}.student-wrap .pulse b{font-size:1.58rem}.student-wrap .pulse>div{padding:.48em .55em}.student-wrap .chart-grid{grid-template-columns:1fr}.student-wrap .mini-chart svg{max-height:170px}.student-wrap .plan-strip{gap:5px}.student-wrap .comparison .plan-tile{flex-basis:100%}.evo-grid{grid-template-columns:1fr 1fr}.evo-grid>div:last-child{grid-column:1/-1}.candidate-grid{grid-template-columns:1fr}.manual{grid-template-columns:repeat(2,minmax(0,1fr))}.teacher-nav{gap:4px}.teacher-nav .connection{font-size:.69rem}.present-tools .connection span{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}

.gap-pair span{white-space:nowrap}
