@font-face{font-family:'DM Sans';src:url('assets/fonts/DMSans.ttf') format('truetype');font-weight:100 1000;font-style:normal;font-display:swap}
@font-face{font-family:'Space Grotesk';src:url('assets/fonts/SpaceGrotesk.ttf') format('truetype');font-weight:300 700;font-style:normal;font-display:swap}
:root{--ink:#211b35;--paper:#f5e9ce;--copper:#ffbf6d;--mint:#a6f0d0;--violet:#b9a1e3}*{box-sizing:border-box}body{margin:0;background:var(--ink);overflow:hidden;color:var(--paper);font:14px 'DM Sans',sans-serif}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--mint);outline-offset:3px}#world{position:fixed;inset:0;width:100%;height:100%;display:block}#vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 45%,transparent 40%,#19132665)}#flash{position:fixed;inset:0;pointer-events:none;background:#a6f0d0;opacity:0;transition:opacity .35s}#hud{position:fixed;inset:24px 30px auto;display:flex;justify-content:space-between;align-items:center;pointer-events:none;text-shadow:0 2px 4px #211b35}.brand{display:flex;gap:12px;align-items:center;font:700 22px 'Space Grotesk';letter-spacing:2px}.brand-mark{border:2px solid #f5e9ce99;border-radius:11px;padding:5px 9px;font-size:28px}.brand small,.location small{display:block;font:10px 'DM Sans';letter-spacing:2px;margin-top:4px;opacity:.7}.location{text-align:center;font:500 16px 'Space Grotesk'}.connection{display:flex;align-items:center;gap:9px;font:10px 'Space Grotesk';letter-spacing:1px}.connection button{pointer-events:auto;border:1px solid #f5e9ce40;background:#211b3570;border-radius:50%;width:30px;height:30px}.connection i{width:7px;height:7px;background:#ecad77;border-radius:50%}.connection i.online{background:var(--mint);box-shadow:0 0 12px var(--mint)}#crosshair{position:fixed;left:50%;top:50%;width:16px;height:16px;transform:translate(-50%,-50%);pointer-events:none}#crosshair i{position:absolute;border:1px solid #fff9;width:4px;height:4px;border-radius:50%;top:6px;left:6px}#crosshair i+ i{width:24px;height:24px;left:-4px;top:-4px;border-color:#ffffff25}#interaction{position:fixed;top:57%;left:50%;transform:translateX(-50%);text-align:center;pointer-events:none;text-shadow:0 2px 4px #111;min-width:240px}#interaction strong{display:block;font:600 20px 'Space Grotesk';margin-bottom:8px}#interaction span{background:#211b35c9;border:1px solid #c3b5d858;border-radius:6px;padding:8px 14px;font-size:12px}kbd{font:10px 'Space Grotesk';border:1px solid #ddd6;border-radius:4px;padding:3px 5px;margin:0 4px;background:#211b3580}#bottom{position:fixed;bottom:20px;left:25px;right:25px;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:12px}.movement,.shortcuts{font-size:11px;opacity:.75;text-shadow:0 2px 3px #000}#tools{display:flex;gap:5px;pointer-events:auto}#tools button{width:62px;height:65px;border:1px solid #d4bdd352;background:#211b35da;border-radius:9px;position:relative;transition:.18s}.slot-symbol{font-size:24px;color:#c6b6db;display:block}.slot-name{font-size:9px}.slot-key{position:absolute;top:5px;left:6px;font-size:9px;color:#ccc8}#tools button.active{border:2px solid var(--copper);transform:translateY(-8px);background:#46334a;box-shadow:0 7px 30px #0d0b2455}#tools button.active .slot-symbol{color:var(--copper)}#map{position:fixed;right:25px;bottom:170px;border:1px solid #e9d8b744;border-radius:50%;background:#211b35bb;pointer-events:none}#mapLabel{position:fixed;right:24px;bottom:150px;font-size:8px;letter-spacing:1px;width:170px}#mapLabel span{float:right}#equipment{position:fixed;right:1%;bottom:105px;width:430px;height:340px;pointer-events:none;transform-origin:bottom right;transition:opacity .4s}#tabletArt{position:absolute;inset:-30px -70px -75px -100px;width:600px;height:450px;object-fit:contain;opacity:0}#tabletArt.loaded{opacity:1}.tool-device{position:absolute;right:16px;top:62px;width:250px;height:203px;background:linear-gradient(130deg,#343049,#171524);border:5px solid #94613d;border-radius:14px;box-shadow:0 0 0 3px #241e30,0 0 0 7px #654b53,0 12px 0 #332433,0 20px 35px #1118;transform:rotate(-7deg) skewY(2deg);padding:14px}.device-top,.device-bottom{font:8px monospace;letter-spacing:1px;display:flex;justify-content:space-between;color:#caaf80}.device-top i{width:5px;height:5px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px var(--mint)}.device-symbol{font:50px 'Space Grotesk';color:var(--mint);text-shadow:0 0 20px #a6f0d060;float:right;padding:9px}.tool-device strong{font:600 21px 'Space Grotesk';display:block;margin:23px 0 8px}.tool-device code{font:9px monospace;color:var(--mint);display:block;min-height:32px}.device-bottom{border-top:1px solid #aa997133;padding-top:11px;font-size:7px}.cuff{position:absolute;bottom:-30px;right:5px;width:90px;height:90px;border:5px solid #211b35;background:linear-gradient(100deg,#6a4d88,#3b2d52);transform:rotate(-30deg);border-radius:25px}#shelf{position:fixed;top:120px;left:0;display:flex;flex-direction:column;gap:12px;z-index:6}#shelf button{width:126px;margin-left:-28px;padding:13px 10px 13px 40px;background:linear-gradient(110deg,#30263d,#57415d);border:2px solid #b38859;border-radius:0 10px 10px 0;box-shadow:3px 5px 0 #221a29;color:var(--paper);text-align:left;transition:.25s;font-size:11px;position:relative;animation:shelve .65s cubic-bezier(.2,.9,.2,1)}#shelf button:hover{width:190px}#shelf b{font:22px 'Space Grotesk';color:var(--mint);display:inline-block;margin-right:5px}#shelf small{display:block;font-size:8px;opacity:.65;margin-top:4px}@keyframes shelve{from{transform:translate(50vw,35vh) rotate(16deg) scale(3);opacity:.2}to{transform:translate(0) scale(1);opacity:1}}#toast{position:fixed;top:110px;left:50%;transform:translateX(-50%) translateY(-15px);background:#211b35ec;border:1px solid #c5b49755;border-radius:9px;padding:13px 22px;font-size:12px;opacity:0;transition:.3s;pointer-events:none;z-index:12}#toast.show{opacity:1;transform:translateX(-50%)}#result{position:fixed;left:16%;top:17%;width:430px;max-height:65vh;background:linear-gradient(120deg,#1d353ce8,#25233bed);border:1px solid #a6f0d080;border-radius:14px;padding:21px;box-shadow:0 0 45px #a6f0d01a;backdrop-filter:blur(8px);z-index:7;animation:projection .5s ease}#result:before{content:'';position:absolute;inset:-8px;border:1px solid #a6f0d030;border-radius:18px;pointer-events:none}.result-head{font:9px monospace;color:var(--mint);letter-spacing:2px;display:flex;justify-content:space-between}.result-head button{border:0;background:none;font-size:18px}#result h2{font:500 24px 'Space Grotesk';margin:9px 0 12px}#resultCode{font:10px monospace;color:var(--mint);padding:10px;background:#0003;border-radius:5px;margin-bottom:12px}#rows{max-height:36vh;overflow:auto}#rows table{width:100%;border-collapse:collapse;font-size:11px}#rows td,#rows th{padding:7px 6px;text-align:left;border-bottom:1px solid #bde8d51c}#rows th{font:9px monospace;color:#b8cabf}#rows tr{animation:rowin .4s both}#rows td:first-child{color:var(--copper)}#resultFoot{font:9px monospace;margin-top:14px;opacity:.6}@keyframes projection{from{transform:translateY(40px) scale(.8);opacity:0}to{transform:none;opacity:1}}@keyframes rowin{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}#scan{position:fixed;top:38%;left:50%;transform:translateX(-50%);width:320px;display:none;color:var(--mint);text-shadow:0 0 12px #a6f0d0}.scanning #scan{display:block}#scan>div{display:flex;justify-content:space-between;font:10px monospace;letter-spacing:2px}#scan i{display:block;height:3px;background:#a6f0d02a;margin:12px 0}#scan b{display:block;width:0;height:100%;background:var(--mint);box-shadow:0 0 15px var(--mint)}#scan code{font-size:10px;color:#fff}@keyframes draw{from{transform:translateY(230px) rotate(40deg)}to{transform:none}}#equipment.draw{animation:draw .4s cubic-bezier(.25,.8,.3,1)}#modalBackdrop{position:fixed;inset:0;background:#1713218c;backdrop-filter:blur(7px);display:grid;place-items:center;z-index:20}#modal{width:650px;max-width:94vw;max-height:88vh;overflow:auto;position:relative;background:linear-gradient(130deg,#45344e,#292335);border:3px solid #a7835d;box-shadow:0 0 0 4px #201a2b,0 25px 80px #0008;border-radius:21px;padding:30px;color:var(--paper);animation:projection .3s ease}.close{position:absolute;right:15px;top:12px;border:0;background:none;font-size:25px}#modal h2{font:500 32px 'Space Grotesk';margin:6px 0 13px}#modal p{color:#d5c9d8;font-size:13px;line-height:1.7}.eyebrow{font:10px 'Space Grotesk';letter-spacing:3px;color:var(--copper)}label{font:10px 'Space Grotesk';letter-spacing:1px;display:block;margin:15px 0;color:#c7b9ce}input,select{display:block;width:100%;border:1px solid #aa94b750;color:var(--paper);background:#201c30;border-radius:6px;padding:11px;margin-top:7px;outline:none}input:focus,select:focus{border-color:var(--mint)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.action{border:0;border-radius:8px;padding:12px 19px;background:var(--copper);color:var(--ink);font-weight:700}.secondary{border:1px solid #a98dac88;background:#43364c;color:var(--paper);border-radius:7px;padding:11px 16px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.hint{font:11px monospace;line-height:1.8;background:#1b1928;padding:13px;border:1px solid #a6f0d027;border-radius:6px;color:var(--mint)}.step{display:grid;grid-template-columns:35px 1fr 95px 28px;align-items:center;gap:8px;background:#19172960;border-radius:8px;padding:10px;margin:8px 0}.step select,.step input{margin:0;padding:9px;font-size:11px}.step b{font:22px 'Space Grotesk';color:var(--copper)}.step button{background:transparent;border:0}.npc-dialog{display:flex;gap:20px}.npc-dialog img{width:180px;height:240px;object-fit:contain;background:radial-gradient(ellipse,#b9a1e330,transparent);align-self:center}.npc-dialog>div{flex:1}#welcome{position:fixed;inset:0;background:linear-gradient(90deg,#211b35f5,#211b35bd 37%,transparent 76%);z-index:30;display:flex;align-items:center;padding:8vw}.welcome-copy{max-width:460px}.welcome-copy h1{font:500 clamp(54px,6vw,86px)/1.02 'Space Grotesk';letter-spacing:-4px;margin:23px 0}.welcome-copy em{color:var(--copper);font-style:normal}.welcome-copy p{font-size:15px;line-height:1.8;color:#d9cde0;max-width:340px}.welcome-details{display:flex;gap:15px;margin:26px 0;font-size:10px;color:var(--mint)}#enter{background:var(--copper);border:0;border-radius:9px;width:310px;max-width:100%;padding:17px 22px;font-weight:700;text-align:left;box-shadow:0 7px 0 #80593f}#enter span{float:right}#welcome small{display:block;font-size:10px;line-height:1.8;color:#baadbf;margin-top:22px}.welcome-title{position:absolute;right:6vw;bottom:12vh;text-align:right;text-shadow:0 2px 9px #0005}.welcome-title>span{display:block;font:700 38px 'Space Grotesk';letter-spacing:6px}.welcome-title small{margin:5px 0;font-size:11px;letter-spacing:4px}.welcome-title div{font-size:8px;letter-spacing:2px;margin-top:24px;color:#d4c9d6}.hidden{display:none!important}#fatal{position:fixed;inset:20%;z-index:40;background:#292335;padding:40px;border-radius:20px}body.modal #equipment{opacity:.25}body.cursor #crosshair{opacity:.3}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-thumb{background:#b9a1e355;border-radius:9px}@media(max-width:900px){.movement{display:none}.location{display:none}#equipment{transform:scale(.75);right:-40px;bottom:80px}#result{left:8%;width:360px}#map{width:125px;height:125px;bottom:150px}#mapLabel{width:125px;bottom:135px}#tools button{width:48px;height:58px}#hud{inset:18px}.welcome-title{display:none}#bottom{bottom:15px}.shortcuts{font-size:9px}.npc-dialog img{width:120px}.step{grid-template-columns:25px 1fr 70px 20px}}

/* Keep the HUD compact on tall embedded browser panels. */
@media(max-width:900px){#hud{inset:18px 18px auto}#map{top:83px;bottom:auto}#mapLabel{top:214px;bottom:auto}.brand{font-size:17px}.brand small{font-size:8px}}
@media(min-width:901px){#map{top:100px;bottom:auto}#mapLabel{top:279px;bottom:auto}}
.tool-device{left:55px;right:auto;top:76px;width:305px;height:190px;background:transparent;border:0;box-shadow:none;transform:rotate(-5deg);padding:17px 22px}.device-symbol{font-size:45px}.cuff{display:none}
body:not(.playing) #hud,body:not(.playing) #bottom,body:not(.playing) #map,body:not(.playing) #mapLabel,body:not(.playing) #equipment,body:not(.playing) #crosshair{visibility:hidden}
#fnCode{white-space:pre-wrap}

/* Revision 4: clear interaction space and compact first-person equipment. */
#equipment{right:-20px;bottom:-70px;width:clamp(430px,49vw,650px);height:auto;aspect-ratio:3/2;transform:none;z-index:2;transition:opacity .25s,filter .25s,translate .25s}
#tabletArt{inset:0;width:100%;height:100%;object-fit:contain}
.tool-device{left:19%;top:23%;width:63%;height:48%;padding:0 6%;transform:rotate(-5deg);overflow:hidden}
.device-top{font-size:clamp(7px,.6vw,9px)}.tool-device strong{font-size:clamp(18px,1.7vw,25px);margin:20px 0 8px}.tool-device code{font-size:clamp(8px,.7vw,10px);min-height:32px}.device-symbol{font-size:40px;padding:6px}.device-bottom{font-size:7px;padding-top:7px}.cuff{display:none}
#interaction{z-index:15;top:51%;bottom:auto;transform:translate(-50%,-50%);max-width:calc(100vw - 36px);min-width:0;padding:13px 20px;background:#211b35ec;border:1px solid #c0a9cc88;border-radius:12px;box-shadow:0 6px 22px #17102155;white-space:normal}
#interaction:empty{display:none}#interaction strong{font-size:18px}#interaction span{background:none;border:0;padding:0;font-size:12px}
body.interacting #equipment{opacity:1;filter:brightness(.9);margin-bottom:-25px}body.modal #equipment,body.third-person #equipment,body.map-expanded #equipment{display:none}
body.third-person #crosshair{opacity:.45}
.connection #viewMode{width:auto;border-radius:7px;padding:0 9px;height:30px;font-size:9px;letter-spacing:.6px;background:#30283dd9}
#mapPanel{position:fixed;top:94px;right:22px;width:242px;background:#352b40f5;border:1px solid #b59b79;border-radius:12px;padding:8px;box-shadow:0 6px 25px #17132155;z-index:8}
#map{position:static;display:block;width:100%;height:auto;aspect-ratio:8/7;border-radius:7px;border:0;background:#b8af87;pointer-events:none}
.map-title{display:flex;justify-content:space-between;align-items:center;font:9px 'Space Grotesk';letter-spacing:1.7px;color:var(--copper);margin:0 3px 7px}.map-title button{border:0;background:transparent;font-size:17px}.map-title kbd{font-size:8px}
#mapLabel{position:static;display:flex;justify-content:space-between;gap:8px;width:auto;font-size:7px;letter-spacing:.6px;padding:8px 2px 3px}#mapLabel span{float:none}.map-legend{display:none;gap:20px;justify-content:center;font-size:11px;margin:10px 0 4px}
body.map-expanded:after{content:'';position:fixed;inset:0;background:#19162499;backdrop-filter:blur(5px);z-index:19}body.map-expanded #mapPanel{z-index:21;top:50%;left:50%;right:auto;width:min(82vh,88vw,790px);transform:translate(-50%,-50%);padding:15px}.map-expanded .map-legend{display:flex}.map-expanded .map-title{font-size:12px}.map-expanded #mapLabel{font-size:9px}
body:not(.playing) #mapPanel{visibility:hidden}.actor-portrait{width:135px;min-width:135px;height:250px;background-repeat:no-repeat;background-size:800% 400%;background-position:0 0;align-self:center}
@media(max-width:900px){#equipment{right:-13px;bottom:90px;transform:none;width:260px}.connection{gap:5px}.connection #viewMode{font-size:8px;padding:0 6px}.connection #connLabel{display:none}#mapPanel{top:76px;right:15px;width:196px}#mapLabel{font-size:6px}.movement{display:block;font-size:9px}#interaction{bottom:148px;padding:10px 14px}#interaction strong{font-size:15px}#result{width:min(370px,88vw);left:6%}#shelf button{width:106px;font-size:10px;padding-left:35px}#shelf button:hover{width:160px}}
@media(max-width:550px){.brand small{display:none}.brand{font-size:13px;gap:6px}.brand-mark{font-size:19px;padding:4px 6px}#hud{inset:12px 12px auto}.connection button{width:26px;height:26px}#mapPanel{width:162px;top:62px;right:12px}#equipment{width:215px;bottom:112px;right:-28px}.movement{font-size:8px}.shortcuts{font-size:8px}#tools{gap:3px}#tools button{width:39px;height:53px}.slot-symbol{font-size:19px}.slot-name{font-size:7px}#bottom{left:8px;right:8px;gap:9px}#interaction{bottom:144px;max-width:calc(100vw - 18px)}#modal{padding:24px 18px}.npc-dialog{gap:10px}.actor-portrait{width:90px;min-width:90px;height:195px}#shelf{top:88px;gap:7px}#shelf button{width:96px;padding:10px 6px 10px 32px}body.interacting #equipment{opacity:1}#mapLabel span:last-child{display:none}}

/* Forearms continue through the frame edge; portrait crops keep source proportions. */
.actor-portrait{display:block;overflow:hidden;flex:0 0 135px;width:135px;height:250px;min-width:0;background:none}
.npc-dialog>div{min-width:0}
body:not(.third-person) #bottom{align-items:flex-start;left:28px;z-index:5}
body:not(.third-person) #tools button{width:clamp(42px,4.5vw,62px)}
.slot-name{white-space:nowrap;font-size:8px}#tools button{padding:2px}
#hud{justify-content:flex-end}
#enter:disabled{opacity:.6;cursor:wait;box-shadow:none}.npc-dialog .actor-portrait{object-fit:contain;border-radius:12px;background:radial-gradient(ellipse,#9eb8aa25,transparent);height:220px;width:155px;flex-basis:155px}
body.third-person #interaction{top:auto;bottom:169px;transform:translateX(-50%)}
@media(max-width:900px){#equipment{width:clamp(370px,52vw,500px);right:-20px;bottom:-62px}#interaction{top:51%;bottom:auto}}
@media(max-width:550px){#equipment{width:355px;right:-48px;bottom:-46px}.actor-portrait{flex-basis:95px;width:95px;height:220px}#interaction{top:49%;bottom:auto}body.third-person #interaction{top:auto;bottom:144px}.tool-device strong{font-size:17px;margin-top:14px}.tool-device code{font-size:8px}body:not(.third-person) #bottom{left:8px}body:not(.third-person) #tools button{width:39px}}

body.holding-loop #equipment{visibility:hidden}#toolState{font-size:10px;letter-spacing:.5px;color:#c4e5d2;min-height:13px}#tools button[aria-pressed="true"]{box-shadow:0 0 16px #8ae6c340;border-color:#8ae6c3}

body.third-person #interaction{left:calc(50% + 210px);bottom:177px;max-width:240px}body.scanning #interaction,body:has(#result:not(.hidden)) #interaction{opacity:0;pointer-events:none}
@media(max-width:650px){body.third-person #interaction{left:50%;bottom:153px}}

/* A short threshold dissolve covers the change in physical space and lighting. */
#vaultFade{position:fixed;inset:0;z-index:40;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 50% 48%,#0a1724,#03060e 70%)}
.vault-transition #interaction{opacity:0}.in-vault #vignette{background:radial-gradient(ellipse at center,transparent 38%,#03071570)}
.in-vault #mapPanel{background:#0b1826ef;border-color:#6b9997}.in-vault #map{background:#0a1521}.in-vault #mapLabel{color:#add6cd}.in-vault #equipment{filter:brightness(.72) saturate(.72)}

/* Phone controls, safe areas and panels use the visible viewport in both orientations. */
html,body{height:100%;overscroll-behavior:none}#world,#touchLook{touch-action:none}button{-webkit-tap-highlight-color:transparent}input,select{font-size:16px}#mobileControls,#touchStick{display:none}
#liftStatus{position:fixed;z-index:16;top:12%;left:50%;transform:translateX(-50%);width:min(360px,85vw);padding:15px 20px;background:#091923e8;border:1px solid #91dacb;border-radius:12px;text-align:center;pointer-events:none;backdrop-filter:blur(8px)}#liftStatus>span{font:9px monospace;letter-spacing:3px;color:var(--mint)}#liftStatus strong{display:block;margin:8px;font:18px 'Space Grotesk'}#liftStatus i{display:block;height:3px;background:#70e5d125}#liftProgress{display:block;width:0;height:100%;background:var(--mint);box-shadow:0 0 12px var(--mint)}
.floor-option{display:flex;width:100%;align-items:center;justify-content:space-between;text-align:left;padding:16px;margin-top:12px;border:1px solid #a6f0d05a;border-radius:10px;background:#132934;color:var(--paper)}.floor-option span{display:block;font-size:12px;color:#a6d7cc;margin-top:5px}.floor-option b{font:20px 'Space Grotesk'}.floor-option:disabled{opacity:.5;cursor:default}.floor-option i{font-style:normal;font-size:11px;color:var(--copper)}
.touch-mode #mobileControls{display:block;position:fixed;inset:0;pointer-events:none;z-index:11}.touch-mode:not(.playing) #mobileControls,.touch-mode.modal #mobileControls,.touch-mode.map-expanded #mobileControls{display:none}
.touch-mode #bottom,.touch-mode:not(.third-person) #bottom{left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));align-items:center;gap:0;z-index:11}.touch-mode .movement,.touch-mode .shortcuts,.touch-mode #toolState{display:none}.touch-mode #tools{max-width:100%;width:max-content;overflow-x:auto;overscroll-behavior:contain;padding:8px 2px 2px;gap:5px;touch-action:pan-x;scrollbar-width:none}.touch-mode #tools button,.touch-mode:not(.third-person) #tools button{flex:0 0 48px;width:48px;height:52px;padding:3px}.touch-mode #tools button.active{transform:translateY(-4px)}.touch-mode .slot-name{font-size:8px}.touch-mode .slot-symbol{font-size:21px}.touch-mode .slot-key{display:none}
.mobile-buttons{position:absolute;right:max(12px,env(safe-area-inset-right));bottom:calc(151px + env(safe-area-inset-bottom));display:grid;grid-template-columns:68px 78px;gap:7px;pointer-events:auto}.mobile-buttons button,#touchLook{min-height:44px;border:1px solid #c4b18f88;border-radius:12px;background:#10212cda;backdrop-filter:blur(7px);color:#eaf4e8;font:9px 'Space Grotesk';letter-spacing:.5px;touch-action:manipulation}.mobile-buttons #touchAction{background:#b8e7ce;color:#112921;border-color:#d4f0df;font-weight:700}.mobile-buttons #touchInteract{font-size:8px}#touchLook{position:absolute;pointer-events:auto;right:max(18px,env(safe-area-inset-right));bottom:calc(77px + env(safe-area-inset-bottom));width:62px;height:62px;touch-action:none;font-size:23px}#touchLook small{display:block;font-size:8px}.drag-hint{position:absolute;left:18px;bottom:calc(137px + env(safe-area-inset-bottom));font:9px 'Space Grotesk';letter-spacing:1px;text-shadow:0 1px 5px #000;line-height:1.7;color:#daf1de}.drag-hint small{font-size:8px;letter-spacing:0;opacity:.7}
.touch-mode #touchStick.active{display:block;position:fixed;z-index:10;width:84px;height:84px;transform:translate(-50%,-50%);border:1px solid #caf0d9aa;background:#21463455;border-radius:50%;pointer-events:none}.touch-mode #touchStick i{display:block;width:28px;height:28px;margin:27px;background:#c3eedcb0;border:1px solid #effff2;border-radius:50%}
.touch-mode #hud{top:max(10px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));left:12px}.touch-mode .connection button{width:38px;height:38px}.touch-mode #mapPanel{top:calc(59px + env(safe-area-inset-top));right:12px;width:120px;padding:5px;border-radius:9px}.touch-mode .map-title{font-size:7px;letter-spacing:1px;margin:0 0 3px}.touch-mode .map-title button{min-width:30px;min-height:28px}.touch-mode #mapLabel{font-size:7px;line-height:1.4;padding-top:4px}.touch-mode #mapLabel span+span,.touch-mode .map-title kbd{display:none}
.touch-mode #shelf{top:calc(60px + env(safe-area-inset-top));gap:6px;max-height:33dvh;overflow:auto;overscroll-behavior:contain;scrollbar-width:none}.touch-mode #shelf button{width:87px;margin-left:-17px;min-height:48px;padding:8px 6px 8px 24px;font-size:9px;overflow-wrap:anywhere}.touch-mode #shelf button:hover{width:87px}.touch-mode #shelf b{font-size:16px}.touch-mode #shelf small{font-size:7px;line-height:1.4}
.touch-mode #equipment{width:clamp(230px,70vw,330px);right:-35px;bottom:75px;opacity:.9}.touch-mode #equipment .device-top,.touch-mode #equipment .device-bottom{display:none}.touch-mode #equipment .tool-device strong{font-size:16px;margin:18px 0 5px}.touch-mode #equipment .tool-device code{font-size:7px;min-height:0}.touch-mode #equipment .device-symbol{font-size:25px}
.touch-mode #interaction,.touch-mode.third-person #interaction{top:auto;left:50%;bottom:calc(262px + env(safe-area-inset-bottom));transform:translateX(-50%);width:max-content;max-width:calc(100vw - 24px);padding:9px 14px}.touch-mode #interaction strong{font-size:13px;margin-bottom:4px}.touch-mode #interaction span{font-size:10px}.touch-mode #interaction kbd{display:none}.touch-mode #crosshair{opacity:.25}.touch-mode #toast{top:calc(58px + env(safe-area-inset-top));width:max-content;max-width:calc(100vw - 28px);padding:10px 13px;text-align:center;font-size:11px}
.touch-mode #result{left:8px;right:8px;top:calc(58px + env(safe-area-inset-top));width:auto;max-height:calc(100dvh - 325px);padding:14px;overflow:auto;overscroll-behavior:contain}.touch-mode #result h2{font-size:20px}.touch-mode #resultCode{font-size:10px;overflow-wrap:anywhere}.touch-mode #rows{max-height:28dvh;overflow:auto}.touch-mode #rows table{font-size:11px;min-width:300px}.touch-mode #rows td{padding:9px 5px}.touch-mode #resultFoot{line-height:1.6}.touch-mode #closeResult{width:36px;height:32px;font-size:24px}.touch-mode #scan{top:43%;width:min(300px,85vw)}.touch-mode #scan code{display:block;max-height:50px;overflow:hidden;overflow-wrap:anywhere}
.touch-mode #modalBackdrop{padding:12px 8px}.touch-mode #modal{width:100%;max-width:600px;max-height:calc(100dvh - 30px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:26px 17px 22px;overflow:auto;overscroll-behavior:contain;border-radius:15px}.touch-mode #modal h2{font-size:26px;padding-right:24px}.touch-mode #modal p{font-size:12px;line-height:1.65}.touch-mode .close{width:40px;height:40px;top:5px;right:4px}.touch-mode .eyebrow{font-size:9px;letter-spacing:2px;padding-right:22px}.touch-mode .hint{font-size:10px;overflow-wrap:anywhere}.touch-mode .step{grid-template-columns:22px minmax(0,1fr) 65px 28px;padding:8px;gap:5px}.touch-mode .step select,.touch-mode .step input{font-size:16px;padding:8px 5px}.touch-mode .step button{min-height:40px}.touch-mode .npc-dialog{flex-direction:column;align-items:center}.touch-mode .npc-dialog .actor-portrait{width:120px;height:155px;flex-basis:auto}.touch-mode .form-grid{grid-template-columns:1fr}.touch-mode .action,.touch-mode .secondary{min-height:44px}.touch-mode #fnCode{overflow-wrap:anywhere}
.touch-mode #welcome{padding:28px;align-items:center;background:linear-gradient(90deg,#14222aef,#211b35b5);overflow:auto}.touch-mode .welcome-copy{max-width:440px}.touch-mode .welcome-copy h1{font-size:clamp(46px,12vw,70px);letter-spacing:-3px;margin:18px 0}.touch-mode .welcome-copy p{font-size:13px;line-height:1.65;max-width:340px}.touch-mode .welcome-details{flex-wrap:wrap;gap:10px;margin:20px 0}.touch-mode .welcome-title{display:none}.touch-mode #welcome small{font-size:11px}.touch-mode #enter{min-height:52px}.touch-mode.map-expanded #mapPanel{width:min(92vw,74dvh);top:50%;left:50%;right:auto;padding:10px}.touch-mode.map-expanded #mapLabel span+span{display:block}.touch-mode.map-expanded .map-legend{font-size:9px;gap:12px}.touch-mode #fatal{inset:15px;padding:22px}
@media(max-height:520px){.touch-mode #mapPanel{width:94px;top:52px}.touch-mode .mobile-buttons{right:12px;bottom:75px;grid-template-columns:62px 75px}.touch-mode #touchLook{right:166px;bottom:75px}.touch-mode .drag-hint{bottom:135px}.touch-mode #interaction,.touch-mode.third-person #interaction{bottom:84px;left:50%;max-width:40vw}.touch-mode #result{top:8px;left:15%;right:25%;max-height:calc(100dvh - 78px)}.touch-mode #rows{max-height:40dvh}.touch-mode #welcome{padding:18px 28px}.touch-mode .welcome-copy h1{font-size:44px;margin:8px 0}.touch-mode .welcome-copy p{margin:8px 0}.touch-mode .welcome-details,.touch-mode #welcome small{margin:10px 0}.touch-mode #shelf{max-height:50dvh}}
.touch-mode #result{z-index:14;overflow-x:hidden}.touch-mode #result:before{display:none}.touch-mode:has(#result:not(.hidden)) #mapPanel{visibility:hidden}.touch-mode #resultFoot{overflow-wrap:anywhere}.touch-mode #closeResult{min-width:44px;min-height:40px}.touch-mode #rows{overscroll-behavior:contain;touch-action:pan-x pan-y}::-webkit-scrollbar{height:4px}
body:not([data-lift-phase="open"]) #interaction{opacity:0}body.touch-mode:not([data-lift-phase="open"]) #mapPanel{visibility:hidden}

/* Small audio/help circles sit beside the minimap's title row. */
:root{--mini-map-top:8px;--mini-map-right:22px;--mini-map-width:242px;--mini-map-controls-inset:1px}
@media(max-width:900px){:root{--mini-map-right:15px;--mini-map-width:196px}}
@media(max-width:550px){:root{--mini-map-right:12px;--mini-map-width:162px}}
body.touch-mode{--mini-map-top:calc(4px + env(safe-area-inset-top));--mini-map-right:8px;--mini-map-width:96px;--mini-map-controls-inset:1px}
@media(max-height:520px){body.touch-mode{--mini-map-width:88px}}
#hud,.touch-mode #hud{top:calc(var(--mini-map-top) + var(--mini-map-controls-inset));right:calc(var(--mini-map-right) + var(--mini-map-width) + 6px);left:auto;width:auto;z-index:9}
.connection{gap:2px}.connection button,.touch-mode .connection button{position:relative;isolation:isolate;width:32px;height:32px;padding:0;border:0;background:transparent;border-radius:50%;font-size:12px}
.connection button:before{content:'';position:absolute;inset:4px;z-index:-1;border:1px solid #f5e9ce40;background:#211b35b0;border-radius:50%}
body.map-expanded #hud,.touch-mode:has(#result:not(.hidden)) #hud{visibility:hidden}
.touch-mode #touchStick.running{border-color:var(--copper);box-shadow:0 0 18px #ffbf6d30}.touch-mode #touchStick.running i{background:var(--copper);border-color:#ffe5bd}

body:not(.map-expanded) #mapPanel,body.touch-mode:not(.map-expanded) #mapPanel{top:var(--mini-map-top);right:var(--mini-map-right);width:var(--mini-map-width)}
.touch-mode:not(.map-expanded) #mapPanel{padding:4px;border-radius:7px}.touch-mode:not(.map-expanded) .map-title{font-size:6px;letter-spacing:.6px;margin:0 1px 3px}.touch-mode:not(.map-expanded) .map-title button{min-width:26px;min-height:24px;font-size:14px;padding:0}.touch-mode:not(.map-expanded) #mapLabel{padding-top:3px;font-size:6px;letter-spacing:.3px}
.touch-mode #toast{top:calc(144px + env(safe-area-inset-top))}#touchAction{touch-action:none}body:not(.playing) #shelf{visibility:hidden}

/* Restrained dark-fantasy title screen; loading follows the actual character assets. */
#welcome,.touch-mode #welcome{padding:32px;display:grid;place-items:center;isolation:isolate;background:#06090c;overflow:auto}
#welcome:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 35%,#46342245,transparent 50%),linear-gradient(110deg,#0b1114,#06090c 52%,#101719)}
.splash-content{width:min(640px,100%);position:relative;text-align:center}.archive-crest{width:76px;height:95px;stroke:#b39a6b;stroke-width:1.1;filter:drop-shadow(0 0 18px #b599552b);margin-bottom:23px}
#welcome h1{margin:0;color:#e5d7ba;font:400 clamp(36px,6vw,70px)/1.15 Georgia,'Times New Roman',serif;letter-spacing:.15em;padding-left:.15em;text-shadow:0 2px 24px #000}
#welcome .splash-subtitle{font:10px 'Space Grotesk',sans-serif;letter-spacing:.4em;color:#9b957f;margin:15px 0 0;padding-left:.4em}
.splash-loading{width:min(240px,80%);margin:45px auto 24px}.splash-loading-label{display:flex;justify-content:space-between;font:9px 'Space Grotesk',sans-serif;letter-spacing:.9px;color:#8f8d7e;min-height:18px}.splash-loading-track{height:1px;background:#5b554333}.splash-loading-track i{display:block;width:0;height:100%;background:#bba37b;box-shadow:0 0 10px #bba37b40;transition:width .45s}
#welcome #enter{width:230px;max-width:85%;min-height:49px;padding:14px 24px;border:1px solid #8d78514d;border-radius:1px;background:#171b1a66;color:#cfbd98;box-shadow:none;font:10px 'Space Grotesk',sans-serif;letter-spacing:3px;text-align:center;transition:background .3s,border-color .3s,color .3s}
#welcome #enter:hover:not(:disabled){background:#a3895921;border-color:#bfa273;color:#f2e4c4}#welcome #enter:disabled{opacity:.32;cursor:wait}
#welcome #splashControls{position:absolute;bottom:max(28px,env(safe-area-inset-bottom));left:24px;right:24px;margin:0;text-align:center;color:#777a74;font:9px 'Space Grotesk',sans-serif;letter-spacing:.6px;line-height:1.8}
.splash-corner{position:absolute;width:23px;height:23px;border-color:#84725350;border-style:solid;pointer-events:none}.splash-corner-left{top:24px;left:24px;border-width:1px 0 0 1px}.splash-corner-right{bottom:24px;right:24px;border-width:0 1px 1px 0}
.splash-atmosphere{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.splash-atmosphere:before{content:'';position:absolute;left:50%;top:50%;width:2px;height:2px;border-radius:50%;background:#bdae8260;box-shadow:-180px 90px #c3a36733,180px 120px #c3a36750,90px -150px #c3a36744,-120px -80px #c3a36733,260px -30px #c3a36733,-280px -170px #c3a36744,25px 230px #c3a36733,140px 270px #c3a36722,-50px 160px #c3a36766,210px -210px #c3a36740;animation:splash-ash 22s linear infinite}.splash-atmosphere:after{content:'';position:absolute;inset:-30%;background:radial-gradient(ellipse at 48% 75%,#65544012,transparent 45%);animation:splash-mist 18s ease-in-out infinite alternate}
@keyframes splash-ash{from{transform:translateY(60px);opacity:0}20%,70%{opacity:.8}to{transform:translate(35px,-110px);opacity:0}}@keyframes splash-mist{to{transform:translateX(9%) scale(1.2);opacity:.5}}
@media(max-width:550px){#welcome,.touch-mode #welcome{padding:24px}.archive-crest{width:68px;height:85px;margin-bottom:25px}#welcome h1{font-size:clamp(31px,9.5vw,46px);letter-spacing:.12em}#welcome .splash-subtitle{font-size:8px;letter-spacing:.32em}.splash-loading{margin-top:38px}#welcome #splashControls{font-size:8px}}
@media(max-height:520px){#welcome,.touch-mode #welcome{padding:24px}.archive-crest{width:48px;height:60px;margin-bottom:12px}#welcome h1{font-size:36px}.splash-loading{margin:24px auto 16px}#welcome .splash-subtitle{margin-top:9px;font-size:8px}#welcome #enter{min-height:43px;padding:11px 20px}#welcome #splashControls{bottom:14px;font-size:8px}}
@media(prefers-reduced-motion:reduce){.splash-atmosphere:before,.splash-atmosphere:after{animation:none}.splash-loading-track i{transition:none}}

/* Revision 14: the eye camera uses the same world character and equipment. */
#equipment{display:none}

/* Revision 15: all eight tools fit within the mobile viewport in either view. */
body.touch-mode #bottom,body.touch-mode:not(.third-person) #bottom{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));width:auto;max-width:none;min-width:0;transform:none;display:block;bottom:calc(8px + env(safe-area-inset-bottom))}
body.touch-mode #tools{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));width:100%;max-width:100%;min-width:0;gap:4px;padding:7px 0 0;overflow:visible;touch-action:manipulation}
body.touch-mode #tools button,body.touch-mode:not(.third-person) #tools button{width:100%;min-width:0;height:49px;padding:2px;border-radius:7px}
body.touch-mode #tools .slot-name{font-size:7px;letter-spacing:0;white-space:normal;line-height:1.15}
body.touch-mode #tools .slot-symbol{font-size:19px}
body.touch-mode .mobile-buttons{right:calc(10px + env(safe-area-inset-right));max-width:calc(100vw - 24px);grid-template-columns:minmax(0,68px) minmax(0,78px)}
body.touch-mode .mobile-buttons button{min-width:0;padding:6px 3px;overflow-wrap:anywhere}
body.touch-mode .drag-hint{max-width:calc(100vw - 188px);letter-spacing:.4px}
@media(max-height:520px){body.touch-mode .mobile-buttons{bottom:calc(73px + env(safe-area-inset-bottom));grid-template-columns:62px 75px}body.touch-mode #touchLook{bottom:calc(73px + env(safe-area-inset-bottom));right:calc(166px + env(safe-area-inset-right))}body.touch-mode .drag-hint{bottom:135px}}

/* A progress caption leaves the physical loading animation visible. */
.cartridge-cycle #interaction{visibility:hidden}.cartridge-cycle #scan{top:auto;bottom:175px;left:22px;transform:none;width:250px;background:#0d222ccc;border:1px solid #6bb9af66;border-radius:8px;padding:11px}.cartridge-cycle #scan code{display:none}.cartridge-cycle #scan>div{font-size:9px;letter-spacing:.4px;gap:8px}.cartridge-cycle #scan i{margin:8px 0 0}
body.touch-mode.cartridge-cycle #scan{bottom:calc(149px + env(safe-area-inset-bottom));left:12px;width:calc(100vw - 188px);max-width:260px;padding:8px}.cartridge-review #result{animation:mediaProjection .6s cubic-bezier(.18,.75,.25,1);transform-origin:calc(var(--projection-x,50vw) - 16vw) calc(var(--projection-y,50vh) - 17vh);border-color:#9cf6e4;box-shadow:0 0 40px #7afcdb26}.cartridge-review #resultFoot:after{content:' · CLOSE TO RETURN CARTRIDGE';color:#aaffdf;opacity:1}
@keyframes mediaProjection{from{transform:scale(.035);opacity:0}to{transform:scale(1);opacity:1}}body.touch-mode.cartridge-review #result{transform-origin:calc(var(--projection-x,50vw) - 8px) calc(var(--projection-y,50vh) - 58px)}

/* Visible native cursor: neon arrow, precision reticle and a dark outline. */
:root{--future-cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cpath d='M4 3L30 19L18 22L12 34Z' fill='%23071119' stroke='%238bffe0' stroke-width='2'/%3E%3Cpath d='M9 10L23 19L16 20L13 26Z' fill='%238bffe0'/%3E%3Cpath d='M28 28h8m-4-4v8' stroke='%235e95a3' stroke-width='1'/%3E%3C/svg%3E") 4 3,auto}body,button,a,#world{cursor:var(--future-cursor)}
#welcome{transition:opacity .9s ease}#welcome.fade-away{opacity:0;pointer-events:none}
#characterSelect{position:fixed;inset:0;z-index:25;pointer-events:none;background:linear-gradient(90deg,transparent 35%,#081b2460);animation:identityIn 1s both}
.select-heading{position:absolute;left:5vw;top:6vh;font:10px monospace;letter-spacing:4px;color:#a7f7df}.select-heading small{display:block;font:13px 'Space Grotesk';letter-spacing:1px;color:#dde5df;margin-top:12px}
.identity-card{position:absolute;right:6vw;top:50%;transform:translateY(-50%);width:300px;max-width:42vw;padding:26px;background:linear-gradient(140deg,#173a4599,#071a23dd);border:1px solid #8af4d66b;backdrop-filter:blur(14px);box-shadow:0 0 50px #3ad8bb14;clip-path:polygon(0 0,calc(100% - 22px) 0,100% 22px,100% 100%,22px 100%,0 calc(100% - 22px));pointer-events:auto}
.identity-number{font:10px monospace;letter-spacing:3px;color:#89aaa9}.identity-card h2{font:500 44px 'Space Grotesk';letter-spacing:-2px;margin:22px 0 4px;color:#f1fff7}.identity-card p{font-size:12px;color:#c1d7d6;margin:0 0 27px}.identity-card [data-look]{display:block;font:9px monospace;letter-spacing:1px;color:#93c9bd;min-height:27px}.identity-navigation{display:flex;align-items:center;justify-content:space-between;margin:15px 0 22px}.identity-navigation button{width:40px;height:40px;border:1px solid #99e9d756;background:#8decd90b;border-radius:50%;font-size:20px}.identity-navigation [data-dots]{display:flex;gap:7px}.identity-navigation i{width:4px;height:4px;border-radius:50%;background:#689392}.identity-navigation i.selected{background:#b4ffe3;box-shadow:0 0 9px #a3ffdd}
.identity-card [data-start]{width:100%;background:#a5efd6;border:0;color:#102e32;padding:14px 9px;font:10px monospace;letter-spacing:1px;border-radius:3px}.identity-card kbd{background:#17463a15;border-color:#143d3b4f;color:inherit}.identity-card>small{display:block;text-align:center;font:9px monospace;color:#8facac;margin-top:18px}.identity-reticle{position:absolute;width:180px;height:18px;left:calc(38% - 90px);bottom:16vh;border:1px solid #92f2d956;border-radius:50%;box-shadow:0 0 50px #7bffd21c;transform:rotate(-10deg)}
@keyframes identityIn{from{opacity:0}to{opacity:1}}
body.projection-flight #result{left:5vw;right:5vw;top:7vh;width:auto;height:86vh;max-height:86vh;padding:clamp(18px,3vw,38px);background:linear-gradient(140deg,#08292eef,#081925ef);overflow:hidden;transform-origin:center;animation:projection .6s ease}
body.projection-flight #rows{max-height:calc(86vh - 200px);height:calc(86vh - 210px);overflow:auto}body.projection-flight #rows table{font-size:clamp(12px,1.3vw,16px)}body.projection-flight #rows td{padding:12px 8px}body.projection-flight #resultFoot:after{content:' · PRESS ANY KEY TO RETURN';color:#aaffdf}body.projection-flight #result h2{font-size:clamp(24px,3vw,36px)}
body.projection-flight #bottom,body.projection-flight #mobileControls,body.projection-flight #mapPanel,body.projection-flight #shelf,body.projection-flight #hud,body.projection-flight #crosshair,body.projection-flight #interaction,body.keyboard-mode #bottom,body.keyboard-mode #mobileControls,body.keyboard-mode #mapPanel,body.keyboard-mode #shelf,body.keyboard-mode #hud,body.keyboard-mode #crosshair,body.keyboard-mode #interaction{visibility:hidden;pointer-events:none}
#keyboardOverlay{position:fixed;inset:0;pointer-events:none;z-index:15;color:#d6f9e9;animation:identityIn 1s both}.keyboard-caption{position:absolute;top:6vh;left:5vw}.keyboard-caption>span{font:9px monospace;letter-spacing:4px;color:#8dafab}.keyboard-caption h2{font:400 30px Georgia;margin:13px 0;color:#dfeddf}.keyboard-caption p{font-size:12px;color:#8dabaa}.keyboard-meter{position:absolute;left:5vw;bottom:7vh;font:11px monospace}.keyboard-meter strong{display:block;font:32px monospace;color:#afffda;min-height:42px;text-shadow:0 0 18px #7effcb}.keyboard-meter span{color:#88a9a6;margin-right:12px}.keyboard-meter small{font-size:8px;letter-spacing:2px}#keyboardExit{position:absolute;right:5vw;bottom:7vh;pointer-events:auto;background:#0a262add;border:1px solid #8df1c957;padding:14px 20px;border-radius:5px;font-size:12px}
@media(max-width:700px){.identity-card{top:auto;bottom:22px;right:20px;left:20px;max-width:none;width:auto;transform:none;padding:18px 23px}.identity-card h2{font-size:32px;margin:7px 0 3px}.identity-card p{margin-bottom:10px}.identity-card [data-look]{min-height:12px}.identity-navigation{margin:10px 0}.identity-card>small{margin:10px 0 0}.select-heading{top:30px;left:23px}.identity-reticle{display:none}body.projection-flight #result{left:10px;right:10px;top:5dvh;height:90dvh;max-height:90dvh;padding:18px}body.projection-flight #rows{height:calc(90dvh - 205px);max-height:calc(90dvh - 205px)}body.projection-flight #rows table{min-width:350px}.keyboard-caption h2{font-size:23px}.keyboard-caption p{font-size:10px}#keyboardExit{font-size:10px;padding:12px}.keyboard-meter small{display:block;margin-top:6px}}

body.keyboard-mode #shelf,body.projection-flight #shelf{display:none}
body.projection-flight #result{display:flex;flex-direction:column}body.projection-flight #rows{flex:1;min-height:0;height:auto;max-height:none}body.projection-flight .result-head,body.projection-flight #resultTitle,body.projection-flight #resultCode,body.projection-flight #resultFoot{flex-shrink:0}

/* Operation Future identity: the source site's red accent and green terminal light. */
@font-face{font-family:'Super Squad';src:url('assets/brand/SuperSquadItalic.ttf') format('truetype');font-style:italic;font-weight:400;font-display:swap}
.opf-wordmark{font-family:'Super Squad','Squada One',Impact,sans-serif!important;font-style:italic;font-weight:400!important;letter-spacing:.055em!important;color:#f5f4f0!important}
#languageToggle{position:fixed;right:18px;top:15px;z-index:95;border:1px solid #80e7b567;border-radius:5px;background:#071b16d9;color:#baffd6;padding:8px 11px;font:10px monospace;letter-spacing:1px;backdrop-filter:blur(8px);min-height:34px}
body.playing #languageToggle{top:47px;right:calc(var(--mini-map-right) + var(--mini-map-width) + 7px)}
.touch-mode.playing #languageToggle{top:40px;padding:6px 8px;right:calc(var(--mini-map-right) + var(--mini-map-width) + 7px)}
#modalToolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:0 0 14px;min-height:40px}
#modalToolbar #languageToggle{position:static;flex:0 0 auto;min-height:40px;margin:0;padding:8px 11px}
#modalToolbar .close{position:static;flex:0 0 40px;width:40px;height:40px;min-height:40px;margin:0;border:1px solid #f5e9ce40;border-radius:5px;line-height:1}
#welcome,.touch-mode #welcome{background:#020505}#welcome:before{background:radial-gradient(ellipse at 50% 40%,#07502c23,transparent 55%),linear-gradient(125deg,#0b1715,#020404 55%,#1b080b)}
#welcome .splash-content:before{content:'';display:block;margin:0 auto 30px;width:90px;height:60px;background:#ecfff0;mask:url('assets/brand/operation-future.svg') center/contain no-repeat;filter:drop-shadow(0 0 14px #24ef8640)}
#welcome h1{font-size:clamp(26px,5vw,63px);letter-spacing:.045em;color:#f4f8f1}#welcome .splash-subtitle{color:#8ed5b4;letter-spacing:.27em}
.splash-loading-track i{background:#45ff91;box-shadow:0 0 10px #45ff9170}.splash-loading-label{color:#75ab8d}
#intro{position:fixed;inset:0;z-index:50;pointer-events:none;color:#eaffed;background:linear-gradient(0deg,#000b,transparent 46%,#0008);isolation:isolate}
#intro:before,#intro:after{content:'';position:absolute;left:0;right:0;height:6vh;background:#020506;z-index:1}#intro:before{top:0}#intro:after{bottom:0}
.intro-curtain{position:absolute;inset:0;background:#010604;opacity:1;z-index:0;transition:opacity .1s linear;pointer-events:none}
.intro-identity{position:absolute;top:10vh;left:6vw;display:flex;gap:18px;align-items:center;font-size:clamp(18px,2.4vw,32px)}.intro-identity img{width:46px;height:34px;filter:invert(1)}
.intro-telemetry{position:absolute;top:17vh;left:6vw;display:flex;gap:24px;font:9px monospace;letter-spacing:2px;color:#8acc9f}.intro-telemetry b{font-weight:400;color:#ff686b}
.intro-copy{position:absolute;left:6vw;bottom:14vh;max-width:min(680px,80vw);text-shadow:0 2px 16px #000}.intro-copy>span{font:10px monospace;letter-spacing:3px;color:#76edb2;display:block;margin-bottom:14px}.intro-copy h2{font:400 clamp(29px,4.5vw,60px)/1.05 'Super Squad',Impact,sans-serif;font-style:italic;letter-spacing:.05em;margin:0 0 18px;color:#f3f7ed}.intro-copy p{font:clamp(13px,1.35vw,17px)/1.8 'DM Sans',sans-serif;color:#d5e5db;min-height:62px;max-width:630px;margin:0}
.intro-copy p:after{content:'▌';color:#63ff9d;animation:terminal-blink .7s steps(1) infinite}.intro-buttons{position:absolute;right:5vw;bottom:9vh;display:flex;gap:10px;z-index:2;pointer-events:auto}.intro-buttons button{background:#091a15c9;border:1px solid #6be6a263;color:#caffe0;border-radius:4px;padding:11px 17px;font:10px monospace;letter-spacing:1px}.intro-buttons button:last-child{background:#2c1115b8;border-color:#d7535b8a;color:#ffe1dd}.intro-buttons button:disabled{opacity:.55;cursor:default}
.intro-progress{position:absolute;left:6vw;right:6vw;bottom:7vh;height:1px;background:#74937b30;z-index:2}.intro-progress i{height:1px;background:#69ff9d;box-shadow:0 0 9px #69ff9d;display:block;width:0}.intro-frame{position:absolute;inset:23vh 6vw 30vh;border:1px solid #7afbba20;border-left:0;border-right:0;opacity:.4;pointer-events:none}
body.intro-mode #hud,body.intro-mode #bottom,body.intro-mode #mapPanel,body.intro-mode #shelf,body.intro-mode #crosshair,body.intro-mode #equipment,body.intro-mode #interaction,body.intro-mode #mobileControls{visibility:hidden;pointer-events:none}
#intro.shot-enter .intro-copy h2{animation:opf-title-enter 1.2s both}.select-heading>span{color:#7beeb0}.identity-card{border-color:#63d89680;background:linear-gradient(135deg,#071a18ed,#161416ed)}.identity-card [data-start]{background:#75eca8}.identity-card [data-start]:hover{background:#b5ffd1}
html[lang="es"] body.projection-flight #resultFoot:after{content:' · PULSA CUALQUIER TECLA PARA VOLVER'}
@keyframes terminal-blink{50%{opacity:0}}@keyframes opf-title-enter{from{opacity:0;transform:translateY(20px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@media(max-width:700px){.intro-identity{top:11vh;font-size:22px;left:7vw}.intro-identity img{width:34px}.intro-telemetry{top:17vh;left:7vw;font-size:8px;gap:12px;letter-spacing:1px}.intro-copy{left:7vw;bottom:22vh;max-width:86vw}.intro-copy h2{font-size:33px}.intro-copy p{font-size:13px;min-height:110px}.intro-buttons{bottom:11vh;right:7vw;left:7vw;justify-content:flex-end}.intro-buttons button{padding:12px 10px;letter-spacing:0;font-size:10px}.intro-frame{inset:23vh 7vw 48vh}.select-heading{right:105px}}
@media(max-height:520px){.intro-copy{bottom:24vh;max-width:75vw}.intro-copy h2{font-size:28px;margin-bottom:8px}.intro-copy p{font-size:12px;min-height:36px}.intro-identity{top:9vh;font-size:18px}.intro-telemetry{top:18vh}.intro-buttons{bottom:9vh}.intro-frame{display:none}}

/* Quiet map: no footer or labels compete with paths and the player marker. */
#mapLabel,.map-expanded .map-legend{display:none!important}#mapPanel{background:#192c2ee8;border-color:#8caaa066;padding-bottom:8px}#map{border-radius:5px}

/* Defocus the physical projection behind the sharp results card. */
#world{transition:filter .24s ease;}
body.cartridge-review #world{filter:blur(7px) brightness(.88);}
/* The Earth approach keeps only the travel controls visible. */
body.client-world #tools,body.client-world #toolState,body.client-world #shelf,body.client-world #equipment,body.client-world .shortcuts,body.client-world #touchFunction{display:none!important}
#transportOverlay{position:fixed;inset:0;z-index:45;color:#edf9fa;pointer-events:none;text-shadow:0 2px 16px #000}
#transportOverlay:before,#transportOverlay:after{content:'';position:absolute;left:0;right:0;height:6vh;background:#020508;z-index:2}#transportOverlay:before{top:0}#transportOverlay:after{bottom:0}
[data-journey-curtain]{position:absolute;inset:0;background:#e5edf3;opacity:0;z-index:1}
.journey-copy{position:absolute;bottom:15vh;left:6vw;max-width:64vw;z-index:3}.journey-copy span{font:11px monospace;letter-spacing:3px;color:#a7e2e9}.journey-copy p{font:clamp(14px,1.6vw,20px)/1.6 'DM Sans',sans-serif;margin:12px 0 0}
.journey-buttons{position:absolute;right:5vw;bottom:9vh;display:flex;gap:8px;z-index:3;pointer-events:auto}.journey-buttons button{font:10px monospace;color:#dcf3f5;background:#071a24c9;border:1px solid #84abbc66;border-radius:5px;padding:11px 13px}
.journey-progress{position:absolute;left:6vw;right:6vw;bottom:7.5vh;background:#a8c2d522;height:1px;z-index:3}.journey-progress i{display:block;width:0;height:1px;background:#a4e0ef;box-shadow:0 0 8px #7fb7df}
body.transporting #hud,body.transporting #bottom,body.transporting #mapPanel,body.transporting #shelf,body.transporting #crosshair,body.transporting #equipment,body.transporting #interaction,body.transporting #mobileControls,body.transporting #languageToggle,body.transporting #toast{visibility:hidden;pointer-events:none}
@media(max-width:700px){.journey-copy{left:7vw;bottom:21vh;max-width:86vw}.journey-copy span{font-size:9px;letter-spacing:1.5px}.journey-copy p{font-size:14px}.journey-buttons{right:7vw;bottom:10vh}.journey-buttons button{padding:12px 10px}}

/* Inactivity never takes ownership of camera direction or keyboard input. */
body.cursor-idle,body.cursor-idle *{cursor:none!important}
