:root{--paper:#e9e4d6;--paper-bright:#f6f2e7;--ink:#1d1b18;--ink-soft:#4b4a44;--vermilion:#9d342c;--moss:#4b5a4a;--ochre:#c9a24a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--paper:#1b1a17;--paper-bright:#26241f;--ink:#ece6d6;--ink-soft:#b9b3a2}}:root[data-theme=dark]{--paper:#1b1a17;--paper-bright:#26241f;--ink:#ece6d6;--ink-soft:#b9b3a2}*{box-sizing:border-box}html,body{background:var(--paper);height:100%;color:var(--ink);margin:0;font-family:Be Vietnam Pro,Segoe UI,system-ui,sans-serif;overflow:hidden}.game-shell{width:100vw;height:100dvh;position:relative;overflow:hidden}.stage{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.touch-layer{touch-action:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0}.hud-top{pointer-events:none;justify-content:space-between;align-items:flex-start;gap:12px;display:flex;position:absolute;top:16px;left:16px;right:16px}.hud-top h1{text-shadow:0 1px 0 var(--paper-bright);margin:0;font-size:clamp(18px,3.2vw,26px);font-weight:600}.eyebrow{letter-spacing:.18em;color:var(--vermilion);margin:0 0 2px;font-size:11px}.chip{pointer-events:auto;border:1px solid var(--ink);background:var(--paper-bright);color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;padding:8px 14px}.chip.active{background:var(--vermilion);color:var(--paper-bright);border-color:var(--vermilion)}.offline-banner{background:var(--paper-bright);border-left:4px solid var(--ochre);border-radius:8px;margin:0;padding:8px 12px;font-size:13px;position:absolute;top:88px;left:16px;right:16px}.hud-bottom{pointer-events:none;align-items:flex-end;gap:12px;display:flex;position:absolute;bottom:16px;left:16px}.minimap{border-radius:10px;width:min(42vw,240px);height:auto;box-shadow:0 6px 22px #0000002e}.minimap-bg{fill:var(--paper-bright);stroke:var(--ink-soft);stroke-width:1px}.minimap-water{fill:#8fb0b3;stroke:#5f8b93;stroke-width:1px;opacity:.95}.minimap-waterway{fill:none;stroke:#7da4a8;stroke-linecap:round;stroke-linejoin:round}.minimap-wood{fill:#a9ba94;opacity:.85}.minimap-peak{fill:#8a8f7c;stroke:var(--ink-soft);stroke-width:.8px}.minimap .walker{fill:var(--vermilion);stroke:var(--paper-bright);stroke-width:1.5px}.minimap .walker-ring{fill:none;stroke:var(--vermilion);stroke-width:2px;opacity:.5}.road-card{background:var(--paper-bright);border-radius:10px;gap:2px;max-width:240px;padding:12px 14px;display:grid;box-shadow:0 6px 22px #00000024}.road-card strong{font-size:15px}.road-card span,.road-card small{color:var(--ink-soft);font-size:12px}@media (width<=560px){.hud-bottom{flex-direction:column;align-items:flex-start}.minimap{width:36vw}.road-card{max-width:60vw}}.scene{z-index:0;background:var(--paper);pointer-events:none;position:fixed;inset:0;overflow:hidden}.scene.paper-texture-viewport{pointer-events:auto;touch-action:none;cursor:grab}.scene.paper-texture-viewport:active{cursor:grabbing}.paper-texture-viewport{width:100%;height:100%;display:block;position:fixed}.pixi-shan-shui-viewport{isolation:isolate;touch-action:none}.pixi-shan-shui-canvas{z-index:1;pointer-events:auto;width:100%;height:100%;display:block;position:absolute;inset:0}.pixi-shan-shui-debug{display:none}.minimap-bg{fill:#efe8d5}.scene-loading{z-index:30;background:var(--paper);color:var(--ink-soft);letter-spacing:.14em;pointer-events:none;place-content:center;justify-items:center;gap:12px;display:grid;position:absolute;inset:0}.scene-loading p{margin:0;font-size:13px}.scene-loading .seal{background:var(--vermilion);width:44px;height:44px;color:var(--paper-bright);place-items:center;font-size:26px;animation:2.4s ease-in-out infinite seal-breathe;display:grid}@keyframes seal-breathe{0%,to{opacity:.75}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.scene-loading .seal{animation:none}}.gps-banner{background:var(--paper-bright);border-left:4px solid var(--ochre);z-index:5;border-radius:8px;margin:0;padding:8px 12px;font-size:13px;position:absolute;top:88px;left:16px;right:16px}.gps-banner.ok{border-left-color:var(--moss)}.link{font:inherit;color:var(--vermilion);cursor:pointer;pointer-events:auto;background:0 0;border:0;padding:0;text-decoration:underline}
