:root{--bg: #0b0d10;--surface: #14181d;--surface-2: #1b2027;--line: #262c34;--text: #e8ecf1;--muted: #8a94a3;--accent: #ff2a3c;--ok: #2bd67b;--warn: #ffc400;--font: "Barlow Condensed", "Roboto Condensed", "Arial Narrow", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;-webkit-font-smoothing:antialiased}[hidden],.off{display:none!important}#app{display:grid;grid-template-columns:1fr 300px;grid-template-rows:auto 1fr;grid-template-areas:"top top" "stage panel";height:100%}.topbar{grid-area:top;display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,rgba(255,42,60,.12),transparent 40%)}.brand{margin:0;font-size:22px;font-weight:800;font-style:italic;letter-spacing:.06em;white-space:nowrap}.brand span{color:var(--accent);margin-left:4px}.topbar-meta{color:var(--muted);font-weight:600;letter-spacing:.08em;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stage{grid-area:stage;position:relative;min-height:0;overflow:hidden;display:flex;flex-direction:column}#view{display:block;width:100%;flex:1;min-height:0}.hint,.toast{position:absolute;left:50%;transform:translate(-50%);max-width:calc(100% - 32px);padding:6px 14px;font-weight:700;letter-spacing:.08em;font-size:14px;pointer-events:none;text-align:center}.hint{top:12px;background:var(--accent);color:#fff;clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%)}.toast{bottom:16px;background:#14181df2;border-left:3px solid var(--accent);letter-spacing:.02em;font-weight:600}.zoom{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:4px}.zoom button{width:40px;height:36px;padding:0;font-size:18px}.zoom #z-fit{font-size:12px}.empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;text-align:center;pointer-events:none;padding:16px}.empty-title{margin:0;font-size:26px;font-weight:800;font-style:italic;letter-spacing:.05em}.empty-sub{margin:6px 0 0;color:var(--muted)}.dropmask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-content:center;background:#0b0d10d9;border:3px dashed var(--accent);font-size:32px;font-weight:800;font-style:italic;letter-spacing:.08em;pointer-events:none}.panel{grid-area:panel;background:var(--surface);border-left:1px solid var(--line);overflow-y:auto}.panel section{padding:14px 16px;border-bottom:1px solid var(--line)}.panel h2{margin:0 0 10px;font-size:13px;font-weight:700;letter-spacing:.16em;color:var(--muted);text-transform:uppercase}.panel h2:before{content:"";display:inline-block;width:10px;height:10px;margin-right:8px;background:var(--accent);transform:skew(-20deg)}button{font:inherit;font-weight:700;font-size:15px;letter-spacing:.04em;text-transform:uppercase;color:var(--text);background:var(--surface-2);border:1px solid var(--line);border-radius:3px;padding:8px 10px;cursor:pointer;min-height:38px}button:hover:not(:disabled){border-color:#3a424d;background:#222831}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:#ff4757}button.active{outline:2px solid var(--accent);outline-offset:-2px;color:#fff}button:focus-visible,input:focus-visible{outline:2px solid #fff;outline-offset:1px}.row{display:flex;gap:8px;align-items:center;margin-top:8px}.row:first-of-type{margin-top:0}.row button{flex:1}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:6px}.grid2+.grid2,.calib+.grid2{margin-top:8px}.drop{display:flex;flex-direction:column;gap:2px;padding:16px;border:2px dashed #3a424d;border-radius:4px;text-align:center;cursor:pointer}.drop:hover{border-color:var(--accent)}.drop strong{font-size:18px;letter-spacing:.04em;text-transform:uppercase}.drop span{color:var(--muted);font-size:14px}.swatch{width:38px;height:38px;flex:none;border:1px solid var(--line);border-radius:3px}.swatch.empty{background:repeating-linear-gradient(45deg,#222 0,#222 4px,#2c2c2c 4px,#2c2c2c 8px)!important}.field{display:flex;flex-direction:column;gap:4px;margin-top:10px;color:var(--muted);font-size:14px;font-weight:600;letter-spacing:.04em}.field output{color:var(--text)}.field input[type=text],.field input[type=number]{font:inherit;font-size:16px;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:7px 9px}input[type=range]{width:100%;accent-color:var(--accent)}.confidence{margin-top:10px;padding:8px 10px;border-left:3px solid var(--muted);background:var(--bg);font-size:14px}.confidence strong{letter-spacing:.08em}.confidence p{margin:4px 0 0;color:var(--muted)}.confidence.high{border-color:var(--ok)}.confidence.high strong{color:var(--ok)}.confidence.medium{border-color:var(--warn)}.confidence.medium strong{color:var(--warn)}.confidence.low{border-color:var(--accent)}.confidence.low strong{color:var(--accent)}.help{margin:0 0 10px;color:var(--muted);font-size:14px}.stats{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:10px;color:var(--muted);font-size:14px}.stats b{color:var(--text)}.stats .warn{color:var(--warn)}.attrib{position:absolute;left:8px;bottom:8px;padding:2px 6px;font-size:12px;color:var(--muted);background:#0b0d10bf;text-decoration:none}.attrib:hover{color:var(--text)}#map-search input{flex:1;min-width:0;font:inherit;font-size:16px;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:7px 9px}#map-search button{flex:none}.calib{margin-top:8px;padding:10px;background:var(--bg);border-left:3px solid var(--accent)}.calib .help{margin:0}.calib .field+.help{margin-top:6px}.tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line)}.tabs button{border:0;border-radius:0;background:transparent;min-height:46px;font-size:16px;font-style:italic;font-weight:800;letter-spacing:.1em;color:var(--muted);border-bottom:3px solid transparent}.tabs button.active{color:var(--text);border-bottom-color:var(--accent);outline:0}.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:0}.seg button{border-radius:0}.seg button:first-child{border-radius:3px 0 0 3px}.seg button:last-child{border-radius:0 3px 3px 0}.seg button.active{background:var(--accent);border-color:var(--accent);outline:0}select{font:inherit;font-size:16px;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:7px 9px}.transport{flex:none;display:flex;align-items:center;gap:10px;padding:6px 12px 6px 8px;background:var(--surface);border-top:1px solid var(--line)}.transport button{min-width:44px;min-height:36px;padding:0;font-size:14px}.transport input{flex:1}.transport span{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:600;white-space:nowrap}.export-overlay{position:absolute;inset:auto 12px 64px 12px;display:flex;justify-content:center;pointer-events:none}.export-box{pointer-events:auto;width:min(420px,100%);display:grid;gap:8px;padding:12px 14px;background:#0b0d10eb;border-left:3px solid var(--accent)}.export-box strong{letter-spacing:.12em;font-style:italic}.export-box .help{margin:0}.rec-dot{display:inline-block;width:10px;height:10px;margin-right:8px;border-radius:50%;background:var(--accent);animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:.2}}.export-bar{height:6px;background:#ffffff1a}.export-bar i{display:block;height:100%;width:0;background:var(--accent)}#export-status{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:600}@media(max-width:760px){#app{grid-template-columns:1fr;grid-template-rows:auto 60vh auto;grid-template-areas:"top" "stage" "panel";height:auto;min-height:100%}.panel{border-left:0;border-top:1px solid var(--line);overflow:visible}.topbar-meta{font-size:12px}.empty-title{font-size:20px}}
