:root{--ink:#2b2346;--bg:#f4f1ea;--card:#fff;--muted:#6b6684;--line:#e6e1d6;--green:#22a55b;--red:#e5484d;--amber:#f5a524;--purple:#6b4eff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%;font-family:ui-rounded,SF Pro Rounded,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{min-height:100dvh;margin:0}button{font:inherit;color:inherit;cursor:pointer}h1,h2,p{margin:0}.app{max-width:1180px;padding:max(10px, env(safe-area-inset-top)) 12px calc(24px + env(safe-area-inset-bottom));margin:0 auto}.topbar{justify-content:space-between;align-items:center;gap:8px;padding:2px 2px 10px;display:flex}.brand{align-items:center;gap:8px;display:flex}.brand img{border-radius:8px;display:block}.brand h1{letter-spacing:-.02em;font-size:1.3rem;font-weight:800}.sample-badge{text-transform:uppercase;letter-spacing:.06em;color:#8a5a00;background:#fff4d6;border:1.5px dashed #e0a400;border-radius:999px;padding:4px 9px;font-size:.72rem;font-weight:800}.layout{grid-template-columns:1fr;gap:12px;display:grid}@media (width>=900px){.layout{grid-template-columns:minmax(0,1fr) 360px;align-items:start}.side{max-height:calc(100dvh - 24px);padding-bottom:4px;position:sticky;top:12px;overflow:auto}.map-card{max-width:640px;margin:0 auto}}.stats{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 6px;margin:0 2px 8px;font-size:.8rem;display:flex}.stats b{color:var(--ink)}.stats .dot{border-radius:50%;width:8px;height:8px;margin-left:6px;display:inline-block}.dot.working{background:var(--green)}.dot.idle{background:#a5a1b8}.stat-waiting{color:#b42318;background:#ffe3e3;border-radius:999px;margin-left:auto;padding:3px 9px;font-weight:600;text-decoration:none}.stat-waiting b{color:inherit}.map-card{border:2px solid var(--ink);box-shadow:0 4px 0 var(--ink);background:#9be07f;border-radius:18px;overflow:hidden}.city{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:100%;height:auto;display:block}.note{color:var(--muted);margin:8px 4px 0;font-size:.72rem}.sign{letter-spacing:.04em;font:800 7.5px/1 system-ui,sans-serif}.plate{fill:#fff;font:700 7.5px/1 system-ui,sans-serif}.ticker{fill:#6cff9e;font:700 7px/1 ui-monospace,monospace}.billboard{letter-spacing:.03em;font:900 10px/1 system-ui,sans-serif}.tiny{fill:#2b2346;font:700 7px/1 system-ui,sans-serif}.bubble{fill:#e5484d;font:900 8px/1 system-ui,sans-serif}.building,.bot{cursor:pointer;outline:none}.building .facade{transition:filter .15s}.building:hover .facade,.building:focus-visible .facade{filter:brightness(1.08)}.building.is-selected .facade{stroke:#fff;stroke-width:3px}.bot.is-selected .figure>ellipse,.bot.is-selected .cab>rect:nth-child(2){stroke:#fff;stroke-width:2.5px}.bot:focus-visible .figure,.building:focus-visible{filter:drop-shadow(0 0 3px #fff)}.figure .bob{animation:1.8s ease-in-out infinite bob}.figure.walking .bob{animation:.45s ease-in-out infinite bob}.figure.walking .leg-l{animation:.45s ease-in-out infinite step}.figure.walking .leg-r{animation:.45s ease-in-out infinite reverse step}.alert{transform-box:fill-box;transform-origin:50%;animation:1.2s ease-in-out infinite pop}.flag{transform-box:fill-box;transform-origin:0;animation:1.6s ease-in-out infinite wave}.blink{animation:1.4s steps(2,end) infinite blink}.spray{transform-box:fill-box;transform-origin:bottom;animation:1.4s ease-in-out infinite spray}.cloud{animation:40s linear infinite drift}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-1.6px)}}@keyframes step{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes pop{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes wave{0%,to{transform:skewY(0)}50%{transform:skewY(8deg)}}@keyframes blink{50%{opacity:.2}}@keyframes spray{0%,to{transform:scaleY(1)}50%{transform:scaleY(.75)}}@keyframes drift{0%{transform:translate(-60px)}to{transform:translate(420px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.cloud{display:none}}.side{gap:12px;display:grid}.panel{background:var(--card);border:2px solid var(--ink);box-shadow:0 3px 0 var(--ink);border-radius:16px;padding:12px}.panel h2{align-items:center;gap:6px;font-size:1rem;font-weight:800;display:flex}.panel-head{justify-content:space-between;align-items:center;display:flex}.panel-sub{color:var(--muted);margin:4px 0 10px;font-size:.74rem}.count{background:var(--red);color:#fff;text-align:center;border-radius:999px;min-width:20px;padding:1px 7px;font-size:.72rem}.ghost{border:1.5px solid var(--line);background:0 0;border-radius:10px;padding:5px 10px;font-size:.8rem;font-weight:600}.ghost:disabled{opacity:.45;cursor:default}.ghost.small{padding:3px 8px;font-size:.75rem}.decisions{gap:8px;margin:0;padding:0;list-style:none;display:grid}.decision{border:1.5px solid var(--line);background:#fffdf8;border-radius:12px;padding:10px}.decision.is-approved{background:#eefbf3;border-color:#b7ebc9}.decision.is-declined{background:#fff1f1;border-color:#f6c4c4}.who{background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:.82rem;font-weight:700;display:inline-flex}.q{margin:6px 0 2px;font-size:.92rem;font-weight:700;line-height:1.25}.ctx{color:var(--muted);font-size:.78rem;line-height:1.35}.actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:9px;display:grid}.actions button{border:2px solid var(--ink);box-shadow:0 2px 0 var(--ink);border-radius:10px;padding:8px 0;font-size:.88rem;font-weight:800}.actions button:active{box-shadow:none;transform:translateY(2px)}.approve{color:#fff;background:#34c77b}.decline{background:#fff}.resolved{justify-content:space-between;align-items:center;margin-top:8px;display:flex}.empty{text-align:center;color:var(--muted);padding:6px;font-size:.85rem}.avatar{border:1.5px solid var(--ink);color:#fff;text-shadow:0 1px #00000040;border-radius:8px;flex:none;place-items:center;width:24px;height:24px;font-size:.72rem;font-weight:800;display:inline-grid}.pill{white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:.7rem;font-weight:800}.pill.working{color:#166534;background:#dcfce7}.pill.idle{color:#555170;background:#ecebf3}.pill.waiting{color:#b42318;background:#ffe3e3}.pill.approved{color:#166534;background:#dcfce7}.pill.declined{color:#b42318;background:#ffe3e3}.roster ul{grid-template-columns:1fr 1fr;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.roster button{border:1.5px solid var(--line);text-align:left;background:#faf8f3;border-radius:10px;align-items:center;gap:7px;width:100%;padding:6px 7px;display:flex}.r-name{flex-direction:column;flex:1;min-width:0;font-size:.8rem;font-weight:700;line-height:1.15;display:flex}.r-name small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.7rem;font-weight:500;overflow:hidden}.roster .pill{padding:2px 6px;font-size:.62rem}.roster .pill.waiting{width:9px;height:9px;padding:0;font-size:0}.roster .pill.waiting:after{content:""}.detail{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));background:var(--card);border:2px solid var(--ink);width:min(380px,100vw - 20px);box-shadow:0 4px 0 var(--ink), 0 12px 30px #2b234640;z-index:10;border-radius:16px;padding:12px;animation:.18s ease-out rise;position:fixed;transform:translate(-50%)}@keyframes rise{0%{opacity:0;transform:translate(-50%,12px)}}.detail-head{align-items:center;gap:10px;display:flex}.detail-head .avatar{border-radius:11px;width:36px;height:36px;font-size:1rem}.detail-title{flex:1;min-width:0}.detail-title h2{font-size:1.05rem;font-weight:800}.detail-title p{color:var(--muted);font-size:.78rem}.icon-btn{border:1.5px solid var(--line);background:#fff;border-radius:10px;width:32px;height:32px;font-size:1.2rem;line-height:1}.detail-row{align-items:center;gap:10px;margin:10px 0 8px;display:flex}.link{color:var(--purple);font-size:.8rem;font-weight:700;text-decoration:none}.task{background:#faf8f3;border-radius:10px;padding:8px 10px;font-size:.86rem;line-height:1.35}.task span{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:2px;font-size:.66rem;font-weight:800;display:block}.loading,.error{text-align:center;color:var(--muted);padding:40px 10px}.error{color:var(--red)}
