@font-face{font-family:Balsamiq;src:url('./assets/fonts/BalsamiqSans-Bold.ttf') format('truetype');font-display:swap;font-weight:700}@font-face{font-family:Nunito;src:url('./assets/fonts/Nunito-Variable.ttf') format('truetype');font-display:swap;font-weight:200 900}@font-face{font-family:Patrick;src:url('./assets/fonts/PatrickHand-Regular.ttf') format('truetype');font-display:swap}
:root{--cream:#fff6df;--paper:#fff8e8;--wood:#b58a5b;--darkwood:#785537;--sage:#5b735d;--terra:#9d5138;--ink:#494435;--muted:#82765f;--line:#d9c6a2;color-scheme:light;font-family:Nunito,system-ui,sans-serif;color:var(--ink);font-size:15px}*{box-sizing:border-box}body{margin:0;background:#e9e4cf;overflow:hidden}button,input,a{font:inherit}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer;border:1px solid #bda887;border-radius:10px;background:#fff8e8;min-height:44px;padding:9px 16px;font-weight:750;box-shadow:0 2px 0 #bda88755}button:hover{background:#f0e2c4;border-color:var(--wood)}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--terra);outline-offset:3px}a{color:var(--sage)}[hidden]{display:none!important}h1,h2,h3{font-family:Balsamiq,system-ui,sans-serif;font-weight:700}h2{font-size:27px;line-height:1.2}p{line-height:1.6}#world{position:fixed;inset:0}#world canvas{display:block;width:100%;height:100%;touch-action:none}.vignette{position:fixed;inset:0;box-shadow:inset 0 0 130px #76643a18;pointer-events:none}.hud{position:fixed;top:max(20px,env(safe-area-inset-top));left:max(26px,env(safe-area-inset-left));right:max(26px,env(safe-area-inset-right));display:flex;justify-content:space-between;align-items:center;gap:12px;z-index:3;pointer-events:none}.hud>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:12px;background:#fff6dfed;border:1px solid #ccb68e;border-radius:12px;padding:10px 17px;box-shadow:0 4px 16px #645c3310}.brand-mark{font-size:39px;line-height:1;color:var(--sage)}h1{font-size:25px;margin:0}.brand span:not(.brand-mark){font:16px Patrick,cursive;color:var(--muted)}nav{display:flex;gap:9px}nav button{background:#fff6dfee;min-height:46px}nav span{margin-left:7px;color:var(--sage)}.scene-note{position:fixed;left:30px;bottom:85px;font:19px Patrick,cursive;color:#5c644c;pointer-events:none;text-shadow:0 1px #fff9}.overlay{position:fixed;inset:0;background:#e9e4cf60;backdrop-filter:blur(4px);display:grid;place-items:center;z-index:10;padding:20px;overflow-y:auto}.welcome-board{width:min(580px,100%);position:relative;background:repeating-linear-gradient(0deg,#8d6443 0,#8d6443 2px,#9d7450 3px,#9d7450 46px,#795538 47px,#a27c54 49px);padding:19px;border-radius:20px;border:3px solid #735439;box-shadow:0 18px 55px #453e3a2b,0 5px 0 #735439;transform:rotate(-.7deg)}.paper{background:var(--cream);border:1px solid #e4ce9e;box-shadow:0 3px 6px #45322233}.welcome-paper{text-align:center;padding:22px 35px 15px;border-radius:3px;transform:rotate(.7deg)}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:900;color:var(--sage);margin:0 0 5px}.village-art{width:100%;max-height:165px;display:block}.welcome-paper h2{font-size:32px;margin:8px 0 12px}.welcome-paper>p:not(.eyebrow):not(.handwritten):not(.load-error){margin:0 auto;max-width:390px;font-size:15px}.welcome-facts{display:flex;justify-content:center;gap:14px;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line);padding:12px 0;margin:20px 0;font-size:12px;color:var(--muted)}.primary{background:var(--sage);color:#fff6df;border:1px solid #435c46;box-shadow:0 3px 0 #3e5442;border-radius:9px;min-height:46px;padding:11px 22px;font-weight:800;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}.primary:hover{background:#6e8668;border-color:#435c46}.welcome-paper>.primary{min-width:225px}.handwritten{font-family:Patrick,cursive;font-size:17px;line-height:1.4;color:#8b7558;margin:18px 0 3px}.screw{position:absolute;top:7px;width:9px;height:9px;border-radius:50%;background:linear-gradient(45deg,#b8ad8e 44%,#5c5447 46%,#5c5447 55%,#b8ad8e 57%);box-shadow:0 1px 2px #4b3526}.screw.left{left:7px}.screw.right{right:7px}.load-error{color:var(--terra);font-size:13px;margin:8px}.desktop-hint{position:fixed;left:26px;bottom:max(25px,env(safe-area-inset-bottom));background:#fff6dfeb;padding:12px 16px;border:1px solid #c6b795;border-radius:10px;font-size:12px;color:#73694f}.desktop-hint span{margin:0 8px}kbd{font:11px Nunito,sans-serif;font-weight:900;padding:3px 5px;border:1px solid #cfc19f;border-radius:4px;background:#f8ecd0}#interact{position:fixed;bottom:max(25px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:4;white-space:nowrap}#interact kbd{color:var(--ink)}.compass{position:fixed;right:32px;bottom:26px;color:#6a765d;text-align:center;font:13px Patrick,cursive}.compass span{display:block;font-size:32px}#joystick{display:none}#toast{position:fixed;top:110px;left:50%;transform:translateX(-50%);z-index:8;max-width:90%;padding:10px 20px;border-radius:9px;background:#fff6dff2;box-shadow:0 4px 15px #3a382922;font-weight:700;font-size:13px;pointer-events:none}#toast:empty{display:none}
.clipboard{width:min(510px,calc(100% - 32px));max-height:calc(100dvh - 80px);overflow:auto;color:var(--ink);border:10px solid #a57d53;border-radius:13px;padding:34px 26px 24px;background:var(--cream);box-shadow:0 18px 70px #302c3450}.clipboard::backdrop{background:#3d433453;backdrop-filter:blur(3px)}.clip{position:absolute;top:0;left:50%;transform:translateX(-50%);width:100px;height:18px;background:linear-gradient(#d4ccb3,#9e9b8c);border:2px solid #848475;border-radius:0 0 7px 7px}.close{border:none;background:transparent;box-shadow:none;font-size:28px;line-height:1;min-width:44px;min-height:44px;padding:4px}.clipboard>.close{position:absolute;right:8px;top:7px}.clipboard h2{margin:8px 0 18px}.resident-card{display:flex;align-items:center;gap:13px;border-top:1px dashed var(--line);padding:13px 0}.resident-card .mini-face{width:57px;height:65px;flex:none}.resident-card h3{margin:0 0 3px;font-size:19px}.resident-card p{margin:0;font-size:12px;color:var(--muted)}.resident-card button{margin-left:auto;font-size:12px;padding:8px 10px}.resident-card .resident-info{min-width:0}.journal-entry{border-left:2px solid #bdc2a1;padding:0 0 12px 16px;margin:20px 0}.journal-entry time{font:14px Patrick,cursive;color:var(--muted)}.journal-entry p{margin:4px 0;font-size:14px}.button-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.return p{font-size:15px}
#dialogue{position:fixed;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(850px,calc(100% - 42px));max-height:calc(100dvh - 130px);background:var(--cream);border:7px solid #ad8558;border-radius:15px;box-shadow:0 12px 50px #39362944;z-index:9;padding:0 22px 17px}#portrait{position:absolute;left:22px;top:-68px;width:104px;height:119px;filter:drop-shadow(0 3px 0 #9a764b44);pointer-events:none}#portrait svg{width:100%;height:100%}.dialogue-header{display:flex;justify-content:space-between;align-items:center;padding:10px 0 10px 120px;border-bottom:1px dashed var(--line);min-height:68px}.dialogue-header h2{font-size:23px;margin:0 0 3px}#speaker-role{font:15px Patrick,cursive;color:var(--muted)}.dialogue-body{max-height:calc(100dvh - 245px);overflow:auto;overscroll-behavior:contain;padding:10px 1px 2px}#dialog-mode{font-size:9px;letter-spacing:1px;text-transform:uppercase;background:#e6e8cf;color:var(--sage);padding:3px 8px;border-radius:5px;font-weight:900}#speech{font-size:17px;line-height:1.6;min-height:77px;margin:11px 0 4px;overflow-wrap:anywhere;white-space:pre-wrap}.reading-tools{display:flex;justify-content:flex-end;gap:12px;min-height:45px}.reading-tools button{min-height:44px;font-size:12px;border:none;box-shadow:none;background:transparent;padding:8px}#paging{display:flex;align-items:center;font-size:12px}#responses{border-top:1px dashed var(--line);padding-top:12px}#choices{display:flex;gap:8px;flex-wrap:wrap}#choices button{background:#f5e9ce;font-size:13px;text-align:left;flex:1 1 180px;padding:10px 12px}#write{background:transparent;border:none;box-shadow:none;padding:10px 0;color:var(--sage);font-size:13px}#compose{display:flex;gap:8px;flex-wrap:wrap;padding-top:8px}#message{min-width:80px;flex:1 1 200px;min-height:46px;border:1px solid #bbaa88;border-radius:8px;padding:10px;background:#fffcf4;color:var(--ink)}#dialog-error{padding:10px;background:#f4e0c9;color:#7f4934;border-radius:8px}#dialog-error p{font-size:13px;margin:0 0 5px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.noscript{position:fixed;inset:15%;background:var(--cream);padding:30px;z-index:20}.fallback #world{background:radial-gradient(ellipse at center,#cbd3aa,#e9e4cf)}.fallback .scene-note{left:25px;right:25px;top:40%;bottom:auto;text-align:center}.fallback .desktop-hint,.fallback #joystick,.fallback .compass{display:none!important}
@media(pointer:coarse){.desktop-hint{display:none}#joystick{display:flex;position:fixed;left:max(15px,env(safe-area-inset-left));bottom:max(22px,env(safe-area-inset-bottom));flex-direction:column;align-items:center;gap:3px;z-index:4;touch-action:none}#joystick>div{display:flex;gap:3px;align-items:center}#joystick button{width:47px;height:44px;padding:0;background:#fff6dfdb;box-shadow:0 2px 0 #95836b66;font-size:23px;touch-action:none}#joystick span{width:38px;text-align:center;color:#7f8b68}#interact{left:auto;right:18px;transform:none;bottom:45px;max-width:calc(100% - 165px);white-space:normal;font-size:12px;padding:12px}.compass{display:none}.scene-note{bottom:184px;font-size:16px;left:18px}}
@media(max-width:600px){.hud{left:12px;right:12px;top:max(12px,env(safe-area-inset-top));gap:8px}.brand{padding:8px 10px;gap:7px}.brand-mark{font-size:28px}.brand h1{font-size:20px}.brand span:not(.brand-mark){font-size:12px}nav{gap:5px}nav button{padding:7px 10px;font-size:12px}nav span{display:none}.welcome-board{padding:11px;border-radius:14px}.welcome-paper{padding:22px 17px 15px}.welcome-paper h2{font-size:27px}.welcome-paper>p:not(.eyebrow):not(.handwritten):not(.load-error){font-size:14px}.welcome-facts{gap:9px;font-size:10px;margin:16px 0}.village-art{max-height:135px}.handwritten{font-size:15px}.eyebrow{font-size:9px}.overlay{padding:16px}#dialogue{bottom:max(10px,env(safe-area-inset-bottom));width:calc(100% - 18px);padding:0 13px 10px;border-width:5px;max-height:calc(100dvh - 125px)}#portrait{left:10px;top:-52px;width:85px;height:97px}.dialogue-header{padding-left:94px;min-height:64px}.dialogue-header h2{font-size:21px}#speech{font-size:15px;min-height:77px}#choices button{flex-basis:125px;font-size:12px}.clipboard{padding:30px 18px 20px;border-width:8px}.clipboard h2{font-size:25px}.resident-card{gap:8px}.resident-card .mini-face{width:45px}.resident-card h3{font-size:17px}.resident-card p{font-size:11px}#toast{top:90px;font-size:12px}}
@media(max-height:600px){.overlay{padding:12px}.welcome-board{max-width:600px}.welcome-paper{padding:14px 24px}.village-art{height:75px}.welcome-paper h2{margin:2px 0 7px;font-size:26px}.welcome-paper>p:not(.eyebrow):not(.handwritten):not(.load-error){font-size:13px}.welcome-facts{padding:7px 0;margin:9px 0}.handwritten{margin:10px 0 2px;font-size:14px}#dialogue{max-height:calc(100dvh - 85px);bottom:8px}.dialogue-body{max-height:calc(100dvh - 173px)}#speech{font-size:14px;min-height:44px}.dialogue-header{min-height:57px}#portrait{top:-42px;height:92px}.scene-note{display:none}.clipboard{max-height:calc(100dvh - 28px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Circular eight-direction pad; edit fields intentionally retain text selection. */
body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}input,textarea,[contenteditable="true"]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
#joystick{display:none}
@media(pointer:coarse),(max-width:900px){
 .scene-note{display:none!important}.desktop-hint{display:none}
 #joystick{display:block;position:fixed;left:max(18px,env(safe-area-inset-left));bottom:max(22px,env(safe-area-inset-bottom));width:132px;height:132px;border:3px solid #a58a60;border-radius:50%;background:radial-gradient(circle,#ead7ae99 0 35%,#fff6dfcc 36% 66%,#b8a17d99 67%);box-shadow:0 5px 0 #78553744,inset 0 0 0 6px #fff6df66;touch-action:none;z-index:4}
 .joystick-rim{position:absolute;inset:7px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;color:#785537;font:18px Nunito,sans-serif;pointer-events:none}.joystick-rim span{align-self:stretch;display:flex;justify-content:center;word-spacing:33px;font-size:19px}
 #joystick-knob{position:absolute;left:50%;top:50%;width:55px;height:55px;border-radius:50%;border:2px solid #826744;background:radial-gradient(circle at 35% 25%,#fff1cf,#cbb184);box-shadow:0 4px 6px #634d3b40;transform:translate(-50%,-50%);pointer-events:none}
 #interact{left:auto;right:18px;transform:none;bottom:50px;max-width:calc(100% - 175px)}
}

@media(pointer:coarse),(max-width:900px){#joystick .joystick-rim{width:auto;height:auto;gap:0}#joystick .joystick-rim span{width:auto;display:block;text-align:center;word-spacing:29px;color:#785537;flex:none}}
