:root{--ink: #161513;--ink-soft: #4a463f;--paper: #f4f1ea;--paper-deep: #e7e1d6;--moss: #4e6227;--sand: #c4b496;--line: rgba(22, 21, 19, .16);--near: #8c3d22;font-family:Be Vietnam Pro,Segoe UI,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body,#app{margin:0;height:100%}body{background:#d5ddd4}html{-webkit-text-size-adjust:100%}#app{position:relative;overflow:hidden;touch-action:none;background:radial-gradient(ellipse at 50% 42%,#f7f6f1,#e3ebe4 58%,#c9d4cc)}header{position:absolute;z-index:3;top:0;left:0;right:0;display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:18px 22px 0;pointer-events:none}.brand-block h1,.brand{margin:0}.brand{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}.brand-block h1{font-size:28px;font-weight:700;letter-spacing:-.03em;line-height:1.1}.tools{display:flex;gap:8px;pointer-events:auto}button{font:inherit;color:var(--ink);background:#f4f1eaeb;border:1px solid var(--line);border-radius:999px;padding:8px 14px;cursor:pointer}button:hover{background:#fff}#status{position:absolute;z-index:3;top:78px;left:22px;right:22px;margin:0;max-width:420px;font-size:13px;line-height:1.45;color:var(--ink-soft);pointer-events:none}#stage{position:absolute;top:0;right:0;bottom:0;left:0}#stage svg{display:block;width:100%;height:100%}.land{stroke:#1c241059;stroke-width:1;vector-effect:non-scaling-stroke}.land.nui{fill:#3e5224}.land.cao{fill:#54682e}.land.trung{fill:#667843}.land.bien{fill:#6f8650}.land.bang{fill:#8b9a62}#pins{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mark-wrap{position:absolute;width:0;height:0;pointer-events:none}.mark{pointer-events:auto;position:absolute;width:var(--size, 7px);height:var(--size, 7px);margin:0;padding:0;border:0;border-radius:50%;background:#e23b32;transform:translate(-50%,-50%);--glow: 10px;animation:mark-glow 2.2s ease-in-out infinite}.mark.is-many{--glow: 18px}.mark.is-near{background:#ff5a4a}.mark-name{position:absolute;left:0;top:0;display:grid;justify-items:start;gap:1px;white-space:nowrap;color:var(--ink);pointer-events:none;cursor:pointer;background:#f4f1eaf0;border:1px solid rgba(22,21,19,.12);border-radius:8px;padding:4px 8px 5px;box-shadow:0 1px 2px #16151314;transform:translate(var(--ax, -50%),var(--ay, -50%)) translate(var(--lx, 12px),var(--ly, 0px));transition:opacity .7s ease}.mark-name b{font-size:13px;font-weight:700;line-height:1.15}.mark-name i{display:flex;align-items:center;gap:4px;font-style:normal;font-size:11px;font-weight:500;color:var(--ink-soft)}.mark-name i span{font-size:14px;line-height:1}@keyframes mark-glow{0%,to{box-shadow:0 0 calc(var(--glow) * .45) 2px #e23b328c}50%{box-shadow:0 0 var(--glow) 6px #e23b321f}}.you{display:block;width:9px;height:9px;border-radius:50%;background:var(--ink);box-shadow:0 0 0 3px #f4f1eae6}.you-wrap{position:absolute;transform:translate(-5px,-5px);pointer-events:none}.you-wrap span{display:block;margin-left:16px;font-size:11px;font-weight:600}#room{position:absolute;z-index:4;top:0;right:0;bottom:0;left:0;overflow:auto;background:var(--paper);color:var(--ink);clip-path:circle(0% at var(--ox, 50%) var(--oy, 45%));pointer-events:none;visibility:hidden}#room.is-open{visibility:visible;pointer-events:auto;clip-path:circle(150% at var(--ox, 50%) var(--oy, 45%));transition:clip-path .75s ease}.room-inner{max-width:680px;margin:0 auto;padding:28px 22px 72px}.back{border-radius:999px;margin-bottom:28px}.seal{display:inline-block;margin:0 0 18px;padding:8px 12px;border:1.5px solid rgba(140,61,34,.55);border-radius:50%;color:var(--near);font-size:11px;letter-spacing:.04em;transform:rotate(-8deg)}.room-kicker{margin:0;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}#room h2.village-name{margin:4px 0 0;font-size:48px;line-height:1.05;letter-spacing:-.04em}.meta{margin:8px 0 0;font-size:16px}.distance{margin:6px 0 0;color:var(--ink-soft);font-size:14px}.room-section{margin-top:32px;padding-top:18px;border-top:1px solid var(--line)}.room-section h3{margin:0 0 10px;font-size:13px;letter-spacing:.12em;text-transform:uppercase}.room-section p{margin:0 0 8px;font-size:17px;line-height:1.5}.empty{color:var(--ink-soft)}.pair{margin-top:12px;border-radius:999px}@media(max-width:640px){.brand-block h1{font-size:22px}#room h2.village-name{font-size:36px}header{padding-right:12px}.tools{flex-direction:column;align-items:flex-end}.mark-name b{font-size:14px}.mark-name i{font-size:12px}}@media(prefers-reduced-motion:reduce){#room.is-open,.mark,.mark-name{transition:none;animation:none}}
