@font-face{font-family:Monocraft;src:url(/assets/Monocraft-qNLEdAgL.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Monocraft;src:url(/assets/Monocraft-Bold-D8rCyoPo.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Galmuri11;src:url(/assets/Galmuri11-B0U2PLXI.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Galmuri11;src:url(/assets/Galmuri11-Bold-CP176DB6.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--grass: #2b1235;--grass-dark: #1d0b25;--grass-light: #4b2159;--dirt: #22102b;--dirt-dark: #150920;--stone: #33163f;--stone-dark: #7a4d91;--stone-light: #452054;--water: #c9a2ec;--water-dark: #a87bd1;--sky: #150920;--ink: #f4effa;--ink-soft: #c3abd6;--paper: #3c1a47;--seal: #b6ff00;--gold: #ffd23d;--ok: #b6ff00;--violet: #8a55a6;--brand: #b6ff00;--brand-dark: #93d400;--brand-ink: #1e0b26;--accent: var(--gold);--on-accent: #1e0b26;--danger: #ff4d6d;--surface: var(--paper);--surface-2: #4a2158;--surface-sunken: #260f30;--text: var(--ink);--text-soft: var(--ink-soft);--border: #0d0512;--line: #543063;--glow-brand: 0 0 10px rgba(182, 255, 0, .5);--glow-danger: 0 0 10px rgba(255, 77, 109, .5);--glow-accent: 0 0 10px rgba(255, 210, 61, .45);--fs-0: 9px;--fs-1: 11px;--fs-2: 12px;--fs-3: 14px;--fs-4: 16px;--fs-5: 20px;--fs-6: 26px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--bevel: 3px;--bezel: 4px;--bevel-light: rgba(255, 255, 255, .34);--bevel-dark: rgba(0, 0, 0, .32);--radius: 0px;--dur-fast: 90ms;--dur: .16s;--ease: steps(2, end);--pixel: "Monocraft", "Galmuri11", monospace;--body: "Monocraft", "Galmuri11", system-ui, sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--tabbar-h: calc(64px + var(--safe-bottom));font-family:var(--body);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;text-size-adjust:100%}*{box-sizing:border-box}::selection{background:var(--brand);color:var(--brand-ink)}html,body,#root{margin:0;height:100%;width:100%;overflow:hidden;overscroll-behavior:none}body{background:var(--sky);touch-action:manipulation}.pixel{font-family:var(--pixel);line-height:1.6;letter-spacing:.5px}img,.pixelated{image-rendering:pixelated}:focus-visible{outline:var(--bevel) solid var(--accent);outline-offset:2px}.block{border:var(--bevel) solid var(--border);box-shadow:inset var(--bevel) var(--bevel) 0 var(--bevel-light),inset calc(-1 * var(--bevel)) calc(-1 * var(--bevel)) 0 var(--bevel-dark)}button{color:inherit}.block-btn{border:var(--bevel) solid var(--border);background:var(--stone-light);color:var(--text);box-shadow:inset 0 0 0 2px #b6ff008c,inset var(--bevel) var(--bevel) 0 #fff6,inset calc(-1 * var(--bevel)) calc(-1 * var(--bevel)) 0 var(--bevel-dark);cursor:pointer;font-family:var(--pixel);font-size:var(--fs-1);padding:var(--sp-3) 10px;-webkit-user-select:none;user-select:none;transition:transform var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}@media(hover:hover){.block-btn:hover{background:var(--stone-light)}.block-btn.is-active:hover,.block-btn[aria-pressed=true]:hover{background:var(--brand-dark)}}.block-btn:active{box-shadow:inset 0 0 0 2px #b6ff008c,inset calc(-1 * var(--bevel)) calc(-1 * var(--bevel)) 0 #ffffff40,inset var(--bevel) var(--bevel) 0 var(--bevel-dark);transform:translatey(1px)}.block-btn[aria-pressed=true],.block-btn.is-active{background:var(--brand);color:var(--brand-ink);box-shadow:inset var(--bevel) var(--bevel) 0 #ffffff59,inset calc(-1 * var(--bevel)) calc(-1 * var(--bevel)) 0 var(--bevel-dark),var(--glow-brand)}.block-btn[disabled]{opacity:.5;cursor:not-allowed}.tag{display:inline-flex;align-items:center;gap:var(--sp-1);border:var(--bevel) solid var(--border);background:var(--surface);color:var(--text);font-size:var(--fs-2);padding:3px var(--sp-2);box-shadow:inset 2px 2px 0 var(--bevel-light),inset -2px -2px 0 var(--bevel-dark)}.cluster-block{display:flex;align-items:center;justify-content:center;background:var(--stone);color:var(--text);border:var(--bevel) solid var(--border);box-shadow:inset var(--bevel) var(--bevel) 0 #fff6,inset calc(-1 * var(--bevel)) calc(-1 * var(--bevel)) 0 var(--bevel-dark);font-family:var(--pixel);font-size:var(--fs-1);cursor:pointer;-webkit-user-select:none;user-select:none}.area-label{display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 8px;background:color-mix(in srgb,var(--surface) 88%,transparent);border:var(--bevel) solid var(--violet, #7a5cae);color:var(--text);font-family:var(--pixel);line-height:1.2;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;box-shadow:inset 2px 2px 0 var(--bevel-light),inset -2px -2px 0 var(--bevel-dark);transition:transform .1s}.area-label:hover{transform:translateY(-1px)}.area-label.is-active{background:var(--brand);color:var(--brand-ink)}.area-label .al-name{font-size:8px;letter-spacing:.3px}.area-label .al-count{font-size:7px;opacity:.72}.route-stop{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:2px solid var(--border);color:var(--brand-ink);font-family:var(--pixel);font-size:8px;line-height:1;box-shadow:0 0 0 1px #ffffff40;pointer-events:none}.maplibregl-canvas{image-rendering:pixelated}.maplibregl-map .maplibregl-ctrl-bottom-right,.maplibregl-map .maplibregl-ctrl-bottom-left{bottom:calc(var(--tabbar-h) + 4px)}.maplibregl-ctrl-attrib{font-family:var(--body);font-size:var(--fs-0)}@media(prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.route-walker{font-size:26px;line-height:1;background:var(--brand);border:var(--bevel) solid var(--border);box-shadow:var(--glow-brand);padding:3px 5px;image-rendering:pixelated;animation:walker-bob .5s steps(2,end) infinite}@keyframes walker-bob{0%{transform:translateY(0)}to{transform:translateY(-3px)}}.route-plate{display:none;font-family:var(--pixel);font-size:11px;background:var(--paper);color:var(--ink);border:var(--bevel) solid var(--border);padding:6px 9px;white-space:nowrap;animation:plate-pop .24s steps(3,end)}.route-plate-seq{background:var(--brand);color:var(--brand-ink);padding:0 5px;margin-right:4px}.route-plate-stamp{color:var(--seal);margin-left:6px}@keyframes plate-pop{0%{transform:scale(.4)}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.route-walker,.route-plate{animation:none}}
