:root{font-family:Tahoma,Noto Sans Thai,system-ui,sans-serif;color:#f8fafc;background:#081827;font-synthesis:none}*{box-sizing:border-box}html,body,#root{width:100%;height:100vh;height:100dvh;min-height:100%;margin:0;overflow:hidden}button{font:inherit}#runtime-error{position:fixed;inset:auto 10px 10px;z-index:9999;max-height:45vh;overflow:auto;padding:12px;background:#2a0710;color:#ffd6df;border:2px solid #ff5878;white-space:pre-wrap}.game-shell{position:relative;width:100%;height:100vh;height:100dvh;min-height:100%;overflow:hidden;background:#071522}.game-canvas{position:absolute;inset:0;overflow:hidden}.game-canvas canvas{display:block}.hud{position:absolute;z-index:20;border:3px solid #e2ae47;outline:2px solid #112942;background:linear-gradient(145deg,#173757f2,#0a1e35f5);box-shadow:0 5px #071523,0 12px 28px #0008}.game-logo{position:absolute;z-index:22;top:15px;left:18px;width:144px;padding:9px 8px 6px;transform:rotate(-1deg);text-align:center;border:3px solid #0b2139;border-radius:9px;background:linear-gradient(#f4b83c,#d27326 64%,#173655 65%);filter:drop-shadow(0 6px 0 #071728);text-shadow:2px 3px 0 #3d2416}.game-logo strong{display:block;color:#fff3ad;font:900 27px/20px Impact,sans-serif;letter-spacing:1px}.game-logo span{display:block;margin-top:7px;color:#fff;font-size:11px;font-weight:900;letter-spacing:.08em}.player-card{top:17px;left:176px;display:flex;gap:11px;align-items:center;min-width:290px;padding:8px 13px 9px 8px}.avatar{width:62px;height:62px;border:3px solid #f7d36e;background-color:#264e70}.actor-hero,.actor-fox{background-image:url(/assets/actors.png);background-repeat:no-repeat;background-size:200% 200%;image-rendering:pixelated}.actor-hero{background-position:left top}.actor-fox{background-position:right 58%}.player-card>div:last-child{min-width:195px}.player-card strong,.player-card span{display:block}.player-card strong{font-size:15px}.player-card strong b{float:right;color:#ffe09a}.player-card span{margin-top:5px;font-size:11px;color:#dbe7ef;font-weight:700}.exp-track{width:100%;height:9px;margin-top:5px;border:1px solid #e9b749;background:#071523}.exp-track i{display:block;height:100%;background:linear-gradient(90deg,#22b897,#52e0a8);transition:width .35s ease}.location-card{top:16px;right:265px;width:178px;padding:5px}.location-card>span{display:block;padding:3px 7px 6px;color:#ffe8a3;font-size:11px;font-weight:900}.mini-map{position:relative;height:78px;border:2px solid #d8a642;background:url(/assets/village-map.png) center/cover}.mini-map:after{content:"";position:absolute;inset:0;background:#12314b22}.mini-map i{position:absolute;z-index:1;left:42%;top:52%;width:12px;height:12px;border:3px solid white;border-radius:50%;background:#176fd0;box-shadow:0 0 0 2px #08233d}.quest-card{top:16px;right:16px;width:232px;min-height:112px;padding:12px 14px}.quest-card strong{display:block;margin-top:7px;color:#fff1b0;font-size:13px}.quest-card p{position:relative;margin:8px 0 0;padding-right:20px;color:#e2edf4;font-size:11px;line-height:1.45}.quest-card p i{position:absolute;right:0;top:0;width:15px;height:15px;border:2px solid #e6edf3}.quest-card p i.checked{background:#2fbc73;box-shadow:inset 0 0 0 3px #173857}.quest-kicker,.eyebrow{color:#7dd3fc;font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.inventory{position:absolute;z-index:24;left:50%;bottom:10px;display:flex;transform:translate(-50%);border:3px solid #d4a344;outline:2px solid #102740;background:#102b49ed;box-shadow:0 5px #071523}.inventory>*{width:56px;height:58px;display:grid;place-items:center;border-right:2px solid #48647c;font-size:26px}.inventory>*:last-child{border-right:0}.inventory strong{width:72px;color:#fff0a0;background:#17395c}.inventory strong small{display:block;margin-top:-15px;font-size:9px}.inventory span:empty:after{content:"";width:26px;height:26px;border:1px solid #537087;opacity:.45}.mobile-joystick{display:none}.control-hint{position:absolute;z-index:18;bottom:82px;left:50%;transform:translate(-50%);white-space:nowrap;padding:6px 11px;border:2px solid #c69a45;background:#102946df;color:#e5eef5;font-size:10px;box-shadow:0 4px #071523}.interact-button{position:absolute;z-index:25;left:50%;bottom:126px;transform:translate(-50%);min-width:180px;padding:11px 20px;border:3px solid #fff1aa;background:#e1a635;color:#172438;font-weight:900;box-shadow:0 6px #7d5315;cursor:pointer}.interact-button:active{transform:translate(-50%,4px);box-shadow:0 2px #7d5315}.dialog-card{position:absolute;z-index:40;left:50%;bottom:90px;transform:translate(-50%);width:min(720px,calc(100vw - 28px));display:grid;grid-template-columns:auto 1fr;gap:18px;padding:20px;border:4px solid #d5a84a;outline:2px solid #14314c;background:#f7ecd1;color:#16304a;box-shadow:0 8px #6f4a1f,0 18px 50px #0009}.npc-portrait{width:84px;height:84px;display:grid;place-items:center;border:3px solid #17334f;background:#8ed0c5;font-size:42px}.dialog-card h2{margin:5px 0;font-size:20px}.dialog-card p{margin:0;font-size:14px;line-height:1.6}.dialog-actions,.puzzle-actions{display:flex;justify-content:flex-end;gap:18px;margin-top:14px}.button{min-height:46px;min-width:150px;padding:9px 18px;border:3px solid #143454;outline:2px solid #d0a34d;font-weight:900;cursor:pointer;box-shadow:0 5px #0a2035}.button.primary{background:linear-gradient(#276fb6,#153f79);color:#fff}.button.secondary{background:linear-gradient(#ffd77a,#edac45);color:#1c2e3d}.button:focus-visible,.rack-tile:focus-visible,.board-cell:focus-visible,.interact-button:focus-visible{outline:4px solid #fff;outline-offset:3px}.companion-card{position:absolute;z-index:52;left:18px;bottom:18px;width:min(450px,46vw);min-height:112px;display:grid;grid-template-columns:105px 1fr;align-items:center;padding:8px 14px 8px 7px;border:4px solid #d5a84a;outline:2px solid #15324d;background:#fff0ca;color:#243043;box-shadow:0 6px #6f4a1f,0 15px 35px #0007}.companion-card .actor-fox{width:94px;height:94px}.companion-card p{margin:0;font-size:12px;line-height:1.55}.companion-card strong{display:block;margin-bottom:5px;font-size:15px}.modal-backdrop{position:absolute;inset:0;z-index:50;pointer-events:none}.puzzle-panel{position:absolute;pointer-events:auto;top:148px;right:18px;bottom:18px;width:min(690px,52vw);overflow:auto;padding:24px 26px 20px;border:6px solid #d4a443;outline:3px solid #102d4d;background:linear-gradient(#fff7dd,#f8e9c3);color:#142d48;box-shadow:9px 9px #092238,0 20px 45px #0007}.puzzle-panel:before,.puzzle-panel:after{content:"❧";position:absolute;bottom:4px;color:#7a9a32;font-size:30px}.puzzle-panel:before{left:8px}.puzzle-panel:after{right:8px;transform:scaleX(-1)}.close-button{position:absolute;top:7px;right:9px;width:36px;height:36px;border:0;background:transparent;color:#16304a;font-size:28px;cursor:pointer}.puzzle-panel h2{margin:3px 0;text-align:center;font-size:clamp(25px,3vw,40px);color:#123565;text-shadow:0 2px #fff}.puzzle-panel .eyebrow,.puzzle-intro{text-align:center}.puzzle-panel .eyebrow{color:#173c6b}.puzzle-intro{margin:4px 0 16px;color:#3f5368;font-weight:700}.board-legend{display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap;margin:0 0 7px;color:#42566c;font-size:10px;font-weight:800}.board-legend>span{padding:3px 6px;border:1px solid #b9a77c;background:#fff6df}.board-legend .legend-locked{background:#fff8e5}.board-legend .legend-new{background:#55dadd;color:#103846}.board-legend b{color:#153d6c}.board-viewport{overflow:auto;max-width:100%;padding:1px;-webkit-overflow-scrolling:touch}.matharena-board{display:grid;grid-template-columns:repeat(15,36px);grid-template-rows:repeat(15,36px);gap:1px;width:max-content;margin:0 auto;padding:8px;border:3px solid #bda474;border-radius:8px;background:#91794f;box-shadow:inset 0 2px 9px #61431c66}.board-cell{display:grid;place-items:center;width:36px;height:36px;padding:0;border:1px solid #c7b083;background:#ead9b4;color:#18314a;font-size:17px;font-weight:900;cursor:pointer}.board-cell:hover:not(.locked){filter:brightness(1.08);outline:2px solid #20a9b9;outline-offset:-2px}.board-cell.occupied{border:2px solid #87704b;box-shadow:inset 0 0 0 1px #fff7dd,0 2px #80643c}.board-cell.locked{background:#fff8e5;color:#142a42;cursor:default}.board-cell.new{background:linear-gradient(#61dce1,#22b8c1);color:#092e41}.board-cell.bonus-double-piece{background:#c9e9e8}.board-cell.bonus-triple-piece{background:#79c4d2}.board-cell.bonus-double-equation{background:#f3d590}.board-cell.bonus-triple-equation{background:#df9d69}.board-cell.bonus-center{background:#e5ad45;color:#fff9ce;text-shadow:0 1px #795219}.puzzle-message{min-height:24px;margin:11px 0 7px;text-align:center;font-size:12px;font-weight:700;color:#8a441d}.puzzle-message.success{color:#087b45}.rack{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;padding:9px;border:3px solid #d1a449;background:#17334f;box-shadow:inset 0 3px #071b2d}.rack-tile{width:50px;height:50px;border:3px solid #98711c;background:#f5c744;color:#14263a;font-size:23px;font-weight:900;box-shadow:0 4px #795612;cursor:pointer}.rack-tile.selected{transform:translateY(-5px);border-color:#fff;box-shadow:0 7px #795612}.rack-tile:disabled{opacity:.22;cursor:default}@media(max-width:1000px){.game-logo{width:112px}.game-logo strong{font-size:22px;line-height:17px}.player-card{left:142px;min-width:248px}.player-card>div:last-child{min-width:155px}.location-card{display:none}.puzzle-panel{width:56vw}}@media(max-width:720px){.game-logo{top:8px;left:8px;width:86px;padding:7px 4px 4px}.game-logo strong{font-size:17px;line-height:14px}.game-logo span{margin-top:4px;font-size:8px}.player-card{top:8px;left:103px;min-width:186px;padding:5px}.avatar{width:42px;height:42px}.player-card>div:last-child{min-width:128px}.player-card strong{font-size:11px}.player-card span{font-size:9px}.quest-card{top:70px;right:8px;width:190px;min-height:auto;padding:8px}.quest-card p{display:none}.inventory{bottom:max(8px,env(safe-area-inset-bottom))}.inventory>*{width:41px;height:44px;font-size:19px}.inventory strong{width:52px}.control-hint{bottom:calc(60px + env(safe-area-inset-bottom));font-size:9px}.mobile-joystick{position:absolute;z-index:26;bottom:max(24px,env(safe-area-inset-bottom));left:max(24px,env(safe-area-inset-left));display:grid;width:104px;height:104px;place-items:center;border:3px solid #e4b64f;border-radius:50%;background:radial-gradient(circle,#315575e8 0 45%,#102b49e8 47%);box-shadow:inset 0 0 0 6px #0a203588,0 4px #071523;touch-action:none}.mobile-joystick:before,.mobile-joystick:after{content:"";position:absolute;background:#a4cbe233}.mobile-joystick:before{width:2px;height:72px}.mobile-joystick:after{width:72px;height:2px}.joystick-knob{position:relative;z-index:1;width:43px;height:43px;border:3px solid #fff0a0;border-radius:50%;background:radial-gradient(circle at 35% 28%,#70d7e1,#1e7798);box-shadow:0 4px #0b3f5e;transition:transform .06s linear;pointer-events:none}.dialog-card{bottom:58px;grid-template-columns:1fr;padding:14px}.npc-portrait,.companion-card{display:none}.modal-backdrop{padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));background:#06121dcc;pointer-events:auto;overflow:auto}.puzzle-panel{position:relative;inset:auto;width:100%;max-height:none;min-height:100%;padding:18px 10px calc(14px + env(safe-area-inset-bottom))}.board-viewport{margin:0 auto}.matharena-board{grid-template-columns:repeat(15,28px);grid-template-rows:repeat(15,28px);padding:5px}.board-cell{width:28px;height:28px;font-size:14px}.button{min-width:125px}}@media(max-width:480px){.game-logo{top:calc(7px + env(safe-area-inset-top));left:8px;width:72px;padding:6px 3px 4px}.game-logo strong{font-size:15px;line-height:12px}.game-logo span{font-size:7px}.player-card{top:calc(7px + env(safe-area-inset-top));left:88px;right:8px;width:auto;min-width:0;gap:7px;padding:5px}.player-card>div:last-child{min-width:0;flex:1}.player-card strong{font-size:11px}.player-card span{font-size:9px}.avatar{width:39px;height:39px}.quest-card{top:calc(67px + env(safe-area-inset-top));left:8px;right:8px;width:auto;min-height:0;padding:7px 9px}.quest-card strong{margin-top:3px;font-size:12px}.inventory{right:8px;left:auto;width:218px;justify-content:stretch}.inventory>*{flex:1;width:auto}.inventory strong{flex:1.2;width:auto}.control-hint{bottom:calc(134px + env(safe-area-inset-bottom));max-width:calc(100vw - 150px);overflow:hidden;text-overflow:ellipsis}.interact-button{bottom:calc(162px + env(safe-area-inset-bottom));min-width:min(220px,calc(100vw - 32px));padding:9px 15px}.dialog-card{bottom:calc(62px + env(safe-area-inset-bottom));width:calc(100vw - 16px);gap:8px;padding:13px}.dialog-actions,.puzzle-actions{gap:9px}.puzzle-panel h2{font-size:clamp(25px,8vw,34px);line-height:1.18}.puzzle-intro{margin-bottom:10px;font-size:13px}.board-legend{gap:4px;font-size:9px}.board-legend>span{padding:2px 4px}.matharena-board{grid-template-columns:repeat(15,calc((100vw - 48px) / 15));grid-template-rows:repeat(15,calc((100vw - 48px) / 15));gap:1px;padding:4px}.board-cell{width:calc((100vw - 48px) / 15);height:calc((100vw - 48px) / 15);font-size:clamp(10px,3vw,13px)}.rack{gap:6px;padding:7px}.rack-tile{width:49px;height:49px;font-size:22px}.puzzle-actions{display:grid;grid-template-columns:1fr 1fr}.puzzle-actions .button{min-width:0;width:100%;padding:8px 5px}}@media(orientation:landscape)and (max-height:600px){.game-logo{top:calc(6px + env(safe-area-inset-top));left:8px;width:92px;padding:6px 4px 4px}.game-logo strong{font-size:18px;line-height:14px}.game-logo span{margin-top:4px;font-size:8px}.player-card{top:calc(6px + env(safe-area-inset-top));left:110px;min-width:225px;padding:5px 8px}.avatar{width:43px;height:43px}.quest-card{top:calc(6px + env(safe-area-inset-top));right:8px;width:210px;min-height:0;padding:7px 9px}.quest-card p{display:none}.inventory{bottom:calc(5px + env(safe-area-inset-bottom))}.inventory>*{width:43px;height:45px;font-size:19px}.inventory strong{width:54px}.control-hint{bottom:calc(58px + env(safe-area-inset-bottom))}.mobile-joystick{position:absolute;z-index:26;bottom:max(20px,env(safe-area-inset-bottom));left:max(24px,env(safe-area-inset-left));display:grid;width:88px;height:88px;place-items:center;border:3px solid #e4b64f;border-radius:50%;background:radial-gradient(circle,#315575e8 0 45%,#102b49e8 47%);box-shadow:inset 0 0 0 5px #0a203588,0 4px #071523;touch-action:none}.mobile-joystick:before,.mobile-joystick:after{content:"";position:absolute;background:#a4cbe233}.mobile-joystick:before{width:2px;height:60px}.mobile-joystick:after{width:60px;height:2px}.joystick-knob{position:relative;z-index:1;width:37px;height:37px;border:3px solid #fff0a0;border-radius:50%;background:radial-gradient(circle at 35% 28%,#70d7e1,#1e7798);box-shadow:0 3px #0b3f5e;pointer-events:none}.control-hint{bottom:calc(112px + env(safe-area-inset-bottom))}.interact-button{bottom:calc(126px + env(safe-area-inset-bottom));padding:8px 16px}.companion-card{display:none}.puzzle-panel{top:8px;right:8px;bottom:8px;width:min(650px,58vw);padding:14px 16px}.puzzle-panel h2{font-size:26px}.puzzle-intro{margin-bottom:8px;font-size:12px}.matharena-board{grid-template-columns:repeat(15,27px);grid-template-rows:repeat(15,27px);padding:5px}.board-cell{width:27px;height:27px;font-size:13px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
