:root{--bg:#091420;--panel:#111f2e;--panel2:#152638;--line:#274052;--bright:#52d7ca;--text:#eaf3fb;--muted:#9bb4c6;--gold:#ecc789;font-family:Inter,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;color:var(--text);background:radial-gradient(ellipse 900px 600px at 15% -160px,#19354a 0,transparent 80%),var(--bg);font-size:14px}button,select,input{font:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid #6ceee3;outline-offset:2px}button:disabled{opacity:.43;cursor:not-allowed}.topbar{padding:18px clamp(16px,2.4vw,40px);display:flex;justify-content:space-between;align-items:center;gap:15px;border-bottom:1px solid #274356;background:#0c1927e8}.branding{display:flex;align-items:center;gap:14px}.symbol{height:46px;width:46px;border:1px solid #567a89;background:#142f3f;color:#e8f8fa;border-radius:13px;display:grid;place-items:center;font-size:27px;font-weight:800;letter-spacing:-5px;padding-right:7px}.symbol span{color:#51d0c6;letter-spacing:0}.eyebrow{font-size:10px;color:#83c8d1;letter-spacing:2px;font-weight:850}.eyebrow span{color:#859cae}h1{font-size:clamp(16px,1.5vw,22px);line-height:1.2;margin:5px 0 0;letter-spacing:-.6px}h1 b{font-size:13px;background:#28505c;color:#86f6e0;padding:3px 7px;border-radius:5px;vertical-align:middle;letter-spacing:.5px}.topright{display:flex;align-items:center;gap:13px}.pill{font-size:10px;letter-spacing:1px;color:#bde7dc;background:#163a41;border:1px solid #386267;border-radius:30px;padding:9px 12px;white-space:nowrap}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#52d7ca;margin-right:5px}.main-grid{max-width:1700px;margin:0 auto;padding:22px clamp(10px,2.3vw,36px);display:grid;grid-template-columns:minmax(0,1.55fr) minmax(365px,.82fr);gap:18px;align-items:start}.laboratory,.sidebar{min-width:0}.section-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:3px 3px 14px}.kicker{font-size:10px;color:#65c2ce;font-weight:800;letter-spacing:1.7px}.section-top h2{margin:6px 0 0;font-size:23px;letter-spacing:-.7px}.engine-badge{border:1px solid #355063;border-radius:6px;padding:7px 9px;color:#9bb9c8;font-size:11px}.viewport{position:relative;border-radius:17px;overflow:hidden;border:1px solid #476579;background:radial-gradient(ellipse at 60% 42%,#405665 0%,#162b3b 58%,#101a29 100%);height:clamp(430px,48vw,660px);isolation:isolate}.render-mount{position:absolute;inset:0}.render-mount canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.viewport-top{position:absolute;top:16px;left:17px;right:17px;pointer-events:none;display:flex;justify-content:space-between;gap:10px}.scene-label{padding:8px 11px;background:#0b1923c9;border:1px solid #557386;border-radius:8px;color:#d3eefa;font-size:10px;letter-spacing:1.4px;font-weight:750;white-space:nowrap}.scene-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#4fdfc4;margin-right:5px}.scene-help{background:#0b1923ba;border:1px solid #4b6675;border-radius:8px;padding:8px 10px;font-size:11px;color:#e5eff6}.viewport-bottom{position:absolute;bottom:15px;left:16px;right:16px;border:1px solid #688095;background:#0b1925d9;backdrop-filter:blur(10px);border-radius:10px;padding:11px 14px;pointer-events:none;display:flex;gap:14px;align-items:center;justify-content:space-between}.viewport-bottom div:first-child{font-size:10px;letter-spacing:1px;color:#83a5b5;white-space:nowrap}.viewport-bottom strong{color:#effcf8}.viewport-bottom div:last-child{font-size:12px;color:#dbebf3;text-align:right}.load-cover{position:absolute;inset:0;background:#102231ed;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;gap:13px;z-index:2}.load-cover.hidden{display:none}.load-glyph{font-size:54px;color:#4ed8c9;animation:float 2s ease-in-out infinite}@keyframes float{50%{transform:translateY(-7px)}}.load-title{font-weight:780;font-size:19px}.load-text{font-size:13px;line-height:1.6;color:#b2c9d7;max-width:430px}.load-cover.failed .load-glyph{color:#ebba8a;animation:none}.toolstrip{margin-top:14px;background:#102030;border:1px solid #274458;border-radius:14px;padding:15px 16px}.tool-row{display:flex;gap:12px;flex-wrap:wrap;justify-content:space-between;align-items:end}.tool-lower{border-top:1px solid #294150;margin-top:12px;padding-top:12px}.tool-group{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.tool-caption{font-size:10px;letter-spacing:1.5px;font-weight:750;color:#729eaf;margin-right:7px}.btn{background:#1d354a;color:#e7f5fb;border:1px solid #426077;border-radius:8px;padding:10px 12px;font-size:12px;font-weight:650;min-height:37px;transition:background .14s,border-color .14s}.btn:hover:not(:disabled){background:#2d5065;border-color:#60a8b0}.btn.active{color:#072a2b;background:#6de0ce;border-color:#6de0ce}.btn-bright{background:#30a99f;border-color:#43c5b6;color:#041f26;font-weight:800}.btn-bright:hover:not(:disabled){background:#6fe3d1}.btn-quiet{background:transparent}.btn-small{padding:8px 10px}.range-row{display:flex;align-items:center;gap:17px;margin-top:13px;color:#acc5d2;font-size:11px}.range-row label{min-width:240px;display:flex;justify-content:space-between;gap:10px}.range-row strong{color:#f1e0b0}.range-row input{min-width:120px;flex:1;accent-color:#57d7c7}.scene-note{display:flex;gap:10px;align-items:flex-start;padding:12px 5px;color:#aac4d1;line-height:1.6;font-size:12px}.scene-note p{margin:0}.note-marker{color:#6fd5d0;font-size:18px}.sidebar{display:flex;flex-direction:column;gap:15px}.card{background:linear-gradient(160deg,#132538,#102030);border:1px solid #2c495e;border-radius:14px;padding:17px 18px}.card-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.card h2{font-size:18px;letter-spacing:-.4px;margin:9px 0 13px}.step-dot{font-size:11px;color:#7f9fac;letter-spacing:1px}select,input[type=text]{border:1px solid #416278;border-radius:8px;background:#0c1e2f;color:#e8f3f5;padding:11px 12px;font-size:13px}select{width:100%;min-height:42px}.scenario-info{padding:12px;margin-top:11px;background:#0c1d2bb5;border:1px solid #2a4455;border-radius:9px}.scenario-sub{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.chip{font-size:9px;letter-spacing:1px;color:#8ce9d8;background:#193d43;border-radius:4px;padding:6px 8px}.muted{color:#a9bdc9;font-size:11px}.scenario-equation{font-size:19px;color:#eff9ff;font-weight:620;margin:13px 0 8px}.scenario-info p{color:#9fb9c7;font-size:12px;line-height:1.55;margin:0}.quiet-indicator{font-size:10px;letter-spacing:.6px;color:#edbd89}.quiet-indicator.on{color:#64e1c7}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:13px}.metrics>div{background:#1a3247;padding:12px 9px 10px;border-radius:10px;min-width:0}.metrics small{display:block;color:#97b2c3;font-size:9px;letter-spacing:.7px;white-space:nowrap}.metrics strong{display:block;font-size:clamp(21px,2vw,29px);margin:6px 0 2px;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.metrics span{font-size:10px;color:#9fb7c7}.message-strip{margin-top:11px;padding:10px 12px;border-left:3px solid #cfa873;background:#1b3446;color:#d1e4ec;font-size:12px;line-height:1.45}.chart-head{display:flex;align-items:baseline;justify-content:space-between;margin:17px 1px 10px;font-size:12px;font-weight:780}.chart-head small{color:#9db9cc;font-weight:400}.measures svg{display:block;width:100%;height:auto;background:#0d1d2b;border-radius:10px;overflow:visible}.grid-lines path:first-child{fill:none;stroke:#577086;stroke-width:1.1}.grid-lines path:last-child{fill:none;stroke:#284053;stroke-width:.75;stroke-dasharray:3 5}.axis-label{font-size:11px;fill:#98b5c4;font-family:inherit}.chart-footnote{font-size:11px;color:#8eacba;line-height:1.5;margin:9px 2px 0}.progress{height:5px;border-radius:10px;overflow:hidden;background:#284352;margin-top:14px}.progress span{display:block;width:20%;height:100%;background:#63d6c8;transition:width .22s}.mission h2{margin:13px 0 6px}.mission p,.results p{font-size:12px;color:#afc6d2;line-height:1.55}.mission-state{background:#1b3444;border-left:3px solid #bf9760;padding:10px 12px;color:#e0c598;font-size:12px;border-radius:2px;margin:13px 0}.mission-state.done{border-color:#59d6b7;color:#96f0d4}.mission-actions{display:flex;justify-content:space-between;gap:8px}.formula{color:#dff6fb;white-space:nowrap}.answer-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.answer-row label{font-size:13px;font-weight:bold;color:#e0f5fa}.answer-row label small{font-weight:400;color:#9ac2ce}.answer-row input{width:120px;flex:1;min-width:105px}.feedback{margin-top:11px;color:#a4bfca;font-size:11px;line-height:1.55;min-height:28px}.feedback.success{color:#86edc7}.feedback.error{color:#f0c58e}.results-actions{border-top:1px solid #2b4755;padding-top:11px;margin-top:10px}footer{display:flex;justify-content:space-between;gap:10px;border-top:1px solid #20394b;padding:15px clamp(18px,2.4vw,40px) 20px;max-width:1700px;margin:auto;font-size:10px;letter-spacing:.5px;color:#698b9b}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:1120px){.main-grid{grid-template-columns:minmax(0,1fr)}.sidebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.viewport{height:520px}}@media(max-width:720px){.topbar{align-items:flex-start;flex-direction:column}.topright{width:100%;justify-content:space-between}.section-top h2{font-size:20px}.sidebar{display:flex}.viewport{height:470px}.viewport-top{flex-direction:column;align-items:start}.scene-help{max-width:240px;line-height:1.5}.viewport-bottom{flex-direction:column;align-items:flex-start;gap:4px}.viewport-bottom div:last-child{text-align:left}.range-row{flex-direction:column;align-items:stretch;gap:7px}.range-row label{min-width:0}footer{flex-direction:column}}@media(max-width:385px){.card{padding:14px}.metrics strong{font-size:21px}.viewport{height:410px}.pill{font-size:9px}.toolstrip{padding:11px}.btn{font-size:11px;padding:9px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Édition classe — visibilité à distance et projection */
:root{--bg:#0a1320;--panel:#121f31;--panel2:#15283a;--line:#38556a;--bright:#55e4d1;--text:#f3f8ff;--muted:#b8d0e0}
body{font-size:15px;background:#0b1422}
.section-top{flex-wrap:wrap;gap:13px}.section-top h2{font-size:25px}
.display-tools{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap}
.display-tools label{color:#d0e4f2;font-weight:800;font-size:11px;letter-spacing:1.1px}
.display-tools select{width:auto;max-width:270px;padding:9px 11px;min-height:40px;background:#1f3447;border-color:#6ca4b9;font-size:12px;font-weight:730;color:white}
.engine-badge{color:#e0f4ff;background:#162739;border-color:#5d8192;font-size:11px}
.viewport{border:2px solid #6f92a9;background:#263848}
.scene-label{font-size:11px;background:#0c1b2bea;border-color:#85a4b7;color:#fff}
.scene-help{background:#0b1c2de8;border-color:#8cabbc;font-size:12px;color:#fff;font-weight:700}
.viewport-bottom{background:#0c1a2af0;border-color:#789db1;min-height:49px}
.viewport-bottom div:last-child{font-size:13px;font-weight:680;color:#fff}
.viewport-bottom div:first-child{font-size:11px;color:#c0e2ef}
.toolstrip{border-color:#436178;background:#14263a}
.btn{font-size:13px;min-height:42px;border-color:#64829b}
.btn-bright{color:#021c23;background:#62e5d2;border-color:#6eeedd}
.tool-caption,.kicker{color:#86e6eb}
.sidebar .card{border-color:#41617b;background:#15263a}
.card h2{font-size:19px}
.scenario-info{background:#102236;border-color:#47677d}
.scenario-info p,.mission p,.results p{font-size:13px;color:#d3e2ed}
.scenario-equation{font-size:21px}
.metrics strong{font-size:clamp(24px,2vw,32px)}
.metrics small{font-size:10px;color:#cfdeea}
.metrics span{font-size:11px;color:#b3d2e1}
.metrics>div{background:#203c54;border:1px solid #345976}
.message-strip{font-size:13px;background:#22394a;color:#fff}
.chart-footnote,.feedback{font-size:12px;color:#c5d9e5}
.chart-head{font-size:13px}
.scene-note{font-size:13px;color:#cbdeeb}
.scenario-sub .muted{font-size:12px;color:#c6d8e5}
.teaching-point{display:flex;gap:9px;align-items:flex-start;flex-wrap:wrap;padding:11px 0 1px;margin-top:12px;border-top:1px solid #355b73;font-size:12px;color:#e1f4fd;line-height:1.5}
.teaching-point strong{color:#ffe1a1;font-size:10px;letter-spacing:1px}
.teaching-point span{flex:1;min-width:170px}
#chart .axis-label{fill:#bcd3e3}
@media(max-width:900px){.display-tools{justify-content:flex-start}.section-top{align-items:flex-start}}
@media(max-width:720px){.display-tools select{max-width:100%}.viewport{height:490px}.scene-help{font-size:11px}.display-tools{gap:7px}}

.indicator-readout{display:flex;align-items:center;gap:12px;margin:10px 0 0;padding:8px 11px;background:#102537;border:1px solid #456984;border-radius:9px}
.indicator-swatch{width:31px;height:31px;flex:none;border-radius:50%;background:#4abedb;border:2px solid #d7ecf5;box-shadow:inset 0 0 0 4px #ffffff25}
.indicator-readout strong{display:block;font-size:12px;letter-spacing:.2px;color:#ebf8ff}
.indicator-readout small{display:block;margin-top:3px;font-size:12px;color:#cbdfea;line-height:1.4}
body[data-display=studio] .viewport{border-color:#819bad}

/* ANA LAB 3D — Parcours enseignant / élève */
[hidden]{display:none!important}
.rolebar{max-width:1700px;margin:0 auto;padding:13px clamp(14px,2.3vw,36px);display:flex;align-items:center;flex-wrap:wrap;gap:12px;border-bottom:1px solid #284355;background:#112237}
.rolebuttons{display:inline-flex;gap:5px;padding:5px;border-radius:10px;background:#091826;border:1px solid #375469}
.role{min-height:39px;padding:9px 13px;border:1px solid transparent;border-radius:7px;background:transparent;color:#b9d3e2;font-size:13px;font-weight:780}
.role.active{background:#64e3d1;color:#06343d}
.rolebar p{flex:1 1 290px;margin:0;color:#d3e3eb;line-height:1.45;font-size:13px}
.rolebadge{margin-left:auto;white-space:nowrap;font-size:10px;font-weight:800;letter-spacing:1px;color:#97dfe0;background:#173a48;border:1px solid #456777;padding:8px 10px;border-radius:7px}
.mode-card{border-color:#467a8b!important;background:linear-gradient(140deg,#173247,#102737)!important}
.mode-card h2{margin-bottom:12px}
.mode-card .checkline{display:flex;align-items:center;gap:10px;color:#e5f8fa;line-height:1.45;font-size:13px;cursor:pointer}
.checkline input{accent-color:#56dfd1;width:18px;height:18px;flex:none}
.quick-demo,.student-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.microcopy{font-size:11px!important;color:#bad0dd!important;line-height:1.6!important;margin:10px 0 0!important}
.identity-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.identity-grid label{display:flex;flex-direction:column;gap:6px;color:#d9f0f4;font-size:12px;font-weight:750;min-width:0}
.identity-grid input{width:100%;min-width:0;min-height:43px;font-size:13px}
.field-label{font-size:12px;color:#d3e9f1;font-weight:780;display:block;margin:11px 0 7px}
#veGroup input{max-width:100%;width:100%;min-height:43px}
.concept{padding-top:13px}
.concept select{font-size:13px;line-height:1.4;white-space:normal}
.btn-submit{display:block;width:100%;margin-top:14px;padding:13px 15px;line-height:1.45;font-size:13px}
.score-panel{margin-top:17px;background:#0c2835;border:1px solid #399f93;border-radius:11px;padding:14px}
.score-summary{display:flex;justify-content:space-between;align-items:center;gap:8px;padding-bottom:12px;border-bottom:1px solid #36566a}
.score-summary span{font-size:11px;letter-spacing:.9px;color:#a5e5e2;font-weight:800}
.score-summary strong{font-size:31px;color:#77efd4;white-space:nowrap;font-variant-numeric:tabular-nums}
.rubric-row{display:flex;align-items:flex-start;gap:9px;justify-content:space-between;padding:10px 0;border-bottom:1px solid #2a4b5d}
.rubric-row:last-child{border-bottom:0}
.rubric-row div{flex:1;min-width:0}.rubric-row strong{display:block;color:#e9faff;font-size:12px}.rubric-row small{display:block;color:#b9d6df;line-height:1.45;margin-top:4px}
.rubric-row b{font-size:14px;color:#d0fdf0;white-space:nowrap}
.score-panel p{margin:9px 0 0;color:#d4f0eb!important;font-size:12px!important}
.results-actions{display:flex;flex-wrap:wrap;gap:7px}
body[data-role=student] #metricEq{color:#b4d2e3}
body[data-role=student] .mission .mission-state{font-weight:750}
body[data-role=student] .results{border-color:#409d96}
@media(max-width:720px){.rolebar{align-items:flex-start}.rolebadge{margin-left:0}.rolebar p{order:3;flex-basis:100%}.role{font-size:12px}.identity-grid{grid-template-columns:1fr}}
