/* Shared language control stays available without covering game controls. */
header{min-height:76px;height:auto;gap:10px}
header nav{flex-wrap:wrap;justify-content:flex-end;gap:7px}
.language-picker select{font:inherit;font-size:14px;max-width:130px;min-height:40px;padding:7px;color:#f8ebd9;background:#17111d;border:1px solid #977450;border-radius:3px}
.language-picker select:focus-visible{outline:3px solid #ffd08a;outline-offset:3px}
.language-picker select:focus-visible{outline:2px solid #ab442c;outline-offset:0}
.language-picker select:active{box-shadow:none}
.speech{overflow-wrap:anywhere}
.hall-host-slot{margin:10px auto 20px}
.hall-host{display:flex!important;flex-direction:row!important;justify-content:center;gap:24px;max-width:900px}
.hall-host .avatar{width:95px!important;flex:none}
.hall-host .speech{margin:0!important;width:min(580px,65vw)!important}
.hall-host.talking .skull-jaw>img{animation:arrivalJawLaugh .42s ease-in-out infinite;transform-origin:50% 0}

/* Continuous surfaces stop before the camera; no rotating floor crosses its plane. */
.corridor{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none;background:#211b29;opacity:0;visibility:hidden;perspective:var(--passage-perspective,650px);perspective-origin:50% 46%;transition:opacity 1.2s}
[data-scene=corridor] .corridor{opacity:1;visibility:visible}
.corridor.corridor-static{perspective:none;background:linear-gradient(180deg,#100c19aa 0%,#11101b44 48%,#100b16aa 100%),url('assets/corridor.webp') center/cover no-repeat;transition:none}
[data-scene=corridor] .world{opacity:0}
.corridor-world{position:absolute;left:50%;top:46%;width:0;height:0;transform-style:preserve-3d}
.corridor-segment{position:absolute;width:0;height:0;transform-style:preserve-3d}
.passage-floor,.passage-ceiling{position:absolute;left:-500px;width:1000px;height:var(--passage-length);transform-origin:50% 0;transform:translateZ(var(--passage-front)) rotateX(-90deg)}
.passage-floor{top:400px}
.passage-floor .passage-material{background-image:radial-gradient(ellipse 95px 70px at 22% 43%,#e3543328,transparent 88%),radial-gradient(ellipse 75px 90px at 76% 64%,#e3543322,transparent 85%),radial-gradient(ellipse 155px 105px at 15% 50%,#08050bbf 0%,#08050b60 38%,transparent 100%),radial-gradient(ellipse 155px 105px at 85% 50%,#08050bbf 0%,#08050b60 38%,transparent 100%),url('assets/rhr-stone-floor.webp');background-size:500px 400px,500px 400px,1000px 800px,1000px 800px,500px 400px;background-repeat:repeat,repeat,repeat-y,repeat-y,repeat;background-position:0 0,0 0,0 -400px,0 -400px,0 0;filter:brightness(.92)}
.passage-ceiling{top:-400px}
.passage-ceiling .passage-material{background-image:linear-gradient(#25192318,#25192318),url('assets/rhr-stone-floor.webp');background-size:100% 100%,500px 400px;filter:brightness(.9)}
.passage-wall{position:absolute;top:-400px;width:var(--passage-length);height:800px;transform-origin:0 50%}
.passage-wall .passage-material{background:radial-gradient(ellipse 110px 90px at 34% 52%,#e354331b,transparent 95%) 0 0/800px 800px,linear-gradient(90deg,#78463620,#21172300 60%,#09070d22),url('assets/rhr-stone-wall.webp') 0 0/800px 800px;filter:brightness(.9)}
.wall-left{left:-500px;transform:translateZ(var(--passage-front)) rotateY(90deg)}
.wall-right{left:500px;transform:translateZ(var(--passage-far)) rotateY(-90deg)}
.passage-column{position:absolute;top:-400px;width:500px;height:800px;object-fit:contain;transform:translateZ(4px);filter:sepia(.17) saturate(.86) brightness(.85)}
.column-left{left:-600px}.column-right{left:100px;transform:translateZ(4px) scaleX(-1)}
.passage-door{position:absolute;top:-260px;width:440px;height:660px;object-fit:contain;transform-origin:0 50%;transform:translateZ(-100px) rotateY(90deg);filter:sepia(.2) saturate(.8) brightness(.82)}
.door-on-left{left:-497px}.door-on-right{left:497px;transform:translateZ(-100px) rotateY(-90deg)}
.passage-sign.shaft-sign{position:absolute;top:-130px;width:280px;min-width:0;margin:0;padding:20px 18px;font:700 21px/1.25 Georgia;opacity:0;transform-origin:0 50%;box-sizing:border-box;pointer-events:none}
.passage-sign.sign-left{left:-494px;transform:translateZ(330px) rotateY(90deg)!important}
.passage-sign.sign-right{left:494px;transform:translateZ(-85px) rotateY(-90deg)!important}
.passage-fog{position:absolute;left:-1350px;top:-980px;width:2700px;height:1960px;pointer-events:none;transform:translateZ(var(--fog-depth));background:radial-gradient(ellipse at 50% 52%,#62505af0 0%,#4d3944eb 38%,#30232cb8 62%,#30232c00 87%)}
.passage-fog-far{transform:translateZ(-1700px);background:radial-gradient(ellipse at 50% 52%,#59454ff5 0%,#4b3641ec 48%,#30232cba 75%,transparent 94%)}
.passage-fog-near{background:radial-gradient(ellipse at 50% 52%,#b7929a80 0%,#96727c68 28%,#70515d35 54%,transparent 82%)}
.corridor:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 36vw 27vh at 50% 46%,#a7828952 0%,#92697335 38%,#72526014 68%,transparent 100%),radial-gradient(ellipse at 50% 46%,transparent 18%,#33232e16 58%,#08040b47 100%);pointer-events:none}
.corridor-exit .corridor{opacity:0}
.corridor-mobile{height:100lvh;bottom:auto}
.corridor-mobile .passage-floor .passage-material{background-image:radial-gradient(ellipse 95px 70px at 22% 43%,#e3543328,transparent 88%),radial-gradient(ellipse 75px 90px at 76% 64%,#e3543322,transparent 85%),radial-gradient(ellipse 155px 105px at 15% 50%,#08050bbf,transparent),radial-gradient(ellipse 155px 105px at 85% 50%,#08050bbf,transparent),url('assets/mobile/rhr-stone-floor.webp')}
.corridor-mobile .passage-ceiling .passage-material{background-image:linear-gradient(#c17b3920,#c17b3920),url('assets/mobile/rhr-stone-floor.webp')}
.corridor-mobile .passage-wall .passage-material{background-image:radial-gradient(ellipse 110px 90px at 34% 52%,#e354331b,transparent 95%),linear-gradient(90deg,#78463620,#21172300 60%,#09070d22),url('assets/mobile/rhr-stone-wall.webp')}
.corridor-mobile .passage-sign{box-shadow:inset 0 0 0 2px #27140b;text-shadow:none}
.tutorial-lesson{display:grid;grid-template-columns:minmax(110px,180px) 1fr;gap:24px;align-items:center;margin:18px 0}
.tutorial-lesson img{width:100%;max-height:210px;object-fit:contain;pointer-events:none!important;-webkit-user-drag:none}
#tutorial .rules-sheet #tutorialTitle,#tutorial .rules-sheet #ruleProgress,#tutorialCopy{text-align:left}
#tutorialCopy{padding-left:22px;margin:0;font-size:17px;line-height:1.55;max-width:none}
#tutorialCopy li{margin:8px 0;padding-left:3px}
#tutorialCopy li::marker{color:#ffc779}
.chip-sprite{background:url('assets/chip-bites.webp') 0 50%/400% 100% no-repeat;width:clamp(150px,28vw,300px);aspect-ratio:1;filter:drop-shadow(0 10px 30px #f06b2733)}
.arrival-chip{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);width:clamp(140px,20vw,240px)}
.countdown .chip-sprite{flex-shrink:0}
.countdown strong{font-size:clamp(64px,12vh,120px);line-height:1}
.countdown p{margin:12px 0;max-width:560px}
.countdown .kicker{font-size:clamp(16px,3vw,23px);letter-spacing:.08em}
@media(max-width:600px){header{padding:8px 4vw}header img{width:86px}header nav{max-width:74%;gap:5px}nav button,nav a{font-size:12px;padding:8px}.language-picker select{font-size:13px;min-height:34px;width:102px}.hall-host{gap:12px}.hall-host .avatar{width:65px!important}.hall-host .speech{font-size:14px!important}.tutorial-lesson{grid-template-columns:1fr;gap:8px;margin:10px 0}.tutorial-lesson img{height:110px;width:100%;margin:auto}#tutorialCopy{font-size:16px;line-height:1.4}#tutorialCopy li{margin:6px 0}.countdown{padding:18px}.countdown .chip-sprite{width:min(220px,30vh)}}
@media(prefers-reduced-motion:reduce){.corridor{transition:none}.hall-host.talking .skull-jaw>img{animation:none}}

.entry-confirm{padding:20px!important;gap:18px!important;align-items:center!important;border:1px solid #b78952;background:#36201588;border-radius:4px;cursor:pointer;font-size:17px!important;line-height:1.5!important}.entry-confirm input{width:36px!important;height:36px!important;margin:0;cursor:pointer}.entry-confirm:has(input:focus-visible){outline:3px solid #ffd08a;outline-offset:4px}#entryHint{color:#f1c88a}
.tutorial-controls{display:flex!important;align-items:center;justify-content:center;gap:18px;margin:14px 0 8px}.tutorial-controls button{min-width:48px;min-height:44px;padding:8px 16px;font-size:22px}.tutorial-controls .tutorial-dots{margin:0;flex:none}.rules-sheet.last-rule #tutorialNext{font-size:16px}#tutorialHint{margin:8px 0;text-align:center}.rules-sheet{padding-bottom:24px}
.tutorial-controls #tutorialBack{display:inline-block;width:auto}
.tutorial-controls #tutorialNext{width:auto}

@media(max-width:760px),(pointer:coarse){.fire-back{filter:none}.visual-scroll-pause .fire-back,.visual-scroll-pause .fire-front,.visual-scroll-pause .avatar,.visual-scroll-pause .eye img,.visual-scroll-pause .shaft-far,.visual-scroll-pause .shaft-near,.visual-scroll-pause .shaft:after{animation-play-state:paused!important}}
/* Spend viewport height on the task, not empty space. Scrolling remains a fallback. */
.screen:not(#intro){min-height:0;padding-bottom:max(24px,env(safe-area-inset-bottom))}
#tutorial .host{flex-direction:row;justify-content:center;align-items:center;gap:14px;width:100%;max-width:760px}
#tutorial .host .avatar{width:52px!important;flex:none}
#tutorial .host .speech{margin:0;flex:1;max-width:610px;width:auto;font-size:15px;line-height:1.4}
#tutorial .rules-sheet{margin-top:10px}
#tutorial .tutorial-dots{margin:0}
#setupError:empty{display:none}
#setup .sheet h1,#entry .sheet h1{font-size:clamp(28px,4vw,46px);margin:10px 0 16px}
#setup .actions,#entry .actions{margin:16px 0 4px}
@media(max-width:760px),(max-height:760px){
 header{min-height:60px;padding:6px 4vw}header img{width:84px}
 #entry .compact-host .avatar,#setup .compact-host .avatar,#results .compact-host .avatar{width:44px!important}
 .compact-host .host{gap:12px}
 .compact-host .speech{min-height:0!important;padding:9px 12px!important;line-height:1.35!important}
 .screen{padding-top:6px}.sheet{padding:18px;margin-top:10px}
 .sheet p{margin:10px 0;line-height:1.45}
 #tutorial>.kicker{margin:0 0 6px}
 #tutorial .rules-sheet{padding:16px}
 #tutorialTitle{margin:0 0 10px;font-size:clamp(24px,4vw,30px)}
 .tutorial-lesson{grid-template-columns:90px minmax(0,1fr);gap:12px;margin:10px 0}
 .tutorial-lesson img{height:100px;max-height:100px;width:90px}
 #tutorialCopy{font-size:16px;line-height:1.35;padding-left:18px;margin:0}
 #tutorialCopy li{margin:6px 0}
 .rule-progress{margin:8px 0;font-size:14px}
 #tutorialHint{margin:6px 0 0;font-size:14px}
 #setup .rune-grid{margin:12px 0;gap:8px}
 #setup .nickname{margin:8px 0}
 #setup .nickname input{font-size:16px;padding:10px}
 .entry-confirm{padding:14px!important;font-size:16px!important}
 #arena .host .avatar{width:70px!important}
 #arena .host .speech{margin-top:6px;min-height:0;padding:8px 12px;font-size:15px}
 .clock{font-size:clamp(64px,10vh,92px)}
 .milestones{margin:10px 0}
}
@media(max-width:380px){.tutorial-lesson{grid-template-columns:68px minmax(0,1fr);gap:9px}.tutorial-lesson img{width:68px;height:85px}.sheet{padding:14px}.entry-confirm{gap:12px!important}}
@media(min-width:440px) and (max-height:760px){.names-grid{grid-template-columns:1fr 1fr}}
@media(max-height:500px) and (min-width:650px){
 #tutorial .host-slot,#entry .host-slot,#setup .host-slot{max-width:760px;margin:0 auto}
 #tutorial .host .avatar,.compact-host .host .avatar{width:30px!important}
 #tutorial .host .speech,.compact-host .speech{padding:5px 10px!important;min-height:0!important}
 #tutorial .tutorial-lesson{grid-template-columns:95px minmax(0,1fr)}
 #tutorial .rules-sheet{padding:12px 18px}
}

.passage-floor,.passage-ceiling,.passage-wall{overflow:hidden}
.passage-material{position:absolute;inset:-800px 0 0;will-change:transform}
.passage-wall .passage-material{inset:0 0 0 -800px}
