@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap";:root{--ink:#0f172a;--accent:#f97316;--accent-hover:#ea6a0c;--surface:#f8fafc;--card-bd:#cbd5e1;--hairline:#f1f5f9;--muted:#64748b;--faint:#94a3b8;--mono:"IBM Plex Mono", ui-monospace, monospace;--rail-w:56px;--topbar-h:56px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{color:var(--ink);background:var(--surface);-webkit-font-smoothing:antialiased;font-family:IBM Plex Sans,system-ui,sans-serif}a{color:inherit;text-decoration:none}.app{grid-template-columns:var(--rail-w) 1fr;grid-template-rows:var(--topbar-h) 1fr;grid-template-areas:"rail topbar""rail main";min-height:100vh;display:grid}.rail{background:var(--ink);flex-direction:column;grid-area:rail;align-items:stretch;gap:4px;height:100vh;padding:12px 0;display:flex;position:sticky;top:0;overflow:hidden;box-shadow:2px 0 18px #0f172a2e}.app.rail-expanded{--rail-w:232px}.rail-row{height:42px;color:var(--faint);white-space:nowrap;border-radius:11px;align-items:center;gap:12px;margin:0 7px;padding:0 11px;display:flex;position:relative}.rail-row svg{flex:none}.rail-row.active{background:var(--accent);color:#fff}.rail-toggle{font:inherit;cursor:pointer;background:0 0;border:0;margin-bottom:8px}.rail-label{opacity:0;transition:opacity .12s}.rail-expanded .rail-label{opacity:1}.rail-logo{color:#fff;align-items:center;gap:12px;height:34px;margin:0 7px 12px;padding:0 4px;font-weight:700;display:flex}.rail-logo .badge{background:var(--accent);border-radius:9px;flex:none;justify-content:center;align-items:center;width:34px;height:34px;font-size:14px;display:flex;box-shadow:0 4px 12px #f9731673}.rail-dot{background:#f59e0b;border:1.5px solid #0f172a;border-radius:999px;width:7px;height:7px;position:absolute;top:6px;right:6px}.rail-expanded .rail-dot{margin-left:auto;position:static}.topbar{z-index:1100;grid-area:topbar;position:sticky;top:0}main{background:var(--surface);grid-area:main;min-width:0;overflow:hidden auto}.page{max-width:1600px;margin:0 auto;padding:26px 28px 60px}.data-table{border:1px solid var(--card-bd);background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 1px 2px #0f172a0a}.data-head,.data-row{grid-template-columns:var(--cols);align-items:center;gap:12px;padding:13px 18px;display:grid}.data-head{border-bottom:1px solid var(--hairline);letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-size:10.5px;font-weight:700}.data-row{border-bottom:1px solid var(--surface)}.data-row:hover{background:var(--surface)}.two-col{align-items:flex-start;gap:20px;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.btn-accent{background:var(--accent);color:#fff;height:42px;font:inherit;cursor:pointer;border:none;border-radius:11px;align-items:center;gap:8px;padding:0 16px;font-size:13.5px;font-weight:600;display:inline-flex;box-shadow:0 6px 18px -8px #f97316b3}.btn-accent:disabled{cursor:not-allowed}.btn-ghost{border:1px solid var(--card-bd);height:38px;font:inherit;color:var(--muted);cursor:pointer;background:#fff;border-radius:10px;align-items:center;gap:6px;padding:0 14px;font-size:12.5px;font-weight:600;display:inline-flex}.control{border:1px solid var(--card-bd);height:40px;font:inherit;color:var(--ink);background:#fff;border-radius:10px;outline:none;padding:0 12px;font-size:13px}select.control{cursor:pointer}.map-canvas{width:100%;height:clamp(360px,70vh,760px)}@keyframes tm-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.tm-fade{animation:.18s ease-out tm-fade}@media (width<=899px){.two-col{flex-direction:column}.two-col>*{width:100%!important}}@media (width<=1023px){.app{grid-template-columns:1fr;grid-template-areas:"topbar""main"}.rail{display:none}}.only-mobile{display:none}.hide-mobile{display:inline}@media (width<=1023px){.only-mobile{display:inline-flex}}@media (width<=639px){.hide-mobile{display:none}.page{padding:18px 14px 48px}.data-head{display:none}.data-row{grid-template-columns:1fr;gap:6px;padding:14px 16px}.data-cell{justify-content:space-between;gap:12px;display:flex}.data-cell:before{content:attr(data-label);color:var(--faint);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.data-cell:empty{display:none}}
