:root{--night:#080d17;--moon:#8da6bc;--ember:#e9b77c;--paper:#d9c7a0}
body{cursor:default}
#cv{border-radius:0;box-shadow:none;mask-image:linear-gradient(90deg,transparent 0%,#000 5.5%,#000 66.4%,transparent 71.875%)}
.topbar{left:max(24px,env(safe-area-inset-left));top:max(24px,env(safe-area-inset-top));transition:opacity 2s;opacity:.82}
.topbar h1{font-family:"Songti SC","Noto Serif CJK SC","SimSun",serif;font-size:22px;font-weight:400;letter-spacing:.3em;color:#e2d7c6}
.topbar p{font-size:10px;letter-spacing:.24em;margin-top:10px;color:#9ba6ad}
body.settled .topbar{opacity:.36}
.bubble{max-width:min(290px,calc(100vw - 36px));width:max-content;padding:10px 14px;border-radius:2px;border:1px solid #c7a97a40;background:#0b1019ed;box-shadow:0 5px 24px #0005;font-size:14px;line-height:1.7;transition:opacity .35s,transform .35s ease;transform:translate(-50%,-100%) translateY(4px)}
.bubble.on{transform:translate(-50%,-100%)}
.bubble::after{width:8px;height:8px;bottom:-5px;margin-left:-4px;background:#0b1019;border-color:#c7a97a40}
.bubble .caret{display:none}
.world-target{position:absolute;transform:translate(-50%,-50%);min-width:44px;min-height:44px;padding:0;border:0;background:transparent;cursor:pointer;touch-action:manipulation;color:#eee3d1;-webkit-tap-highlight-color:transparent}
.world-target[hidden]{display:none}
.world-target::before{content:"";position:absolute;inset:4px;border:1px solid transparent;border-radius:50%;transition:border-color .3s,box-shadow .3s}
.world-target:hover::before,.world-target:focus-visible::before{border-color:#e9b77c80;box-shadow:0 0 16px #e9b77c14}
.world-target:focus-visible{outline:1px solid #e9b77c;outline-offset:3px;border-radius:4px}
.world-target::after{content:attr(data-label);position:absolute;bottom:calc(100% + 5px);left:50%;transform:translate(-50%,4px);white-space:nowrap;font:12px/1.5 var(--font);letter-spacing:.12em;color:#f1dfc1;text-shadow:0 2px 6px #000,0 0 12px #000;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none}
.world-target:hover::after,.world-target:focus-visible::after{opacity:1;transform:translate(-50%,0)}
.scene-hint{position:fixed;left:50%;bottom:max(28px,calc(env(safe-area-inset-bottom) + 18px));transform:translate(-50%,5px);max-width:calc(100vw - 40px);width:max-content;text-align:center;font-size:12px;line-height:1.8;letter-spacing:.13em;color:#c6c5bd;text-shadow:0 2px 8px #000;pointer-events:none;opacity:0;transition:opacity 1.2s,transform 1.2s}
.scene-hint.visible{opacity:.8;transform:translate(-50%,0)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.field-map{width:min(400px,calc(100vw - 40px));padding:27px 25px 18px;border:1px solid #7e7053;background:#d9c7a0;color:#413c32;box-shadow:0 20px 100px #0009;transform:rotate(-1deg);font-family:"Songti SC","Noto Serif CJK SC","SimSun",serif}
.field-map::backdrop{background:#030912a8;backdrop-filter:blur(2px)}
.field-map small{font:10px/1.8 var(--font);letter-spacing:.2em;color:#6a6456}
.field-map h2{margin:7px 0 0;font-size:23px;font-weight:400;letter-spacing:.12em}
.field-map svg{width:100%;height:auto;display:block;margin:17px 0 6px}
.field-map p{font-size:14px;line-height:1.8;margin:0 0 16px}
.map-close{display:block;margin-left:auto;background:none;border:0;border-bottom:1px solid #756a50;padding:10px 2px;min-height:44px;font:13px var(--font);color:#413c32;cursor:pointer}
.map-close:focus-visible{outline:2px solid #554e3f;outline-offset:4px}
@media(max-width:760px){.topbar h1{font-size:18px}.topbar p{display:block;font-size:9px}.topbar{left:max(20px,env(safe-area-inset-left));top:max(22px,env(safe-area-inset-top))}.bubble{font-size:14px}.scene-hint{font-size:11px}}
@media(max-height:420px){.topbar{display:block;top:14px;left:18px}.topbar h1{font-size:16px}.topbar p{display:none}.scene-hint{bottom:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.field-map{transform:none}}

.scene-controls{position:fixed;right:max(24px,env(safe-area-inset-right));top:max(14px,env(safe-area-inset-top));display:flex;align-items:center;gap:20px;z-index:3;font:11px/1.8 var(--font);letter-spacing:.08em;transition:opacity 1.5s}
.sound-cue,.mode-toggle{min-height:44px;padding:8px 0;border:0;background:none;font:inherit;letter-spacing:inherit;color:#dfc9a7;opacity:.85;text-shadow:0 2px 8px #000;cursor:pointer;touch-action:manipulation;white-space:nowrap}
.scene-controls button:focus-visible{outline:1px solid #e9b77c;outline-offset:4px}
.sound-cue[data-playing=true]{color:#aab6b8;opacity:.48}
@media(max-width:760px){.scene-controls{right:max(16px,env(safe-area-inset-right));top:max(12px,env(safe-area-inset-top));font-size:10px;letter-spacing:.02em;gap:16px}}
@media(max-height:420px){.scene-controls{top:3px;right:18px}}

.world-target[aria-disabled=true]{cursor:wait}
.field-map{max-height:calc(100dvh - 36px);overflow-y:auto;scrollbar-width:thin}
.signal-key{border-top:1px solid #8b795c50;border-bottom:1px solid #8b795c50;padding:10px 0;margin-bottom:14px}
.signal-key p{display:flex;align-items:center;gap:12px;margin:2px 0;font-size:13px;line-height:1.8}
.signal-dots{display:flex;gap:5px;min-width:43px;align-items:center}
.signal-dots i{display:block;width:7px;height:7px;background:#9b7547}
.field-map[data-answered=true] .watchtower-mark{stroke:#ac6d35;stroke-width:2}
.field-map[data-answered=true] .map-route{stroke:#99623e;stroke-width:2.5}
body[data-connected=true] .topbar{opacity:.76}

.frame:has(.world-target:focus-visible) .world-target:hover:not(:focus-visible)::after{opacity:0}
.frame:has(.world-target:focus-visible) .world-target:hover:not(:focus-visible)::before{border-color:transparent;box-shadow:none}

.world-target[data-object=map],.map-grip{touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.frame[data-map-dragging=true]{cursor:grabbing}
.frame[data-map-dragging=true] .world-target[data-object=map]{pointer-events:none}
.frame[data-map-dragging=true] .world-target::after{opacity:0}
#stage .world-target[data-object=fire][data-drop=ready]::before{border:2px solid #efb064bb;box-shadow:0 0 14px #e99c4033}
.map-grip{min-height:44px;display:flex;align-items:center;justify-content:flex-end;margin:-17px -10px 6px;padding:0 5px;font:11px var(--font);color:#74634a;border-bottom:1px solid #8b795c35}
.map-grip:focus-visible{outline:1px solid #74634a;outline-offset:2px}

.map-actions{display:flex;align-items:center;gap:24px}
.map-pick{background:none;border:0;border-bottom:1px solid #756a50;padding:10px 2px;min-height:44px;font:13px var(--font);color:#413c32;cursor:pointer}
.map-pick:focus-visible{outline:2px solid #554e3f;outline-offset:4px}

body[data-mode=ambient] .topbar{opacity:0}
body[data-mode=ambient] .bubble,body[data-mode=ambient] .scene-hint{display:none}
body[data-mode=ambient][data-idle=true]{cursor:none}
body[data-mode=ambient][data-idle=true] .scene-controls{opacity:0;pointer-events:none}
body[data-mode=explore] .frame[data-explorer-ready=true] #cv{cursor:crosshair}
body[data-mode=ambient] .explorer-target{display:none}
.world-target[data-object=lantern][data-carried=true]{z-index:1}
