:root{color-scheme:light;--paper:#f5e9d0;--ink:#4c533e;--muted:#7b8066;--rust:#a65e43;--green:#567561;font-family:"Trebuchet MS","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:280px}a,button{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}a,button{touch-action:manipulation}.town-viewport:focus-visible,a:focus-visible,button:focus-visible{outline:3px solid #a47446;outline-offset:4px}[hidden]{display:none!important}.boot-screen{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:32px;background:#20352f;color:#f1ddb2;overflow:hidden}.boot-screen::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.14;background:repeating-linear-gradient(0deg,transparent 0 3px,#070f0b 3px 4px)}.boot-screen::after{content:"";position:absolute;inset:16px;border:1px solid #e9d8b729;pointer-events:none}#skip-boot{position:absolute;top:max(30px,env(safe-area-inset-top));right:max(40px,env(safe-area-inset-right));display:grid;place-items:center;width:44px;height:44px;background:0 0;border:1px solid #ecd8af55;color:inherit;border-radius:3px;padding:10px}#skip-boot svg{display:block;width:20px;height:20px;fill:currentColor}.boot-center{position:relative;text-align:center;width:min(660px,100%);animation:boot-arrive .65s ease-out both}.boot-center h1{font-family:STKaiti,KaiTi,"Songti SC",serif;font-size:clamp(38px, 6vw, 66px);font-weight:400;line-height:1.25;letter-spacing:7px;margin:0;min-height:2.5em}.boot-center.is-changing{animation:boot-layer .5s ease-out both}.town-shell{position:fixed;inset:0;overflow:hidden;background:#dbe6da}.town-viewport{position:absolute;inset:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;touch-action:pan-x;overscroll-behavior-x:contain}.town-viewport:focus-visible{outline:0}.town-viewport::-webkit-scrollbar{display:none}.town-world{position:relative;width:1880px;height:900px}.town-canvas{position:absolute;left:0;top:0;width:1880px;height:900px;transform-origin:top left}.town-art{display:block;width:1880px;height:900px;pointer-events:none;user-select:none}body,html{width:100%;height:100%;overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.station{position:absolute;width:162px;text-align:center;color:#60583e;z-index:3}.station-follow{left:570px;top:580px}.station-message{left:1136px;top:555px;width:167px;color:#6a7453}.station h2{margin:0;font-size:calc(13px / var(--scene-scale, 1));line-height:1.3;font-weight:500;white-space:nowrap;letter-spacing:.5px}#invite-word{color:#9b6248;user-select:all}.station-actions{display:flex;align-items:center;justify-content:center;gap:calc(8px / var(--scene-scale,1));margin-top:calc(5px / var(--scene-scale,1))}.station-action{position:relative;display:grid;place-items:center;width:calc(36px / var(--scene-scale,1));height:calc(36px / var(--scene-scale,1));padding:calc(8px / var(--scene-scale,1));border:1px solid #a68c5b80;border-radius:50%;background:#f1dfb8b3;color:#806748;transition:background .2s,box-shadow .2s}.station-action::before{content:"";position:absolute;inset:calc(-4px / var(--scene-scale,1))}.station-message .station-action{background:#e7e4c8;border-color:#91a17e99;color:#617b5b}.station-action:hover{background:#fff3d2;box-shadow:0 2px 8px #725c3b20}.round-button svg,.station-action svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.check-icon,.is-copied .copy-icon{display:none!important}.is-copied .check-icon{display:block!important}.town-player{position:absolute;left:0;bottom:140px;width:80px;height:104px;border:0;padding:0;background:0 0;cursor:grab;touch-action:none;z-index:4}.town-player svg{display:block;width:100%;height:100%;pointer-events:none}.town-player:active{cursor:grabbing}.town-player[data-direction=left] svg{scale:-1 1}.town-player.is-walking svg{animation:chef-walk .28s ease-in-out infinite alternate}.round-button{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;padding:12px;border:1px solid #a3997466;border-radius:50%;background:#fbf2dcd9;color:#66775b;box-shadow:0 3px 12px #5a643215;transition:background .2s,border-color .2s}.round-button:hover{background:#fff8e7;border-color:#89966e}.round-button:active{background:#dce3c0}.back-link,.replay-button{position:absolute;top:max(26px,env(safe-area-inset-top));z-index:6}.back-link{left:max(28px,env(safe-area-inset-left))}.replay-button{right:max(28px,env(safe-area-inset-right))}.town-controls{position:absolute;left:50%;bottom:max(25px,env(safe-area-inset-bottom));translate:-50% 0;display:flex;align-items:center;gap:16px;padding:8px 10px;border:1px solid #b9af8a66;border-radius:36px;background:#ede4c999;backdrop-filter:blur(8px);z-index:6}.town-controls>button{touch-action:none}.quest-nav{display:flex;gap:8px}.quest-nav .round-button{background:#f4e9ccd9}.quest-nav .round-button[aria-current=location]{background:#d8dfbc;border-color:#7d9469}@keyframes boot-arrive{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}@keyframes boot-layer{0%{opacity:.2;translate:0 6px}45%{opacity:.65}100%{opacity:1;translate:0 0}}@keyframes chef-walk{from{translate:0 0;rotate:-2deg}to{translate:0 -3px;rotate:2deg}}@media (max-width:600px){.back-link,.replay-button{top:max(20px,env(safe-area-inset-top))}.back-link{left:max(20px,env(safe-area-inset-left))}.replay-button{right:max(20px,env(safe-area-inset-right))}.town-controls{gap:13px;bottom:max(22px,env(safe-area-inset-bottom))}.boot-screen{padding:28px 24px}#skip-boot{top:max(28px,env(safe-area-inset-top));right:max(24px,env(safe-area-inset-right))}.boot-center h1{font-size:clamp(30px, 9vw, 38px);letter-spacing:3px}}@media (max-height:500px){.town-controls{bottom:max(12px,env(safe-area-inset-bottom));padding:5px 8px}.boot-center h1{font-size:32px}.back-link,.replay-button{top:max(14px,env(safe-area-inset-top))}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation:none!important;transition:none!important}}