:root{color-scheme:dark;--cyan:#36e4ff;--lime:#b8ff5d;--pink:#ff4f9a;--ink:#07111f;--panel:rgba(8,22,38,.94)}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#07111f;color:#edf9ff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,textarea{font:inherit}.skip-link{position:fixed;left:1rem;top:-5rem;z-index:99;background:#fff;color:#000;padding:.7rem}.skip-link:focus{top:1rem}.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}
#game-shell,#game-canvas{position:fixed;inset:0;width:100%;height:100%}#game-canvas{display:block;outline:none;touch-action:none}
.hud{position:fixed;left:clamp(.7rem,2vw,1.5rem);right:clamp(.7rem,2vw,1.5rem);top:max(.65rem,env(safe-area-inset-top));display:flex;justify-content:space-between;gap:1rem;pointer-events:none;z-index:5}.brand,.meters span,.mission{border:1px solid rgba(54,228,255,.38);background:rgba(5,17,30,.84);box-shadow:0 10px 30px rgba(0,0,0,.25),inset 0 0 22px rgba(54,228,255,.05);backdrop-filter:blur(10px)}.brand{padding:.55rem .8rem;border-left:4px solid var(--cyan)}.brand small,.mission small,.meters small{display:block;color:#8eb3c7;font-size:.63rem;font-weight:800;letter-spacing:.12em}.brand strong{font-size:clamp(.85rem,1.5vw,1.18rem);letter-spacing:.05em}.brand em{color:var(--lime);font-style:normal}.meters{display:flex;gap:.4rem}.meters span{min-width:5.4rem;padding:.5rem .65rem;text-align:center}.meters b{font:800 .95rem ui-monospace,SFMono-Regular,Menlo,monospace;color:#fff}
.mission{position:fixed;z-index:5;top:5.1rem;left:50%;transform:translateX(-50%);width:min(42rem,calc(100% - 2rem));padding:.65rem .9rem;text-align:center;pointer-events:none;border-color:rgba(184,255,93,.38)}.mission strong{display:block;font-size:.95rem}.mission span{display:block;color:#adc4d3;font-size:.78rem;margin-top:.2rem}
.message{position:fixed;left:50%;bottom:8.6rem;transform:translateX(-50%) translateY(1rem);z-index:8;background:rgba(6,19,34,.92);border:1px solid var(--cyan);padding:.65rem 1rem;opacity:0;transition:.18s;pointer-events:none;max-width:min(38rem,85vw);text-align:center}.message.show{opacity:1;transform:translateX(-50%) translateY(0)}.interaction{position:fixed;z-index:6;left:50%;bottom:2.2rem;transform:translateX(-50%);display:flex;gap:.55rem;align-items:center;background:#07111fed;border:1px solid var(--lime);padding:.55rem .8rem;font-weight:800}.interaction[hidden]{display:none}.interaction kbd,.controls kbd,.editor kbd{border:1px solid #527286;background:#0b2337;border-radius:.25rem;padding:.12rem .35rem;box-shadow:inset 0 -2px #04101c}
.overlay{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(circle at 50% 35%,rgba(24,84,116,.45),rgba(3,10,19,.94) 58%);z-index:20;padding:1rem}.overlay[hidden]{display:none}.panel{width:min(45rem,100%);border:1px solid rgba(54,228,255,.55);background:linear-gradient(145deg,rgba(7,26,44,.98),rgba(5,13,25,.98));padding:clamp(1.3rem,4vw,2.8rem);box-shadow:0 24px 80px #000a,inset 0 0 80px rgba(54,228,255,.04)}.eyebrow{color:var(--cyan);letter-spacing:.18em;font-size:.74rem;font-weight:900}.panel h1{font-size:clamp(3rem,9vw,6.5rem);line-height:.76;margin:.65rem 0 1.3rem;letter-spacing:-.06em}.panel h1 span{color:var(--lime);font-size:.66em}.pitch{max-width:38rem;color:#c7dce8;line-height:1.55}.controls{display:grid;grid-template-columns:repeat(5,1fr);gap:.5rem;margin:1.2rem 0}.controls span{border:1px solid #24465a;padding:.55rem .3rem;text-align:center}.controls small{display:block;color:#9cb8c8;font-size:.68rem;margin-top:.35rem}.primary{width:100%;border:0;background:linear-gradient(90deg,var(--cyan),var(--lime));color:#04131d;padding:1rem;font-weight:900;cursor:pointer;box-shadow:0 0 30px rgba(54,228,255,.18)}.primary small{display:block;font-size:.67rem;margin-top:.2rem}.note{font-size:.72rem;text-align:center;color:#88a5b6;margin:.8rem 0 0}
.editor{position:fixed;z-index:30;left:50%;top:50%;transform:translate(-50%,-50%);width:min(70rem,calc(100% - 2rem));max-height:calc(100% - 2rem);overflow:auto;background:var(--panel);border:1px solid var(--cyan);box-shadow:0 30px 100px #000d}.editor[hidden]{display:none}.editor-head{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem;border-bottom:1px solid #24475d}.editor-head small{color:var(--lime);font-weight:900;letter-spacing:.13em}.editor h2{margin:.15rem 0 0;font-size:1.35rem}.editor-head button{border:0;background:transparent;color:#fff;font-size:2rem;cursor:pointer}.editor-brief{margin:0;padding:.8rem 1.2rem;color:#c8dce7;background:rgba(54,228,255,.06)}.editor-layout{display:grid;grid-template-columns:1.55fr .85fr;min-height:24rem}.code-pane{border-right:1px solid #24475d;display:flex;flex-direction:column}.tab{display:flex;justify-content:space-between;padding:.55rem .9rem;background:#071321;color:#a8c5d3;font:700 .75rem ui-monospace,monospace}.tab small{color:#718f9f}#code-input{flex:1;min-height:22rem;resize:none;border:0;outline:none;background:#091827;color:#eaf9ff;padding:1rem 1.1rem;font:500 .95rem/1.65 ui-monospace,SFMono-Regular,Menlo,monospace;tab-size:2;caret-color:var(--lime)}.tests-pane{padding:1rem}.tests-pane h3{font-size:.7rem;letter-spacing:.14em;color:#8eaaba}.test-results{display:grid;gap:.5rem}.test-row{border:1px solid #274458;padding:.65rem;font:700 .78rem ui-monospace,monospace}.test-row.pending{color:#89a5b5}.test-row.pass{border-color:rgba(184,255,93,.5);color:var(--lime);background:rgba(184,255,93,.06)}.test-row.fail{border-color:rgba(255,79,154,.55);color:#ff94c1;background:rgba(255,79,154,.06)}.code-hint{border-left:3px solid var(--cyan);padding:.6rem .7rem;color:#b6cfdb;font-size:.78rem;line-height:1.45;margin-top:1rem}.editor-actions{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1.2rem;border-top:1px solid #24475d}.editor-actions span{color:#829faf;font-size:.72rem}.editor-actions button{border:0;background:var(--lime);color:#06131c;padding:.75rem 1rem;font-weight:900;cursor:pointer}.editor-actions button:disabled{opacity:.55;cursor:wait}
.end-panel h2{font-size:clamp(2.4rem,7vw,5.2rem);line-height:.9;margin:.5rem 0;color:var(--lime)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin:1.3rem 0}.stats span{border:1px solid #2a4d61;padding:.8rem;text-align:center}.stats small{display:block;color:#8eacbc;font-size:.65rem}.stats b{font:900 1.5rem ui-monospace,monospace}
.touch-controls{display:none;position:fixed;z-index:10;left:.7rem;right:.7rem;bottom:max(.7rem,env(safe-area-inset-bottom));justify-content:space-between;align-items:end;pointer-events:none}.editor-open .touch-controls{display:none!important}.touch-controls button{pointer-events:auto;border:1px solid rgba(54,228,255,.5);background:rgba(5,20,34,.8);color:white;border-radius:.35rem;font-weight:900;touch-action:none}.dpad{width:9.5rem;height:9.5rem;display:grid;grid-template:repeat(3,1fr)/repeat(3,1fr);gap:.2rem}.dpad [data-control=up]{grid-area:1/2}.dpad [data-control=left]{grid-area:2/1}.dpad [data-control=down]{grid-area:2/2}.dpad [data-control=right]{grid-area:2/3}.touch-actions{display:grid;grid-template-columns:1fr 1fr;gap:.35rem}.touch-actions button{padding:.8rem}.touch-actions .act{grid-column:1/3;border-color:var(--lime);padding:1rem}
@media(max-width:760px),(pointer:coarse){.hud{top:max(.35rem,env(safe-area-inset-top));left:.35rem;right:.35rem}.brand{padding:.35rem .5rem}.brand small{display:none}.brand strong{font-size:.72rem}.meters{gap:.18rem}.meters span{min-width:0;padding:.3rem .35rem}.meters small{font-size:.47rem}.meters b{font-size:.68rem}.mission{top:3.3rem;padding:.4rem .55rem}.mission strong{font-size:.72rem}.mission span{display:none}.touch-controls{display:flex}.interaction{bottom:10.8rem}.message{bottom:11.1rem;font-size:.75rem}.controls{grid-template-columns:repeat(3,1fr)}.controls span:nth-child(4),.controls span:nth-child(5){display:none}.panel{padding:1.1rem}.panel h1{font-size:3.4rem}.pitch{font-size:.86rem}.editor{width:calc(100% - .5rem);max-height:calc(100% - .5rem)}.editor-layout{grid-template-columns:1fr;min-height:0}.code-pane{border-right:0;border-bottom:1px solid #24475d}#code-input{min-height:13rem;font-size:.78rem}.tests-pane{padding:.7rem}.editor-actions{position:sticky;bottom:0;background:#081727}.editor-actions span{display:none}.editor-actions button{width:100%}.editor-brief{font-size:.78rem}.editor-head{padding:.65rem}.editor-head h2{font-size:1rem}.stats b{font-size:1rem}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* Mobile-first hardening. The visual viewport variables follow the software keyboard. */
html,body,#game-shell{height:100%;height:100dvh;overscroll-behavior:none}.overlay{overflow-y:auto;padding-top:max(1rem,env(safe-area-inset-top));padding-right:max(1rem,env(safe-area-inset-right));padding-bottom:max(1rem,env(safe-area-inset-bottom));padding-left:max(1rem,env(safe-area-inset-left))}.primary,.editor-actions button,.editor-head button{min-height:44px}.touch-controls{left:max(.7rem,env(safe-area-inset-left));right:max(.7rem,env(safe-area-inset-right))}.touch-controls button{min-width:44px;min-height:44px;-webkit-tap-highlight-color:transparent;user-select:none}.touch-controls button:active{filter:brightness(1.25)}
@media(max-width:760px),(pointer:coarse){.editor{top:calc(var(--visual-top,0px) + .25rem);width:calc(100% - .5rem);height:calc(var(--visual-height,100dvh) - .5rem);max-height:calc(var(--visual-height,100dvh) - .5rem);transform:translateX(-50%);display:flex;overflow:hidden;flex-direction:column}.editor[hidden]{display:none}.editor-layout{min-height:0;overflow:auto;flex:1}.editor-head,.editor-brief,.editor-actions{flex:none}.editor-actions{padding-bottom:max(.8rem,env(safe-area-inset-bottom))}#code-input{min-height:13rem;font-size:16px}.editor-open .hud,.editor-open .mission,.editor-open .message,.editor-open .interaction{visibility:hidden}.keyboard-open .editor-brief,.keyboard-open .tests-pane{display:none}.keyboard-open .editor-layout{grid-template-columns:1fr}.keyboard-open #code-input{min-height:100%}}
@media(max-width:380px){.dpad{width:8.4rem;height:8.4rem}.touch-actions button{padding:.55rem;font-size:.75rem}.touch-actions .act{padding:.8rem}.interaction{bottom:9.7rem}.message{bottom:10rem}}
@media(orientation:landscape) and (max-height:520px){.overlay{display:block;padding-top:max(.45rem,env(safe-area-inset-top));padding-bottom:max(.45rem,env(safe-area-inset-bottom))}.overlay[hidden]{display:none}.panel{max-width:42rem;margin:auto;padding:.8rem 1rem}.panel h1{font-size:2.8rem;margin:.35rem 0 .6rem}.pitch{margin:.5rem 0;font-size:.76rem;line-height:1.35}.controls,.note{display:none}.primary{padding:.65rem}.hud{top:max(.25rem,env(safe-area-inset-top))}.mission{top:2.9rem}.mission span{display:none}.dpad{width:8.4rem;height:8.4rem}.touch-controls{bottom:max(.35rem,env(safe-area-inset-bottom))}.touch-actions button{padding:.55rem;font-size:.72rem}.touch-actions .act{padding:.75rem}.interaction{bottom:8.95rem}.message{bottom:9.15rem}.editor-layout{grid-template-columns:minmax(0,1.3fr) minmax(14rem,.7fr)}.code-pane{border-right:1px solid #24475d;border-bottom:0}#code-input{min-height:0}.tests-pane{font-size:.72rem}}

.controls-touch,.touch-cue{display:none}
.controls-touch b{display:block;color:var(--lime);font-size:.78rem}
.touch-actions button{touch-action:manipulation}
.dpad button{touch-action:none}
@media(max-width:760px),(pointer:coarse){
  .controls-keyboard{display:none}
  .controls.controls-touch{display:grid;grid-template-columns:repeat(2,1fr)}
  .keyboard-cue{display:none}
  .touch-cue{display:inline-flex;border:1px solid var(--lime);background:#0b2337;border-radius:.25rem;padding:.16rem .4rem;box-shadow:inset 0 -2px #04101c;font-size:.7rem}
}

/* Débrief technique : constats issus des modules réellement validés. */
.stats-label{margin:.9rem 0 .35rem;color:#88a5b6;font-size:.6rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.stats{margin-top:.35rem}.debrief{display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem;margin:1rem 0 1.1rem}.debrief article{border-left:3px solid var(--cyan);background:rgba(54,228,255,.055);padding:.7rem}.debrief b{display:block;color:var(--lime);font-size:.72rem;margin-bottom:.2rem}.debrief span{display:block;color:#bdd2dc;font-size:.74rem;line-height:1.35}
@media(max-width:760px),(pointer:coarse){.debrief{grid-template-columns:1fr}.debrief article{padding:.5rem}.end-panel{margin:auto}}
@media(orientation:landscape) and (max-height:520px){.end-panel h2{font-size:2.1rem}.end-summary,.stats-label{font-size:.65rem}.stats{margin:.45rem 0}.debrief{grid-template-columns:repeat(3,1fr);margin:.45rem 0}.debrief article{padding:.4rem}.debrief span{font-size:.62rem}.debrief b{font-size:.65rem}}
