:root{--bg: #f4f6f8;--surface: #ffffff;--fg: #1b2330;--muted: #5d6878;--line: #dfe3ea;--accent: #1d5fd1;--accent-fg: #ffffff;--ok: #19794a;--warn: #a15c00;--bad: #b3261e;--mark: #fff3c4;--land: #e8ecdf;--sea: #dbe8f3;--grid: #c9d3de;--demo-bg: #fff3c4;--demo-fg: #5b4300;--font: system-ui, -apple-system, "Segoe UI", sans-serif;--mono: ui-monospace, "SFMono-Regular", Menlo, monospace}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #12161d;--surface: #1a2029;--fg: #e6eaf1;--muted: #9aa5b6;--line: #2b3441;--accent: #6ea2ff;--accent-fg: #0d1520;--ok: #54c58a;--warn: #e8a54a;--bad: #ff8a80;--mark: #4a3f12;--land: #263027;--sea: #1b2a3a;--grid: #2f3d4d;--demo-bg: #4a3f12;--demo-fg: #f3dc8a;color-scheme:dark}}:root[data-theme=dark]{--bg: #12161d;--surface: #1a2029;--fg: #e6eaf1;--muted: #9aa5b6;--line: #2b3441;--accent: #6ea2ff;--accent-fg: #0d1520;--ok: #54c58a;--warn: #e8a54a;--bad: #ff8a80;--mark: #4a3f12;--land: #263027;--sea: #1b2a3a;--grid: #2f3d4d;--demo-bg: #4a3f12;--demo-fg: #f3dc8a;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 var(--font);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:12px 40px;overflow-x:hidden}.app{max-width:1180px;margin:0 auto}.demo{background:var(--demo-bg);color:var(--demo-fg);border-radius:6px;padding:6px 12px;font-size:13px;margin-bottom:12px}header.bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;padding-bottom:10px}header.bar h1{margin:0;font-size:20px;font-weight:600}header.bar .ver{font:12px var(--mono);color:var(--muted);margin-left:8px;font-weight:400}.who{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;color:var(--muted)}nav.tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px}nav.tabs button{font:inherit;color:var(--muted);background:none;border:0;border-bottom:2px solid transparent;padding:9px 12px;cursor:pointer;margin-bottom:-1px}nav.tabs button:hover{color:var(--fg)}nav.tabs button[aria-selected=true]{color:var(--fg);border-bottom-color:var(--accent);font-weight:500}nav.tabs .spacer{flex:1}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h2{font-size:17px;margin:0 0 12px;font-weight:600}h3{font-size:15px;margin:0 0 8px;font-weight:600}.panel{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:16px;min-width:0}.panel+.panel{margin-top:12px}.cols{display:grid;gap:12px;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start}.cols2{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start}.pill{display:inline-block;font-size:12px;padding:1px 8px;border-radius:10px;border:1px solid currentColor;white-space:nowrap}.pill.ok{color:var(--ok)}.pill.warn{color:var(--warn)}.pill.bad{color:var(--bad)}.pill.mute{color:var(--muted)}.tag-demo{font:11px var(--mono);background:var(--demo-bg);color:var(--demo-fg);padding:1px 6px;border-radius:4px;white-space:nowrap}.tag-real{font:11px var(--mono);border:1px solid var(--ok);color:var(--ok);padding:0 6px;border-radius:4px;white-space:nowrap}.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.row .grow{flex:1;min-width:160px}button.btn,a.btn{font:inherit;cursor:pointer;border-radius:6px;padding:7px 13px;border:1px solid var(--line);background:var(--surface);color:var(--fg);text-decoration:none;display:inline-block}button.btn:hover{border-color:var(--accent)}button.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}button.btn.sm{padding:3px 10px;font-size:13px}button.btn:disabled{opacity:.5;cursor:not-allowed}label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}input,select{font:inherit;width:100%;max-width:440px;padding:7px 10px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}input[type=checkbox],input[type=radio]{width:auto;max-width:none}input[aria-invalid=true]{border-color:var(--bad)}.err{color:var(--bad);font-size:13px;min-height:18px;margin-top:3px}.field{margin-bottom:12px}.opt{display:flex;gap:8px;align-items:flex-start;margin-bottom:6px;font-size:14px;color:var(--fg)}.opt input{margin-top:4px}.two{display:grid;gap:12px;grid-template-columns:1fr 1fr;max-width:440px}.states{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;align-items:center}.states .lbl{font-size:12px;color:var(--muted);margin-right:4px}.states button,.chip{font:12px var(--mono);padding:4px 10px;border-radius:12px;border:1px solid var(--line);background:none;color:var(--muted);cursor:pointer}.states button[aria-pressed=true],.chip[aria-pressed=true]{color:var(--accent-fg);background:var(--accent);border-color:var(--accent)}.empty{color:var(--muted);padding:28px 0;text-align:center}.note{border:1px solid var(--line);border-left:4px solid var(--accent);background:var(--surface);border-radius:6px;padding:10px 14px;margin-bottom:12px;font-size:14px}.note.warn{border-left-color:var(--warn)}.note.bad{border-left-color:var(--bad)}.note.ok{border-left-color:var(--ok)}.skel{height:14px;background:var(--line);border-radius:4px;margin:10px 0;animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;font-weight:500;color:var(--muted);font-size:12px;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:8px;border-bottom:1px solid var(--line);vertical-align:top}tr.clk{cursor:pointer}tr.clk:hover td{background:var(--bg)}tr.sel td{background:var(--mark)}.num{font-family:var(--mono);font-size:13px}.sub{color:var(--muted);font-size:12px}.attr{font-size:12px;color:var(--muted);border-top:1px solid var(--line);margin-top:12px;padding-top:8px}.attr a{color:var(--accent)}svg.map{width:100%;max-width:640px;height:auto;display:block;border-radius:6px;border:1px solid var(--line);background:var(--sea)}svg.map .land{fill:var(--land)}svg.map .gr{stroke:var(--grid);stroke-width:.6}svg.map text{font:10px var(--mono);fill:var(--muted)}svg.map .pt{fill:var(--accent);stroke:var(--surface);stroke-width:1.5;cursor:pointer}svg.map .pt.sel{fill:var(--bad)}svg.map .pt.dim{opacity:.3}svg.map .cell{fill:none;stroke:var(--warn);stroke-width:1.5;stroke-dasharray:4 3}svg.map .pick{fill:var(--warn);stroke:var(--surface);stroke-width:1.5}.prog{height:8px;background:var(--line);border-radius:4px;overflow:hidden;min-width:80px}.prog>i{display:block;height:100%;background:var(--accent)}pre.json{font:12px/1.45 var(--mono);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:10px;overflow:auto;max-height:260px;margin:8px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.kv{display:grid;grid-template-columns:150px minmax(0,1fr);gap:4px 12px;margin:0;font-size:14px}.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%);background:var(--fg);color:var(--bg);padding:10px 16px;border-radius:8px;font-size:14px;max-width:90vw;z-index:9}.log{list-style:none;margin:0;padding:0;display:grid;gap:12px}.log li{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:14px;min-width:0}.log li.flash{background:var(--mark)}.log .meta{display:flex;flex-wrap:wrap;gap:4px 12px;font:12px var(--mono);color:var(--muted);margin-bottom:8px}.log .meta .issue{color:var(--accent)}.log dl{display:grid;grid-template-columns:56px minmax(0,1fr);gap:4px 12px;margin:0 0 10px}.log dt{color:var(--muted);font-size:13px}.log dd{margin:0;overflow-wrap:anywhere}.prow{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) auto;gap:8px;align-items:end;margin-bottom:8px}.prow label{margin:0}.prow input{margin-top:4px;max-width:none}.hint{color:var(--muted);font-size:13px;margin:0 0 14px}.tw{overflow-x:auto}@media (max-width: 860px){.cols{grid-template-columns:minmax(0,1fr)}}@media (max-width: 720px){table.resp thead{display:none}table.resp,table.resp tbody,table.resp tr,table.resp td{display:block;width:100%}table.resp tr{border:1px solid var(--line);border-radius:6px;margin-bottom:8px;padding:6px 4px;background:var(--surface)}table.resp td{border:0;padding:3px 8px;display:flex;gap:8px}table.resp td:before{content:attr(data-l);color:var(--muted);font-size:12px;min-width:96px;flex:none}.kv{grid-template-columns:110px minmax(0,1fr)}.prow{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.prow>:first-child{grid-column:1 / -1}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.sr{position:absolute;left:-9999px}.row.end{justify-content:flex-end}.keybox{font:13px var(--mono);background:var(--bg);border:1px dashed var(--warn);border-radius:6px;padding:10px;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.gbtn{display:inline-block}.chk{display:flex;flex-wrap:wrap;gap:4px 16px;margin-bottom:8px}table .btn.sm+.btn.sm{margin-left:4px}.mapwrap{max-width:640px}.cols2>.panel{margin-top:0}
