:root{--panel:#080a0dd1;--panel-edge:#ffffff14;--text:#f2f2f2;--muted:#a7adb3;--accent:#5db6e5;--display:"Barlow Condensed", "Arial Narrow", sans-serif;--body:"Barlow", system-ui, sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--text);font:14px/1.4 var(--body);background:#0b2233;margin:0;overflow:hidden}#scene{touch-action:none;outline:none;width:100%;height:100%;display:block}#title,#legend,#details{background:var(--panel);border:1px solid var(--panel-edge);position:absolute}#title{border-top:4px solid var(--accent);padding:10px 18px 12px;top:20px;left:20px}#title h1{font:italic 700 30px/1 var(--display);text-transform:uppercase;letter-spacing:.01em;text-shadow:0 2px #0009;margin:0}#title p{color:var(--muted);font:600 13px/1.3 var(--display);text-transform:uppercase;letter-spacing:.06em;margin:4px 0 0}#legend{max-width:calc(100% - 40px);font:600 14px/1.2 var(--display);text-transform:uppercase;letter-spacing:.04em;padding:12px 16px;bottom:20px;left:20px}#legend h2,#details h3{font:700 12px/1 var(--display);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:10px 0 6px}#legend h2:first-child{margin-top:0}.legend-row{align-items:center;gap:10px;padding:2px 0;display:flex}.swatch{flex:none}.swatch.blip{width:20px;height:20px;font:700 11px/1 var(--display);color:#fff;text-shadow:0 0 2px #000,0 0 2px #000;border:2px solid #fff;border-radius:50%;place-items:center;display:grid;box-shadow:0 1px 4px #0009}.swatch.route{border-radius:3px;width:22px;height:5px;box-shadow:0 0 6px}#details{border-top:4px solid var(--accent);width:min(360px,100% - 40px);max-height:calc(100% - 100px);padding:16px 18px;top:20px;right:20px;overflow-y:auto}#details h2{font:italic 700 26px/1.05 var(--display);text-transform:uppercase;margin:0 0 2px}#details .path{color:var(--muted);font-family:ui-monospace,monospace;font-size:12px}#details .legend-row{font:600 14px/1.2 var(--display);text-transform:uppercase;letter-spacing:.04em;margin-top:6px}#details ul{margin:0;padding:0;list-style:none}#details li{align-items:center;gap:10px;margin:0 -6px;padding:4px 6px;display:flex}#details li:hover{background:#ffffff12}#details li button{color:var(--text);font:600 15px/1.2 var(--display);text-transform:uppercase;letter-spacing:.03em;cursor:pointer;background:0 0;border:none;padding:0}#details li .via{color:var(--muted);text-align:right;margin-left:auto;font-size:12px}#details .close{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:22px;position:absolute;top:8px;right:10px}#toolbar{flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:calc(100% - 40px);display:flex;position:absolute;bottom:20px;right:20px}#toolbar button,.dialog-actions button,.file-button{background:var(--panel);color:var(--text);border:1px solid var(--panel-edge);border-bottom:3px solid var(--accent);font:700 14px/1 var(--display);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;padding:8px 14px}#toolbar button:hover,.dialog-actions button:hover,.file-button:hover{background:#282e36eb}#paste-dialog{width:min(720px,100% - 32px);color:var(--text);border:1px solid var(--panel-edge);border-top:4px solid var(--accent);background:#0d1015;padding:0}#paste-dialog::backdrop{background:#0009}#paste-form{flex-direction:column;gap:10px;padding:18px 20px;display:flex}#paste-form h2{font:italic 700 26px/1 var(--display);text-transform:uppercase;margin:0}#paste-form p{color:var(--muted);margin:0}#paste-json{resize:vertical;width:100%;height:min(50vh,420px);color:var(--text);border:1px solid var(--panel-edge);background:#07090c;padding:10px;font:12px/1.45 ui-monospace,monospace}#paste-error{white-space:pre-wrap;font-family:ui-monospace,monospace;font-size:12px;color:#ff8a8a!important}#paste-error:empty{display:none}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}.dialog-actions .primary{background:var(--accent);color:#06121a}.file-button{margin-right:auto}.file-button input{display:none}#error{color:#ffb4b4;white-space:pre-wrap;background:#1a0d10;place-items:center;padding:24px;font-family:ui-monospace,monospace;display:grid;position:absolute;inset:0}#error[hidden],#details[hidden]{display:none}
