@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/jetbrains-mono-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg:#0a0a0c;--panel:#18181b;--panel-2:#27272a;--glass:#18181be0;--glass-border:#ffffff14;--line:#3f3f46;--text:#fafafa;--text-2:#a1a1aa;--text-3:#96969f;--accent:#38bdf8;--accent-ink:#0a0a0c;--primary:#fafafa;--primary-ink:#18181b;--warn:#fbbf24;--ok:#34d399;--err:#ef4444;--info:#60a5fa;--radius:6px;--radius-md:12px;--radius-lg:16px;--shell-pad:16px;--panel-w:340px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--fs-cap:11px;--fs-meta:12px;--fs-body:13px;--fs-body-lg:14px;--fs-heading:16px;--t-fast:.1s;--t-base:.16s;--ease-out:cubic-bezier(.2, .8, .2, 1);font-family:JetBrains Mono,ui-monospace,Cascadia Mono,Consolas,monospace;font-size:var(--fs-body);color:var(--text);background:var(--bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}#app{height:100%;position:relative}#sidebar{z-index:5;top:var(--shell-pad);left:var(--shell-pad);width:var(--panel-w);max-height:calc(100% - 2 * var(--shell-pad));background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);overscroll-behavior:contain;flex-direction:column;min-height:0;display:flex;position:absolute;overflow-y:auto;box-shadow:0 12px 32px #00000073}.brand{padding:var(--s4);border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;display:flex}.brand h1{letter-spacing:.01em;margin:0;font-size:15px;font-weight:600}.brand .version{color:var(--text-3);font-size:11px}.section{padding:var(--s4);border-bottom:1px solid var(--line);gap:var(--s3);flex-direction:column;display:flex}.section-head{justify-content:space-between;align-items:center;gap:var(--s2);display:flex}.section h2{text-transform:uppercase;letter-spacing:.08em;color:var(--text-2);margin:0;font-size:11px;font-weight:600}.muted{color:var(--text-3)}.hint{color:var(--text-3);margin:0;font-size:12px;line-height:1.4}button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;min-height:30px;padding:6px 10px}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}button.primary:hover:not(:disabled){background:#6bb3ff;border-color:#6bb3ff}button.icon{min-width:26px;min-height:26px;color:var(--text-2);background:0 0;border-color:#0000;padding:2px 6px}button.icon:hover:not(:disabled){color:var(--text);background:var(--panel-2)}button.link{min-height:0;color:var(--accent);text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}.row{gap:var(--s2);align-items:center;display:flex}.row>.grow{flex:1}.buttons{gap:var(--s2);flex-wrap:wrap;display:flex}.buttons>button{flex:1}input[type=number],input[type=text],select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);font-variant-numeric:tabular-nums;border-radius:4px;width:100%;min-width:0;padding:4px 6px}input[type=checkbox],input[type=radio]{accent-color:var(--accent);margin:0}label.check{align-items:center;gap:var(--s2);cursor:pointer;display:flex}.switch{flex:none;width:34px;height:20px;position:relative}.switch input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.switch span{pointer-events:none;background:#434a55;border-radius:10px;transition:background .15s;position:absolute;inset:0}.switch span:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch input:checked+span:after{transform:translate(14px)}.switch input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}.segmented{border:1px solid var(--line);border-radius:var(--radius);display:inline-flex;overflow:hidden}.segmented button{background:0 0;border:none;border-radius:0;min-height:26px;padding:2px 10px}.segmented button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);font-weight:600}.model-list{gap:var(--s2);overscroll-behavior:contain;scrollbar-gutter:stable;flex-direction:column;max-height:min(40vh,360px);margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.model-list:empty{display:none}.model-list.scrolls{border:1px solid var(--line);border-radius:var(--radius);padding:var(--s1);background:#0000001f}.model-count{margin-left:var(--s2);color:var(--text-3);letter-spacing:0;text-transform:none;font-weight:500}.model{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius)}.model-main{align-items:flex-start;gap:var(--s2);padding:6px 6px 6px 10px;display:flex}.model-main>input[type=checkbox]{flex:none;margin-top:6px}.model-main>.dot{margin-top:9px}.model-text{flex-direction:column;flex:1;gap:2px;min-width:0;padding-top:4px;display:flex}.model-name{overflow-wrap:anywhere;font-weight:500;line-height:18px}.model-sub{align-items:center;gap:var(--s1);display:flex}.model-filter-empty{margin:0}.model.hidden-model .model-name{color:var(--text-3)}.model-meta{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:11px}.dot{background:var(--text-3);border-radius:50%;flex:none;width:8px;height:8px}.dot.ready{background:var(--ok)}.dot.uploading{background:var(--warn)}.dot.offline,.dot.error{background:var(--err)}.model-details{border-top:1px solid var(--line);padding:var(--s2) 10px 10px;gap:var(--s2);flex-direction:column;display:flex}.xyz{gap:var(--s2);grid-template-columns:repeat(3,1fr);display:grid}.xyz label{color:var(--text-2);flex-direction:column;gap:2px;font-size:11px;display:flex}.box-grid{gap:6px var(--s2);grid-template-columns:18px 1fr 1fr;align-items:center;display:grid}.box-grid .axis{color:var(--text-2);font-weight:600}.box-grid .colhead{color:var(--text-3);font-size:11px}.kv{gap:2px var(--s3);grid-template-columns:auto 1fr;font-size:12px;display:grid}.kv dt{color:var(--text-3)}.kv dd{word-break:break-all;margin:0}.counter{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s2) var(--s3);font-variant-numeric:tabular-nums}.counter strong{font-size:15px}input[type=range]{width:100%;accent-color:var(--accent)}#viewport{position:absolute;inset:0;overflow:hidden}#viewer{position:absolute;inset:0}#empty-state{pointer-events:none;text-align:center;padding:var(--s5);flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}#empty-state .empty-title{margin:0 0 var(--s2);font-size:18px;font-weight:600}#empty-state .empty-sub{color:var(--text-2);pointer-events:auto;margin:0}#drop-overlay{inset:var(--s3);border:2px dashed var(--accent);pointer-events:none;background:#38bdf814;border-radius:10px;justify-content:center;align-items:center;font-size:16px;font-weight:600;display:flex;position:absolute}#drop-overlay[hidden]{display:none}#info-panel{border:1px solid var(--line);background:#22262cf7;border-radius:8px;overflow-y:auto;box-shadow:0 8px 24px #00000059}#info-panel[hidden]{display:none}.info-head{justify-content:space-between;align-items:flex-start;gap:var(--s2);padding:var(--s3) var(--s3) var(--s2) var(--s4);border-bottom:1px solid var(--line);display:flex}.info-class{letter-spacing:.06em;color:var(--accent);font-size:11px;font-weight:600}.info-name{word-break:break-word;margin-top:2px;font-size:14px;font-weight:600}.info-body{padding:var(--s3) var(--s4) var(--s4);gap:var(--s3);flex-direction:column;display:flex}.pset summary{cursor:pointer;padding:2px 0;font-size:12px;font-weight:600}.pset .kv{margin:var(--s1) 0 0 var(--s3)}.guid{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:12px}#progress{background:var(--panel);border:1px solid var(--line);padding:var(--s3) var(--s4);border-radius:8px;box-shadow:0 8px 24px #00000059}#progress[hidden]{display:none}.progress-label{margin-bottom:var(--s2);font-variant-numeric:tabular-nums}.progress-track{background:var(--bg);border-radius:2px;height:4px;overflow:hidden}.progress-bar{background:var(--accent);width:0;height:100%;transition:width .15s}#toasts{align-items:center;gap:var(--s2);pointer-events:none;flex-direction:column;max-width:min(520px,100%);display:flex}.toast{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);padding:var(--s2) var(--s3);pointer-events:auto;line-height:1.4;box-shadow:0 4px 16px #00000059}.toast.error{border-left-color:var(--err)}.toast.ok{border-left-color:var(--ok)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}#empty-state[hidden],#toasts:empty{display:none}.context-menu{z-index:50;min-width:240px;max-width:320px;padding:var(--s1);background:var(--panel);border:1px solid var(--line);border-radius:8px;outline:none;position:fixed;box-shadow:0 10px 28px #00000073}.cm-heading{letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;padding:6px 10px 2px 34px;font-size:11px;font-weight:600;overflow:hidden}.cm-item{align-items:center;gap:var(--s2);text-align:left;background:0 0;border:none;border-radius:4px;width:100%;min-height:30px;padding:5px 10px;display:flex}.cm-item:hover:not(:disabled),.cm-item:focus-visible{background:var(--accent);color:var(--accent-ink);outline:none}.cm-icon{width:16px;height:16px;color:var(--text-2);flex:none;display:inline-flex}.cm-label{flex:1}.cm-hint{margin-left:var(--s4);color:var(--text-3);font-size:12px}.cm-item:hover:not(:disabled) .cm-icon,.cm-item:focus-visible .cm-icon,.cm-item:hover:not(:disabled) .cm-hint,.cm-item:focus-visible .cm-hint{color:inherit}.cm-sep{height:1px;margin:var(--s1) 0;background:var(--line)}.help-hint{gap:var(--s2);flex-direction:column;display:flex}.shortcuts summary{cursor:pointer;color:var(--text-2);font-size:12px}.shortcuts .kv{margin-top:var(--s2);align-items:center}.help-hint strong{color:var(--text-2);font-weight:600}button.wide{width:100%}.restore{gap:var(--s2);flex-direction:column;display:flex}.restore[hidden],.all-visible[hidden],.surface-note[hidden]{display:none}.restore-button{align-items:center;gap:var(--s2);border-color:var(--accent);width:100%;color:var(--accent);background:#38bdf814;justify-content:center;font-weight:600;display:flex}.restore-button:hover:not(:disabled){border-color:var(--accent);background:#38bdf829}.all-visible{color:var(--text-2);padding:0 var(--s1);font-size:12px}.surface-note{margin-left:var(--s1);color:var(--warn);background:#fbbf2426;border-radius:10px;padding:1px 6px;font-size:11px}kbd{border:1px solid var(--line);background:var(--bg);min-width:18px;color:var(--text-2);text-align:center;border-bottom-width:2px;border-radius:4px;padding:0 4px;font:600 11px/16px ui-monospace,Cascadia Mono,Consolas,monospace;display:inline-block}.guid-row{align-items:center;gap:var(--s1);display:flex}.model-main button.icon,.info-head button.icon,.guid-row button.icon{justify-content:center;align-items:center;display:inline-flex}button[aria-busy=true]{cursor:progress}.toast{align-items:flex-start;gap:var(--s2);display:flex}.toast .toast-close{min-height:0;color:var(--text-3);background:0 0;border:none;margin-left:auto;padding:0 4px;line-height:1.4}.survey{gap:var(--s2);padding:var(--s3);border:1px solid var(--line);border-radius:var(--radius);background:#0000001f;flex-direction:column;display:flex}.survey-title{font-size:12px;font-weight:600}.survey-fields{gap:var(--s2);flex-direction:column;display:flex}.survey-fields[hidden]{display:none}.survey-fields label.angle{color:var(--text-2);flex-direction:column;gap:2px;max-width:50%;font-size:11px;display:flex}.survey-badge{color:var(--warn);margin-top:2px;font-size:12px;display:block}.survey-links{align-items:flex-end;gap:var(--s1);flex-direction:column;font-size:12px;display:flex}.survey-links [hidden]{display:none}#sidebar>*{flex-shrink:0}.grid-row{color:var(--text-2);font-size:12px}.grid-row .segmented button{padding:2px 8px;font-size:12px}.grid-hint[hidden]{display:none}.pd-backdrop{z-index:100;padding:var(--s4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a0c0f99;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pd-dialog{background:var(--panel);border:1px solid var(--line);width:min(520px,100%);min-height:0;max-height:100%;padding:var(--s5);gap:var(--s4);border-radius:10px;flex-direction:column;display:flex;box-shadow:0 20px 48px #00000080}.pd-head{justify-content:space-between;align-items:flex-start;gap:var(--s4);display:flex}.pd-title{margin:0;font-size:16px;font-weight:600}.pd-subtitle{margin:var(--s1) 0 0;color:var(--text-2);font-size:12px}.pd-elapsed{font-variant-numeric:tabular-nums;color:var(--text-2);padding-top:2px;font-size:13px}.pd-steps{gap:var(--s3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.pd-step{gap:var(--s3);color:var(--text-3);align-items:flex-start;display:flex}.pd-step.active,.pd-step.done{color:var(--text)}.pd-icon{flex:none;margin-top:1px;display:inline-flex}.pd-step.active .pd-icon{color:var(--accent);animation:1s linear infinite pd-spin}.pd-step.done .pd-icon{color:var(--ok)}.pd-step.error .pd-icon{color:var(--err)}.pd-body{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.pd-line{justify-content:space-between;gap:var(--s3);display:flex}.pd-label{font-weight:500}.pd-detail{color:var(--text-2);font-variant-numeric:tabular-nums;text-align:right;text-overflow:ellipsis;white-space:nowrap;max-width:60%;font-size:12px;overflow:hidden}.pd-bar{background:var(--bg);border-radius:2px;height:4px;overflow:hidden}.pd-bar[hidden]{display:none}.pd-fill{background:var(--accent);width:0;height:100%;transition:width .2s}.pd-bar.indeterminate .pd-fill{width:35%;animation:1.2s ease-in-out infinite pd-slide}.pd-status{min-height:1em;color:var(--text-2);margin:0;font-size:12px}.pd-result{gap:var(--s2);border-radius:var(--radius);min-height:0;padding:var(--s3);background:var(--bg);border-left:3px solid var(--accent);flex-direction:column;flex:0 auto;display:flex}.pd-result[hidden]{display:none}.pd-result.ok{border-left-color:var(--ok)}.pd-result.error{border-left-color:var(--err)}.pd-result p{margin:0;line-height:1.45}.pd-summary{font-weight:600}.pd-lines{padding:0 var(--s1) 0 0;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#fff3 transparent;min-height:0;max-height:40vh;margin:0;list-style:none;overflow-y:auto}.pd-line-extra{color:var(--text-2);overflow-wrap:anywhere;padding:2px 0;font-size:12px;line-height:1.45}.pd-line-extra+.pd-line-extra{border-top:1px solid #ffffff0d}.pd-foot{justify-content:flex-end;display:flex}.pd-button{min-width:110px}@keyframes pd-spin{to{transform:rotate(360deg)}}@keyframes pd-slide{0%{transform:translate(-100%)}to{transform:translate(290%)}}@media (prefers-reduced-motion:reduce){.pd-step.active .pd-icon,.pd-bar.indeterminate .pd-fill{animation:none}.pd-bar.indeterminate .pd-fill{opacity:.5;width:100%}}.basemap-choice{display:flex}.basemap-choice button{font-size:var(--fs-cap);flex:1;padding:2px 4px}.map-opacity{font-size:12px}.map-opacity[hidden]{display:none}.map-attribution{color:var(--text-2);pointer-events:none;background:#1b1e23bf;border-radius:4px;padding:1px 8px;font-size:11px}.map-attribution[hidden],.section[hidden],.hint[hidden]{display:none}button.small{min-height:24px;padding:2px 8px;font-size:12px}.toast .toast-action{min-height:0;color:var(--accent);border-color:var(--accent);white-space:nowrap;background:0 0;padding:1px 8px;font-size:12px;font-weight:600}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--text-2);font-size:12px}.segmented.full{display:flex}.segmented.full button{flex:1;padding:4px 6px;font-size:12px}.survey-actions>button{flex:1}.survey-fields label.angle{max-width:none}.brand{padding:var(--s4) var(--s4) var(--s3);border-bottom:1px solid var(--glass-border)}.brand h1{font-size:var(--fs-body-lg);letter-spacing:0;font-weight:600}.brand .version,.section h2,.cm-heading,.field-label{font-size:var(--fs-cap);letter-spacing:.12em;color:var(--text-3)}.field-label{text-transform:uppercase}.section{border-bottom:1px solid var(--glass-border)}button{transition:background-color var(--t-fast) var(--ease-out), border-color var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);background:#ffffff0a;border:1px solid #ffffff1a;border-radius:8px}button:hover:not(:disabled){background:#ffffff17;border-color:#ffffff2e}button.primary{background:var(--primary);min-height:36px;color:var(--primary-ink);border:0;border-radius:10px;font-weight:600}button.primary:hover:not(:disabled){background:#fff;border:0}button.primary:disabled{background:var(--panel-2);color:var(--text-3);opacity:1}button.icon{background:0 0;border-color:#0000}button.link{color:var(--text-2);text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);background:0 0;border:none}button.link:hover:not(:disabled){color:var(--text);background:0 0}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.segmented{background:#ffffff08;border-color:#ffffff1a;border-radius:8px}.segmented button{color:var(--text-2);background:0 0;border:none;border-radius:0}.segmented button+button{border-left:1px solid #ffffff14}.segmented button[aria-pressed=true]{background:var(--primary);color:var(--primary-ink)}.switch span{transition:background-color var(--t-base) var(--ease-out);background:#ffffff24}.switch span:after{transition:transform var(--t-base) var(--ease-out);box-shadow:0 1px 3px #0006}.switch input:checked+span{background:var(--ok)}input[type=checkbox],input[type=radio],input[type=range]{accent-color:#fafafa}input[type=number],input[type=text],select{border-radius:var(--radius);transition:border-color var(--t-fast) var(--ease-out);background:#00000059;border:1px solid #ffffff1a}input[type=number]:hover,input[type=text]:hover{border-color:#fff3}.model,.counter,.survey,.model-list.scrolls{background:#00000040;border-color:#ffffff14;border-radius:10px}.restore-button{color:var(--text);background:0 0;border-color:#ffffff80}.restore-button:hover:not(:disabled){background:var(--primary);color:var(--primary-ink)}kbd{background:#00000059;border-color:#ffffff24}#info-panel,.context-menu,.toast,#progress,.pd-dialog{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-md);background:#09090bcc;border:1px solid #ffffff1a}#info-panel{top:var(--shell-pad);right:var(--shell-pad)}.info-class{color:var(--accent);letter-spacing:.12em}.toast{border-left-width:3px}.cm-item:hover:not(:disabled),.cm-item:focus-visible{color:var(--text);background:#ffffff1a}.cm-item:hover:not(:disabled) .cm-icon,.cm-item:focus-visible .cm-icon{color:var(--accent)}.pd-backdrop{background:#0a0a0c8c}.pd-step.active .pd-icon,.pd-fill,.progress-bar{color:var(--accent)}.pd-fill,.progress-bar{background:var(--accent)}#drop-overlay{border-color:var(--accent);border-radius:var(--radius-lg);background:#38bdf814}.map-attribution{background:#09090bbf}#empty-state .empty-title{font-size:var(--fs-heading);letter-spacing:0}#empty-state,#progress{padding-left:calc(var(--panel-w) + 2 * var(--shell-pad))}#progress{left:calc(50% + (var(--panel-w) + var(--shell-pad)) / 2);padding-left:var(--s4)}#toasts{right:var(--shell-pad);bottom:var(--shell-pad)}.kv dd{word-break:normal;overflow-wrap:anywhere}.guid{word-break:break-all}#sidebar,.model-list,#info-panel{scrollbar-width:thin;scrollbar-color:#fff3 transparent}.search{font-size:var(--fs-body)}.search[hidden]{display:none}.search-field{align-items:center;gap:var(--s2);height:36px;padding:0 var(--s2) 0 var(--s3);color:var(--text-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-md);background:#09090bcc;border:1px solid #ffffff1a;display:flex}.search-field:focus-within{border-color:var(--accent)}.search-field input{min-width:0;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;padding:0}.search-field input::-webkit-search-cancel-button{display:none}.search-field:focus-within .search-kbd{display:none}.search-field:has(input:placeholder-shown) .search-clear{display:none}.search-results,.search-footer{margin-top:var(--s1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-md);background:#09090be6;border:1px solid #ffffff1a}.search-results{padding:var(--s1);scrollbar-width:thin;max-height:min(360px,50vh);list-style:none;overflow-y:auto}.search-results[hidden],.search-footer[hidden]{display:none}.search-hit{gap:var(--s2);padding:6px var(--s2);border-radius:var(--radius);cursor:pointer;grid-template-columns:auto 1fr auto;align-items:baseline;display:grid}.search-hit[aria-selected=true],.search-hit:hover{background:#ffffff14}.search-class{color:var(--accent);font-size:var(--fs-meta)}.search-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.search-model{color:var(--text-3);font-size:var(--fs-meta);text-overflow:ellipsis;white-space:nowrap;max-width:120px;overflow:hidden}.search-footer{justify-content:space-between;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);color:var(--text-2);font-size:var(--fs-meta);display:flex}.geo{flex:none;display:inline-flex}.geo.ok{color:var(--ok)}.geo.warn{color:var(--warn)}.geo.error{color:var(--err)}.geo-list{margin:var(--s2) 0;gap:var(--s1);font-size:var(--fs-meta);color:var(--text-2);padding:0;list-style:none;display:grid}.geo-item{gap:var(--s2);grid-template-columns:14px 1fr;align-items:start;display:grid}.geo-item svg{margin-top:2px}.geo-item.ok svg{color:var(--ok)}.geo-item.warn svg{color:var(--warn)}.geo-item.error svg{color:var(--err)}.measure-overlay{pointer-events:none;z-index:3;width:100%;height:100%;position:absolute;inset:0}.m-line{stroke:var(--warn);stroke-width:2px}.m-dot{fill:var(--warn);stroke:#0a0a0c;stroke-width:1.5px}.m-dot.pending{fill:#fff}.m-dot.point{fill:var(--accent)}.m-label rect{fill:#09090bd9;stroke:#ffffff26}.m-label text{fill:var(--text);font:600 12px JetBrains Mono,ui-monospace,monospace}.m-label.point rect{stroke:var(--accent)}.measuring canvas{cursor:crosshair}.measure-panel{padding:var(--s3);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-md);font-size:var(--fs-meta);background:#09090bd9;border:1px solid #ffffff1a;overflow-y:auto}.measure-panel[hidden]{display:none}.measure-panel.idle{opacity:.85}.measure-head{align-items:center;gap:var(--s2);margin-bottom:var(--s2);display:flex}.measure-head strong{font-size:var(--fs-body);flex:1}.measure-head .segmented button{align-items:center;gap:4px;display:inline-flex}.measure-row{gap:var(--s2);border-top:1px solid #ffffff0f;grid-template-columns:22px auto 1fr;align-items:baseline;padding:3px 0;display:grid}.measure-n{color:var(--text-3)}.measure-main{color:var(--text);white-space:pre;font-weight:600}.measure-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.measure-row.point{grid-template-columns:22px 1fr}.measure-row.point .measure-label{grid-column:2}.measure-actions{margin-top:var(--s2)}.kv dt.dt-action{align-items:center;gap:2px;display:flex}.kv dt.dt-action .icon{width:22px;height:22px;color:var(--text-2);padding:0}.kv dt.dt-action .icon:hover{color:var(--accent)}.view-list{gap:var(--s1);margin:0;padding:0;list-style:none;display:grid}.view{gap:var(--s2);grid-template-columns:64px 1fr auto;align-items:center;display:grid}.view-open{border-radius:var(--radius);border:1px solid var(--line);background:var(--panel-2);cursor:pointer;width:64px;height:40px;padding:0;overflow:hidden}.view-open:hover,.view-open:focus-visible{border-color:var(--accent)}.view-open img{object-fit:cover;width:100%;height:100%;display:block}.view-name{min-width:0}.section-head .buttons{flex-wrap:nowrap}.section-head .buttons button{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.compare-start{margin:var(--s2) 0}.compare-start select{width:100%}.compare-legend{margin:var(--s2) 0;gap:4px;padding:0;list-style:none;display:grid}.compare-row{align-items:center;gap:var(--s2);display:flex}.compare-row .swatch{border-radius:3px;flex:none;width:12px;height:12px}.compare-row.added .swatch{background:var(--ok)}.compare-row.changed .swatch{background:var(--warn)}.compare-row.removed .swatch{background:var(--err)}.compare-row.unchanged .swatch{background:var(--line)}.color-legend{margin:var(--s2) 0 0;scrollbar-width:thin;max-height:220px;padding:0;list-style:none;overflow-y:auto}.color-row .check{gap:var(--s2);grid-template-columns:auto 12px 1fr auto;align-items:center;padding:2px 0;display:grid}.color-row .swatch{border-radius:3px;width:12px;height:12px}.color-key{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.measure-depth{color:var(--warn);grid-column:2}.m-snap{fill:none;stroke:var(--accent);stroke-width:2px}.m-snap.vertex{stroke:var(--warn)}.m-snap.edge{stroke:#e879f9}.m-edge{stroke:#e879f9;stroke-width:3px;stroke-linecap:round;opacity:.9}.m-snap-text{fill:var(--text);paint-order:stroke;stroke:#09090bd9;stroke-width:3px;font:600 11px JetBrains Mono,ui-monospace,monospace}.m-line.preview{stroke-dasharray:6 4}.m-label.preview rect{stroke:var(--warn)}:root{--right-w:360px;--toolbar-h:52px}.hud{z-index:5;gap:var(--s2);pointer-events:none;flex-direction:column;min-height:0;display:flex;position:absolute}.hud>*{pointer-events:auto}.hud>[hidden]{display:none}#hud-top{top:var(--shell-pad);left:calc(var(--panel-w) + 2 * var(--shell-pad));width:clamp(200px, calc(100% - var(--panel-w) - var(--right-w) - 4 * var(--shell-pad)), 400px)}#hud-right{top:var(--shell-pad);right:var(--shell-pad);bottom:calc(var(--shell-pad) + var(--toolbar-h) + 32px);width:var(--right-w);max-width:calc(100% - var(--panel-w) - 3 * var(--shell-pad))}#hud-right>*{flex:0 auto;min-height:0}#hud-bottom{width:max-content;max-width:calc(100% - 2 * var(--shell-pad));left:50%;bottom:var(--shell-pad);justify-content:flex-end;align-items:center;transform:translate(-50%)}#toasts:empty{display:none}.brand{align-items:center;gap:var(--s2);display:flex}.brand h1{align-items:center;gap:var(--s2);flex:none;display:flex}.brand-mark{background:currentColor;width:22px;height:15px;-webkit-mask:url(/logo.svg) 50%/contain no-repeat;mask:url(/logo.svg) 50%/contain no-repeat}.brand .version{flex:1}.help-button{margin:-4px -6px -4px 0}.tabs{padding:var(--s2) var(--s2) 0;border-bottom:1px solid var(--glass-border);z-index:1;background:var(--panel);grid-template-columns:repeat(5,1fr);gap:2px;display:grid;position:sticky;top:0}.tabs .tab{border-radius:var(--radius) var(--radius) 0 0;color:var(--text-2);font-size:var(--fs-cap);background:0 0;border:0;border-bottom:2px solid #0000;flex-direction:column;align-items:center;gap:3px;padding:6px 2px 7px;display:flex}.tabs .tab:hover:not(:disabled){color:var(--text);background:#ffffff0a}.tabs .tab[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent)}.tabs .tab:disabled{opacity:.35}.tab-panel[hidden]{display:none}.toolbar{height:var(--toolbar-h);padding:var(--s1) var(--s2);scrollbar-width:none;background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--glass-border);border-radius:var(--radius-md);align-items:center;gap:2px;max-width:100%;display:flex;overflow-x:auto;box-shadow:0 8px 24px #0006}.toolbar .tool{min-width:58px;color:var(--text-2);background:0 0;border:0;flex-direction:column;flex:none;align-items:center;gap:2px;padding:4px 6px;font-size:10px;line-height:1.1;display:flex}.toolbar .tool:hover:not(:disabled){color:var(--text);background:#ffffff0f}.toolbar .tool[aria-pressed=true]{color:var(--accent);background:#38bdf81f}.tool-sep{width:1px;height:28px;margin:0 var(--s1);background:var(--glass-border);flex:none}@media (max-width:1100px){.toolbar .tool-label{display:none}.toolbar .tool{min-width:40px;padding:8px}:root{--toolbar-h:44px}}.modal-backdrop{z-index:90;padding:var(--s4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a0c0f99;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-direction:column;width:min(560px,100%);max-height:100%;display:flex;box-shadow:0 20px 48px #00000080}.modal-head{padding:var(--s3) var(--s3) var(--s3) var(--s5);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex}.modal-head h2{font-size:var(--fs-heading);margin:0}.modal-body{padding:var(--s4) var(--s5) var(--s5);overscroll-behavior:contain;scrollbar-width:thin;overflow-y:auto}.shortcuts h3{margin:var(--s4) 0 var(--s2);font-size:var(--fs-cap);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}.m-edge.picked{stroke:var(--accent);stroke-width:3px;opacity:1}.measure-head{flex-wrap:wrap}.kv{grid-template-columns:minmax(0,max-content) minmax(40%,1fr)}.kv dt{overflow-wrap:anywhere;max-width:100%}.info-location .kv dd{font-variant-numeric:tabular-nums}#info-panel .kv{grid-template-columns:minmax(0,38%) minmax(0,1fr);align-items:baseline;row-gap:4px}#info-panel .pset .kv{margin-left:0}#info-panel .pset summary{margin-bottom:2px}.kv dd.kv-value{align-items:baseline;gap:var(--s1);min-width:0;display:flex}.kv-text{overflow-wrap:anywhere;flex:1;min-width:0}.kv-action{width:22px;height:22px;color:var(--text-2);flex:none;justify-content:center;align-self:center;align-items:center;margin:-3px 0;padding:0;display:inline-flex}.kv-action:hover{color:var(--accent)}.issue-list{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.issue{border:1px solid var(--glass-border);border-radius:var(--radius);background:#ffffff05}.issue.done{opacity:.7}.issue-head{gap:var(--s2);padding:var(--s1);grid-template-columns:64px minmax(0,1fr);align-items:center;display:grid}.issue-summary{align-items:center;column-gap:var(--s1);padding:2px var(--s1);text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title chevron""meta chevron";row-gap:2px;display:grid}.issue-summary svg{color:var(--text-2);grid-area:chevron}.issue-title{text-overflow:ellipsis;white-space:nowrap;grid-area:title;font-weight:600;overflow:hidden}.issue-meta{font-size:var(--fs-cap);color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;grid-area:meta;overflow:hidden}.issue-meta:before{content:"";background:var(--info);vertical-align:1px;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.issue-meta.status-in-progress:before{background:var(--warn)}.issue-meta.status-resolved:before,.issue-meta.status-closed:before{background:var(--ok)}.issue-form{gap:var(--s2);padding:var(--s2) var(--s3) var(--s3);border-top:1px solid var(--glass-border);flex-direction:column;display:flex}.issue-form .field,.bcf-author{flex-direction:column;gap:4px;display:flex}.issue-grid{gap:var(--s2);grid-template-columns:1fr 1fr;display:grid}.issue-form textarea{resize:vertical;min-height:72px;font:inherit}.issue-actions{flex-wrap:wrap}.issue-actions button{white-space:nowrap;flex:auto;justify-content:center;align-items:center;gap:4px;display:inline-flex}button.danger:hover:not(:disabled){color:var(--err);border-color:var(--err)}.issue-form input[type=date],.issue-form textarea{font:inherit;color:var(--text);border-radius:var(--radius);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#00000059;border:1px solid #ffffff1a;width:100%;min-width:0;padding:4px 6px}.issue-form input[type=date]:hover,.issue-form textarea:hover{border-color:#fff3}.issue-thread{gap:var(--s2);padding-top:var(--s2);border-top:1px solid var(--glass-border);flex-direction:column;display:flex}.comment-list{gap:var(--s2);scrollbar-width:thin;flex-direction:column;max-height:260px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.comment{padding:6px var(--s2);border-left:2px solid var(--glass-border);border-radius:0 var(--radius) var(--radius) 0;background:#ffffff05}.comment-head{justify-content:space-between;gap:var(--s2);font-size:var(--fs-cap);display:flex}.comment-head strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.comment p{white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0 0}.issue-thread textarea{font:inherit;color:var(--text);border-radius:var(--radius);resize:vertical;background:#00000059;border:1px solid #ffffff1a;width:100%;padding:4px 6px}.issue-thread .buttons button{align-items:center;gap:4px;display:inline-flex}
