@font-face{font-family:Cormorant;src:url('assets/cormorant-light.ttf') format('truetype');font-style:normal;font-weight:300 500;font-display:swap}@font-face{font-family:Cormorant;src:url('assets/cormorant-italic.ttf') format('truetype');font-style:italic;font-weight:300 500;font-display:swap}@font-face{font-family:DM;src:url('assets/dm-sans.ttf') format('truetype');font-style:normal;font-weight:400 600;font-display:swap}
:root{color-scheme:dark;--ivory:#f5e9d6;--soft:#dbd5c6;--forest:#17251b;--serif:Cormorant,Georgia,serif;--sans:DM,Arial,sans-serif;font-family:var(--sans);color:var(--ivory);font-size:16px}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:var(--forest);user-select:none;-webkit-user-select:none;touch-action:manipulation}button,select,input{font:inherit}button{cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent;transition:background .25s,transform .25s,border-color .25s}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--ivory);outline-offset:5px}button:active{transform:scale(.96)}.icon-library{position:absolute;width:0;height:0;overflow:hidden}#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% 43%,transparent 45%,#101a1848 100%)}#hud{position:fixed;top:max(28px,env(safe-area-inset-top));left:36px;right:36px;display:flex;align-items:center;justify-content:space-between;transition:opacity 1s}.brand{font-family:var(--serif);font-size:35px;font-weight:300;letter-spacing:-1px;text-shadow:0 2px 18px #0006}.top-actions{display:flex;gap:9px}.top-actions button{border:1px solid #fff3;background:#17251b3d;backdrop-filter:blur(12px);width:43px;height:43px;border-radius:50%;display:grid;place-items:center}.top-actions svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}.top-actions button:hover{background:#f5e9d626;border-color:#f5e9d688}#location{position:fixed;left:36px;bottom:91px;display:flex;flex-direction:column;text-shadow:0 2px 12px #0009;transition:opacity 1s}#biome{font-family:var(--serif);font-size:31px;margin:0 0 3px}#altitude{font-size:11px;letter-spacing:.5px;color:#e2decead}#stats{position:fixed;right:38px;bottom:92px;display:flex;align-items:center;gap:8px;font-size:13px;opacity:.65;text-shadow:0 1px 9px #000;transition:opacity .6s}#stats svg{width:21px;height:21px;fill:none;stroke:var(--ivory);stroke-width:1.25}#desktop-help{position:fixed;bottom:29px;left:0;right:0;display:flex;justify-content:center;gap:26px;font-size:11px;color:#f5e9d6b0;transition:opacity 1s}kbd{font-family:var(--sans);font-size:10px;border:1px solid #e9f2df40;border-radius:3px;padding:4px 6px;margin-right:5px}#context{position:fixed;left:50%;bottom:100px;transform:translateX(-50%);display:flex;align-items:center;gap:9px;background:#17251ba6;backdrop-filter:blur(18px);border:1px solid #f5e9d628;border-radius:30px;padding:11px 18px;font-size:12px}#context kbd{margin:0}#toast{position:fixed;top:22%;left:50%;transform:translate(-50%,8px);opacity:0;transition:.5s;font-size:13px;text-align:center;text-shadow:0 2px 12px #000;pointer-events:none;min-width:250px;max-width:80vw;line-height:1.6}#toast.show{opacity:1;transform:translate(-50%,0)}#target{position:fixed;width:23px;height:23px;border:1px solid #f5e9d6a6;border-radius:50%;pointer-events:none;display:none;transform:translate(-50%,-50%);box-shadow:0 0 20px #f5e9d61a}#target span{display:block;width:5px;height:5px;background:var(--ivory);border-radius:50%;margin:8px}#crosshair{position:fixed;left:50%;top:50%;width:3px;height:3px;background:#fff9;border-radius:50%;display:none}
#overlay{position:fixed;inset:0;display:flex;align-items:center;transition:opacity 1.3s;background:#152216;isolation:isolate;overflow:hidden}.arrival-art{position:absolute;inset:0;z-index:-1;background:url('assets/forest-arrival.webp') center/cover no-repeat;animation:arrive 2s ease-out both}.intro{margin-left:7.3vw;margin-top:-1vh;position:relative}.intro h1{font-family:var(--serif);font-weight:300;letter-spacing:-.055em;font-size:clamp(88px,11.5vw,178px);line-height:.94;margin:0 0 5px}.intro-subtitle{font:italic 300 clamp(26px,3vw,48px)/1.15 var(--serif);margin:0 0 62px 3px;letter-spacing:-.02em}.intro-cta{width:clamp(260px,24.5vw,410px)}#start,#resume{display:flex;justify-content:center;align-items:center;background:var(--ivory);border:1px solid #fffb;color:#2b3026;border-radius:8px;padding:14px 25px;font-family:var(--serif);font-weight:400;font-size:clamp(24px,1.9vw,31px);width:100%;min-height:60px;box-shadow:0 2px 12px #00000008}#start:hover,#resume:hover{background:#fff5e6;box-shadow:0 5px 30px #ead9a921}.intro-whisper{font:300 clamp(18px,1.5vw,24px)/1.4 var(--serif);margin:12px 0 0;text-align:center;color:#f5e9d6dc}.intro-bottom{position:absolute;left:3vw;right:3vw;bottom:max(30px,env(safe-area-inset-bottom));display:flex;justify-content:space-between;align-items:center;font:300 22px/1.3 var(--serif)}.headphone-note{font:11px/1.5 var(--sans);letter-spacing:.2px;opacity:.68;max-width:270px;text-align:right}#loading{position:fixed;bottom:12px;left:50%;transform:translateX(-50%);font:11px var(--sans);color:var(--soft);padding:8px 14px;white-space:nowrap;background:#142018a1;border-radius:20px}
dialog{border:1px solid #f5e9d627;background:#18281ef5;color:var(--ivory);width:min(480px,92vw);max-height:90dvh;overflow:auto;padding:38px 40px 32px;border-radius:16px;box-shadow:0 22px 100px #0005;touch-action:pan-y}dialog::backdrop{background:rgb(7 21 14 / 38%)}dialog h2{font:300 58px/1 var(--serif);letter-spacing:-1.8px;margin:0 0 9px}.pause-subtitle{font:italic 25px var(--serif);margin:0 0 28px;color:#e7dfcbba}.close{position:absolute;right:14px;top:12px;font-size:27px;font-weight:300;width:35px;height:35px;border:0;border-radius:50%;background:none;color:#e7dfcbaa}.close:hover{background:#fff1}.help-grid{display:grid;grid-template-columns:1fr auto;font-size:11px;gap:13px;margin:24px 0 28px;color:#f5e9d699}.help-grid b{font-weight:400;color:#eee5d4;text-align:right}.setting{display:flex;align-items:center;justify-content:space-between;font-size:12px;border-top:1px solid #f5e9d617;padding:16px 0;gap:10px}.setting select{background:#22382b;border:1px solid #f5e9d624;padding:7px 9px;color:var(--ivory);border-radius:5px;font-size:16px}.setting input{width:130px;accent-color:#e3d2ab;height:24px}.quiet-button{border:0;background:none;padding:10px 0 17px;font-size:11px;color:#dfd6bfad;text-decoration:underline;text-underline-offset:4px}#resume{font-family:var(--sans);font-size:12px;min-height:49px;justify-content:space-between;border-radius:6px;margin-top:4px;padding:15px 18px}#resume span{font-size:19px}.touch-note{display:none;font-size:12px;line-height:1.8;color:#e7dfcbaa;margin:22px 0}#touch-controls{display:none}.hidden{display:none!important}body.playing #overlay{opacity:0;pointer-events:none}body:not(.playing) #location,body:not(.playing) #stats,body:not(.playing) #desktop-help,body:not(.playing) #hud{opacity:0;pointer-events:none}body.immersed #location,body.immersed #desktop-help{opacity:0}body.immersed .brand{opacity:.6}body.immersed #stats{opacity:.3}@keyframes arrive{from{opacity:.5;transform:scale(1.015)}to{opacity:1;transform:scale(1)}}
@media(pointer:coarse){body.playing #touch-controls{display:block}#desktop-help{display:none}#joystick{position:fixed;left:38px;bottom:max(42px,env(safe-area-inset-bottom));width:118px;height:118px;border:1px solid #f5e9d638;border-radius:50%;background:#16372819;touch-action:none}#stick{position:absolute;left:37px;top:37px;width:42px;height:42px;border:1px solid #f5e9d66b;border-radius:50%;background:#f5e9d626;backdrop-filter:blur(3px)}.touch-actions{position:fixed;bottom:max(43px,env(safe-area-inset-bottom));right:32px;display:flex;align-items:flex-end;gap:13px}.touch-actions button{border:1px solid #f5e9d657;border-radius:50%;background:#19291b4d;backdrop-filter:blur(9px);font-size:11px;width:67px;height:67px}#jump{width:84px;height:84px}#jump span{display:block;font-size:22px;line-height:25px;margin-top:3px}#interact{visibility:hidden}#context{bottom:148px}#context kbd{display:none}#location{bottom:186px}#stats{bottom:151px}.help-grid{display:none}.touch-note{display:block}}
@media(max-width:1100px) and (max-aspect-ratio:6/5){.arrival-art{background-position:85% center}.arrival-art:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#0c1a13df 0%,#0c1a1370 36%,transparent 70%)}#overlay{align-items:flex-end}.intro{margin:0 7.5vw 18vh}.intro h1{font-size:clamp(78px,18vw,124px);letter-spacing:-.055em}.intro-subtitle{font-size:31px;margin:4px 0 27px}.intro-cta{width:min(295px,76vw)}#start{font-size:25px;min-height:57px}.intro-whisper{font-size:19px}.intro-bottom{left:7.5vw;right:7.5vw;bottom:max(28px,env(safe-area-inset-bottom));font-size:20px}.headphone-note{display:none}.intro h1,.intro-subtitle{text-shadow:0 2px 30px #0711099c}}
@media(max-width:700px){#hud{top:max(20px,env(safe-area-inset-top));left:22px;right:22px}.brand{font-size:29px}.top-actions{gap:6px}.top-actions button{width:37px;height:37px}.top-actions svg{width:17px;height:17px}#location{left:24px}#biome{font-size:28px}#stats{right:25px}#joystick{left:26px}.touch-actions{right:22px}dialog{padding:32px 26px 24px}dialog h2{font-size:52px}#desktop-help{gap:12px;font-size:10px}#desktop-help span:last-child{display:none}}
@media(max-height:520px) and (orientation:landscape){.intro h1{font-size:18vh}.intro-subtitle{font-size:6vh;margin-bottom:5vh}.intro-cta{width:260px}#start{font-size:23px;min-height:48px;padding:9px 18px}.intro-whisper{font-size:17px}.intro-bottom{bottom:16px;font-size:17px}.headphone-note{font-size:9px}#hud{top:16px}#joystick{bottom:24px;width:100px;height:100px}#stick{left:28px;top:28px}.touch-actions{bottom:24px}#location{bottom:143px}#context{bottom:30px}#stats{bottom:132px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

#start:disabled{cursor:default;opacity:.65}.webgl-unavailable #loading{white-space:normal;max-width:90vw;width:max-content;text-align:center;bottom:8px;font-size:12px}#loading{pointer-events:none}

/* Preserve the squirrel focal point on portrait and near-square tablets. */
@media(min-width:701px) and (max-width:1100px) and (max-aspect-ratio:6/5){.intro{margin-bottom:15vh}.intro h1{font-size:clamp(106px,14vw,140px)}.intro-subtitle{font-size:36px}.intro-cta{width:320px}.arrival-art:after{background:linear-gradient(0deg,#0c1a13b8,transparent 68%)}}
.webgl-unavailable .intro-bottom{display:none}.webgl-unavailable #loading{bottom:max(22px,env(safe-area-inset-bottom));max-width:min(90vw,560px);padding:12px 18px;line-height:1.55}

#run{position:absolute;right:4px;bottom:100px;width:65px;height:42px;border-radius:22px;font-size:12px}#run[aria-pressed="true"]{background:var(--ivory);color:var(--forest);border-color:var(--ivory)}@media(max-height:520px) and (orientation:landscape){#run{bottom:90px}}
@media(pointer:coarse){#stats{bottom:210px}}@media(pointer:coarse) and (max-height:520px) and (orientation:landscape){#stats{bottom:178px}}
html,body{width:100%;height:100%;height:100dvh}#world{height:100dvh}body.immersive-screen .brand,body.immersive-screen #location,body.immersive-screen #stats,body.immersive-screen #desktop-help{opacity:0;pointer-events:none}body.immersive-screen #hud{top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right))}:fullscreen{width:100%;height:100%;background:#17251b}:-webkit-full-screen{width:100%;height:100%;background:#17251b}
body:not(.playing):not(.webgl-unavailable) #loading{display:none}

/* Keep browser gestures separate from the two-finger game controls. */
html{overflow:hidden;overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{overscroll-behavior:none}button,select,input{touch-action:manipulation}#world,#joystick,.touch-actions{touch-action:none}
#world{z-index:0}.vignette{z-index:1}#hud,#location,#stats,#desktop-help,#context,#toast,#target,#crosshair,#touch-controls{z-index:2}#overlay{z-index:3}#loading{z-index:4}
body:has(dialog[open]) #touch-controls{visibility:hidden}
dialog:not([open]){display:none}

/* Game-wide ownership includes gestures spanning HUD, buttons and the canvas. */
html.game-gestures,html.game-gestures body,html.game-gestures body *{touch-action:none!important}
/* If Safari was already magnified, keep native pinch available to get out. */
html.game-zoom-recovery,html.game-zoom-recovery body,html.game-zoom-recovery body *{touch-action:pan-x pan-y pinch-zoom!important}
#world,#joystick,#hud button,.touch-actions button{-webkit-touch-callout:none}
