html:has(.world-page){scroll-behavior:auto}.world-page{--world-bg:#e7e0d1;background:var(--world-bg)}.world-header{position:absolute;z-index:5;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:27px 36px;gap:25px;pointer-events:none}.world-header a{pointer-events:auto}.world-brand{font:37px/1.1 var(--serif);letter-spacing:-.04em;text-decoration:none}.world-brand span{color:var(--accent)}.world-header nav{display:flex;gap:25px;font-size:13px}.world-header nav a{min-height:44px;display:flex;align-items:center;text-decoration:none}.world-header nav a:last-child{border-left:1px solid #8c8c7f80;padding-left:25px;color:var(--accent)}.stage{position:relative;height:100svh;min-height:580px;overflow:hidden}.stage canvas{width:100%;height:100%;display:block;touch-action:none;outline-offset:-5px}.world-heading{position:absolute;left:38px;top:108px;pointer-events:none;max-width:420px}.world-heading .eyebrow{font-size:10px;margin-bottom:10px}.world-heading h1{font-size:34px;line-height:1.1;margin:0 0 10px;letter-spacing:-.025em}.world-heading p:not(.eyebrow){font-size:13px}.world-toolbar{position:absolute;left:30px;right:30px;top:calc(100svh - 79px);min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:20px;z-index:6}.world-tools,.world-settings{display:flex;align-items:center;gap:8px}.world-toolbar button{border:1px solid #827f6a55;background:#f4efdfec;border-radius:4px;padding:12px 16px;min-height:45px;font-size:12px;box-shadow:0 3px 12px #332a2310;transition:background .2s,transform .2s}.world-toolbar button:hover{background:#fff8ec;transform:translateY(-2px)}.world-toolbar button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.world-toolbar #help{font-family:var(--serif);font-size:20px;min-width:45px;padding:6px}.keyboard-hint{position:absolute;top:calc(100svh - 111px);left:35px;font-size:10px;color:#454d49}.keyboard-hint span{padding:0 9px}.hotspots{position:absolute;inset:0;pointer-events:none}.hotspot{position:absolute;left:0;top:0;pointer-events:auto;min-height:44px;white-space:nowrap;background:transparent;border:0;padding:0;transform:translate(-50%,-100%);display:flex;align-items:center;gap:7px;font-size:11px;color:#2e352f;filter:drop-shadow(0 2px 3px #29261a20);transition:opacity .2s}.hotspot .dot{width:19px;height:19px;flex-shrink:0;border-radius:50%;background:#af4635;border:3px solid #f9f1df;box-shadow:0 0 0 1px #af463590}.hotspot .hotspot-label{padding:6px 9px;background:#f6efdfed;border:1px solid #ddcfb9;border-radius:3px}.hotspot:hover .hotspot-label,.hotspot:focus-visible .hotspot-label{background:#fff7e7;color:var(--accent)}.hotspot[data-id=sit] .hotspot-label,.hotspot[data-id=lamp] .hotspot-label,.hotspot[data-id=door] .hotspot-label{font-size:10px}.hotspot[data-id=sit] .dot,.hotspot[data-id=lamp] .dot,.hotspot[data-id=door] .dot{width:13px;height:13px;background:#68735a}.hotspot.is-near .dot{box-shadow:0 0 0 5px #ae35281f,0 0 0 1px #ae3528}.loading{position:absolute;inset:0;background:#f0e9db;z-index:15;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;text-align:center;padding:35px}.loading[hidden]{display:none}.loading-mark{font:100px var(--serif);line-height:1}.loading-mark span{color:var(--accent)}.loading h2{font-size:36px}.loading p{font-size:14px}.loading progress{width:200px;height:4px;accent-color:var(--accent)}.loading a{font-size:12px}.world-curtain{position:absolute;inset:0;background:#e9e1d0;opacity:0;pointer-events:none;transition:opacity .3s;z-index:8}.switching .world-curtain{opacity:1}.world-toast{position:absolute;left:50%;bottom:150px;transform:translateX(-50%);max-width:min(460px,80%);padding:10px 16px;border-radius:3px;background:#f6efdfef;color:#333d36;font-size:12px;text-align:center;box-shadow:0 3px 15px #29261a12;pointer-events:none}.world-toast:empty{display:none}.interact{position:absolute;left:50%;bottom:108px;transform:translateX(-50%);padding:9px 20px;min-height:44px;background:#aa3b2b;color:#fff;border:0;border-radius:4px;font-size:12px}.interact[hidden]{display:none}.world-dialog{background:#f4efdf url('/assets/paper-texture.webp') center/800px;border:1px solid #cfc3ab;border-radius:5px;padding:40px;color:var(--ink);max-height:calc(100svh - 40px);overflow:auto;box-shadow:0 25px 100px #111a1740;width:min(800px,calc(100% - 40px))}.world-dialog::backdrop{background:#19251f45;backdrop-filter:blur(5px)}.world-dialog[open]{animation:dialog-enter .3s cubic-bezier(.2,.8,.2,1)}@keyframes dialog-enter{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.world-dialog h2{font-size:40px;margin-bottom:15px}.world-dialog>.eyebrow{margin-bottom:20px}.world-dialog p{font-size:14px;line-height:1.6}.dialog-close{position:absolute;top:10px;right:10px;width:44px;height:44px;border:0;background:transparent;font-size:28px;color:#555e51}.world-options{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:25px}.world-options button{display:flex;flex-direction:column;gap:13px;text-align:left;padding:0 0 15px;border:1px solid #c7baa3;background:#f9f3e5;border-radius:4px;overflow:hidden;transition:transform .25s,box-shadow .25s}.world-options button:hover{transform:translateY(-4px);box-shadow:0 7px 17px #5a50341d}.world-swatch{width:100%;height:110px;font:50px var(--serif);padding:16px}.paper-swatch{color:#aa3d2f;background:#e5d7b8 url('/assets/paper-texture.webp') center/300px}.night-swatch{background:#213e43;color:#e0b17e}.island-swatch{background:#9db9aa;color:#365448}.world-options strong{font:22px/1.1 var(--serif);padding:0 15px}.world-options button>span:last-child{padding:0 15px;font-size:12px;line-height:1.5;color:var(--muted)}.story-dialog{width:min(460px,calc(100% - 30px));margin:85px 30px auto auto;padding:36px 30px;max-height:calc(100svh - 180px)}.story-dialog::backdrop{background:#19251f18;backdrop-filter:none}.story-dialog h2{font-size:36px}.story-subtitle{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #bdb49e;font-size:12px!important}.story-facts{display:grid;gap:16px;margin-block:25px}.story-facts h3{font-size:21px;margin-bottom:7px}.story-facts p{font-size:13px}.story-links{display:grid;margin-top:20px}.story-links a{display:block;padding:13px 0;border-top:1px solid #c5bca7;font-size:16px;text-decoration:none}.story-links a span{display:block;font-size:12px;color:var(--muted)}.story-dialog figure{margin:20px 0}.story-dialog figcaption{font-size:10px;color:var(--muted)}.story-tour{border-top:1px solid #c8bda6;padding-top:20px;margin-top:24px;display:flex;align-items:center;justify-content:space-between;gap:12px}.story-tour[hidden]{display:none}.story-tour>span{font-size:11px}.story-tour .button{font-size:12px;padding:10px 14px}.world-demo{padding:15px;background:#fff9ed;border:1px solid #cfc2a6;margin:22px 0}.world-demo pre{font:12px/1.6 monospace;white-space:pre-wrap;color:#7f2c20}.world-demo .button{font-size:12px;min-height:44px;padding:10px 14px}.world-demo p{font-size:10px}.places-dialog{max-width:490px}.places-dialog #places-list{display:grid;margin-top:20px}.places-dialog #places-list button{display:flex;align-items:center;justify-content:space-between;text-align:left;background:transparent;border:0;border-top:1px solid #c5baa3;padding:15px 0;min-height:50px}.places-dialog #places-list span{font:21px var(--serif)}.help-dialog{max-width:540px}.help-dialog ul{padding-left:18px;font-size:14px;line-height:1.6;color:var(--muted)}.help-dialog li{margin-bottom:12px}.help-dialog a{display:inline-block;margin-top:25px;font-size:13px}.world-fallback{padding:45px 0;color:var(--ink)}.world-fallback h2{font-size:32px;margin-bottom:15px}.world-fallback>div{display:flex;flex-wrap:wrap;gap:10px 25px;margin:20px 0}.world-fallback a{font-size:13px}.world-fallback p{font-size:13px}.touch-controls{display:none}.world-page[data-theme=night]{--world-bg:#142d33}.world-page[data-theme=night] .world-heading,.world-page[data-theme=night] .world-header,.world-page[data-theme=night] .world-fallback{color:#f0e2c5}.world-page[data-theme=night] .world-heading p,.world-page[data-theme=night] .keyboard-hint,.world-page[data-theme=night] .world-fallback p{color:#d1cfbb}.world-page[data-theme=night] .world-brand span,.world-page[data-theme=night] .world-header nav a:last-child{color:#e6ab88}.world-page[data-theme=night] .world-toolbar button{background:#203c42;color:#eee4ce;border-color:#6f7c70}.world-page[data-theme=night] .world-toolbar button[aria-pressed=true]{border-color:#daa480;color:#edba97}.world-page.calm *{animation:none!important;transition:none!important}.world-page.failed .world-toolbar,.world-page.failed .hotspots,.world-page.failed .keyboard-hint,.world-page.failed .touch-controls{display:none}.world-page.failed .loading{z-index:4}.world-page.failed .stage{height:70svh;min-height:500px}
@media(max-width:800px){.world-header{padding:20px;align-items:flex-start}.world-brand{font-size:29px}.world-header nav{gap:12px;font-size:11px}.world-header nav a:last-child{padding-left:12px}.world-heading{left:22px;top:95px}.world-heading h1{font-size:27px}.world-heading p:not(.eyebrow){font-size:12px}.world-toolbar{left:16px;right:16px;top:auto;bottom:auto;position:absolute;transform:translateY(-90px);gap:8px;flex-wrap:wrap}.world-toolbar button{font-size:10px;min-height:44px;padding:9px 12px}.world-tools{gap:6px}.world-settings{gap:6px}.world-settings #help{min-width:36px}.keyboard-hint{display:none}.touch-controls{position:absolute;top:calc(100svh - 240px);left:20px;display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(2,44px);gap:4px;z-index:6}.touch-controls button{touch-action:none;border:1px solid #8c826858;background:#f4efdfda;border-radius:5px;font-size:20px;user-select:none;-webkit-user-select:none}.touch-controls button:active{background:#cdb38d}.touch-controls [data-move=up]{grid-column:2}.touch-controls [data-move=left]{grid-column:1;grid-row:2}.touch-controls [data-move=down]{grid-column:2;grid-row:2}.touch-controls [data-move=right]{grid-column:3;grid-row:2}.hotspot{font-size:10px}.hotspot .hotspot-label{padding:5px 7px}.world-toast{bottom:285px;max-width:85%;font-size:11px}.interact{bottom:170px;left:auto;right:18px;transform:none;max-width:150px}.story-dialog{margin:20px auto;max-height:calc(100svh - 40px);padding:38px 23px}.world-options{grid-template-columns:1fr}.world-options button{display:grid;grid-template-columns:65px 1fr;gap:5px 15px;padding:0 12px 0 0}.world-swatch{grid-row:1/3;height:100%;font-size:34px;padding:25px 10px}.world-options strong{padding:18px 0 0;font-size:23px}.world-options button>span:last-child{padding:0 0 15px}.world-dialog{padding:35px 23px}.world-dialog h2{font-size:32px}.world-header nav a:first-child{font-size:0}.world-header nav a:first-child:after{content:'Portfolio';font-size:11px}.stage{min-height:650px}}
@media(max-width:390px){.world-brand{font-size:25px}.world-header{gap:10px;padding:18px 16px}.world-header nav{gap:9px}.world-header nav a:last-child{padding-left:9px;font-size:10px}.world-toolbar button{padding:8px 10px}.world-tools{width:100%;justify-content:space-between}.world-settings{margin-left:auto}.world-toolbar{transform:translateY(-113px)}.touch-controls{top:calc(100svh - 260px)}.world-toast{bottom:295px}}@media(prefers-reduced-motion:reduce){.world-dialog[open]{animation:none}.world-curtain{transition:none}}
/* The game is a viewport, so focus changes never scroll the scene away. */
.world-page:not(.failed){height:100svh;overflow:hidden}.world-page:not(.failed) .world-fallback{display:none}.world-page:not(.failed) .world-fallback:target{display:block;position:fixed;inset:24px;width:auto;margin:0;padding:35px;z-index:25;overflow:auto;background:#f5f0e3;border:1px solid #bcb29c;box-shadow:0 20px 70px #1d261d50;color:#262e28}.world-page:not(.failed) .world-fallback:target p{color:#555c65}.world-page .stage{min-height:0}.world-page.failed .stage{min-height:450px}.world-page.calm .world-options button:hover{transform:none}

/* Camera selection stays separate from walking and the story toolbar. */
.camera-controls{position:absolute;z-index:6;right:32px;top:105px}.camera-controls button{min-height:44px;padding:10px 15px;border:1px solid #827f6a55;border-radius:4px;background:#f4efdfed;color:#30392e;font-size:12px;box-shadow:0 3px 12px #332a2310}.camera-dialog{max-width:520px}.camera-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0}.camera-options button{min-height:106px;display:flex;flex-direction:column;gap:8px;text-align:left;padding:18px;border:1px solid #c7baa3;border-radius:4px;background:#f9f3e5;color:#30392e}.camera-options strong{font:24px var(--serif)}.camera-options span{font-size:12px;line-height:1.5}.camera-options button[aria-pressed=true]{border-color:#a6402f;box-shadow:inset 0 0 0 1px #a6402f;background:#eee1c9}.camera-help{font-size:12px!important;color:#586052}.world-page[data-theme=night] .camera-controls button{background:#203c42;color:#eee4ce;border-color:#6f7c70}.world-page[data-camera=first] .world-heading{opacity:.85}.world-page[data-camera=first] #world-canvas,.world-page[data-camera=third] #world-canvas{cursor:grab}.world-page[data-camera=first] #world-canvas:active,.world-page[data-camera=third] #world-canvas:active{cursor:grabbing}.world-page.failed .camera-controls{display:none}
@media(max-width:800px){.camera-controls{top:178px;right:18px}.camera-controls button{font-size:11px;padding:8px 12px}.world-heading{max-width:calc(100% - 40px)}.camera-options{gap:8px}.camera-options button{padding:14px;min-height:110px}.camera-options strong{font-size:22px}}
@media(max-height:600px) and (min-width:801px){.camera-controls{top:85px}.world-heading{top:82px}}

.world-page:is([data-camera=first],[data-camera=third]) .world-header{background:linear-gradient(#f0eadde8,#f0eadd00);padding-bottom:45px}.world-page:is([data-camera=first],[data-camera=third]) .world-heading h1{font-size:22px}.world-page:is([data-camera=first],[data-camera=third]) .world-heading p:not(.eyebrow){display:none}.world-page:is([data-camera=first],[data-camera=third]) .world-heading .eyebrow{margin-bottom:6px}.world-page:is([data-camera=first],[data-camera=third])[data-theme=night] .world-header{background:linear-gradient(#142d33ed,#142d3300)}
@media(max-width:800px){.world-page:is([data-camera=first],[data-camera=third]) .world-heading h1{font-size:20px}.world-page:is([data-camera=first],[data-camera=third]) .camera-controls{top:178px}}

/* Analog control surfaces: independent fingers, ample room, quiet visual weight. */
.touch-look{display:none}.look-sensitivity{display:block;margin:24px 0}.look-sensitivity>span{display:flex;justify-content:space-between;font-size:13px}.look-sensitivity output{color:var(--accent);font-variant-numeric:tabular-nums}.look-sensitivity input{width:100%;min-height:44px;accent-color:var(--accent);touch-action:pan-x}.world-page.failed .touch-look{display:none}
@media(pointer:coarse),(max-width:800px){
 .touch-controls{display:flex;position:absolute;top:auto;bottom:calc(146px + env(safe-area-inset-bottom,0px));left:max(16px,env(safe-area-inset-left,0px));width:140px;height:148px;flex-direction:column;align-items:center;gap:0;z-index:6}
 .touch-controls .joystick-pad{position:relative;display:block;flex:none;width:132px;height:132px;padding:0;min-height:132px;border:0;border-radius:50%;background:transparent;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab}
 .joystick-track{position:absolute;inset:10px;border-radius:50%;background:radial-gradient(circle,#f5efdf38 35%,#f5efdf75 100%);border:1px solid #f8f0dbbc;box-shadow:inset 0 0 0 9px #f5efdf15,0 2px 12px #1b2d2320}
 .joystick-track:before,.joystick-track:after{content:'';position:absolute;background:#7a80623d}.joystick-track:before{width:1px;top:9px;bottom:9px;left:50%}.joystick-track:after{height:1px;left:9px;right:9px;top:50%}
 .joystick-thumb{position:absolute;left:50%;top:50%;width:48px;height:48px;border-radius:50%;transform:translate(calc(-50% + var(--stick-x,0px)),calc(-50% + var(--stick-y,0px)));background:linear-gradient(145deg,#fff8e8eb,#d4c8a9da);border:1px solid #fff6df;box-shadow:0 3px 8px #21372730;transition:transform .14s cubic-bezier(.2,.8,.2,1),box-shadow .14s}
 .is-active .joystick-thumb{transition:none;box-shadow:0 2px 7px #21372740,0 0 0 5px #eee1ba25}.touch-controls .joystick-pad:active{background:transparent}
 .touch-caption{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#384536;background:#f5efdfc9;padding:3px 9px;border-radius:3px;pointer-events:none}
 .world-page:is([data-camera=first],[data-camera=third]) .touch-look{display:flex;position:absolute;bottom:calc(153px + env(safe-area-inset-bottom,0px));right:max(18px,env(safe-area-inset-right,0px));z-index:6;width:102px;height:130px;flex-direction:column;align-items:center;gap:5px}
 #look-pad{display:grid;place-items:center;width:102px;height:102px;border-radius:50%;border:1px solid #f8f0db80;color:#3b483be0;background:#f5efdf38;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
 #look-pad:active{background:#f5efdf65}.interact{bottom:300px;left:auto;right:18px;transform:none;max-width:190px;min-height:44px}.world-toast{bottom:360px}
 .hotspot{max-width:calc(100vw - 32px)}
}
@media(max-height:550px) and (pointer:coarse),(max-height:550px) and (max-width:800px){.touch-controls{bottom:90px;left:10px;transform:scale(.85);transform-origin:left bottom}.world-page:is([data-camera=first],[data-camera=third]) .touch-look{bottom:100px;right:12px;transform:scale(.85);transform-origin:right bottom}.world-page .camera-controls,.world-page:is([data-camera=first],[data-camera=third]) .camera-controls{top:76px;right:18px}.world-heading{top:76px}.world-heading p:not(.eyebrow){display:none}.interact{bottom:92px;right:135px;left:auto;transform:none}.world-toast{bottom:220px}}

/* Keep chapter labels readable as close cameras turn past dark props. */
.world-page:is([data-camera=first],[data-camera=third]) .world-heading{padding:8px 11px;background:#f0eadddf;border-radius:3px;opacity:1}.world-page:is([data-camera=first],[data-camera=third])[data-theme=night] .world-heading{background:#142d33df}

/* Field-guide controls share the world's paper / ink materials. */
.world-page{--hud-surface:#f3eddfed;--hud-ink:#384336;--hud-muted:#69705f;--hud-line:#7a7c6338;--hud-edge:#fffaeacc}
.world-page[data-theme=night]{--hud-surface:#223a3ef2;--hud-ink:#f1e4c9;--hud-muted:#bcc7b5;--hud-line:#abb49c40;--hud-edge:#9cab9759}
.ui-icon{width:22px;height:22px;flex:none;pointer-events:none}.world-page .keyboard-hint{display:none}
.world-dock{position:fixed;z-index:6;bottom:calc(24px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);display:flex;align-items:center;padding:5px 6px;gap:4px;border:1px solid var(--hud-edge);border-radius:100px;background:var(--hud-surface);color:var(--hud-ink);box-shadow:0 9px 28px #222d2320,0 1px 3px #222d2314}
.world-dock button{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;height:48px;min-width:48px;border:0;border-radius:50px;color:inherit;background:transparent;transition:background .18s,transform .18s}
.world-dock button:hover,.world-dock button[aria-expanded=true]{background:var(--hud-line)}.world-dock button:active{transform:scale(.96)}.world-dock .dock-explore{padding:0 17px 0 14px;font:19px var(--serif);letter-spacing:-.015em}.dock-divider{height:23px;width:1px;background:var(--hud-line);margin-right:3px}.world-dock .dock-camera{width:52px;padding:0 8px 0 3px}.dock-camera kbd{position:absolute;right:4px;bottom:3px;font:9px var(--sans);opacity:.65}.hud-tooltip{position:absolute;bottom:calc(100% + 16px);left:50%;transform:translate(-50%,4px);border:1px solid var(--hud-line);border-radius:6px;background:var(--hud-surface);padding:8px 11px;white-space:nowrap;font:12px var(--sans);pointer-events:none;opacity:0;transition:opacity .15s,transform .15s}.dock-camera:is(:hover,:focus-visible) .hud-tooltip{opacity:1;transform:translate(-50%,0)}
.world-page .explore-panel{position:fixed;inset:auto 0 calc(99px + env(safe-area-inset-bottom,0px));margin:0 auto;width:min(360px,calc(100% - 32px));max-height:calc(100svh - 125px);padding:26px 24px 15px;border:1px solid var(--hud-edge);border-radius:18px;background:var(--hud-surface);color:var(--hud-ink);box-shadow:0 18px 55px #14201d30}
.explore-panel::backdrop{background:#16271e16;backdrop-filter:none}.explore-panel>.eyebrow{font-size:9px;color:var(--hud-muted);margin-bottom:7px}.explore-panel h2{font:30px/1.1 var(--serif);letter-spacing:-.025em;margin:0 25px 20px 0}.explore-panel .dialog-close{width:44px;height:44px;top:10px;right:10px;display:grid;place-items:center;color:var(--hud-muted)}.explore-panel .dialog-close .ui-icon{width:18px;height:18px}
.explore-actions{display:grid;gap:4px}.explore-actions>button{display:flex;align-items:center;gap:15px;width:100%;min-height:64px;text-align:left;padding:11px 9px;border:0;border-radius:9px;background:transparent;color:inherit;transition:background .16s}.explore-actions>button:hover{background:var(--hud-line)}.explore-actions>button>.ui-icon{width:23px;height:23px;color:var(--hud-muted)}.explore-actions strong{display:block;font-size:14px;font-weight:500}.explore-actions small{display:block;font-size:11px;color:var(--hud-muted);margin-top:4px}.row-arrow{margin-left:auto;color:var(--hud-muted);font-size:16px}.explore-actions [aria-pressed=true]{background:var(--hud-line)}
.explore-settings{display:grid;border-top:1px solid var(--hud-line);border-bottom:1px solid var(--hud-line);padding:10px 0;margin-top:13px}.explore-settings button{display:flex;align-items:center;gap:15px;min-height:48px;padding:7px 9px;background:transparent;border:0;color:inherit;border-radius:7px;font-size:12px}.explore-settings button:hover{background:var(--hud-line)}.explore-settings .ui-icon{width:20px;height:20px;color:var(--hud-muted)}.setting-state{margin-left:auto;width:26px;height:15px;border-radius:10px;border:1px solid var(--hud-muted);position:relative;opacity:.7}.setting-state:after{content:'';position:absolute;left:3px;top:3px;width:7px;height:7px;border-radius:50%;background:var(--hud-muted);transition:transform .18s}.explore-settings [aria-pressed=true] .setting-state{background:var(--hud-ink);border-color:var(--hud-ink);opacity:1}.explore-settings [aria-pressed=true] .setting-state:after{transform:translateX(11px);background:var(--hud-surface)}#sound[aria-pressed=false] .sound-wave,#sound[aria-pressed=true] .sound-muted{display:none}
.explore-help{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:11px 9px 4px;background:none;border:0;color:var(--hud-muted);font-size:11px}.explore-help .ui-icon{width:17px;height:17px}.help-shortcuts{margin-left:auto;font-size:9px;letter-spacing:.03em}
/* Quiet object markers; names appear on intent, not on every object at once. */
#hotspots .hotspot{width:44px;height:44px;min-height:44px;display:flex;justify-content:center;padding:0;transform:translate(-50%,-50%);filter:none;max-width:none;outline-offset:1px}
#hotspots .hotspot .dot{display:grid;place-items:center;width:25px;height:25px;flex:none;border-radius:50%;border:1px solid var(--hud-edge);background:var(--hud-surface);color:var(--hud-ink);box-shadow:0 2px 7px #24322229;transition:transform .18s,box-shadow .18s}.hotspot .dot .ui-icon{width:14px;height:14px;stroke-width:1.6}
#hotspots .hotspot .hotspot-label{position:absolute;left:50%;bottom:calc(100% + 1px);transform:translate(-50%,3px);padding:7px 10px;border:1px solid var(--hud-line);border-radius:6px;background:var(--hud-surface);color:var(--hud-ink);font-size:11px;line-height:1.3;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;box-shadow:0 3px 12px #24322212}
#hotspots .hotspot:is(:hover,:focus-visible) .hotspot-label{opacity:1;transform:translate(-50%,0)}#hotspots .hotspot:is(:hover,:focus-visible) .dot{transform:scale(1.12)}#hotspots .hotspot.is-near .dot{box-shadow:0 0 0 4px #ab60412b,0 2px 7px #24322229;border-color:#b86b4e}
.world-page .interact{position:absolute;left:50%;right:auto;bottom:calc(105px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:flex;align-items:center;gap:11px;min-height:44px;max-width:calc(100% - 40px);padding:8px 14px;border:1px solid var(--hud-edge);border-radius:30px;background:var(--hud-surface);color:var(--hud-ink);box-shadow:0 4px 16px #20302415;font-size:12px;white-space:nowrap}.world-page .interact[hidden]{display:none}.interact .ui-icon{width:18px;height:18px}.interact kbd{display:grid;place-items:center;min-width:21px;height:22px;border:1px solid var(--hud-line);border-radius:5px;color:var(--hud-muted);font:11px var(--sans);margin-left:3px}
.world-page .world-toast{bottom:164px;font-size:11px;border-radius:10px;max-width:min(450px,calc(100% - 40px));background:var(--hud-surface);color:var(--hud-ink);box-shadow:none}.world-page.failed .world-dock{display:none}
@media(pointer:coarse),(max-width:800px){.world-dock{bottom:calc(20px + env(safe-area-inset-bottom,0px))}.dock-camera kbd{display:none}.dock-camera .hud-tooltip{display:none}.world-page .touch-controls{bottom:calc(108px + env(safe-area-inset-bottom,0px))}.world-page:is([data-camera=first],[data-camera=third]) .touch-look{bottom:calc(115px + env(safe-area-inset-bottom,0px))}.world-page .interact{bottom:calc(274px + env(safe-area-inset-bottom,0px))}.interact kbd{display:none}.world-page .world-toast{bottom:332px}.world-page .explore-panel{bottom:calc(94px + env(safe-area-inset-bottom,0px));max-height:calc(100svh - 120px)}}
@media(max-height:550px) and (pointer:coarse),(max-height:550px) and (max-width:800px){.world-page .touch-controls{bottom:38px}.world-page:is([data-camera=first],[data-camera=third]) .touch-look{bottom:46px}.world-page .interact{bottom:96px}.world-page .world-toast{bottom:148px}.world-page .explore-panel{max-height:calc(100svh - 40px);bottom:20px}}

/* The desk pilot keeps its information on the physical laptop display. */
.workstation-controls{position:fixed;z-index:30;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translateX(-50%);width:max-content;max-width:calc(100% - 28px);color:#303b32;text-align:center;animation:journal-arrive .5s ease both}
.workstation-controls[hidden]{display:none}
.workstation-caption{font-size:11px;letter-spacing:.15em;margin:0 0 10px;text-shadow:0 1px 5px #fff}.workstation-caption span{margin-left:18px}
.workstation-actions{display:flex;align-items:center;gap:6px;padding:5px;background:#f4efdfed;border:1px solid #cdc4af;border-radius:12px;box-shadow:0 5px 24px #352a1b1a}
.workstation-actions button,.workstation-actions a{min-height:44px;min-width:44px;border:0;background:transparent;padding:10px 12px;font-size:13px;color:inherit;border-radius:8px;text-decoration:none}
.workstation-actions button:hover,.workstation-actions a:hover{background:#ddd3bc}.workstation-actions button:disabled{opacity:.3;cursor:default}
.workstation-actions kbd{font-size:10px;margin-left:9px;opacity:.6}.workstation-text-toggle{font-size:12px;background:none;border:0;text-decoration:underline;margin-top:8px;min-height:30px}
#workstation-transcript:not(.sr-only){background:#f5f0e3;border:1px solid #cec5b1;padding:20px;text-align:left;max-width:480px;max-height:40vh;overflow:auto;border-radius:10px;margin:12px auto 0}#workstation-transcript h2{font-size:26px}#workstation-transcript p{font-size:16px}
.reading-workstation .world-heading,.reading-workstation .world-dock,.reading-workstation .touch-controls,.reading-workstation .touch-look{opacity:0;pointer-events:none;visibility:hidden}
.reading-workstation #hotspots{visibility:hidden}.world-heading{transition:opacity .35s ease}
.workstation-marker .dot{background:transparent!important;color:#cfa764!important;border:1px solid #ecd19a!important;box-shadow:0 0 0 4px #c49a4830,0 0 14px #ffe0a366!important;width:17px!important;height:17px!important}.workstation-marker .ui-icon{display:none}.workstation-marker.is-near .dot{background:#e4c285!important}
@keyframes journal-arrive{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}
.calm .workstation-controls{animation:none}.calm .world-heading{transition:none}
@media(max-width:600px){.workstation-actions{gap:0}.workstation-actions button,.workstation-actions a{padding:10px 9px}.workstation-actions kbd{display:none}.workstation-controls{bottom:max(18px,env(safe-area-inset-bottom))}}
@media(max-height:500px){.workstation-caption,.workstation-text-toggle{margin:0}.workstation-controls{bottom:8px}.workstation-actions{padding:1px}}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.workstation-caption{display:inline-block;background:#f4efdfed;padding:6px 12px;border-radius:6px;text-shadow:none}.workstation-text-toggle{background:#f4efdfed;border-radius:5px;padding-inline:10px;color:#303b32}

.door-back{position:absolute;bottom:32px;left:50%;transform:translateX(-50%);z-index:12;background:#f8f1e3;border:1px solid #a99b81}.door-back[hidden]{display:none}
/* Keep portfolio navigation readable over close-up reading surfaces. */
.reading-workstation .world-header{background:linear-gradient(#f0e7d9ed,#f0e7d980 65%,transparent)}
.reading-workstation[data-theme=night] .world-header{background:linear-gradient(#142d33ed,#142d3380 65%,transparent)}
/* The world title is an entrance beat, not a permanent HUD panel. */
.world-heading{opacity:0;visibility:hidden;pointer-events:none}
.world-intro .world-heading{visibility:visible;animation:world-intro 4.3s both;top:24%;left:7%;max-width:75vw}
.world-intro .world-heading h1{font-size:clamp(30px,5vw,58px)}
@keyframes world-intro{0%{opacity:0;transform:translateY(18px);filter:blur(4px)}18%,70%{opacity:1;transform:translateY(0);filter:blur(0)}100%{opacity:0;transform:translateY(-8px);filter:blur(0)}}
.calm.world-intro .world-heading{animation:none;opacity:1}
.world-header a,.world-heading{--text-halo:#f5eddf;text-shadow:-1px -1px 0 var(--text-halo),1px -1px 0 var(--text-halo),-1px 1px 0 var(--text-halo),1px 1px 0 var(--text-halo),0 0 7px var(--text-halo);paint-order:stroke fill}
[data-theme=night] .world-header a,[data-theme=night] .world-heading{--text-halo:#152732}
.world-header{transition:opacity .25s;padding:18px 24px}
.world-brand{font-size:24px}
.world-header nav{opacity:0;pointer-events:none;transition:opacity .2s}
.world-header nav a{pointer-events:none}
.world-header:hover nav,.world-header:focus-within nav,.world-intro .world-header nav{opacity:1;pointer-events:auto}
.world-header:hover nav a,.world-header:focus-within nav a,.world-intro .world-header nav a{pointer-events:auto}
.world-dock{left:auto!important;right:24px!important;transform:none!important;bottom:24px!important;border-radius:50%;padding:3px!important;min-height:48px;gap:0}
.world-dock .dock-explore{width:48px;min-width:48px;padding:12px}
.world-dock .dock-explore>span,.world-dock .dock-divider,.world-dock .dock-camera{display:none}
.world-dock:hover,.world-dock:focus-within{border-radius:28px}
.world-dock:hover .dock-camera,.world-dock:focus-within .dock-camera{display:flex}
.explore-portfolio-links{display:flex;flex-wrap:wrap;gap:20px;font-size:13px;margin:20px 0}
.touch-controls .joystick-track{transform:scale(.64);opacity:.24;transition:opacity .2s,transform .2s}
.touch-controls .joystick-thumb{opacity:.3}
.touch-controls:focus-within .joystick-track,.touch-controls .is-active .joystick-track{opacity:1;transform:scale(1)}
.touch-controls:focus-within .joystick-thumb,.touch-controls .is-active .joystick-thumb{opacity:1}
.touch-controls .touch-caption,.touch-look .touch-caption{display:none}
.touch-controls{bottom:30px!important;height:132px!important}
.touch-look{bottom:90px!important;opacity:.35}
.touch-look:focus-within{opacity:1}
@media(max-width:800px){.world-header{padding:18px 16px}.world-brand{font-size:22px}.world-header nav{display:none}.world-dock{right:20px!important;bottom:28px!important}.world-intro .world-heading{left:7%;top:20%;max-width:86vw}}
/* Camera modes live in Explore, so the menu trigger never moves under the pointer. */
.world-dock:hover .dock-camera,.world-dock:focus-within .dock-camera{display:none}
.world-dock:hover,.world-dock:focus-within{border-radius:50%}
.world-page.world-intro .world-heading{padding:0;background:transparent}
.world-page.world-intro .world-heading h1{font-size:clamp(30px,5vw,58px)}
.world-page.world-intro .world-heading p:not(.eyebrow){display:block}
