@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;700;800&family=Inter:wght@400;600;800&display=swap');
:root{--bg:#05090b;--panel:rgba(9,17,20,.91);--line:rgba(202,226,229,.18);--cyan:#89e8ef;--acid:#d1ef50;--red:#ff4141;--text:#eef5f5;--muted:#8fa1a6}*{box-sizing:border-box}html,body{margin:0;background:#020405;color:var(--text);font-family:Inter,Arial,sans-serif;min-height:100%;overflow-x:hidden}button,input{font:inherit}.noise{position:fixed;inset:0;pointer-events:none;z-index:100;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E")}.scan-global{position:fixed;inset:0;pointer-events:none;z-index:99;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.018) 3px 4px)}.screen{display:none;position:relative;min-height:100svh;padding:82px 22px 24px;overflow:hidden}.screen.active{display:flex;animation:screenIn .42s ease both}@keyframes screenIn{from{opacity:0;filter:blur(5px);transform:scale(1.012)}to{opacity:1;filter:none;transform:none}}.glass{background:linear-gradient(135deg,rgba(18,30,34,.94),rgba(7,13,15,.9));border:1px solid var(--line);box-shadow:0 28px 80px #0008,inset 0 1px 0 #fff1;backdrop-filter:blur(12px)}.kicker{font:800 .78rem/1 Barlow Condensed,sans-serif;letter-spacing:.25em;color:var(--acid);text-transform:uppercase}.btn{border:0;padding:15px 22px;font:800 .88rem Inter;letter-spacing:.08em;cursor:pointer;transition:.18s}.btn-primary{background:var(--acid);color:#111}.btn-primary:hover{box-shadow:0 0 32px #d1ef5066;transform:translateY(-1px)}.btn-ghost{background:transparent;border:1px solid var(--line);color:white}.btn-danger{background:var(--red);color:white}.utility-btn{position:fixed;z-index:200;top:17px;width:42px;height:42px;border:1px solid #ffffff1d;background:#071013cc;color:white;cursor:pointer}.fullscreen-btn{right:18px}.sound-btn{right:68px}.intro-screen{align-items:center;background:radial-gradient(circle at 66% 50%,#10222a 0,#050b0d 30%,#020405 68%)}.intro-grid,.map-grid{position:absolute;inset:0;background-image:linear-gradient(#82d6e80a 1px,transparent 1px),linear-gradient(90deg,#82d6e80a 1px,transparent 1px);background-size:46px 46px;mask-image:linear-gradient(90deg,#000,transparent 88%)}.intro-flare{position:absolute;width:480px;height:480px;border-radius:50%;right:7%;background:#5bf2ff08;box-shadow:0 0 140px #46cddd20}.virus-orb{position:absolute;right:12%;top:50%;transform:translateY(-50%);width:min(36vw,440px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,#52737b,#122b30 45%,#041012 74%);box-shadow:inset -35px -45px 80px #000,0 0 100px #51d6e819;animation:float 7s ease-in-out infinite}.virus-orb span{position:absolute;inset:0;display:grid;place-items:center;font-size:7rem;color:#c8f258;opacity:.78}.virus-orb i{position:absolute;left:48%;top:48%;width:18px;height:95px;background:#29464c;border-radius:20px;transform-origin:50% 5px}.virus-orb i:after{content:"";position:absolute;bottom:-3px;left:-9px;width:36px;height:26px;border-radius:50%;background:#55747a}.virus-orb i:nth-child(1){transform:rotate(0deg) translateY(-215px)}.virus-orb i:nth-child(2){transform:rotate(45deg) translateY(-215px)}.virus-orb i:nth-child(3){transform:rotate(90deg) translateY(-215px)}.virus-orb i:nth-child(4){transform:rotate(135deg) translateY(-215px)}.virus-orb i:nth-child(5){transform:rotate(180deg) translateY(-215px)}.virus-orb i:nth-child(6){transform:rotate(225deg) translateY(-215px)}.virus-orb i:nth-child(7){transform:rotate(270deg) translateY(-215px)}.virus-orb i:nth-child(8){transform:rotate(315deg) translateY(-215px)}@keyframes float{50%{transform:translateY(-52%) rotate(3deg)}}.hero-card{position:relative;z-index:2;width:min(660px,58vw);margin-left:7vw}.classification{display:inline-block;border:1px solid #7bc8d13f;padding:8px 12px;color:#91a6ab;font:700 .65rem Inter;letter-spacing:.18em}.hero-card h1{margin:16px 0 10px;font-family:Barlow Condensed}.hero-card h1 span{display:block;font-size:clamp(6rem,14vw,11rem);line-height:.72;letter-spacing:-.045em;text-shadow:0 0 60px #84e9ef1a}.hero-card h1 small{display:block;margin-top:20px;font-size:clamp(2rem,4vw,3.5rem);font-weight:500;color:#a8b4b6}.lead{max-width:550px;color:#b4c0c2;line-height:1.65}.microcopy{color:#63777c;font-size:.62rem;letter-spacing:.16em;margin-top:17px}.corner{position:absolute;color:#5a7075;font-size:.58rem;letter-spacing:.15em}.corner.tl{top:24px;left:24px}.corner.br{right:24px;bottom:24px}.briefing-screen{align-items:center;justify-content:center;background:radial-gradient(circle at 50% 40%,#132329,#05080a 50%)}.mission-card{position:relative;width:min(900px,100%);padding:clamp(30px,6vw,68px)}.mission-card h2,.facility-title h2,.console-copy h2,.end-card h2{font:800 clamp(2.4rem,5vw,4.9rem)/.94 Barlow Condensed;margin:10px 0 20px}.mission-card p{color:#b2c0c2;line-height:1.75;max-width:760px}.mission-stamp{position:absolute;right:7%;top:9%;border:2px solid #ff515199;color:#ff5151;padding:8px 12px;transform:rotate(7deg);font:800 .8rem Inter;letter-spacing:.18em}.mission-objectives{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:26px 0;background:#ffffff18}.mission-objectives span{background:#0a1215;padding:14px;color:#9eb0b3;font-size:.76rem}.briefing-actions{display:flex;gap:10px;margin-top:28px}.hud{position:absolute;z-index:20;left:0;right:0;top:0;height:62px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;background:#030608e8;border-bottom:1px solid var(--line)}.hud-btn{border:0;background:transparent;color:#9db0b4;cursor:pointer}.hud-center{font-size:.69rem;letter-spacing:.15em;color:#95abb0}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--acid);box-shadow:0 0 12px var(--acid);margin-right:8px}.timer{font:800 1.4rem Barlow Condensed;letter-spacing:.08em}.timer.critical{color:var(--red);text-shadow:0 0 16px #f004;animation:timerBlink .8s infinite}@keyframes timerBlink{50%{opacity:.58}}.location-screen{display:none;flex-direction:column;background:#030607}.location-screen.active{display:flex}.facility{position:relative;flex:1;min-height:680px;margin:-20px -22px 0;overflow:hidden;background:#061215}.stadium-photo{position:absolute;inset:0;perspective:900px;background:linear-gradient(#0c1d22 0 27%,#17272b 27% 39%,#203d35 39% 41%,#173c2d 41% 100%)}.roof{position:absolute;left:-5%;right:-5%;top:0;height:22%;background:repeating-linear-gradient(100deg,#0c1416 0 14px,#172125 15px 28px);clip-path:polygon(0 0,100% 0,92% 82%,8% 82%)}.lights{position:absolute;top:16%;left:12%;right:12%;display:flex;justify-content:space-between}.lights i{width:7%;height:8px;background:#e9ffff;box-shadow:0 0 35px #d9ffff}.stands{position:absolute;left:0;right:0;background:repeating-linear-gradient(0deg,#1c2b2f 0 7px,#25373c 8px 14px)}.stands.back{top:23%;height:25%;transform:skewY(-1deg)}.stands.front{bottom:-3%;height:18%;background:repeating-linear-gradient(0deg,#101a1d 0 7px,#1b292c 8px 14px);z-index:5}.pitch{position:absolute;left:15%;right:15%;top:42%;bottom:9%;background:repeating-linear-gradient(90deg,#1a684b 0 9%,#1c7352 9% 18%);transform:rotateX(59deg);transform-origin:top;border:3px solid #e9f6eaa8;box-shadow:0 30px 100px #000}.pitch .half{position:absolute;top:0;bottom:0;left:50%;border-left:2px solid #e9f6eaaa}.pitch .circle{position:absolute;left:50%;top:50%;width:22%;aspect-ratio:1;border:2px solid #e9f6eaaa;border-radius:50%;transform:translate(-50%,-50%)}.pitch .box{position:absolute;top:24%;width:15%;height:52%;border:2px solid #e9f6eaaa}.pitch .box.left{left:0}.pitch .box.right{right:0}.pitch .goal{position:absolute;top:35%;width:5%;height:30%;border:3px solid #fff}.pitch .goal.left{left:-5%}.pitch .goal.right{right:-5%}.camera-overlay{position:absolute;inset:0;background:linear-gradient(90deg,#0007,transparent 26%,transparent 74%,#0007),radial-gradient(circle,transparent 55%,#000b 100%);pointer-events:none}.camera-overlay:after{content:"REC  ●";position:absolute;top:28px;right:30px;color:#ff5555;font:700 .72rem Inter;letter-spacing:.15em}.facility-title{position:absolute;z-index:8;left:6%;top:8%;text-shadow:0 3px 18px #000}.facility-title h2{font-size:clamp(2.2rem,4vw,4rem);max-width:600px;margin-bottom:6px}.facility-title p:last-child{font-size:.72rem;color:#aec0c2}.hotspot{position:absolute;z-index:10;min-width:164px;padding:11px 12px 11px 42px;text-align:left;border:1px solid #ffffff28;background:#061013d9;color:white;cursor:pointer;backdrop-filter:blur(5px);box-shadow:0 10px 25px #0007}.hotspot:hover{border-color:var(--acid);transform:translateY(-2px)}.hotspot b,.hotspot small{display:block}.hotspot b{font:800 .9rem Barlow Condensed;letter-spacing:.09em}.hotspot small{color:#9eb0b4;font-size:.68rem;margin-top:2px}.pulse{position:absolute;left:14px;top:16px;width:10px;height:10px;background:var(--acid);border-radius:50%;box-shadow:0 0 0 7px #d1ef5020}.pulse:after{content:"";position:absolute;inset:-8px;border:1px solid var(--acid);border-radius:50%;animation:pulse 1.7s infinite}.hotspot-chem{left:9%;bottom:19%}.hotspot-phys{right:11%;bottom:17%}.hotspot-proj{right:8%;top:31%}.hotspot-final{left:45%;top:49%;border-color:#ff515144}.hotspot-final .pulse{background:var(--red)}.hotspot.locked{opacity:.45;filter:grayscale(1);cursor:not-allowed}.hidden-object{position:absolute;z-index:9;width:34px;height:34px;border:0;background:transparent;color:#dce9e9;cursor:pointer;opacity:.26;transition:.2s}.hidden-object:hover{opacity:1;transform:scale(1.35)}.hidden-object.found{opacity:1;color:var(--acid);filter:drop-shadow(0 0 8px var(--acid));pointer-events:none}.electric-icon{display:grid;place-items:center;width:31px;height:31px;border:2px solid currentColor;border-radius:50%;font:800 12px Barlow Condensed}.battery-mini{border-radius:2px}.switch-mini,.diode-mini{border:0;font-size:20px}.obj-battery{left:26%;top:34%}.obj-lamp{left:71%;top:42%}.obj-switch{left:37%;bottom:26%}.obj-motor{right:20%;bottom:29%}.obj-diode{left:54%;top:31%}.mission-progress{position:absolute;z-index:15;left:50%;bottom:15px;transform:translateX(-50%);width:min(640px,calc(100% - 30px));padding:13px 17px;display:grid;grid-template-columns:auto 1fr auto;gap:17px;align-items:center}.mission-progress strong{display:block;font:800 1.1rem Barlow Condensed}.mission-progress span{color:#7f9397;font-size:.64rem}.progressbar{height:5px;background:#ffffff14}.progressbar i{display:block;width:0;height:100%;background:var(--acid);transition:.3s}.clues{display:flex;gap:6px}.clues span{display:grid;place-items:center;width:34px;height:34px;background:#020506;border:1px solid #ffffff1c;color:white;font:800 1rem Inter}.puzzle-screen{background:radial-gradient(circle at 20% 40%,#142227,#060b0d 45%,#030607)}.split-layout{width:min(1220px,100%);margin:auto;display:grid;grid-template-columns:.95fr 1.05fr;gap:18px}.evidence,.quiz{position:relative;min-height:600px;padding:clamp(24px,4vw,46px);overflow:hidden}.evidence h2{font:800 3rem/1 Barlow Condensed;margin:10px 0 16px}.evidence p{color:#9eb0b4;line-height:1.6}.warning-stripe{height:14px;margin:-46px -46px 38px;background:repeating-linear-gradient(135deg,#e9cd2c 0 14px,#171717 14px 28px)}.molecule-model{position:relative;height:270px;margin:15px 0}.atom{position:absolute;display:grid;place-items:center;width:57px;height:57px;border-radius:50%;font:800 1rem Inter;box-shadow:inset -9px -12px 18px #0008,0 8px 20px #0007}.atom.c{background:#555e62}.atom.n{background:#973c3c}.a1{left:42%;top:3%}.a2{left:62%;top:20%}.a3{left:63%;top:53%}.a4{left:43%;top:71%}.a5{left:20%;top:55%}.a6{left:18%;top:22%}.a7{left:41%;top:37%}.n1{left:78%;top:5%}.n2{left:73%;top:76%}.n3{left:3%;top:6%}.reaction{margin:18px 0;padding:16px;background:#020607;border:1px solid #ffffff12;color:#dbe7e8;font:700 1.05rem Barlow Condensed;letter-spacing:.06em}.hint{font-size:.76rem}.step-label{font:800 .72rem Inter;letter-spacing:.19em;color:#6f858a}.question{margin-top:60px}.question h3{font:800 clamp(2rem,4vw,3.6rem)/1.04 Barlow Condensed;margin:0 0 28px}.answers{display:grid;gap:10px}.answers button{padding:16px 18px;text-align:left;border:1px solid #ffffff17;background:#071013;color:#dfe8e9;cursor:pointer}.answers button:hover{border-color:#b9dde2;background:#0a171a}.answers button.correct{border-color:var(--acid);background:#18230d}.answers button.wrong{border-color:var(--red);background:#280d0d}.quiz-feedback{min-height:26px;font:800 .75rem Inter;letter-spacing:.08em}.hidden{display:none!important}.result{text-align:center;padding-top:55px}.result-icon,.huge-check{margin:auto;display:grid;place-items:center;width:70px;height:70px;border:1px solid var(--acid);border-radius:50%;color:var(--acid);font-size:2.2rem}.result h3{font:800 2.5rem Barlow Condensed;margin:10px}.digit{font:800 7rem/1 Barlow Condensed;color:var(--acid);text-shadow:0 0 40px #d1ef5033}.electrical-screen{background:radial-gradient(circle at 25% 45%,#192026,#05080b 50%)}.dark-room{background:linear-gradient(140deg,#0a1216,#040607)}.circuit-board{position:relative;height:360px;margin-top:30px;border:1px solid #2b3b40;background:radial-gradient(circle at 50% 50%,#102027,#060b0e);box-shadow:inset 0 0 80px #000}.wire{position:absolute;background:#d9e7e8}.w1{left:16%;right:16%;top:18%;height:3px}.w2{left:16%;top:18%;bottom:19%;width:3px}.w3{right:16%;top:18%;bottom:19%;width:3px}.w4{left:16%;right:16%;bottom:19%;height:3px}.battery-symbol{position:absolute;left:10%;top:41%;width:66px;height:80px}.battery-symbol i{position:absolute;left:28px;background:#d9e7e8;width:3px}.battery-symbol i:first-child{height:60px;top:8px}.battery-symbol i:nth-child(2){height:34px;left:38px;top:21px}.battery-symbol span,.battery-symbol em{position:absolute;left:10px;font-style:normal}.battery-symbol span{top:7px}.battery-symbol em{bottom:5px}.lamp-symbol{position:absolute;right:8%;top:34%;width:74px;height:74px;border:4px solid #d9e7e8;border-radius:50%}.lamp-symbol:before,.lamp-symbol:after{content:"";position:absolute;left:34px;top:5px;width:4px;height:58px;background:#d9e7e8}.lamp-symbol:before{transform:rotate(45deg)}.lamp-symbol:after{transform:rotate(-45deg)}.switch-symbol{position:absolute;left:41%;bottom:12%;width:110px;height:50px}.switch-symbol:before,.switch-symbol:after{content:"";position:absolute;bottom:7px;width:12px;height:12px;border:3px solid #d9e7e8;border-radius:50%}.switch-symbol:before{left:0}.switch-symbol:after{right:0}.switch-symbol i{position:absolute;width:80px;height:3px;background:#d9e7e8;left:11px;bottom:18px;transform:rotate(-18deg);transform-origin:left}.circuit-label{position:absolute;color:#71888e;font:.6rem Inter;letter-spacing:.12em}.l1{left:8%;bottom:17%}.l2{right:6%;bottom:17%}.l3{left:39%;bottom:2%}.projector-room{background:radial-gradient(circle at 14% 55%,#192025,#030506 38%)}.projector-layout{position:relative;width:min(1240px,100%);min-height:680px;margin:auto;display:grid;grid-template-columns:1.15fr .85fr;gap:18px;align-items:center}.projector-machine{position:absolute;z-index:6;left:-4%;bottom:9%;width:165px;height:96px;border:1px solid #3e4d50;background:#10191c;box-shadow:0 18px 50px #000}.lens{position:absolute;right:-25px;top:22px;width:57px;height:57px;border:9px solid #26363a;border-radius:50%;background:radial-gradient(circle,#a9e0d8,#17333d 35%,#020607 68%);box-shadow:0 0 0 3px #111}.fan{position:absolute;left:15px;top:20px;width:50px;height:50px;border:1px solid #405054;border-radius:50%;background:repeating-conic-gradient(#28373a 0 9deg,#10191c 10deg 23deg)}.power-button{position:absolute;right:30px;bottom:8px;border:1px solid #53666a;background:#111;color:#ff5252;border-radius:50%;width:25px;height:25px;cursor:pointer}.projector-machine.on .power-button{color:var(--acid);box-shadow:0 0 15px #d1ef50}.projector-beam{position:absolute;z-index:1;left:4%;top:30%;width:58%;height:48%;background:linear-gradient(90deg,#f3ffe60a,#f3ffe622);clip-path:polygon(0 47%,100% 0,100% 100%,0 57%);filter:blur(3px);opacity:0;transition:1s}.projector-beam.on{opacity:1}.projection{position:relative;z-index:2;padding:18px;background:#070a0b;box-shadow:0 30px 90px #000}.screen-frame{position:relative;min-height:450px;padding:45px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#101415;color:#d7dfdd;border:14px solid #191f21;box-shadow:inset 0 0 70px #000}.screen-frame.on{background:radial-gradient(circle at center,#f2efdc,#b7b7aa);color:#101516}.projector-off p{font:800 4rem Barlow Condensed;letter-spacing:.05em;color:#3f4c4e}.projector-off small{color:#68787b;letter-spacing:.16em}.formula{font:800 clamp(4rem,9vw,7rem)/1 Barlow Condensed;margin:24px 0}.formula span{color:#33595c}.video-bars{display:flex;gap:7px;height:45px;align-items:end}.video-bars i{display:block;width:12px;background:#3f585a;animation:eq .9s ease-in-out infinite alternate}.video-bars i:nth-child(1){height:16px}.video-bars i:nth-child(2){height:38px;animation-delay:.1s}.video-bars i:nth-child(3){height:25px;animation-delay:.25s}.video-bars i:nth-child(4){height:42px;animation-delay:.05s}.video-bars i:nth-child(5){height:20px;animation-delay:.3s}@keyframes eq{to{height:8px}}.compact{position:relative;z-index:3;min-height:520px}.locked-quiz .question,.locked-quiz .step-label{filter:blur(5px);opacity:.3;pointer-events:none}.quiz-lock{display:none;position:absolute;z-index:10;inset:0;place-items:center;background:#05090bbb;color:#9eafb2;font:800 1rem Inter;letter-spacing:.18em}.locked-quiz .quiz-lock{display:grid}.final-screen{background:radial-gradient(circle at 30% 40%,#640d0d33,#030506 45%)}.danger-text{color:var(--red)!important}.bomb-console{width:min(1050px,100%);margin:auto;display:grid;grid-template-columns:.9fr 1.1fr;overflow:hidden}.bomb-visual{position:relative;min-height:560px;display:grid;place-items:center;background:radial-gradient(circle at center,#ff2e2e10,transparent 45%),#070b0d;border-right:1px solid var(--line)}.bomb-led{position:absolute;left:25px;top:25px;width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 20px var(--red);animation:timerBlink .65s infinite}.dynamite{display:flex;gap:8px;transform:rotate(-3deg)}.dynamite i{display:block;width:49px;height:220px;border-radius:9px;background:linear-gradient(90deg,#630808,#d72525 45%,#740808);box-shadow:0 10px 35px #000}.wires{position:absolute;top:18%;left:45%;width:180px;height:120px}.wires span{position:absolute;width:160px;height:90px;border:4px solid transparent;border-top-color:#798a8e;border-radius:50%}.wires span:nth-child(2){transform:rotate(22deg);border-top-color:#b2bb27}.wires span:nth-child(3){transform:rotate(-24deg);border-top-color:#a82b38}.detonator{position:absolute;right:11%;bottom:17%;width:160px;height:96px;padding:12px;background:#10191c;border:1px solid #39484c;box-shadow:0 15px 35px #000}.detonator b{display:grid;place-items:center;height:100%;background:#1a0909;color:#ff4d4d;font:800 1.5rem Barlow Condensed;letter-spacing:.09em}.console-copy{padding:clamp(28px,5vw,58px);display:flex;flex-direction:column;justify-content:center}.console-copy p{color:#9daaad;line-height:1.65}.code-rack{margin:16px 0 24px}.code-rack span{width:48px;height:48px;font-size:1.4rem}.console-copy label{font-size:.65rem;letter-spacing:.16em;color:#768a8e}#codeInput{width:100%;max-width:330px;padding:18px 16px;margin:8px 0 14px;background:#040708;border:1px solid #3b494d;color:#fff;font:800 2rem Inter;text-align:center;letter-spacing:.5em;outline:none}#codeInput:focus{border-color:var(--red);box-shadow:0 0 0 3px #ff4d4d16}.code-feedback{min-height:24px;font-weight:800}.win-screen,.fail-screen{align-items:center;justify-content:center}.win-screen{background:radial-gradient(circle at center,#d1ef501e,#050909 40%)}.fail-screen{background:radial-gradient(circle at center,#ff000024,#090404 40%)}.end-card{text-align:center;width:min(660px,100%);padding:65px 35px}.fail-x{border-color:var(--red);color:var(--red)}.alarm-vignette{position:fixed;z-index:190;inset:0;pointer-events:none;box-shadow:inset 0 0 0 0 #ff000000;transition:.3s}.alarm-vignette.active{animation:alarmFlash .9s infinite}@keyframes alarmFlash{50%{box-shadow:inset 0 0 130px 20px #ff00004d}}@keyframes pulse{0%{transform:scale(.5);opacity:1}100%{transform:scale(1.9);opacity:0}}
@media(max-width:900px){.hero-card{width:82vw;margin-left:2vw}.virus-orb{opacity:.28;right:-8%;width:420px}.mission-objectives{grid-template-columns:1fr}.split-layout,.projector-layout,.bomb-console{grid-template-columns:1fr}.evidence,.quiz{min-height:auto}.bomb-visual{min-height:360px;border-right:0;border-bottom:1px solid var(--line)}.projector-layout{padding-top:20px}.projector-machine{display:none}.projector-beam{left:-10%;width:90%}.facility{min-height:74vh}.hotspot{min-width:145px}.hotspot-final{left:37%;top:50%}.mission-progress{bottom:8px}}
@media(max-width:640px){.screen{padding:74px 12px 12px}.utility-btn{top:11px}.fullscreen-btn{right:11px}.sound-btn{right:60px}.hud-center{display:none}.hero-card h1 span{font-size:5.8rem}.hero-card h1 small{font-size:2rem}.virus-orb{right:-36%;width:350px}.mission-stamp{position:static;display:inline-block;margin-bottom:20px}.briefing-actions{flex-direction:column}.facility{margin:-12px -12px 0}.facility-title{left:5%;right:5%;top:7%}.facility-title h2{font-size:2.7rem}.hotspot{padding:10px 9px 10px 33px;min-width:128px}.hotspot b{font-size:.82rem}.hotspot small{font-size:.61rem}.hotspot-chem{left:3%;bottom:17%}.hotspot-phys{right:3%;bottom:14%}.hotspot-proj{right:3%;top:34%}.hotspot-final{left:31%;top:54%}.pulse{left:10px;top:15px}.hidden-object{opacity:.45}.mission-progress{grid-template-columns:auto 1fr}.clues{grid-column:1/3;justify-content:center}.warning-stripe{margin:-24px -24px 28px}.screen-frame{min-height:330px;padding:20px}.bomb-visual{min-height:320px}.dynamite i{width:38px;height:165px}.detonator{right:6%;bottom:10%;width:120px;height:75px}.console-copy{padding:28px 20px}}


/* ===== V5 : Livre virtuel de chimie ===== */
.chemistry-layout{align-items:stretch}
.book-evidence{max-width:760px}
.virtual-book{
  position:relative;
  margin-top:1rem;
  min-height:560px;
  padding:0;
  color:#262015;
  perspective:1200px;
}
.book-page{
  display:none;
  position:relative;
  min-height:500px;
  padding:2.1rem 2.3rem 4.5rem;
  border-radius:5px 16px 16px 5px;
  background:
    linear-gradient(90deg,rgba(75,52,25,.13),transparent 8%,transparent 94%,rgba(75,52,25,.12)),
    repeating-linear-gradient(0deg,rgba(100,70,30,.025) 0 1px,transparent 1px 4px),
    #f4e9c8;
  box-shadow:inset 18px 0 25px rgba(78,51,22,.13),0 20px 40px rgba(0,0,0,.35);
  border:1px solid rgba(89,62,31,.35);
  transform-origin:left center;
  animation:bookTurn .38s ease both;
  overflow:hidden;
}
.book-page.active{display:block}
.book-page h3{font-family:Georgia,serif;font-size:1.55rem;margin:.35rem 0 1rem;color:#392918}
.book-page p{font-family:Georgia,serif;font-size:1rem;line-height:1.55;margin:.72rem 0;color:#352b20}
.book-page strong{color:#8b2c21;font-size:1.08em}
.book-page-number{font-family:inherit!important;font-size:.72rem!important;letter-spacing:.14em;color:#806d50!important}
.paper-corner{position:absolute;right:0;bottom:0;width:45px;height:45px;background:linear-gradient(135deg,#d7c69f 50%,rgba(0,0,0,.16) 51%,#eee0ba 55%);clip-path:polygon(100% 0,100% 100%,0 100%)}
.book-reaction{margin:1.25rem 0!important;padding:1rem!important;font-size:1.2rem!important;color:#231b12!important;background:rgba(255,255,255,.46)!important;border:1px solid rgba(80,54,28,.25)!important}
.book-nav{position:absolute;left:1rem;right:1rem;bottom:1rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem}
.book-nav button{border:1px solid rgba(81,58,30,.4);background:#e3d2aa;color:#3a2b19;padding:.55rem .8rem;border-radius:6px;cursor:pointer;font-weight:700}
.book-nav button:disabled{opacity:.35;cursor:default}
#bookDots{display:flex;gap:.4rem}
#bookDots i{display:block;width:8px;height:8px;border-radius:50%;background:#9e8c68}
#bookDots i.active{background:#4b3920;transform:scale(1.25)}
@keyframes bookTurn{from{opacity:.15;transform:rotateY(-7deg) translateX(10px)}to{opacity:1;transform:none}}

.chem-operation{
  margin:0 0 1.4rem;
  padding:1rem;
  border:1px solid rgba(255,190,0,.35);
  border-radius:10px;
  background:rgba(255,176,0,.07);
  text-align:center;
}
.operation-label{display:block;font-size:.7rem;letter-spacing:.16em;color:#ffcb4d;margin-bottom:.55rem}
.operation-expression{display:flex;align-items:center;justify-content:center;gap:.65rem;font-size:2rem}
.operation-expression b{display:grid;place-items:center;width:48px;height:48px;border:1px solid rgba(255,203,77,.5);background:rgba(0,0,0,.28);border-radius:7px;color:#fff}
.operation-expression em{font-style:normal;color:#ffcb4d;font-weight:800}
.chem-operation small{display:block;margin-top:.55rem;opacity:.7}
#chimieSuccess h3{font-size:2.1rem;letter-spacing:.12em;color:#ffcb4d}

@media(max-width:900px){
  .virtual-book{min-height:0}
  .book-page{min-height:610px;padding:1.5rem 1.35rem 4.5rem}
  .book-page p{font-size:.94rem}
}

/* V6 maintenance */
.maintenance-wrap{max-width:1180px;margin:2.5rem auto;padding:2rem}.maint-step{display:none}.maint-step.active{display:block}
.maint-head{display:flex;align-items:center;gap:1rem;margin-bottom:.7rem}.maint-head>span{display:grid;place-items:center;width:48px;height:48px;border:1px solid rgba(255,203,77,.55);border-radius:50%;color:#ffcb4d;font-weight:800}
.symbol-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem;margin:1.5rem 0}.symbol-card{padding:1rem;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(0,0,0,.22);text-align:center}
.elec-symbol{height:95px;display:grid;place-items:center;position:relative;font-size:2rem}.lamp-symbol2:before{content:"";width:44px;height:44px;border:3px solid #fff;border-radius:50%}.lamp-symbol2:after{content:"×";position:absolute;font-size:40px}
.battery-symbol2{display:flex;justify-content:center;align-items:center;gap:10px}.battery-symbol2 i:first-child{height:60px;border-left:4px solid #fff}.battery-symbol2 i:last-child{height:34px;border-left:4px solid #fff}
.switch-symbol2:before,.switch-symbol2:after{content:"";position:absolute;width:8px;height:8px;border:2px solid #fff;border-radius:50%;top:47px}.switch-symbol2:before{left:24px}.switch-symbol2:after{right:24px}.switch-symbol2 i{width:55px;border-top:4px solid #fff;transform:rotate(-18deg)}
.motor-symbol2{width:54px;height:54px;border:3px solid #fff;border-radius:50%;margin:auto}.led-symbol2{font-size:2rem}.led-symbol2 span{position:absolute;font-size:1rem;right:18px}.led-symbol2 span:first-of-type{top:22px}.led-symbol2 span:last-of-type{top:42px;right:10px}
.drop-label{min-height:42px;padding:.65rem;border:1px dashed rgba(255,255,255,.35);border-radius:8px;color:rgba(255,255,255,.65)}.drop-label.correct,.circuit-slot.correct{border-style:solid;background:rgba(54,180,95,.18);color:#d9ffe5}.drop-label.wrong,.circuit-slot.wrong,.maintenance-choice .wrong{animation:maintShake .28s ease;background:rgba(180,45,45,.22)}
.drag-bank,.component-bank{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin:1rem 0 1.5rem}.drag-bank button,.component-bank button{padding:.7rem 1rem;border-radius:8px;border:1px solid rgba(255,203,77,.45);background:rgba(255,203,77,.08);color:#fff;cursor:grab}.drag-bank button:disabled,.component-bank button:disabled{opacity:.3}
.circuit-builder{position:relative;width:min(620px,92%);height:330px;margin:2rem auto}.cb-wire{position:absolute;background:#9ca7ae}.cb-top,.cb-bottom{height:4px;left:80px;right:80px}.cb-top{top:60px}.cb-bottom{bottom:60px}.cb-left,.cb-right{width:4px;top:60px;bottom:60px}.cb-left{left:80px}.cb-right{right:80px}
.circuit-slot{position:absolute;z-index:2;display:grid;place-items:center;min-width:150px;min-height:62px;padding:.6rem;border:1px dashed rgba(255,255,255,.42);border-radius:9px;background:#172026}.slot-top{top:28px;left:50%;transform:translateX(-50%)}.slot-right{right:15px;top:50%;transform:translateY(-50%)}.slot-bottom{bottom:28px;left:50%;transform:translateX(-50%)}
.circuit-builder.powered .cb-wire{box-shadow:0 0 14px rgba(255,220,80,.9);background:#e6cf65}.big-digit{font-size:6rem;font-weight:900;color:#ffcb4d;line-height:1;margin:1rem 0}.maint-step[data-maint-step="done"]{text-align:center}
@keyframes maintShake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}@media(max-width:850px){.symbol-grid{grid-template-columns:repeat(2,1fr)}.symbol-grid .symbol-card:last-child{grid-column:1/-1}}

/* ===== V7 : symboles précis et circuit libre ===== */
.precise-symbols .schematic-symbol,
.palette-symbol svg,
.placed-component svg{
  width:100%;height:100%;overflow:visible;
}
.precise-symbols .schematic-symbol line,
.precise-symbols .schematic-symbol circle,
.precise-symbols .schematic-symbol polygon,
.precise-symbols .schematic-symbol polyline,
.palette-symbol svg line,.palette-symbol svg circle,.palette-symbol svg polygon,.palette-symbol svg polyline,
.placed-component svg line,.placed-component svg circle,.placed-component svg polygon,.placed-component svg polyline{
  stroke:currentColor;stroke-width:3.2;fill:none;stroke-linecap:round;stroke-linejoin:round;
}
.precise-symbols .schematic-symbol polygon,
.palette-symbol svg polygon,
.placed-component svg polygon{fill:currentColor;stroke:currentColor}
.precise-symbols .schematic-symbol text,
.palette-symbol svg text,
.placed-component svg text{fill:currentColor;font:bold 26px system-ui}
.precise-symbols .schematic-symbol{height:88px;color:#fff}

.circuit-palette{display:flex;gap:.8rem;flex-wrap:wrap;justify-content:center;margin:1.2rem 0}
.palette-symbol{width:145px;height:82px;padding:.35rem;background:#101820;color:#fff;border:1px solid rgba(255,255,255,.22);border-radius:10px;cursor:pointer}
.palette-symbol:hover{border-color:#ffcb4d;color:#ffdf79}

.free-circuit-board{
  position:relative;
  height:520px;
  margin:1.3rem auto;
  border:1px solid rgba(255,255,255,.18);
  border-radius:14px;
  background:
    radial-gradient(circle at 1px 1px,rgba(255,255,255,.12) 1px,transparent 1.5px) 0 0/24px 24px,
    linear-gradient(180deg,#111920,#0b1116);
  overflow:hidden;
  touch-action:none;
}
.wire-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
.user-wire{fill:none;stroke:#e9edf0;stroke-width:4;stroke-linecap:round;filter:drop-shadow(0 0 2px rgba(255,255,255,.3))}
.circuit-live .user-wire{stroke:#ffe66d;filter:drop-shadow(0 0 5px rgba(255,230,109,.9))}
.placed-component{
  position:absolute;width:150px;height:90px;z-index:2;color:#fff;
  background:rgba(12,18,23,.94);border:1px solid rgba(255,255,255,.24);
  border-radius:10px;cursor:move;user-select:none;
}
.placed-component svg{position:absolute;inset:8px 10px;width:130px;height:74px}
.terminal{
  position:absolute;top:50%;width:18px;height:18px;margin-top:-9px;border-radius:50%;
  border:3px solid #fff;background:#0c1217;z-index:4;cursor:crosshair;padding:0;
}
.left-terminal{left:-10px}.right-terminal{right:-10px}
.terminal.selected{background:#ffcb4d;box-shadow:0 0 0 5px rgba(255,203,77,.2)}
.board-help{position:absolute;left:1rem;top:.7rem;z-index:0;font-size:.8rem;opacity:.6}
.circuit-actions{display:flex;flex-wrap:wrap;gap:.7rem;justify-content:center}
.lamp-status{display:flex;align-items:center;justify-content:center;gap:.8rem;margin:1rem 0;padding:.75rem;border-radius:10px;background:rgba(0,0,0,.2)}
.lamp-bulb{font-size:2rem;filter:grayscale(1);opacity:.5}
.lamp-status.on{background:rgba(255,218,70,.12);box-shadow:inset 0 0 28px rgba(255,218,70,.08)}
.lamp-status.on .lamp-bulb{filter:none;opacity:1;text-shadow:0 0 14px #ffe05e,0 0 28px #ffe05e}
.lamp-status.on strong{color:#ffe979}
@media(max-width:800px){
  .free-circuit-board{height:580px}
  .palette-symbol{width:118px;height:72px}
}

/* ===== V8 : câblage par tracé orthogonal ===== */
.user-wire{
  fill:none;
  stroke:#edf1f3;
  stroke-width:4;
  stroke-linecap:square;
  stroke-linejoin:round;
}
.wire-preview{
  stroke-dasharray:9 7;
  opacity:.72;
}
.terminal{
  cursor:crosshair;
  touch-action:none;
}
.terminal::after{
  content:"";
  position:absolute;
  inset:-9px;
  border-radius:50%;
}
.terminal.selected{
  background:#ffcb4d;
  box-shadow:0 0 0 7px rgba(255,203,77,.18);
}
.circuit-live .user-wire:not(.wire-preview){
  stroke:#ffe66d;
  filter:drop-shadow(0 0 4px rgba(255,230,109,.75));
}

/* ===== V9 : fils de schéma plus lisibles ===== */
.user-wire{
  stroke-linecap:butt;
  stroke-linejoin:miter;
  shape-rendering:geometricPrecision;
}
.wire-preview{opacity:.6}
.free-circuit-board::after{
  content:"Les fils évitent automatiquement les composants";
  position:absolute;
  right:12px;
  bottom:9px;
  font-size:.68rem;
  letter-spacing:.04em;
  opacity:.38;
  pointer-events:none;
}

/* ===== V10 : routage multi-virages ===== */
.user-wire{
  vector-effect:non-scaling-stroke;
}
.free-circuit-board{
  --routing-grid:20px;
}

/* ===== V11 : segments figés après chaque virage ===== */
.free-circuit-board.drawing-wire{
  cursor:crosshair;
}
.frozen-corner{
  fill:#ffcb4d;
  stroke:#101820;
  stroke-width:2;
  pointer-events:none;
}
.wire-preview{
  stroke-dasharray:none;
  opacity:.75;
}
.free-circuit-board.drawing-wire .wire-preview{
  stroke:#ffdf72;
}
.board-help{
  max-width:78%;
}

/* ===== V12 : tracé gestuel ===== */
.free-circuit-board{touch-action:none}
.terminal.selected{background:#ffcb4d;box-shadow:0 0 0 7px rgba(255,203,77,.18)}
.terminal.snap{background:#9cff9c;box-shadow:0 0 0 7px rgba(156,255,156,.18)}
.frozen-corner{fill:#ffcb4d;stroke:#101820;stroke-width:1.5;pointer-events:none}
.wire-preview{stroke:#ffdf72;stroke-dasharray:none;opacity:.85}

/* ===== V13 : vidéo projetée ===== */
.video-embed-wrap{
  position:absolute;
  inset:7% 8% 10%;
  z-index:3;
  background:#000;
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 0 35px rgba(220,235,255,.22);
}
.video-embed-wrap.hidden{display:none}
.video-embed-wrap iframe{
  width:100%;
  height:100%;
  border:0;
  display:block;
  background:#000;
}
.projection-screen{position:relative}
@media(max-width:800px){
  .video-embed-wrap{inset:9% 5% 12%}
}

/* ===== V14 : avertissement exécution locale ===== */
.local-file-warning{
  position:sticky;
  top:0;
  z-index:9999;
  padding:.8rem 1rem;
  background:#5a2a00;
  color:#fff4d6;
  border-bottom:1px solid #ffb24a;
  text-align:center;
  font:600 .9rem/1.35 system-ui,sans-serif;
}
.local-file-warning code{
  background:rgba(0,0,0,.25);
  padding:.12rem .35rem;
  border-radius:4px;
}
.local-file-warning.hidden{display:none}

/* ===== V15 : la vidéo remplace exactement "NO SIGNAL" ===== */
#projectionScreen{
  position:relative;
  overflow:hidden;
}
#projectionScreen .video-embed-wrap{
  position:absolute;
  inset:0;
  z-index:4;
  width:100%;
  height:100%;
  margin:0;
  padding:0;
  background:#000;
  border:0;
  box-shadow:none;
}
#projectionScreen .video-embed-wrap iframe{
  display:block;
  width:100%;
  height:100%;
  border:0;
}
#projectionScreen .projector-off{
  position:absolute;
  inset:0;
  z-index:2;
}
#projectionScreen .projector-off.hidden{
  display:none;
}

/* ===== V16 : 4e salle Bureau ===== */
.hotspot-office{left:46%;top:54%}
.density-card{margin:1.4rem 0;padding:1.1rem;border:1px solid rgba(89,62,31,.35);background:rgba(255,255,255,.42);text-align:center}
.density-card span,.density-card small{display:block}.density-card strong{display:block;margin:.45rem 0;font:700 1.55rem Georgia,serif;color:#6f211a}.book-note{font-style:italic}
.office-layout{display:grid;grid-template-columns:minmax(300px,.85fr) minmax(420px,1.15fr);gap:1.4rem;max-width:1180px;margin:2rem auto;padding:0 1rem}
.office-document,.office-puzzle{padding:1.5rem}.document-sheet{padding:2rem;min-height:330px;color:#27231c;background:#eee7d5;border:1px solid #c8bda3;box-shadow:0 16px 30px rgba(0,0,0,.22);transform:rotate(-.5deg)}
.document-stamp{display:inline-block;margin:0 0 1.5rem;padding:.35rem .65rem;border:3px solid #9f2d29;color:#9f2d29;font-weight:900;letter-spacing:.14em;transform:rotate(-4deg)}
.document-sheet h2{font-family:Georgia,serif;color:#2d2921}.mass-value{margin:1rem 0;font:900 3rem/1 system-ui,sans-serif;color:#8e2621}.document-small{font-size:.85rem;opacity:.72}
.office-help{margin-top:1.2rem;padding:1rem;border-left:3px solid #ffcb4d;background:rgba(255,203,77,.07)}.office-help small{display:block;margin-top:.8rem;opacity:.72;line-height:1.45}
.hint-link{display:block;width:100%;margin:.55rem 0;padding:.7rem .8rem;text-align:left;border:1px solid rgba(255,203,77,.35);background:rgba(0,0,0,.2);color:#fff;border-radius:8px;cursor:pointer}
.office-step{display:none}.office-step.active{display:block}.office-step label{display:block;margin:1.2rem 0 .45rem;font-weight:700}
.volume-entry{display:flex;align-items:center;max-width:260px;margin-bottom:1rem;border:1px solid rgba(255,255,255,.3);border-radius:9px;overflow:hidden;background:rgba(0,0,0,.24)}
.volume-entry input{min-width:0;flex:1;padding:.85rem;border:0;background:transparent;color:#fff;font-size:1.25rem;outline:none}.volume-entry span{padding:.85rem 1rem;color:#ffcb4d;font-weight:800}
.container-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin:1.5rem 0}.container-choices button{min-height:190px;padding:1rem;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(0,0,0,.24);color:#fff;cursor:pointer}
.container-choices button b,.container-choices button small{display:block}.container-choices button small{margin-top:.35rem;opacity:.65}
.container-icon{display:block;position:relative;margin:0 auto 1rem;height:86px}.jar-icon{width:58px;border:3px solid #cbd5db;border-radius:8px 8px 14px 14px}.jar-icon:before{content:"";position:absolute;left:-5px;right:-5px;top:-10px;height:10px;border:3px solid #cbd5db;border-radius:4px}
.shoebox-icon{width:120px;height:60px!important;margin-top:22px!important;border:3px solid #c7a374;transform:skewY(-4deg)}.shoebox-icon:before{content:"";position:absolute;left:-5px;right:-5px;top:-12px;height:13px;border:3px solid #c7a374;background:#172026}
.barrel-icon{width:64px;border:3px solid #aab7bf;border-radius:18px}.barrel-icon:before,.barrel-icon:after{content:"";position:absolute;left:-3px;right:-3px;border-top:4px solid #aab7bf}.barrel-icon:before{top:18px}.barrel-icon:after{bottom:18px}
.office-step[data-office-step="done"]{text-align:center}
@media(max-width:900px){.office-layout{grid-template-columns:1fr}.container-choices{grid-template-columns:1fr}}

/* ===== V17 : aide conversion Bureau ===== */
.conversion-help{
  margin:1rem 0 1.2rem;
  border:1px solid rgba(255,203,77,.32);
  border-radius:10px;
  background:rgba(255,203,77,.06);
}
.conversion-help summary{
  padding:.8rem 1rem;
  cursor:pointer;
  color:#ffdc76;
  font-weight:800;
  user-select:none;
}
.conversion-box{
  padding:0 1rem 1rem;
  border-top:1px solid rgba(255,203,77,.18);
}
.conversion-box p{
  margin:.55rem 0;
}

/* ===== V18 : répartition des accès sur le stade ===== */
.hotspot-locker{left:8%;top:64%}
.hotspot-chem{left:25%;top:32%}
.hotspot-phys{left:43%;top:68%}
.hotspot-proj{left:62%;top:30%}
.hotspot-office{left:74%;top:62%}
.hotspot-final{left:86%;top:39%}

.room-locked:not(.access-granted){
  filter:grayscale(.7) brightness(.7);
}
.room-locked:not(.access-granted)::after{
  content:"🔒";
  position:absolute;
  right:-8px;
  top:-9px;
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#17191c;
  border:1px solid rgba(255,255,255,.3);
  font-size:.8rem;
}
.room-locked.access-granted::after{display:none}

.access-notice{
  position:fixed;
  left:50%;
  top:82px;
  z-index:10000;
  transform:translate(-50%,-18px);
  padding:.75rem 1rem;
  border:1px solid rgba(255,90,90,.55);
  border-radius:9px;
  background:rgba(64,12,12,.96);
  color:#ffdada;
  opacity:0;
  pointer-events:none;
  transition:.18s ease;
}
.access-notice.show{opacity:1;transform:translate(-50%,0)}

/* ===== V18 : Vestiaire ===== */
.locker-room{
  max-width:1100px;
  margin:2rem auto;
  padding:2rem;
}
.locker-copy{max-width:760px;margin-bottom:1.5rem}
.locker-hint{
  padding:.85rem 1rem;
  border-left:3px solid #ffcb4d;
  background:rgba(255,203,77,.07);
}
.lockers-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(120px,1fr));
  gap:1rem;
}
.locker{
  position:relative;
  min-height:190px;
  overflow:hidden;
  border:2px solid #59636a;
  border-radius:8px;
  background:
    repeating-linear-gradient(180deg,transparent 0 18px,rgba(255,255,255,.06) 18px 20px),
    linear-gradient(#28333a,#192229);
  color:#dce6eb;
  cursor:pointer;
  box-shadow:inset 0 0 0 3px rgba(0,0,0,.25);
}
.locker span{
  position:absolute;
  left:12px;
  top:12px;
  font-weight:900;
  letter-spacing:.08em;
}
.locker i{
  position:absolute;
  right:14px;
  top:50%;
  width:7px;
  height:34px;
  margin-top:-17px;
  border-radius:4px;
  background:#aeb8bd;
}
.locker::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(255,255,255,.05),transparent 28%);
  transform-origin:left center;
  transition:.35s ease;
}
.locker.open::after{transform:perspective(500px) rotateY(-70deg)}
.locker.correct{border-color:#74d68d;box-shadow:0 0 24px rgba(90,210,120,.18)}
.locker.wrong{border-color:#b94747}
.pass-panel{
  margin-top:1.5rem;
  padding:1.3rem;
  text-align:center;
  border:1px solid rgba(112,224,139,.35);
  background:rgba(65,175,90,.08);
}
.access-pass{
  width:min(320px,90%);
  margin:0 auto 1rem;
  padding:1rem 1.2rem;
  border-radius:12px;
  background:linear-gradient(135deg,#e8edf0,#aebbc3);
  color:#172027;
  box-shadow:0 10px 24px rgba(0,0,0,.25);
}
.access-pass span,.access-pass small{display:block}
.access-pass strong{display:block;margin:.35rem 0;font-size:1.35rem;letter-spacing:.1em}

@media(max-width:900px){
  .hotspot-locker{left:8%;top:72%}
  .hotspot-chem{left:25%;top:28%}
  .hotspot-phys{left:42%;top:66%}
  .hotspot-proj{left:58%;top:28%}
  .hotspot-office{left:72%;top:65%}
  .hotspot-final{left:82%;top:42%}
}
@media(max-width:650px){
  .lockers-grid{grid-template-columns:repeat(2,1fr)}
  .hotspot{transform:scale(.84)}
}

/* ===== V19 : couloir de portes au fond du stade ===== */
.facility{position:relative}
.stadium-back-wall{
 position:absolute;left:3%;right:3%;top:14%;height:34%;z-index:2;overflow:hidden;
 border:1px solid rgba(180,200,210,.25);border-bottom:6px solid #303a40;
 background:linear-gradient(180deg,rgba(39,49,55,.96),rgba(19,27,31,.98));
 box-shadow:inset 0 -28px 45px rgba(0,0,0,.4),0 18px 28px rgba(0,0,0,.25)
}
.stadium-back-wall:after{content:"";position:absolute;left:0;right:0;bottom:0;height:12px;background:repeating-linear-gradient(90deg,#66747b 0 55px,#354047 55px 110px);opacity:.7}
.wall-beam{position:absolute;left:0;right:0;top:24%;height:7px;background:#526068;box-shadow:0 3px 8px #000}
.wall-sign{position:absolute;left:50%;top:5%;transform:translateX(-50%);font-size:clamp(.5rem,.8vw,.72rem);font-weight:900;letter-spacing:.16em;color:rgba(220,232,237,.72);white-space:nowrap}
.wall-lights{position:absolute;left:5%;right:5%;top:18%;display:flex;justify-content:space-between}
.wall-lights i{width:42px;height:3px;background:#d4edf5;box-shadow:0 0 12px rgba(210,238,247,.8);opacity:.7}

.hotspot-locker,.hotspot-chem,.hotspot-phys,.hotspot-proj,.hotspot-office,.hotspot-final{
 top:22%!important;bottom:auto!important;width:12%!important;min-width:76px;height:25%;min-height:140px;
 padding:0!important;z-index:6;border:0!important;border-radius:0!important;background:none!important;
 box-shadow:none!important;transform:none!important;overflow:visible
}
.hotspot-locker{left:6%!important}.hotspot-chem{left:21.5%!important}.hotspot-phys{left:37%!important}
.hotspot-proj{left:52.5%!important}.hotspot-office{left:68%!important}.hotspot-final{left:83.5%!important}
.door-frame{position:absolute;left:50%;bottom:0;width:min(78px,76%);height:100%;transform:translateX(-50%);border:5px solid #6d7a81;border-bottom:0;background:linear-gradient(90deg,rgba(255,255,255,.06),transparent 28%),linear-gradient(#3c4a51,#20292e);box-shadow:inset 0 0 0 2px rgba(0,0,0,.45),0 7px 14px rgba(0,0,0,.4);transition:.2s}
.door-frame:before{content:"";position:absolute;left:-9px;right:-9px;top:-11px;height:8px;background:#5c686f;box-shadow:0 3px 5px #000}
.door-window{position:absolute;left:16%;right:16%;top:12%;height:25%;border:3px solid #172027;background:linear-gradient(135deg,rgba(182,224,238,.25),rgba(50,76,87,.16)),#10181d;box-shadow:inset 0 0 10px #000}
.door-window:after{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;background:#26353c}
.door-handle{position:absolute;right:9%;top:56%;width:15px;height:5px;border-radius:4px;background:#c5cdd1;box-shadow:0 1px 2px #000}
.door-plate{position:absolute;left:7%;right:7%;bottom:12%;padding:4px 1px;border:1px solid rgba(230,240,244,.25);background:#151d21;color:#dce8ed;font-size:clamp(.38rem,.62vw,.58rem);font-weight:900;letter-spacing:.03em;text-align:center;white-space:nowrap;overflow:hidden}
.door-caption{position:absolute;left:50%;bottom:-40px;width:140%;transform:translateX(-50%);text-align:center;color:#eef5f7;text-shadow:0 2px 3px #000}
.door-caption b,.door-caption small{display:block}.door-caption b{font-size:clamp(.48rem,.72vw,.68rem);letter-spacing:.05em}.door-caption small{font-size:clamp(.4rem,.58vw,.55rem);opacity:.7;margin-top:2px}
.hotspot:hover .door-frame,.hotspot:focus-visible .door-frame{transform:translateX(-50%) translateY(-5px);border-color:#afc1c9;box-shadow:0 0 22px rgba(180,220,235,.2)}
.room-locked:not(.access-granted){filter:none!important}.room-locked:not(.access-granted) .door-frame{filter:grayscale(.9) brightness(.58)}
.room-locked:not(.access-granted)::after{right:4%!important;top:42%!important;z-index:9}
.secure-door{border-color:#84514b;background:linear-gradient(#503632,#281e1d)}.hotspot-final:not(.locked) .secure-door{border-color:#66a678;box-shadow:0 0 22px rgba(96,200,125,.18)}
@media(max-width:900px){
 .stadium-back-wall{left:1%;right:1%;top:13%;height:36%}
 .hotspot-locker{left:3%!important}.hotspot-chem{left:19.5%!important}.hotspot-phys{left:36%!important}.hotspot-proj{left:52.5%!important}.hotspot-office{left:69%!important}.hotspot-final{left:85.5%!important}
 .hotspot-locker,.hotspot-chem,.hotspot-phys,.hotspot-proj,.hotspot-office,.hotspot-final{width:10.5%!important;min-width:60px;min-height:120px}
 .door-frame{width:min(62px,90%)}.door-caption{width:155%}
}
@media(max-width:650px){
 .stadium-back-wall{top:10%;height:41%}
 .hotspot-locker,.hotspot-chem,.hotspot-phys,.hotspot-proj,.hotspot-office,.hotspot-final{top:19%!important;min-width:45px;height:26%;min-height:100px}
 .door-frame{width:min(48px,94%);border-width:3px}.door-caption{bottom:-31px}.door-caption small{display:none}.door-plate{font-size:.32rem}
}

/* ===== V20 : lisibilité du hub ===== */
.facility-title{
  top:auto !important;
  bottom:3.5% !important;
  left:50% !important;
  width:min(900px,88%) !important;
  transform:translateX(-50%) !important;
  z-index:12 !important;
  padding:.7rem 1rem;
  text-align:center;
  background:linear-gradient(90deg,transparent,rgba(5,10,13,.78) 12%,rgba(5,10,13,.78) 88%,transparent);
  pointer-events:none;
}
.facility-title .kicker{display:none}
.facility-title h2{
  margin:0;
  font-size:clamp(.9rem,1.5vw,1.25rem);
}

/* Le compte à rebours reste à gauche des outils Son / Plein écran. */
#hub .hud .timer{
  margin-right:118px !important;
}
.hud-center{
  min-width:0;
}
@media(max-width:760px){
  #hub .hud .timer{margin-right:92px !important}
}

/* Plus de porte Bombe : les cinq portes occupent régulièrement le mur du fond. */
.hotspot-locker{left:9% !important}
.hotspot-chem{left:27% !important}
.hotspot-phys{left:45% !important}
.hotspot-proj{left:63% !important}
.hotspot-office{left:81% !important}
.hotspot-locker,.hotspot-chem,.hotspot-phys,.hotspot-proj,.hotspot-office{
  width:11% !important;
}

/* ===== V20 : retour au vestiaire et bombe cachée ===== */
.locker-return-hint{
  margin-top:1rem;
  padding:1rem;
  border:1px solid rgba(255,91,91,.45);
  border-left:4px solid #d94a4a;
  background:rgba(130,25,25,.12);
  color:#ffd7d7;
  font-weight:800;
}
.bomb-found-panel{
  margin-top:1.5rem;
  padding:1.5rem;
  text-align:center;
  border:1px solid rgba(220,69,69,.55);
  background:radial-gradient(circle at center,rgba(125,25,25,.22),rgba(20,20,22,.92));
  box-shadow:0 0 35px rgba(200,30,30,.12);
}
.bomb-device{
  position:relative;
  width:220px;
  height:120px;
  margin:0 auto 1.2rem;
}
.bomb-body{
  position:absolute;
  left:35px;right:35px;top:22px;bottom:14px;
  border:4px solid #4e5559;
  border-radius:12px;
  background:linear-gradient(#282e31,#111517);
  box-shadow:0 10px 20px rgba(0,0,0,.5);
}
.bomb-display{
  position:absolute;
  left:72px;right:72px;top:47px;
  z-index:2;
  padding:.5rem .2rem;
  border:2px solid #4c1717;
  background:#160707;
  color:#ff5b55;
  font:900 1rem monospace;
  letter-spacing:.12em;
}
.bomb-wire{
  position:absolute;
  top:8px;
  width:70px;height:50px;
  border:4px solid currentColor;
  border-bottom:0;
  border-radius:50% 50% 0 0;
}
.bomb-wire.w1{left:32px;color:#9e3636;transform:rotate(-12deg)}
.bomb-wire.w2{left:76px;color:#c6b451;transform:rotate(2deg)}
.bomb-wire.w3{right:28px;color:#4c8c6a;transform:rotate(13deg)}
.bomb-locker{
  border-color:#d94b4b !important;
  box-shadow:0 0 28px rgba(220,45,45,.3) !important;
}

@media(max-width:900px){
 .hotspot-locker{left:7% !important}
 .hotspot-chem{left:26% !important}
 .hotspot-phys{left:45% !important}
 .hotspot-proj{left:64% !important}
 .hotspot-office{left:83% !important}
}

/* ===== V21 : progression sans révéler le code ===== */
.check-rack span{
  color:transparent !important;
  border-color:rgba(255,255,255,.22) !important;
  background:rgba(0,0,0,.22) !important;
}
.check-rack span.checked{
  color:#8ee8a3 !important;
  border-color:rgba(105,220,132,.65) !important;
  background:rgba(55,150,78,.18) !important;
  text-shadow:0 0 10px rgba(105,220,132,.55);
}

/* Remonte l'instruction au-dessus de la zone "indices récupérés". */
.facility-title{
  bottom:12% !important;
  width:min(820px,82%) !important;
}
@media(max-width:760px){
  .facility-title{bottom:14% !important}
}

/* ===== V22 : portes visuellement normales avant le passe ===== */
.room-locked:not(.access-granted),
.room-locked:not(.access-granted) .door-frame{
  filter:none !important;
  opacity:1 !important;
}
.room-locked:not(.access-granted)::after{
  display:none !important;
  content:none !important;
}

/* ===== V24 MOBILE : fonctionnement téléphone / petits écrans ===== */
html,body{
  width:100%;
  max-width:100%;
  overflow-x:hidden;
}
body{
  min-width:0 !important;
}
*{box-sizing:border-box}
button,input,summary{touch-action:manipulation}
button,.btn,.hud-btn,.utility-btn,.hotspot,.locker,.palette-symbol{
  min-height:44px;
}

/* Safe areas on iPhone */
body{
  padding-left:env(safe-area-inset-left);
  padding-right:env(safe-area-inset-right);
}
.hud{
  padding-left:max(10px,env(safe-area-inset-left)) !important;
  padding-right:max(10px,env(safe-area-inset-right)) !important;
}

/* Utility controls no longer cover the timer */
.fullscreen-btn,.sound-btn,.utility-btn{
  position:fixed;
  top:auto !important;
  bottom:max(10px,env(safe-area-inset-bottom)) !important;
  z-index:12000;
  width:46px;
  height:46px;
}
.fullscreen-btn{right:max(10px,env(safe-area-inset-right)) !important}
.sound-btn{right:calc(max(10px,env(safe-area-inset-right)) + 54px) !important}

/* HUD: compact 3-column layout */
@media(max-width:700px){
  .hud{
    display:grid !important;
    grid-template-columns:auto minmax(0,1fr) auto !important;
    align-items:center;
    gap:7px;
    min-height:58px;
    padding-top:7px !important;
    padding-bottom:7px !important;
  }
  .hud .hud-btn{
    padding:.48rem .6rem !important;
    font-size:.72rem !important;
    white-space:nowrap;
  }
  .hud-center{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    text-align:center;
    font-size:.68rem !important;
    letter-spacing:.03em !important;
  }
  .hud .timer,#hub .hud .timer,.timer.mirror{
    margin-right:0 !important;
    min-width:58px;
    font-size:.9rem !important;
    text-align:right;
  }
}

/* Intro / briefing */
@media(max-width:700px){
  .hero-card,.mission-card{
    width:calc(100% - 24px) !important;
    max-width:none !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding:1.2rem !important;
  }
  .hero-card h1{font-size:clamp(2.2rem,14vw,4rem) !important}
  .hero-card .lead,.mission-card p{font-size:.95rem;line-height:1.5}
  .mission-objectives{
    display:grid !important;
    grid-template-columns:1fr 1fr;
    gap:.55rem !important;
  }
  .mission-objectives span{font-size:.72rem}
  .briefing-actions{
    display:flex;
    flex-direction:column-reverse;
    gap:.6rem;
  }
  .briefing-actions .btn{width:100%}
}

/* HUB: on phone, doors become a horizontally scrollable corridor.
   This is clearer and prevents overlap. */
@media(max-width:700px){
  .facility{
    min-height:570px !important;
    overflow:hidden !important;
  }
  .stadium-photo{
    min-height:570px !important;
  }
  .stadium-back-wall{
    left:0 !important;
    right:0 !important;
    top:11% !important;
    height:39% !important;
  }
  .wall-sign{font-size:.48rem !important}
  .facility-title{
    bottom:16% !important;
    width:92% !important;
    padding:.55rem .6rem !important;
  }
  .facility-title h2{
    font-size:.82rem !important;
    line-height:1.25;
  }

  /* doors are smaller and evenly spaced, no captions outside */
  .hotspot-locker,.hotspot-chem,.hotspot-phys,.hotspot-proj,.hotspot-office{
    top:19% !important;
    width:16% !important;
    min-width:0 !important;
    height:24% !important;
    min-height:112px !important;
  }
  .hotspot-locker{left:2% !important}
  .hotspot-chem{left:22% !important}
  .hotspot-phys{left:42% !important}
  .hotspot-proj{left:62% !important}
  .hotspot-office{left:82% !important}
  .door-frame{
    width:80% !important;
    min-width:42px;
    border-width:3px !important;
  }
  .door-caption{
    bottom:-30px !important;
    width:130% !important;
  }
  .door-caption b{font-size:.45rem !important}
  .door-caption small{display:none !important}
  .door-plate{
    font-size:.28rem !important;
    letter-spacing:0 !important;
  }
  .mission-progress{
    margin:.5rem 10px 74px !important;
    padding:.75rem !important;
    display:grid !important;
    grid-template-columns:auto 1fr auto !important;
    gap:.65rem !important;
  }
  .mission-progress strong{font-size:.9rem}
  .mission-progress span{font-size:.65rem}
  .check-rack{gap:.35rem !important}
  .check-rack span{min-width:34px !important;width:34px;height:34px}
}

/* All two-column puzzle rooms become one column */
@media(max-width:800px){
  .split-layout,.chemistry-layout,.projector-layout,.office-layout{
    display:flex !important;
    flex-direction:column !important;
    width:100%;
    max-width:100%;
    gap:1rem !important;
    padding:10px !important;
    margin:0 auto !important;
  }
  .evidence,.quiz,.office-document,.office-puzzle,.maintenance-wrap{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
}

/* Virtual book: natural height and readable typography */
@media(max-width:700px){
  .book-page{
    min-height:0 !important;
    padding:1.15rem 1rem 4.4rem !important;
  }
  .book-page p{font-size:.9rem !important;line-height:1.48 !important}
  .book-page h3{font-size:1.25rem !important}
  .book-nav{
    left:.55rem !important;
    right:.55rem !important;
    gap:.4rem !important;
  }
  .book-nav button{
    padding:.5rem .55rem !important;
    font-size:.68rem !important;
  }
  .reaction,.book-reaction{
    overflow-wrap:anywhere;
    font-size:.96rem !important;
  }
}

/* Maintenance Q1 symbols */
@media(max-width:700px){
  .maintenance-wrap{padding:1rem !important;margin:10px auto 70px !important}
  .symbol-grid{
    grid-template-columns:1fr 1fr !important;
    gap:.65rem !important;
  }
  .symbol-card{padding:.65rem !important}
  .symbol-grid .symbol-card:last-child{grid-column:auto !important}
  .precise-symbols .schematic-symbol{height:72px !important}
  .drag-bank,.component-bank{
    gap:.5rem !important;
  }
  .drag-bank button,.component-bank button{
    flex:1 1 42%;
    padding:.65rem .4rem !important;
  }
}

/* Free circuit board: remains usable on touch.
   Components scale down and board is tall enough for finger routing. */
@media(max-width:700px){
  .circuit-palette{
    display:grid !important;
    grid-template-columns:repeat(3,1fr);
    gap:.45rem !important;
  }
  .palette-symbol{
    width:100% !important;
    height:66px !important;
    min-width:0;
  }
  .free-circuit-board{
    width:100% !important;
    height:500px !important;
    min-width:0 !important;
    overflow:hidden !important;
    touch-action:none !important;
  }
  .placed-component{
    width:120px !important;
    height:76px !important;
  }
  .placed-component svg{
    width:102px !important;
    height:62px !important;
    inset:7px 9px !important;
  }
  .terminal{
    width:24px !important;
    height:24px !important;
    margin-top:-12px !important;
  }
  .left-terminal{left:-13px !important}
  .right-terminal{right:-13px !important}
  .board-help{
    max-width:92% !important;
    font-size:.68rem !important;
  }
  .circuit-actions{
    display:grid !important;
    grid-template-columns:1fr 1fr;
  }
  .circuit-actions .btn:last-child{grid-column:1/-1}
}

/* Projector/video room */
@media(max-width:800px){
  .projector-layout{
    min-height:0 !important;
  }
  .projector-machine{
    transform:scale(.8);
    transform-origin:center;
    margin:-15px auto -8px !important;
  }
  .projector-beam{display:none !important}
  .projection{
    width:100% !important;
    min-width:0 !important;
    margin:0 !important;
  }
  .screen-frame,#projectionScreen{
    width:100% !important;
    aspect-ratio:16/9;
    min-height:0 !important;
  }
  #projectionScreen .video-embed-wrap{
    position:absolute !important;
    inset:0 !important;
  }
  .projector-quiz{
    width:100% !important;
  }
}

/* Office */
@media(max-width:700px){
  .document-sheet{padding:1.1rem !important;min-height:0 !important}
  .mass-value{font-size:2.2rem !important}
  .container-choices{
    grid-template-columns:1fr !important;
  }
  .container-choices button{
    min-height:118px !important;
    display:grid;
    grid-template-columns:90px 1fr;
    align-items:center;
    text-align:left;
  }
  .container-icon{margin:0 auto !important}
  .volume-entry{max-width:100% !important}
}

/* Locker room */
@media(max-width:700px){
  .locker-room{
    margin:10px auto 74px !important;
    padding:1rem !important;
  }
  .lockers-grid{
    grid-template-columns:repeat(2,1fr) !important;
    gap:.65rem !important;
  }
  .locker{min-height:138px !important}
  .access-pass{width:100% !important}
}

/* Bomb/final */
@media(max-width:700px){
  .bomb-console{
    width:calc(100% - 20px) !important;
    margin:10px auto 76px !important;
    display:flex !important;
    flex-direction:column !important;
    gap:1rem !important;
    padding:1rem !important;
  }
  .bomb-visual{transform:scale(.85);transform-origin:center}
  .console-copy{width:100% !important}
  #codeInput{
    width:100% !important;
    font-size:1.5rem !important;
  }
}

/* Prevent tiny text inputs from triggering iOS zoom */
@media(max-width:700px){
  input,select,textarea{font-size:16px !important}
}

/* Landscape phone: preserve more stage height */
@media(max-width:900px) and (orientation:landscape){
  .facility{min-height:430px !important}
  .stadium-photo{min-height:430px !important}
  .facility-title{bottom:10% !important}
  .mission-progress{margin-bottom:64px !important}
}

/* ===== V25 : bouton projecteur clairement visible ===== */
#projecteur .projector-machine{
  overflow:visible !important;
}
#projecteur .power-button{
  position:absolute !important;
  right:8px !important;
  bottom:8px !important;
  width:auto !important;
  min-width:96px !important;
  height:38px !important;
  min-height:38px !important;
  padding:0 10px !important;
  display:flex !important;
  align-items:center;
  justify-content:center;
  gap:7px;
  border:1px solid #8b969a !important;
  border-radius:7px !important;
  background:#0a0e10 !important;
  color:#ff6868 !important;
  z-index:20 !important;
  font-weight:900;
  font-size:.7rem;
  letter-spacing:.06em;
  box-shadow:0 4px 10px rgba(0,0,0,.5);
}
#projecteur .power-icon{
  font-size:1.1rem;
  line-height:1;
}
#projecteur .power-button.is-on,
#projecteur .projector-machine.on .power-button{
  color:#d7f56b !important;
  border-color:#9eb64c !important;
  box-shadow:0 0 15px rgba(210,240,80,.25);
}

@media(max-width:800px){
  #projecteur .projector-machine{
    position:relative !important;
    left:auto !important;
    bottom:auto !important;
    width:180px !important;
    height:105px !important;
    margin:4px auto 10px !important;
    transform:none !important;
    order:0;
  }
  #projecteur .power-button{
    right:8px !important;
    bottom:7px !important;
    min-width:100px !important;
    height:42px !important;
    min-height:42px !important;
    font-size:.72rem !important;
  }
}

/* ===== V25 : indice/passe qui glisse vers le bouton de suite ===== */
.reward-flyer{
  position:fixed;
  z-index:30000;
  pointer-events:none;
  display:grid;
  place-items:center;
  min-width:58px;
  min-height:58px;
  padding:.65rem .9rem;
  border-radius:12px;
  border:2px solid rgba(255,216,85,.8);
  background:rgba(17,24,28,.96);
  color:#ffe16c;
  font:900 1.25rem/1 system-ui,sans-serif;
  letter-spacing:.05em;
  box-shadow:0 0 24px rgba(255,215,70,.35);
}
.reward-target{
  position:relative;
}
.reward-target.reward-ready{
  animation:rewardPulse .55s ease 2;
  box-shadow:0 0 0 4px rgba(255,218,80,.18),0 0 26px rgba(255,218,80,.28);
}
@keyframes rewardPulse{
  50%{transform:scale(1.045)}
}
@media(prefers-reduced-motion:reduce){
  .reward-flyer{display:none}
  .reward-target.reward-ready{animation:none}
}

/* ===== V26 : bouton Salle vidéo réellement visible ===== */
.projector-power-top{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.65rem;
  width:min(320px,90%);
  margin:0 auto .9rem;
  min-height:48px;
  padding:.7rem 1rem;
  border:2px solid #8b969a;
  border-radius:10px;
  background:#0b1012;
  color:#ff6d6d;
  font-weight:900;
  letter-spacing:.05em;
  cursor:pointer;
  z-index:30;
  position:relative;
  box-shadow:0 6px 20px rgba(0,0,0,.35);
}
.projector-power-top span{font-size:1.35rem}
.projector-power-top.is-on{
  color:#dcf36c;
  border-color:#a7bd55;
  box-shadow:0 0 18px rgba(220,243,108,.18);
}
.projector-power-top:disabled{
  cursor:default;
  opacity:.9;
}

@media(max-width:800px){
  #projecteur .projector-layout{
    padding-top:10px !important;
  }
  .projector-power-top{
    order:-2;
    width:calc(100% - 20px);
    margin:0 auto 10px;
    font-size:.78rem;
  }
  /* On mobile, hide the tiny machine button: the top button is the canonical control. */
  #projecteur #projectorPower{
    display:none !important;
  }
}

/* ===== V26 : circuit mobile, aucun dipôle hors zone ===== */
@media(max-width:700px){
  .free-circuit-board{
    position:relative;
    overflow:hidden !important;
  }
  .placed-component{
    max-width:calc(100% - 24px);
  }
}

/* ===== V27 : casiers grands écrans ===== */
@media(min-width:901px){
  .locker-room{
    max-width:1180px !important;
  }
  .lockers-grid{
    grid-template-columns:repeat(4,minmax(150px,1fr)) !important;
    gap:1.15rem !important;
  }
  .locker{
    min-height:250px !important;
    height:250px !important;
  }
  .locker span{
    font-size:1.05rem;
  }
  .locker i{
    height:44px;
    margin-top:-22px;
  }
}

/* Medium landscape/tablet: still substantial, not flattened. */
@media(min-width:701px) and (max-width:900px){
  .lockers-grid{
    grid-template-columns:repeat(4,minmax(120px,1fr)) !important;
  }
  .locker{
    min-height:210px !important;
    height:210px !important;
  }
}

/* ===== V27 : glissement visible dans le vestiaire ===== */
.vestiaire-success-panel{
  scroll-margin-top:90px;
}
.vestiaire-fly-token{
  position:fixed;
  z-index:50000;
  pointer-events:none;
  display:grid;
  place-items:center;
  min-width:78px;
  min-height:58px;
  padding:.7rem 1rem;
  border:2px solid #ffe078;
  border-radius:12px;
  background:#11191d;
  color:#ffe078;
  font:900 1.15rem/1 system-ui,sans-serif;
  letter-spacing:.08em;
  box-shadow:0 0 28px rgba(255,220,90,.45),0 10px 28px rgba(0,0,0,.45);
}
#passContinue.vestiaire-target-hit,
#bombContinue.vestiaire-target-hit{
  animation:vestiaireTargetHit .5s ease 3;
  box-shadow:0 0 0 5px rgba(255,224,100,.2),0 0 30px rgba(255,224,100,.35);
}
@keyframes vestiaireTargetHit{
  50%{transform:scale(1.06)}
}
@media(prefers-reduced-motion:reduce){
  .vestiaire-fly-token{display:none}
  #passContinue.vestiaire-target-hit,
  #bombContinue.vestiaire-target-hit{animation:none}
}
