:root{--ground: #0b0f1a;--panel: #131926;--panel-lift: #18202f;--hairline: #232c3f;--hairline-bright: #33405c;--text: #e8ecf5;--muted: #7d8aa5;--muted-dim: #5a6580;--accent: #4945ff;--accent-soft: #6c69ff;--accent-wash: rgba(73, 69, 255, .14);--ok: #3fbf7f;--warn: #e0a33c;--bad: #e2564d;--display: "Archivo", "Helvetica Neue", Arial, sans-serif;--body: "Inter Tight", system-ui, -apple-system, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--radius: 8px;--rail-width: 384px}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--ground);color:var(--text);font-family:var(--body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#root{height:100%}:focus-visible{outline:2px solid var(--accent-soft);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app{display:grid;grid-template-columns:1fr var(--rail-width);height:100%;overflow:hidden}.stage{display:grid;grid-template-rows:auto 1fr;min-width:0;border-right:1px solid var(--hairline)}.masthead{display:flex;align-items:baseline;gap:14px;padding:18px 24px;border-bottom:1px solid var(--hairline)}.wordmark{font-family:var(--display);font-weight:700;font-size:15px;letter-spacing:.14em;text-transform:uppercase;margin:0}.masthead .sub{font-family:var(--mono);font-size:11px;color:var(--muted-dim)}.well{display:grid;place-items:center;padding:24px;min-height:0;overflow:hidden}.frame{position:relative;height:100%;aspect-ratio:1080 / 1920;max-height:100%;border-radius:var(--radius);overflow:hidden;background:#000;box-shadow:0 0 0 1px var(--hairline),0 24px 60px -20px #000000e6}.rail{position:relative;display:flex;flex-direction:column;min-height:0;background:var(--panel)}.rail-scroll:after{content:"";position:sticky;bottom:0;display:block;height:22px;margin-top:-22px;background:linear-gradient(to bottom,transparent,var(--panel));pointer-events:none}.rail-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;padding:4px 0 8px}.group{border-bottom:1px solid var(--hairline);padding:15px 20px 16px}.group:last-of-type{border-bottom:none}.group-title{font-family:var(--display);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-dim);margin:0 0 11px}.field{display:grid;gap:6px;margin-bottom:14px}.field:last-child{margin-bottom:0}.field>label{font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}input[type=text]{width:100%;padding:8px 10px;border:1px solid var(--hairline-bright);border-radius:6px;background:var(--ground);color:var(--text);font-family:var(--body);font-size:14px}input[type=text]:focus{border-color:var(--accent-soft);outline:none}.code-input input[type=text]{font-family:var(--mono);font-size:17px;font-weight:500;letter-spacing:.08em;text-transform:uppercase}.route-pair{display:grid;grid-template-columns:1fr auto 1fr;align-items:stretch;gap:10px}.route-pair .field{margin-bottom:0;grid-template-rows:auto 1fr;align-content:end}.label-pair{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px}.label-pair .route-arrow{padding-top:0}.route-arrow{display:flex;align-items:center;padding-top:22px;color:var(--muted-dim);font-size:15px}.resolved{margin-top:6px;font-size:12px;line-height:1.35;color:var(--muted)}.resolved.bad{color:var(--bad)}.resolved .city{color:var(--text);font-weight:500}.resolved .coord{font-family:var(--mono);font-size:11px;color:var(--muted-dim);font-variant-numeric:tabular-nums}.slider-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px}.slider-row .value{font-family:var(--mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:44px;text-align:right}input[type=range]{width:100%;height:18px;margin:0;background:transparent;-webkit-appearance:none;appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:var(--hairline-bright)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:13px;height:13px;margin-top:-5px;border:none;border-radius:50%;background:var(--accent-soft)}input[type=range]::-moz-range-track{height:3px;border-radius:2px;background:var(--hairline-bright)}input[type=range]::-moz-range-thumb{width:13px;height:13px;border:none;border-radius:50%;background:var(--accent-soft)}.swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:8px 6px}.swatch{display:grid;justify-items:center;gap:4px;cursor:pointer}.swatch input[type=color]{width:100%;height:26px;padding:0;border:1px solid var(--hairline-bright);border-radius:5px;background:none;cursor:pointer}.swatch:hover input[type=color]{border-color:var(--accent-soft)}.swatch .name{font-size:8.5px;line-height:1.15;letter-spacing:.02em;color:var(--muted-dim);text-transform:uppercase;text-align:center}.swatches{grid-template-columns:repeat(8,1fr)}.swatch input[type=color]{height:22px}.group.split{display:grid;grid-template-columns:1fr;gap:14px}.maps{display:grid;grid-template-columns:repeat(2,1fr);gap:5px}.map-option{display:flex;align-items:center;gap:6px;padding:4px 6px;border:1px solid var(--hairline);border-radius:6px;background:var(--ground);color:var(--muted);font-family:var(--body);font-size:11px;text-align:left;cursor:pointer}.map-option:hover{border-color:var(--hairline-bright)}.map-option[aria-pressed=true]{border-color:var(--accent);background:var(--accent-wash);color:var(--text)}.map-chip{width:14px;height:14px;flex-shrink:0;border-radius:50%;box-shadow:inset 0 0 0 1px #ffffff24}.map-label{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.models{display:grid;grid-template-columns:repeat(2,1fr);gap:5px}.model-option{display:flex;align-items:center;gap:6px;padding:4px 6px;border:1px solid var(--hairline);border-radius:6px;background:var(--ground);color:var(--muted);font-family:var(--body);font-size:11px;text-align:left;cursor:pointer}.model-option:hover{border-color:var(--hairline-bright)}.model-option[aria-pressed=true]{border-color:var(--accent);background:var(--accent-wash);color:var(--text)}.model-icon{flex-shrink:0}.credit{margin:8px 0 0;font-family:var(--mono);font-size:9px;line-height:1.4;color:var(--muted-dim)}.label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.mini-btn{padding:2px 7px;border:1px solid var(--hairline-bright);border-radius:4px;background:transparent;color:var(--muted-dim);font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.mini-btn:hover{color:var(--text);border-color:var(--hairline-bright)}.mini-btn[aria-pressed=true]{border-color:var(--accent);background:var(--accent-wash);color:var(--text)}.hint{margin:4px 0 0;font-size:10px;color:var(--muted-dim)}.readout{display:grid;gap:1px;border:1px solid var(--hairline);border-radius:6px;overflow:hidden;background:var(--hairline)}.readout-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:6px 10px;background:var(--ground)}.readout-row dt{font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--muted-dim);margin:0}.readout-row dd{margin:0;font-family:var(--mono);font-size:12px;font-weight:500;color:var(--text);font-variant-numeric:tabular-nums}.export-bar{flex:0 0 auto;border-top:1px solid var(--hairline);padding:12px 20px 13px;background:var(--panel-lift)}.export-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.formats{display:flex;flex-wrap:wrap;gap:4px}.export-row .btn-export{flex:1 1 130px}.export-row>.chip{flex:0 0 auto}.chip{padding:8px 10px}.chip{min-width:46px;padding:6px 0;border:1px solid var(--hairline-bright);border-radius:6px;background:transparent;color:var(--muted);font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.chip[aria-pressed=true]{border-color:var(--accent);background:var(--accent-wash);color:var(--text)}.btn-export{width:100%;padding:10px 0;border:none;border-radius:6px;background:var(--accent);color:#fff;font-family:var(--display);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;cursor:pointer}.btn-export:hover:not(:disabled){background:var(--accent-soft)}.btn-export:disabled{background:var(--hairline-bright);color:var(--muted-dim);cursor:default}.progress{margin-top:10px}.progress-track{height:3px;border-radius:2px;background:var(--hairline-bright);overflow:hidden}.progress-fill{height:100%;background:var(--accent-soft);transition:width .2s linear}.status{display:flex;align-items:center;gap:7px;margin-top:7px;font-size:11px;color:var(--muted)}.status .dot{width:6px;height:6px;border-radius:50%;background:var(--muted-dim);flex-shrink:0}.status.rendering .dot{background:var(--warn)}.status.done .dot{background:var(--ok)}.status.error .dot{background:var(--bad)}.status .path{font-family:var(--mono);font-size:10px;color:var(--muted-dim);overflow-wrap:anywhere}.suggest{position:relative}.suggest-list{position:absolute;z-index:20;top:calc(100% + 4px);left:0;right:0;max-height:216px;overflow-y:auto;margin:0;padding:4px;list-style:none;border:1px solid var(--hairline-bright);border-radius:6px;background:var(--panel-lift);box-shadow:0 14px 32px -12px #000000d9}.suggest-list li button{display:flex;align-items:baseline;gap:8px;width:100%;padding:6px 8px;border:none;border-radius:4px;background:none;color:var(--text);text-align:left;cursor:pointer;font-family:var(--body);font-size:12px}.suggest-list li button:hover{background:var(--accent-wash)}.suggest-list .s-code{font-family:var(--mono);font-size:12px;font-weight:500;color:var(--accent-soft);flex-shrink:0}.suggest-list .s-name{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:900px){.app{grid-template-columns:1fr;grid-template-rows:auto auto;height:auto;min-height:100%;overflow:visible}.stage{border-right:none;border-bottom:1px solid var(--hairline);grid-template-rows:auto auto}.well{height:64svh;padding:16px}.rail{min-height:auto}.rail-scroll{overflow-y:visible;flex:0 0 auto}.rail-scroll:after{display:none}}@media(max-width:900px)and (max-height:520px){.well{height:88svh;padding:10px}}.label-row .group-title{margin-bottom:0}.label-row+.hint{margin-top:9px}
