:root{--paper:#fbfbfa;--desk:#f2f3f2;--ink:#1d2125;--muted:#6b7279;--faint:#9aa0a6;--rule:#e0e2e3;--hover:#1d212510;--accent:#2b6cb0;--accent-soft:#2b6cb01f;--warn:#b4442f;--card:#ffffffd9;--menu:#fff;--shadow:0 1px 2px #1d212512, 0 4px 14px #1d212514;--f-display:"IBM Plex Sans Condensed", "Arial Narrow", system-ui, sans-serif;--f-body:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--f-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--s1:4px;--s2:8px;--s3:12px;--r1:4px;--r2:8px;--t:.12s ease-out;--rail:264px;--header:44px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#131619;--desk:#1a1d21;--ink:#e2e5e8;--muted:#959ca3;--faint:#6c737a;--rule:#2b3035;--hover:#e2e5e80f;--accent:#6ea8e0;--accent-soft:#6ea8e026;--warn:#e8866f;--card:#1f2327d9;--menu:#1f2327;--shadow:0 1px 2px #0000004d, 0 6px 18px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#131619;--desk:#1a1d21;--ink:#e2e5e8;--muted:#959ca3;--faint:#6c737a;--rule:#2b3035;--hover:#e2e5e80f;--accent:#6ea8e0;--accent-soft:#6ea8e026;--warn:#e8866f;--card:#1f2327d9;--menu:#1f2327;--shadow:0 1px 2px #0000004d, 0 6px 18px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[hidden]{display:none!important}html,body{height:100%;margin:0}*,:before,:after{box-sizing:border-box}body{background:var(--desk);color:var(--ink);font:14px/1.45 var(--f-body);overflow:hidden}body:before{content:"";height:env(safe-area-inset-top,0px);z-index:10;background:var(--desk);position:fixed;inset:0 0 auto}.app{grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr);height:100%;display:grid}header{align-items:center;gap:var(--s3);height:calc(var(--header) + env(safe-area-inset-top,0px));padding-top:env(safe-area-inset-top,0px);padding-left:max(var(--s3), env(safe-area-inset-left,0px));padding-right:max(var(--s2), env(safe-area-inset-right,0px));border-bottom:1px solid var(--rule);z-index:9;display:flex;position:relative}.title{align-items:baseline;gap:var(--s2);white-space:nowrap;flex:1;min-width:0;display:flex}.brand{font:600 15px/1 var(--f-display);letter-spacing:.01em;padding-right:var(--s3);border-right:1px solid var(--rule);flex-shrink:0}.file-name{font:500 13px/1 var(--f-body);text-overflow:ellipsis;min-width:0;overflow:hidden}.muted{color:var(--muted);flex-shrink:0;font-size:12px}.meta{font:400 11px/1 var(--f-mono);color:var(--faint);text-overflow:ellipsis;flex-shrink:3;min-width:0;overflow:hidden}.actions{gap:var(--s1);flex-shrink:0;display:flex}button,.btn{font:500 13px/1 var(--f-body);color:var(--ink);border-radius:var(--r1);padding:0 var(--s2);cursor:pointer;align-items:center;gap:var(--s1);height:30px;transition:background-color var(--t), border-color var(--t), color var(--t);background:0 0;border:1px solid #0000;display:inline-flex}button:hover,.btn:hover{background:var(--hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.menu-file:focus-within{outline:2px solid var(--accent);outline-offset:-2px}button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.icon-btn{width:30px;color:var(--muted);justify-content:center;padding:0;position:relative}.icon-btn:hover{color:var(--ink)}.icon{flex-shrink:0;display:block}.btn.working .icon{animation:1s ease-in-out infinite alternate pulse}@keyframes pulse{to{opacity:.35}}.menu{position:relative}.menu>summary{-webkit-user-select:none;user-select:none;list-style:none}.menu>summary::-webkit-details-marker{display:none}.menu[open]>summary{background:var(--accent-soft);color:var(--accent)}.menu>summary .badge{background:var(--warn);color:#fff;min-width:14px;font:600 9px/14px var(--f-body);text-align:center;box-shadow:0 0 0 2px var(--desk);border-radius:7px;padding:0 3px;position:absolute;top:1px;right:0}.menu-list{right:0;top:calc(100% + var(--s1));z-index:20;width:max-content;min-width:210px;max-width:calc(100vw - 24px);max-height:calc(100dvh - var(--header) - 16px);background:var(--menu);border:1px solid var(--rule);border-radius:var(--r2);box-shadow:var(--shadow);padding:var(--s1);-webkit-backdrop-filter:blur(10px);transform-origin:100% 0;animation:menu-in var(--t);gap:1px;display:grid;position:absolute;overflow:auto}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}}.menu-list button,.menu-list .menu-file{border-radius:var(--r1);align-items:center;gap:var(--s2);height:auto;padding:7px var(--s2);text-align:left;width:100%;font:400 13px/1.2 var(--f-body);cursor:pointer;color:var(--ink);border:0;display:flex}.menu-list button:hover:not(:disabled),.menu-list .menu-file:hover{background:var(--hover)}.menu-list button:disabled,.menu-file[aria-disabled=true]{opacity:.45;cursor:default;pointer-events:none}.menu-list small{color:var(--faint);padding-left:var(--s3);margin-left:auto;font-size:11px}.menu-list .check{width:12px;color:var(--accent);flex-shrink:0;font-size:12px}.menu-list hr{border:0;border-top:1px solid var(--rule);margin:var(--s1) 0}.menu-list .menu-label{font:600 10px/1 var(--f-display);color:var(--faint);padding:var(--s2) var(--s2) var(--s1);letter-spacing:.08em;text-transform:uppercase}.menu-list .menu-note{color:var(--muted);padding:2px var(--s2) 6px 28px;font-size:12px}.menu-list .menu-row{align-items:center;gap:var(--s3);padding:var(--s1) var(--s2);font:400 12px/1.3 var(--f-mono);display:flex}.menu-list .menu-row span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.menu-list .menu-row .miss{color:var(--warn)}.menu-file{position:relative}.menu-file input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.main{grid-template-columns:1fr;min-height:0;display:grid}.app.rail-open .main{grid-template-columns:var(--rail) 1fr}aside{border-right:1px solid var(--rule);min-height:0;padding-left:env(safe-area-inset-left,0px);flex-direction:column;display:none}.app.rail-open aside{animation:rail-in var(--t);display:flex}@keyframes rail-in{0%{opacity:0;transform:translate(-8px)}}.scrim{display:none}input[type=checkbox]{accent-color:var(--accent)}.rail-head{padding:var(--s2) var(--s3);align-items:center;gap:var(--s2);border-bottom:1px solid var(--rule);display:flex}.rail-head input[type=checkbox],.source-head input[type=checkbox]{flex-shrink:0;margin:0 2px 0 0}#layerFilter{min-width:0;font:13px var(--f-body);height:30px;padding:0 var(--s2);border:1px solid var(--rule);border-radius:var(--r1);background:var(--paper);color:var(--ink);transition:border-color var(--t);flex:1}#layerFilter:focus-visible{outline-offset:-1px;border-color:#0000}.empty{padding:var(--s2) var(--s3);color:var(--muted);margin:0;font-size:13px}.layers{padding:var(--s1) 0 var(--s3);flex:1;overflow:auto}.layer{align-items:center;gap:var(--s2);padding:3px var(--s3);cursor:pointer;grid-template-columns:14px 10px 1fr auto;min-height:26px;display:grid}.layer:hover{background:var(--hover)}.layer input[type=checkbox]{margin:0}.swatch{border-radius:50%;width:10px;height:10px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #0000001f}.swatch input{opacity:0;cursor:pointer;width:24px;height:24px;position:absolute;inset:-7px}.lname{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.layer.off .lname{color:var(--faint)}.lcount{font:11px var(--f-mono);color:var(--faint);font-variant-numeric:tabular-nums}.layer.nested{padding-left:34px}.group-head{align-items:center;gap:var(--s2);padding:0 var(--s3);background:var(--desk);z-index:1;grid-template-columns:14px 1fr;min-height:28px;display:grid;position:sticky;top:0}.group-head input[type=checkbox]{margin:0}.group-toggle{all:unset;cursor:pointer;border-radius:var(--r1);grid-template-columns:10px 1fr auto;align-items:center;gap:6px;min-width:0;min-height:28px;display:grid}.group-toggle .chev{color:var(--faint);transition:transform var(--t);font-size:9px}.group-toggle[aria-expanded=true] .chev{transform:rotate(90deg)}.group-toggle .gname{font:500 12px/1.2 var(--f-body);letter-spacing:.01em;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.group-toggle .gname small{font:400 10px var(--f-mono);color:var(--faint);margin-left:6px}.group-head.off .gname{color:var(--faint)}.layer-source+.layer-source{border-top:1px solid var(--rule);margin-top:var(--s1)}.source-head{align-items:center;gap:var(--s2);padding:var(--s2) var(--s3) 2px;font-size:12px;font-weight:600;display:flex}.source-head>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sheet{background:var(--paper);touch-action:none;min-width:0;min-height:0;position:relative;overflow:hidden}canvas{cursor:crosshair;width:100%;height:100%;display:block}canvas.grabbing{cursor:grabbing}.readout,.zoom,.attribution,.info,.toast{background:var(--card);box-shadow:var(--shadow);border:1px solid color-mix(in srgb, var(--rule) 70%, transparent);-webkit-backdrop-filter:blur(10px)}.readout{left:var(--s2);bottom:calc(var(--s2) + env(safe-area-inset-bottom,0px));font:11px/1 var(--f-mono);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;padding:6px var(--s2);border-radius:var(--r1);pointer-events:none;display:flex;position:absolute}.readout span+span:before{content:"·";color:var(--faint);margin:0 6px}.readout b{color:var(--ink);font-weight:500}.zoom{right:calc(var(--s2) + env(safe-area-inset-right,0px));bottom:calc(var(--s2) + env(safe-area-inset-bottom,0px));border-radius:var(--r2);display:grid;position:absolute;overflow:hidden}.zoom button{width:30px;height:30px;color:var(--muted);border-radius:0;justify-content:center;padding:0}.zoom button:hover{color:var(--ink)}.zoom button+button{border-top:1px solid var(--rule)}.zoom button:focus-visible{outline-offset:-2px}.attribution{left:var(--s2);top:var(--s2);z-index:5;font:400 11px/1.2 var(--f-body);color:var(--muted);border-radius:var(--r1);pointer-events:none;padding:3px 6px;position:absolute}.info{right:calc(var(--s2) + env(safe-area-inset-right,0px));top:var(--s2);border-radius:var(--r2);width:min(320px,100% - 16px);max-height:calc(100% - 64px);padding:var(--s3);gap:var(--s2);z-index:6;animation:menu-in var(--t);display:grid;position:absolute;overflow:auto}.info-head{justify-content:space-between;align-items:start;gap:var(--s2);display:flex}.info-type{font:600 14px/1.2 var(--f-display)}.info-layer{color:var(--muted);font-size:12px}.info button{width:24px;height:24px;color:var(--muted);justify-content:center;padding:0}dl{gap:var(--s1) var(--s3);grid-template-columns:auto 1fr;margin:0;font-size:12.5px;display:grid}dl .row{display:contents}dt{color:var(--muted)}dd{font-family:var(--f-mono);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;min-width:0;margin:0}.info pre{white-space:pre-wrap;font:12px/1.45 var(--f-body);border-top:1px solid var(--rule);max-height:160px;padding-top:var(--s2);margin:0;overflow:auto}.drop{inset:var(--s2);background:color-mix(in srgb, var(--paper) 85%, transparent);border:1.5px dashed var(--accent);border-radius:var(--r2);font:500 15px var(--f-body);color:var(--accent);z-index:7;pointer-events:none;place-items:center;display:grid;position:absolute}.toast{left:50%;top:var(--s2);z-index:8;padding:var(--s2) var(--s3);border-radius:var(--r2);border-left:3px solid var(--warn);width:max-content;max-width:calc(100% - 32px);font-size:13px;position:absolute;transform:translate(-50%)}.progress{z-index:9;background:var(--accent-soft);pointer-events:none;height:2px;position:absolute;inset:0 0 auto;overflow:hidden}.progress:after{content:"";background:var(--accent);border-radius:1px;width:35%;animation:1.1s ease-in-out infinite progress;position:absolute;inset:0 auto 0 0}@keyframes progress{0%{transform:translate(-100%)}to{transform:translate(300%)}}.empty-state{place-content:center;justify-items:center;gap:var(--s2);color:var(--faint);pointer-events:none;font-size:13px;display:grid;position:absolute;inset:0}.dialog-backdrop{z-index:30;padding:var(--s3);background:color-mix(in srgb, var(--ink) 28%, transparent);animation:fade-in var(--t);place-items:center;display:grid;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.dialog{gap:var(--s3);background:var(--menu);border:1px solid var(--rule);border-radius:var(--r2);width:min(400px,100%);max-height:calc(100dvh - 24px);box-shadow:var(--shadow);padding:var(--s3) var(--s3) var(--s3);animation:menu-in var(--t);display:grid;overflow:auto}.dialog h2{font:600 15px/1.2 var(--f-display);margin:0}.crs-row{gap:6px;display:grid}.crs-name{font:500 12px/1.2 var(--f-mono);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dialog select,.crs-custom{width:100%;height:34px;padding:0 var(--s2);font:14px var(--f-body);color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:var(--r1)}.crs-note{color:var(--muted);margin:0;font-size:12px}.crs-note.error{color:var(--warn)}.crs-auto{align-items:center;gap:var(--s2);color:var(--muted);cursor:pointer;font-size:13px;display:flex}.crs-auto input{margin:0}.dialog-actions{justify-content:flex-end;gap:var(--s2);display:flex}.dialog-actions button{border-color:var(--rule);padding:0 var(--s3)}.dialog-actions .primary{background:var(--accent);border-color:var(--accent);color:var(--menu)}.dialog-actions .primary:disabled{opacity:.5;cursor:default}@media (max-width:760px){header{gap:var(--s2)}.brand,.meta{display:none}.app.rail-open .main{grid-template-columns:1fr}aside{z-index:8;left:0;top:calc(var(--header) + env(safe-area-inset-top,0px));background:var(--desk);width:min(300px,86vw);box-shadow:var(--shadow);transition:transform var(--t);padding-bottom:env(safe-area-inset-bottom,0px);display:flex;position:fixed;bottom:0;transform:translate(-102%)}.app.rail-open aside{animation:none;transform:none}.app.rail-open .scrim{inset:calc(var(--header) + env(safe-area-inset-top,0px)) 0 0;z-index:7;background:#0000002e;display:block;position:fixed}.readout .coord{display:none}.readout .coord+span:before{content:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}.progress:after{opacity:.6;width:100%;animation:none}}
