#tour{position:fixed;inset:0;background:#10212c}#world{position:absolute;inset:0;cursor:grab;outline:none}#world:active{cursor:grabbing}#photoView{position:absolute;inset:0;background:radial-gradient(ellipse at center,#39404a,#0b1823 72%);display:grid;place-items:center;overflow:hidden}#scenePhoto{width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}#hotspots{position:absolute;inset:0;pointer-events:none}.spot{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:auto;border:0;background:none!important;padding:5px;color:white;cursor:pointer;max-width:200px}.spot .dot{display:grid;place-items:center;width:44px;height:44px;background:#0c273cd9;border:1px solid #d2eaffc4;border-radius:50%;font:25px/1 Arial;box-shadow:0 0 0 6px #122e4520,0 3px 18px #0004;transition:transform .2s}.spot:hover .dot,.spot:focus-visible .dot{transform:scale(1.12);background:#194d64}.spot .label{font:10px/1.3 Body,sans-serif;letter-spacing:.3px;padding:6px 10px;border-radius:3px;background:#081b2be8;white-space:nowrap}.spot.locked .dot{color:#f3cb75;border-color:#f3cb75}.gamebar{z-index:3;padding-top:max(18px,env(safe-area-inset-top));background:linear-gradient(#06131ef5,transparent)}.gamebar b{text-transform:uppercase}#objective{top:98px;left:24px;max-width:235px;padding:13px 15px;border:1px solid #acc8e52b;border-left:2px solid var(--mint);border-radius:4px;background:#071824df}#objective span{line-height:1.5}#objective b{font-size:12px}.view-switch{position:absolute;left:50%;top:95px;transform:translateX(-50%);display:flex;background:#071824e8;padding:4px;border:1px solid #adcce440;border-radius:24px;pointer-events:auto;white-space:nowrap}.view-switch button{font:10px Body,sans-serif;color:#c2d6e6;padding:10px 15px;border-radius:20px;background:none;border:0}.view-switch button[aria-pressed=true]{background:#a9c6eb;color:#071824}#surroundNote{position:absolute;left:50%;top:144px;transform:translateX(-50%);font-size:9px;padding:6px 9px;border-radius:3px;background:#071824cc;color:#d5dfe9;white-space:nowrap}#bearing{position:absolute;right:28px;top:104px;text-align:right;background:#071824c9;padding:10px 12px;border-radius:4px}#bearing span{font-size:17px;color:#d3e5ff;font-variant-numeric:tabular-nums}#bearing small{display:block;font-size:7px;letter-spacing:1.4px;margin-top:4px}#orbit{bottom:106px;right:26px;display:flex;gap:7px}#orbit button{width:39px;height:39px}.tour-actions{position:absolute;left:50%;bottom:max(40px,calc(env(safe-area-inset-bottom) + 20px));transform:translateX(-50%);display:flex;gap:8px;align-items:center;white-space:nowrap;pointer-events:auto}.tour-actions button{padding:13px 18px;border:1px solid #a9c6eb50;border-radius:5px;background:#071824eb;color:#e1ecfa;font:11px Body,sans-serif;box-shadow:0 5px 22px #0002}.tour-actions button.primary{background:#a9c6eb;color:#071824;font-weight:700}.tour-actions button:disabled{opacity:.35;cursor:default}#tourProgress{position:absolute;bottom:15px;left:50%;transform:translateX(-50%);display:flex;gap:8px}#tourProgress i{width:5px;height:5px;border-radius:50%;background:#d7e7f44d}#tourProgress i.visited{background:#8da8bd}#tourProgress i.current{background:#bdebdc;box-shadow:0 0 0 3px #bdebdc33}#transition{position:fixed;inset:0;z-index:35;background:#071824;display:grid;place-items:center;color:#cde0ed;font-size:12px;letter-spacing:2px;animation:fadein .2s}#transitionText::before{content:'';display:block;width:30px;height:30px;border:1px solid #9cb9dc33;border-top-color:#bfe7df;border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 20px}#toast{position:absolute;bottom:120px;left:50%;transform:translateX(-50%);background:#071824ed;border:1px solid #e5c88955;border-radius:5px;padding:14px 22px;color:#ffe6ad;font-size:12px;max-width:90vw;white-space:nowrap}#detail{padding:0;background:#081824;max-width:96vw;max-height:96dvh;border:1px solid #9abade55}#detail img{display:block;max-width:94vw;max-height:90dvh;object-fit:contain}#closeDetail{position:absolute;right:10px;top:10px;z-index:2;background:#071824e8;border-radius:50%;color:white;width:40px;height:40px}body.talking #tour{filter:brightness(.8)}.conversation-card{backdrop-filter:blur(12px)}#conversation{background:#07182420}#cover{z-index:10}.source-note{line-height:1.5}button:focus-visible{outline:2px solid #c6e6ff;outline-offset:4px}@keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:1000px){#photoView{padding:0 280px}#scenePhoto{object-position:center}#objective{top:125px}.view-switch{top:115px;left:26px;transform:none;position:absolute;top:auto;bottom:100px}#surroundNote{left:26px;bottom:72px;top:auto;transform:none;max-width:220px;white-space:normal;line-height:1.5}body.photo #bearing{display:none!important}}
@media(max-width:700px){.gamebar{padding:14px 14px 18px;padding-top:max(14px,env(safe-area-inset-top))}.gamebar nav{gap:6px}.gamebar small{font-size:7px}.gamebar b{font-size:9px;letter-spacing:.5px}#objective{top:72px;left:14px;right:14px;max-width:none;padding:8px 12px;background:#071824db}#objective small{font-size:7px;margin-bottom:3px}#objective b{font-size:11px}#objective span{display:none}.view-switch{top:133px}.view-switch button{padding:9px 14px;font-size:9px}#surroundNote{top:177px;font-size:7px}#bearing{top:auto;bottom:109px;right:16px;padding:7px 9px}#bearing span{font-size:12px}#bearing small{display:none}#orbit{left:16px;right:auto;bottom:105px}#orbit button{width:36px;height:36px;font-size:19px}.tour-actions{gap:6px;max-width:calc(100% - 24px);bottom:max(37px,calc(env(safe-area-inset-bottom) + 15px))}.tour-actions button{padding:12px 13px;font-size:10px}.spot .label{font-size:8px;max-width:150px;white-space:normal;text-align:center}.spot .dot{width:36px;height:36px;font-size:21px}.spot{max-width:150px}#toast{bottom:160px;white-space:normal;text-align:center;width:max-content;max-width:85vw}#tourProgress{bottom:12px}.conversation-card{max-height:83dvh}#question{font-size:18px}.source-note{font-size:8px}}
@media(max-height:550px) and (orientation:landscape){.view-switch{top:18px}#objective{top:75px;max-width:210px}#surroundNote{top:62px;font-size:8px}#bearing{top:80px}#orbit{bottom:89px}.tour-actions{bottom:25px}#tourProgress{bottom:8px}#conversation .conversation-card{width:55%;max-height:96dvh}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation-duration:.01ms!important}}
#player{position:absolute;transform:translate(-50%,-100%);pointer-events:none;z-index:1;transition:opacity .2s;filter:drop-shadow(0 3px 2px #3a291a28)}#player::after{content:'';position:absolute;bottom:2%;left:10%;width:80%;height:4%;border-radius:50%;background:#2c241b55;filter:blur(4px);z-index:-1}#playerSprite{width:100%;height:100%;background-image:url('assets/olive-cartoon.webp');background-size:400% 100%;background-position:33.3333% 0;background-repeat:no-repeat}#player.walking{animation:walkaway .65s ease-in forwards}#player.walking #playerSprite{animation:gait .32s steps(1) infinite}#hotspots{z-index:2}@keyframes gait{0%,100%{background-position:66.6667% 0}50%{background-position:100% 0}}@keyframes walkaway{to{transform:translate(-50%,-114%) scale(.86)}}

#photoView{display:block}#scenePhoto{position:absolute;inset:0;width:100%;height:100%;min-height:0;max-height:100%}@media(min-width:1000px){#scenePhoto{left:280px;width:calc(100% - 560px)}}

.spot .label{opacity:0;transition:opacity .15s}.spot:hover .label,.spot:focus-visible .label{opacity:1}.gamebar>div{max-width:70%}.gamebar b{display:block;max-width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
.spot.locked .dot{background:transparent;border-color:transparent;color:transparent;box-shadow:none}
#world{width:100%;height:100%;touch-action:none}.view-switch{z-index:4}#player.turn-step #playerSprite{animation:gait .32s steps(1) infinite}body:not(.photo) #objective{background:#071824b8}#orbit{z-index:4;pointer-events:auto;position:absolute}.gamebar{pointer-events:none}.gamebar nav{pointer-events:auto}#photoView[hidden],#world[hidden],#orbit[hidden],#bearing[hidden]{display:none!important}
@media(min-width:1000px){body:not(.photo) .view-switch{left:26px;bottom:105px;top:auto}body:not(.photo) #orbit{bottom:107px}}

/* Keep controls below the walking surface; character size never depends on yaw. */
#world{height:calc(100% - 84px)}#photoView{bottom:84px}#tour::after{content:'';position:absolute;bottom:0;left:0;right:0;height:84px;background:linear-gradient(#081a27ed,#06131e);pointer-events:none}#player{z-index:1}#hotspots{z-index:2}

@media(max-width:700px){#world{height:calc(100% - 132px)}#photoView{bottom:132px}#tour::after{height:132px}#orbit{bottom:89px}#bearing{bottom:92px}}

/* One continuous exploration mode and a camera-relative turntable character. */
#playerSprite{background-image:url('assets/olive-turntable.png');background-size:400% 200%;background-repeat:no-repeat;background-position:0 0}
#player.walking #playerSprite{animation:directionalStep .34s ease-in-out infinite alternate}
@keyframes directionalStep{from{transform:translateY(0) rotate(-.7deg)}to{transform:translateY(-1.1%) rotate(.7deg)}}

/* Eight walking directions, four poses per cycle. No static-image sliding gait. */
#player.walking{animation:none;transform:translate(-50%,calc(-100% - var(--walk-progress,0)*22px)) scale(calc(1 - var(--walk-progress,0)*.06))}
#player.walking #playerSprite{animation:none;background-image:url('assets/olive-walk.png');background-size:400% 800%;transform:none}
#player.walking::after{left:35%;width:30%}

#joystick{position:absolute;left:24px;bottom:12px;width:92px;height:92px;border:1px solid #acd5e35e;border-radius:50%;background:#112a3ac9;touch-action:none;pointer-events:auto;z-index:6;display:grid;place-items:center;box-shadow:inset 0 0 20px #0005}
#stick{width:39px;height:39px;border-radius:50%;background:#a8c7e4;border:2px solid #d3e4ee;box-shadow:0 3px 10px #0006;pointer-events:none}
#orbit{bottom:108px!important;left:auto;right:20px}
#player.walking{transform:translate(-50%,-100%);animation:none}
.tour-actions{left:auto!important;right:20px!important;transform:none!important;bottom:28px!important}
#tourProgress{pointer-events:none}
@media(max-width:700px){#joystick{width:88px;height:88px;left:18px;bottom:22px}#orbit{bottom:92px!important;right:18px}#bearing{right:18px!important;bottom:128px!important}.tour-actions{right:18px!important;bottom:29px!important}.tour-actions button{padding:12px;font-size:11px}#alternateBtn{display:none}}
#joystick #stick{position:relative;left:auto;top:auto;bottom:auto;display:block}

/* Direct camera gestures: non-interactive overlays never intercept swipes. */
#world{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}#objective,#bearing,#tourProgress{pointer-events:none}#bearing small{display:block!important;font-size:8px;letter-spacing:.8px}

/* iOS long-press must belong to camera movement, including HUD text overlays. */
#tour,#hud,#tour *,#hud *{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#tour,#hud{touch-action:none;overscroll-behavior:none}
@media(max-width:700px){
 .cover-art>img{width:100%;height:100%;object-fit:cover;object-position:20% 0;max-width:100%}
 .cover-art{height:400px}
}
