/* V0.5B : décors illustrés, états dérivés du checkpoint, aucune progression locale. */
.passage-v05 .game-stage{isolation:isolate;min-height:640px;height:calc(100svh - 116px);background:#101c30}
.passage-v05 .game-stage:after{z-index:1;background:linear-gradient(0deg,#07142199,transparent 28%),linear-gradient(90deg,#09192944,transparent 45%);pointer-events:none}
.passage-layers{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none}
.passage-land,.passage-master{position:absolute;inset:0;width:100%;height:100%}.passage-master{object-fit:fill}
.passage-layers .home-world{z-index:0}.passage-layers .hub-hero{left:29%;width:22%;height:72%;bottom:10%}
.depth-haze{position:absolute;inset:15% 0 20%;opacity:.15;background:linear-gradient(transparent,#c5b5ff88,transparent);animation:mist-drift 19s ease-in-out infinite alternate}
.foreground-shade{position:absolute;inset:75% 0 0;background:linear-gradient(transparent,#06172577)}
.ambient-leaf{position:absolute;left:-2%;top:0;width:12%;height:28%;background:radial-gradient(ellipse at left,#122c23bb,transparent 70%);transform-origin:top left;animation:leaf-wait 13s ease-in-out infinite}
.distant-light{position:absolute;left:84%;top:32%;width:5px;height:4px;border-radius:50%;background:#ffe3a3;box-shadow:0 0 20px #ffe1a788;animation:light-wait 14s ease-in-out infinite}
.passage-hero{position:absolute;left:29%;bottom:10%;height:72%;width:24%;transition:transform var(--tempo-move) var(--tempo-ease);z-index:3}.hero-action{height:100%;transform-origin:50% 85%}.passage-hero .hero-shadow{left:25%;bottom:1%;width:55%;height:3%}
.passage-v05 .story-panel{left:3%;bottom:30px;max-width:28%;width:335px;padding:22px;background:linear-gradient(135deg,#0a2234f5,#122739ee);border-radius:8px 22px 22px 22px;backdrop-filter:none}
.passage-v05 .story-panel h1{font-size:clamp(22px,2.3vw,31px)}.passage-v05 .short-line{font-size:17px;line-height:1.4}.passage-v05 .story-panel:before{display:none}
.passage-v05 .location-label{z-index:5;top:20px;left:3%;background:#0a1a2dbb}
.passage-v05 .task-instruction{display:flex;flex-direction:column;align-items:stretch;gap:10px}.passage-v05 .task-instruction strong{font-size:clamp(70px,7vw,104px);font-family:Arial,sans-serif;line-height:1.25;color:#0b2337;background:#f1f5e8;border:0;border-radius:12px;text-align:center;animation:none!important;box-shadow:none;min-height:110px;padding:8px 14px}.passage-v05 .task-instruction>span{font-size:14px}
.passage-v05 .game-inventory{right:3%;bottom:25px;max-width:60%;display:flex;gap:7px;flex-wrap:wrap;align-items:flex-end;z-index:6}.passage-v05 .game-inventory>span{font-size:10px;letter-spacing:.15em;align-self:center}.passage-v05 .item-slot{padding:7px;border:1px solid #65828966;border-radius:12px;min-width:68px;max-width:108px}.passage-v05 .item-slot>span:not(.object-art),.passage-v05 .item-button>span:not(.object-art){font-size:10px}.passage-v05 .item-slot .object-art{width:49px;margin:auto}.passage-v05 .item-button{padding:3px;min-width:84px;min-height:75px}.passage-v05 .item-button .object-art{width:49px}
.nexus-box{position:absolute;left:57%;bottom:15%;width:20%;z-index:2;transition:opacity var(--tempo-ui),transform var(--tempo-move) var(--tempo-ease)}.nexus-box .object-art{width:100%;clip-path:polygon(7% 25%,60% 12%,95% 26%,96% 65%,74% 88%,10% 76%)}.nexus-box.calling:after{content:'';position:absolute;inset:25%;border-radius:50%;background:#b8ff7533;animation:box-signal 6s ease-in-out infinite}.nexus-box.opened{opacity:.6;transform:scale(.8) translateY(15%)}
.lens-light{position:absolute;inset:0;opacity:0;background:radial-gradient(ellipse at 67% 42%,#26e9e144,transparent 65%);transition:opacity var(--tempo-world)}.lens-light.visible{opacity:1}
.portal-rig{position:absolute;left:59%;top:12%;width:24%;height:65%;transform:perspective(900px) rotateY(-12deg);z-index:1;opacity:0;transition:opacity var(--tempo-ui)}
[data-portal="1"] .portal-rig,[data-portal="2"] .portal-rig,[data-portal="3"] .portal-rig,[data-portal="4"] .portal-rig{opacity:1}
.portal-slit{position:absolute;left:48%;top:12%;height:75%;width:4px;border-radius:50%;background:#b5ffff;box-shadow:0 0 12px 3px #4af6f2,0 0 40px 10px #7352b577;transition:opacity var(--tempo-world)}
.portal-edge{position:absolute;inset:0;border:4px solid #acfaff;border-radius:50%;box-shadow:0 0 16px #30ffef,inset 0 0 18px #21e4dc,0 0 55px #4869c455;transform:scaleX(.03);opacity:0;transition:transform var(--tempo-major) var(--tempo-ease),opacity var(--tempo-world)}
.portal-destination{position:absolute;inset:5%;border-radius:50%;background:url('/assets/passage/world-master.webp') 65% 45%/cover;opacity:0;transform:scaleX(.1);transition:opacity var(--tempo-scene),transform var(--tempo-major) var(--tempo-ease)}
[data-portal="2"] .portal-edge{opacity:.7;transform:scaleX(.4)}[data-portal="3"] .portal-edge{opacity:1;transform:scaleX(.75)}[data-portal="3"] .portal-destination{opacity:.4;transform:scaleX(.7)}[data-portal="4"] .portal-edge,[data-portal="4"] .portal-destination{opacity:1;transform:scaleX(1)}[data-portal="3"] .portal-slit,[data-portal="4"] .portal-slit{opacity:0}
.world-object{position:absolute;left:63%;top:31%;width:19%;z-index:4;filter:drop-shadow(0 0 18px #80f4dd77)}.world-object>.object-art{width:100%;border-radius:22%;mask-image:radial-gradient(ellipse,#000 55%,transparent 76%);-webkit-mask-image:radial-gradient(ellipse,#000 55%,transparent 76%)}.world-object i{position:absolute;inset:15%;border-radius:50%;border-bottom:1px solid #bbffe999;transform:rotate(-20deg)}
.object-glasses{width:23%;left:58%;top:26%}.object-pen{width:18%;top:31%}.object-cracked-battery{left:54%;top:50%;width:16%}.object-capsule{width:24%;left:59%;top:23%}
.bridge-rig{position:absolute;left:58%;top:52%;width:32%;height:34%;z-index:1}.bridge-piece{position:absolute;width:100%;height:100%;object-fit:contain;transform:translate(-45%,25%) rotate(-30deg);transition:transform var(--tempo-world) var(--tempo-ease)}.bridge-piece.seated{transform:translate(0,0) rotate(0)}.bridge-rail{position:absolute;left:10%;right:10%;top:46%;height:2px;background:#9afcea;opacity:0;transition:opacity var(--tempo-ui) 120ms;box-shadow:0 0 10px #8dffff}.bridge-piece.seated+.bridge-rail{opacity:1}
.passage-v05 .stage-interaction{top:28%;right:4%;width:38%;z-index:5}.passage-v05 .symbol-choices{background:#0b243be8;border-radius:14px;border:1px solid #68c9d9;padding:14px;box-shadow:0 0 26px #4ddacc22;display:grid;grid-template-columns:repeat(4,1fr)}.passage-v05 .symbol-choice{min-width:0;font-size:38px;min-height:78px;border-radius:7px;background:#dcefe6;color:#0d2a3a}.passage-v05 .symbol-choice.found{background:#d6fb79}
.passage-v05 .signal-meter{display:none}.world-circuit{position:absolute;left:59%;top:79%;width:28%;display:flex;gap:6px;z-index:4;transform:skewX(-14deg)}.world-circuit i{height:7px;flex:1;background:#183c53;border:1px solid #3d758a;transition:background var(--tempo-micro)}.world-circuit i.lit{background:#99fff0;box-shadow:0 0 17px #66eaca}
.passage-v05 [data-scene="obstacle"] .stage-interaction{top:62%;right:14%;width:23%}.passage-v05 .metal-target{width:100%;min-height:58px;padding:14px;border:1px solid #9bcbb6;background:#102c3edb;border-radius:12px;box-shadow:none;font-size:16px}.passage-v05 .metal-target.target-ready{border-color:#d5fb70;box-shadow:0 0 22px #d5fb7044;animation:none}
.equipped-glove{position:absolute;right:-4%;top:52%;width:38%;filter:drop-shadow(0 0 9px #71f7e5);transform:rotate(-20deg)}.equipped-glove .object-art{width:100%;border-radius:50%;mask-image:radial-gradient(ellipse,#000 50%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse,#000 50%,transparent 70%)}
.using-glove .living-avatar{animation:none!important}.using-glove .hero-action{transform:rotate(1.5deg)}.magnetic-link{position:absolute;left:48%;top:58%;width:23%;height:3px;background:linear-gradient(90deg,#86fff9,transparent);transform:rotate(-9deg);transform-origin:left;box-shadow:0 0 8px #76ffe4;animation:magnet-reach var(--tempo-magnet) var(--tempo-ease) both;z-index:4}
.boss-rig{position:absolute;left:52%;bottom:15%;width:43%;height:78%;z-index:2;transform-origin:50% 90%;transition:transform var(--tempo-world) var(--tempo-ease)}.boss-body{width:100%;height:100%;object-fit:contain}.boss-shadow{position:absolute;bottom:0;left:20%;width:65%;height:5%;border-radius:50%;background:#06111c99;filter:blur(7px)}.boss-plate{position:absolute;left:34%;top:39%;width:38%;height:29%;object-fit:contain;transition:transform var(--tempo-world) cubic-bezier(.4,0,.8,.4),opacity var(--tempo-micro) 300ms}.boss-plate.removed{transform:translate(-160%,100%) rotate(-34deg);opacity:0}.boss-eyes{position:absolute;left:46%;top:20%;width:15%;display:flex;justify-content:space-between;transform:rotate(2deg)}.boss-eyes i{width:30%;height:6px;background:#f5c46e;border-radius:3px;box-shadow:0 0 10px #fdb663}.boss-core{position:absolute;left:47%;top:49%;width:12%;aspect-ratio:1;border-radius:50%;background:radial-gradient(#bffff6,#54bca87a 35%,transparent 70%);opacity:.35}.phase-3 .boss-core{opacity:1}.phase-2{transform:rotate(1deg)}.phase-3{transform:rotate(-1.5deg)}.phase-4{transform:translateY(10px) rotate(3deg);filter:saturate(.45)}.phase-4 .boss-eyes i{height:2px;background:#78a4a4;box-shadow:none}.phase-4 .boss-core{opacity:.1}.boss-shield{position:absolute;left:25%;top:35%;width:53%;height:37%;border:2px solid #8df7f077;border-radius:18%;opacity:0;transition:opacity var(--tempo-ui)}.boss-shield.closed{opacity:1;background:#48bfb518}.mechanical-response{animation:machine-response var(--tempo-world) var(--tempo-ease)}.passage-v05 [data-scene="boss_pull"] .stage-interaction{top:54%;right:14%;width:25%}.passage-v05 [data-scene="boss_scan"] .stage-interaction{top:66%;width:39%;right:6%}.passage-v05 [data-scene="boss_scan"] .world-circuit{top:30%}
.passage-v05 .travel-light{display:none}.crossing-veil{position:absolute;inset:0;z-index:12;pointer-events:none;background:radial-gradient(ellipse at 68% 45%,#ecffff,#66e2e7ee 40%,#14344200 90%);animation:cross-world var(--tempo-major) ease-out both}
.passage-v05 [data-scene="finale"] .story-panel{animation:none}.capsule-whisper{position:absolute;left:71%;top:48%;z-index:6;font-size:26px;color:#d2ffff;text-shadow:0 0 15px #75edff;animation:whisper var(--tempo-cliff) ease-out both}.passage-v05 [data-scene="finale"] .docked-capsule{animation:capsule-tap var(--tempo-cliff) ease-in-out 1}.passage-v05 [data-scene="finale"] .story-controls{animation:none}.passage-v05 .base-labels{display:none!important}
.passage-v05 .on-pause .passage-layers{filter:saturate(.4) brightness(.5)}.passage-v05 .on-pause *{animation-play-state:paused!important}.passage-layers[data-quiet="true"] .depth-haze,.passage-layers[data-quiet="true"] .ambient-leaf,.passage-layers[data-quiet="true"] .distant-light{animation:none}.passage-v05 .paper-cue i{animation:none}.passage-v05 .world-reaction{left:70%;top:49%}
.guide-stop-dialog{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:22px;background:#020b16c9}.guide-stop-dialog section{width:min(430px,100%);padding:26px;border:1px solid #658391;border-radius:18px;background:#102b3c}.guide-stop-dialog h2{font-size:23px}.guide-stop-dialog button{width:100%;margin-top:12px}.closure-receipt{padding:18px;border:1px solid #99c58c;border-radius:12px;background:#183626;color:#e6fbd6;margin:15px 0}.closure-receipt p{margin:8px 0}.closure-message{position:absolute;top:16%;left:30%;right:30%;background:#112c3eea;border:1px solid #b9d99b;padding:18px;text-align:center;z-index:15;border-radius:14px}
@keyframes mist-drift{to{transform:translateX(12px);opacity:.22}}@keyframes leaf-wait{0%,30%,100%{transform:rotate(0)}65%{transform:rotate(1.4deg)}}@keyframes light-wait{0%,60%,100%{opacity:.6}80%{opacity:1}}@keyframes box-signal{0%,45%,100%{opacity:0}70%{opacity:1}}@keyframes magnet-reach{0%{opacity:0;transform:rotate(-9deg) scaleX(.1)}25%,70%{opacity:1;transform:rotate(-9deg) scaleX(1)}100%{opacity:0}}@keyframes machine-response{30%{transform:rotate(1deg) translateY(3px)}70%{transform:rotate(-.5deg)}}@keyframes cross-world{0%,20%{opacity:1}100%{opacity:0}}@keyframes whisper{0%,20%{opacity:0}40%,65%{opacity:1}100%{opacity:0;transform:translateY(-8px)}}@keyframes capsule-tap{0%,18%,65%,100%{transform:none}26%{transform:rotate(-2deg)}42%{transform:rotate(2deg)}}@keyframes conclusion-ready{from{visibility:hidden}to{visibility:visible}}
@media(max-width:1000px){.passage-v05 .story-panel{max-width:32%;padding:18px}.passage-v05 .item-slot{max-width:88px}.passage-v05 .game-inventory{max-width:58%}.passage-v05 .game-inventory>span{display:none}.passage-hero{left:30%;width:25%}.passage-v05 .symbol-choice{font-size:30px;min-height:63px}.passage-v05 .task-instruction strong{font-size:74px}}
@media(max-width:700px){.passage-v05 .game-stage{height:auto;min-height:950px;padding-top:530px}.passage-layers{height:530px;bottom:auto}.passage-master{object-fit:cover;object-position:57% center}.passage-v05 .game-stage:after{height:530px;bottom:auto}.passage-v05 .story-panel{position:relative;left:auto;bottom:auto;max-width:none;width:auto;margin:0 16px 18px;padding:18px;z-index:7}.passage-v05 .story-panel h1{font-size:25px;margin:6px 0}.passage-v05 .short-line{font-size:16px}.passage-v05 .story-controls .primary{margin-top:12px}.passage-v05 .location-label{top:14px;font-size:11px}.passage-hero{left:0;bottom:8%;height:66%;width:46%}.passage-layers .hub-hero{left:0;bottom:8%;height:66%;width:46%}.portal-rig{left:49%;top:22%;height:52%;width:44%}.nexus-box{left:54%;width:38%;bottom:14%}.world-object{left:54%;top:40%;width:42%}.object-glasses{top:34%;width:47%;left:48%}.object-cracked-battery{top:59%;width:30%;left:47%}.boss-rig{left:33%;width:68%;height:69%;bottom:12%}.boss-plate{left:34%}.bridge-rig{left:40%;width:60%;top:59%;height:28%}.passage-v05 .stage-interaction{top:375px;left:36%;right:3%;width:auto}.passage-v05 .symbol-choices{padding:8px;gap:6px;grid-template-columns:repeat(2,1fr)}.passage-v05 .symbol-choice{font-size:29px;min-height:49px}.passage-v05 [data-scene="boss_scan"] .stage-interaction{top:382px;left:34%;right:3%;width:auto}.passage-v05 [data-scene="boss_pull"] .stage-interaction,.passage-v05 [data-scene="obstacle"] .stage-interaction{top:390px;left:42%;right:4%;width:auto}.passage-v05 .metal-target{font-size:14px;min-height:53px}.world-circuit{left:45%;width:48%;top:92%}.passage-v05 [data-scene="boss_scan"] .world-circuit{top:21%}.passage-v05 .game-inventory{position:relative;left:auto;right:auto;bottom:auto;max-width:none;margin:0 16px 20px;justify-content:flex-end;flex-wrap:wrap}.passage-v05 .game-inventory .item-slot{max-width:90px}.passage-v05 .task-instruction{flex-direction:row;align-items:center}.passage-v05 .task-instruction strong{font-size:80px;min-height:100px;min-width:145px}.passage-v05 .world-reaction{top:275px}.passage-v05 .capsule-whisper{left:76%;top:54%}.passage-v05 .capsule-station{left:61%;bottom:13%;width:34%}.closure-message{left:5%;right:5%}.crossing-veil{height:530px}}
@media(prefers-reduced-motion:reduce){.passage-v05 *,.passage-v05 *:before,.passage-v05 *:after{animation:none!important;transition:none!important}.passage-v05 [data-scene="finale"] .story-controls{visibility:visible}.crossing-veil{display:none}.capsule-whisper{opacity:1}.magnetic-link{opacity:0}.boss-plate.removed{display:none}}
@media(max-width:700px){.passage-v05 .story-panel{top:auto;right:auto}.passage-v05 .game-inventory{top:auto}}
/* Les calques du robot partagent exactement le ratio du corps maître. */
.passage-v05 .boss-rig{left:55%;width:auto;height:90%;aspect-ratio:2/3;bottom:10%}.passage-v05 .boss-eyes{left:50%;top:16.5%;width:12%;transform:rotate(4deg)}.passage-v05 .boss-core{left:54%;top:35%;width:12%}.passage-v05 .boss-plate{left:39%;top:25.5%;width:42%;height:28%}.passage-v05 .boss-shadow{bottom:8%}.passage-v05 .boss-shield{left:31%;top:24%;width:52%;height:29%}.passage-v05 .game-inventory>span{writing-mode:horizontal-tb;display:none}
@media(max-width:700px){.passage-v05 .boss-rig{left:33%;height:78%;width:auto;bottom:9%}.audio-controls:has(~ *){right:10px}.passage-v05 .task-instruction strong{padding-right:22px}}
/* L’illustration garde sa taille, même avec le libellé long du Gant. */
.passage-v05 .item-slot,.passage-v05 .item-button{flex-direction:column;justify-content:center;gap:4px;text-align:center}.passage-v05 .item-slot .object-art{flex-shrink:0}.passage-v05 .item-button>span:not(.object-art){line-height:1.2}.passage-v05 .item-slot{width:88px}
/* V0.5B.1 : prise en compte locale, distincte de la confirmation serveur. */
button:active:not(:disabled){transform:scale(.98)}
button[data-command-pending]{opacity:1!important;outline:2px solid #d9ff74;outline-offset:2px;background-color:#335444!important;color:#f3ffe6!important;transition:none!important}
.command-status{position:fixed;right:18px;bottom:76px;z-index:110;padding:9px 14px;border:1px solid #8cbaa4;border-radius:10px;background:#102e3fee;color:#efffe1;font-size:13px;pointer-events:none}
[data-pending-action="use-glove"] .equipped-glove{transform:rotate(-12deg) scale(1.04)}
[data-pending-action="use-glove"] .metal-target{outline:2px solid #b7ffea}
[data-portal="0"] .portal-destination{background-image:none}
.passage-v05 .atmosphere{transition:opacity var(--tempo-world)}
.passage-v05 .world-reaction i{animation-duration:calc(var(--tempo-feedback) - 100ms);animation-delay:0ms}
.passage-v05 .world-reaction i:nth-child(2){animation-delay:50ms}
.passage-v05 .world-reaction i:nth-child(3){animation-delay:90ms}
.passage-v05 .story-panel,.passage-v05 .positive-reaction{animation-duration:var(--tempo-ui)}
.passage-v05 .hero-action{transition:transform var(--tempo-move) var(--tempo-ease)}
.departure-light{animation-duration:var(--tempo-departure);animation-timing-function:var(--tempo-ease)}
.passage-v05 [data-scene="victory"] .atmosphere{background:#caffbd30;animation:victory-flash var(--tempo-major) ease-out both}
@keyframes victory-flash{0%{opacity:0}20%{opacity:1}100%{opacity:0}}
.passage-v05 .world-object{animation:object-arrival var(--tempo-move) var(--tempo-ease) both}
@keyframes object-arrival{from{opacity:0;transform:translateY(9px) scale(.97)}to{opacity:1;transform:none}}
