@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff)format("woff");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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/map/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/map/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/map/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/map/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/map/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff)format("woff");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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/map/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/map/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/map/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/map/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/map/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/map/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff)format("woff");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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/map/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/map/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/map/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/map/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/map/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/map/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");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}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/map/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/map/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");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}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1113;--surface-1:#16181b;--surface-2:#1c1f23;--surface-3:#25292e;--border:#2b2f35;--border-hi:#3b4048;--float-bg:#16181beb;--text:#e8eaed;--text-2:#a5abb3;--text-3:#717880;--accent:#6aa2ff;--accent-hi:#93bcff;--accent-bg:#6aa2ff1f;--accent-bd:#6aa2ff6b;--on-accent:#0b1220;--danger:#f07a72;--success:#5fcf8e;--warn:#e8b04b;--font:"IBM Plex Sans", system-ui, "Segoe UI", Roboto, sans-serif;--mono:"IBM Plex Mono", ui-monospace, "Cascadia Code", Consolas, monospace;--radius-sm:3px;--radius:4px;--radius-lg:6px;--shadow-float:0 1px 2px #00000059, 0 8px 24px #00000059;--shadow-modal:0 24px 64px #0000008c;font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:13px;line-height:1.5}*,:before,:after{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button,input,select{font:inherit}.app-shell{grid-template-rows:auto 1fr;height:100%;display:grid}.app-body{grid-template-columns:260px 1fr 290px;min-height:0;display:grid}.toolbar{background:var(--surface-1);border-bottom:1px solid var(--border);align-items:center;gap:6px;height:44px;padding:0 12px;display:flex}.toolbar-brand{letter-spacing:-.01em;white-space:nowrap;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;margin-right:12px;font-size:14px;display:flex}.toolbar-brand-logo{filter:invert()brightness(1.8);flex-shrink:0;width:22px;height:22px}.tileset-select{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font:inherit;cursor:pointer;margin-right:8px;padding:4px 8px;font-size:12px}.tileset-select:hover{border-color:var(--border-hi)}.toolbar-brand-mark{color:var(--text);font-weight:600}.toolbar-brand-name{color:var(--text-2);font-weight:400}.toolbar-sep{background:var(--border);flex-shrink:0;width:1px;height:20px;margin:0 6px}.toolbar-group{background:var(--border);border-radius:var(--radius);gap:1px;display:flex;overflow:hidden}.toolbar-group .toolbar-btn{border:none;border-radius:0}.toolbar-btn{height:30px;color:var(--text-2);background:var(--surface-2);border-radius:var(--radius);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;align-items:center;gap:5px;padding:0 10px;font-size:12px;font-weight:500;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.toolbar-btn:hover:not(:disabled){background:var(--surface-3);color:var(--text)}.toolbar-btn.active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent-bd)}.toolbar-btn:disabled{opacity:.35;cursor:not-allowed}.toolbar-btn svg{flex-shrink:0;width:14px;height:14px}.toolbar-end{align-items:center;gap:6px;margin-left:auto;display:flex}.toolbar-dot{background:var(--accent);border-radius:50%;width:6px;height:6px;margin-left:2px}.tool-popover-anchor{position:relative}.tool-popover{z-index:100;background:var(--surface-2);border:1px solid var(--border-hi);border-radius:var(--radius-lg);width:264px;box-shadow:var(--shadow-float);padding:12px 14px 14px;position:absolute;top:calc(100% + 6px);left:0}.tool-popover-title{color:var(--text-2);margin:0 0 10px;font-size:12px;font-weight:600}.tool-popover-options{border-top:1px solid var(--border);flex-direction:column;gap:6px;margin-top:12px;padding-top:12px;display:flex}.tool-popover .clip-axes,.tool-popover .clip-slider{padding-left:0}.tool-popover .panel-hint{margin-top:2px;padding-left:23px}.time-label{font-variant-numeric:tabular-nums}.time-row{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.time-value{font-family:var(--mono);color:var(--text);font-size:13px}.date-input{height:26px;font:inherit;font-variant-numeric:tabular-nums;color:var(--text-2);background:var(--surface-2);border-radius:var(--radius);cursor:pointer;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;border:1px solid #0000;outline:none;padding:0 6px;font-size:12px}.date-input:hover,.date-input:focus{border-color:var(--border-hi);color:var(--text)}.time-slider{width:100%}.time-scale{width:100%;color:var(--text-3);-webkit-user-select:none;user-select:none;justify-content:space-between;margin-top:-2px;font-size:10px;display:flex}input[type=range]{appearance:none;background:var(--border-hi);border-radius:var(--radius-sm);outline:none;height:4px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--text);cursor:pointer;width:12px;height:12px;box-shadow:0 0 0 3px var(--surface-1), 0 1px 3px #0006;border:none;border-radius:50%}input[type=range]:hover::-webkit-slider-thumb{background:var(--accent-hi)}input[type=range]:disabled::-webkit-slider-thumb{background:var(--text-3);cursor:not-allowed}input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;margin:0}.panel{background:var(--surface-1);padding:14px;overflow:hidden auto}.panel::-webkit-scrollbar{width:5px}.panel::-webkit-scrollbar-thumb{background:var(--border-hi);border-radius:var(--radius-sm)}.layer-float-body::-webkit-scrollbar-thumb{background:var(--border-hi);border-radius:var(--radius-sm)}.layer-float-body::-webkit-scrollbar{width:5px}.panel-right{border-left:1px solid var(--border)}.panel-header{-webkit-user-select:none;user-select:none;align-items:center;gap:6px;margin-bottom:14px;display:flex}.panel-header svg{width:14px;height:14px;color:var(--text-3)}.panel-header h2{color:var(--text-2);margin:0;font-size:12px;font-weight:600}.panel-empty{color:var(--text-3);margin:0;font-size:12px;line-height:1.6}.layer-float{z-index:20;background:var(--float-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius-lg);width:272px;max-height:calc(100% - 24px);box-shadow:var(--shadow-float);flex-direction:column;display:flex;position:absolute;top:12px;left:12px}.layer-float-header{margin:0;padding:10px 10px 8px 14px}.layer-float-body{padding:0 8px 12px;overflow:hidden auto}.layer-float-body .panel-section{margin:12px 0 0;padding:12px 0 0 8px}.layer-float-body>.panel-section:first-child{margin-top:0}.layer-float-toggle{z-index:20;height:32px;color:var(--text);background:var(--float-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-float);cursor:pointer;align-items:center;gap:6px;padding:0 12px;font-size:12px;font-weight:500;display:inline-flex;position:absolute;top:12px;left:12px}.layer-float-toggle:hover{border-color:var(--border-hi)}.layer-float-toggle svg{width:14px;height:14px;color:var(--text-2)}.layer-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.layer-row{border-radius:var(--radius);padding:6px 8px;transition:background .1s}.layer-row:hover{background:var(--surface-2)}.layer-name{color:var(--text);align-items:center;gap:8px;font-size:13px;font-weight:500;display:flex}.layer-opacity{color:var(--text-3);align-items:center;gap:8px;margin-top:6px;padding-left:30px;font-size:11px;display:flex}.layer-opacity input{flex:1}.layer-error{color:var(--danger);margin:4px 0 0 30px;font-size:11px}.layer-group-title{color:var(--text-3);margin:0 0 4px;padding-left:8px;font-size:11px;font-weight:500}.layer-group-title span{margin-left:6px}.bundle-group+.bundle-group{margin-top:10px}.bundle-group-title{color:var(--text-2);margin:0 0 4px;padding-left:8px;font-size:11px;font-weight:600}.bundle-group-title span{color:var(--text-3);margin-left:4px;font-weight:400}.bundle-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.bundle{border-radius:var(--radius);border:1px solid #0000;transition:border-color .1s,background .1s}.bundle:not(.active):hover{background:var(--surface-2)}.bundle.active{border-color:var(--accent-bd);background:var(--accent-bg)}.bundle-line{align-items:center;gap:6px;min-height:28px;padding:4px 8px;display:flex}.bundle-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:1;font-size:13px;font-weight:500;overflow:hidden}.bundle-date{font-variant-numeric:tabular-nums;color:var(--text-3);flex-shrink:0;font-size:11px}.bundle-dot{background:var(--text-3);border-radius:50%;flex-shrink:0;width:7px;height:7px}.bundle-dot-approved{background:var(--success)}.bundle-dot-preliminary{background:var(--accent)}.bundle-dot-superseded{border:1px solid var(--text-3);background:0 0}.bundle-expand{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-2);cursor:pointer;background:0 0;flex-shrink:0;align-items:center;gap:2px;padding:1px 4px 1px 6px;font-size:10px;display:inline-flex}.bundle-expand:hover{color:var(--text);border-color:var(--accent-bd)}.bundle-expand svg{transition:transform .15s}.bundle-expand.open svg{transform:rotate(90deg)}.bundle-hides{color:var(--text-3);margin:-2px 0 4px;padding:0 8px 0 30px;font-size:11px}.bundle-parts{padding:0 6px 6px 22px}.layer-line{align-items:center;gap:8px;display:flex}.layer-line .layer-name{flex:1;min-width:0}.layer-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.layer-row.compact{padding:3px 8px}.layer-row.compact .layer-name{font-size:12px;font-weight:400}.layer-row.compact input[type=range]{flex:0 0 64px;width:64px}.layer-row.excluded .layer-name{color:var(--text-3);cursor:default}.layer-row.excluded .layer-label{text-decoration:line-through}.layer-tag{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-3);flex-shrink:0;padding:0 5px;font-size:10px}.eye-toggle{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--text-3);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.eye-toggle.on{color:var(--text)}.eye-toggle:hover:not(:disabled){background:var(--surface-3);color:var(--text)}.eye-toggle:disabled{opacity:.45;cursor:default}.bundle-body{padding:0 6px 6px}.bundle-body .bundle-parts{padding:0 0 6px 22px}.bundle-excludes{flex-wrap:wrap;align-items:center;gap:4px;padding-left:22px;display:flex}.bundle-excludes-title{color:var(--text-3);margin-right:2px;font-size:11px}.hide-chip{border:1px dashed var(--border-hi);border-radius:var(--radius-sm);color:var(--text-3);cursor:pointer;background:0 0;padding:1px 7px;font-size:11px}.hide-chip:hover{color:var(--text);border-color:var(--text-3)}.hide-chip.on{border-style:solid;border-color:var(--accent-bd);background:var(--accent-bg);color:var(--text);text-decoration:line-through}.bundle-note{color:var(--text-3);margin:4px 0 0 22px;font-size:10px}.panel-section{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.panel-section .panel-header{margin-bottom:10px}.panel-hint{color:var(--text-3);margin:8px 0 0;padding-left:23px;font-size:11px;line-height:1.5}.clip-axes{gap:4px;margin-top:10px;padding-left:23px;display:flex}.clip-axis{height:26px;color:var(--text-2);background:var(--surface-2);border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;flex:1;font-size:11px;font-weight:500;transition:background .12s,color .12s,border-color .12s}.clip-axis:hover{background:var(--surface-3);color:var(--text)}.clip-axis.active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent-bd)}.clip-offset{min-width:54px;font-family:var(--mono);font-variant-numeric:tabular-nums}.clip-row{color:var(--text-2);align-items:center;gap:8px;font-size:12px;display:flex}.clip-slider{color:var(--text-3);align-items:center;gap:8px;margin-top:8px;padding-left:23px;font-size:11px;display:flex}.clip-slider input{flex:1}.prop-body{margin-top:4px}.prop-layer{color:var(--text);margin:0 0 2px;font-size:14px;font-weight:600}.prop-point{font-family:var(--mono);color:var(--text-3);margin:0 0 12px;font-size:11px}.prop-table{flex-direction:column;gap:1px;margin:0;display:flex}.prop-row{border-radius:var(--radius-sm);background:var(--surface-2);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:10px;padding:5px 8px;font-size:12px;display:grid}.demolish{border-top:1px solid var(--border);margin-top:14px;padding-top:10px}.demolish-title{color:var(--text-2);margin:0 0 6px;font-size:12px;font-weight:600}.demolish-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.demolish-row{color:var(--text-2);border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:8px;padding:4px 6px;font-size:12px;display:flex}.demolish-row:hover{background:var(--surface-2);color:var(--text)}.demolish-row input{accent-color:var(--accent)}.demolish-on{color:var(--accent);margin-left:auto;font-size:10px}.demolish-names{color:var(--text-2);margin:0;font-size:12px}.demolish-message{color:var(--text-3);margin:6px 0 0;font-size:11px}.demolish-message.error{color:var(--danger)}.prop-row:nth-child(odd){background:0 0}.prop-row dt{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.prop-row dd{color:var(--text);overflow-wrap:anywhere;word-break:break-word;margin:0}.viewport{background:var(--bg);grid-template-rows:1fr auto;min-width:0;min-height:0;display:grid}.viewport-canvas{min-height:0;position:relative}.viewport-canvas canvas{outline:none;width:100%;height:100%;display:block}.status-bar{background:var(--surface-1);border-top:1px solid var(--border);height:26px;color:var(--text-3);white-space:nowrap;-webkit-user-select:none;user-select:none;align-items:center;gap:16px;padding:0 12px;font-size:11px;display:flex;overflow:hidden}.status-coords{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--text-2);font-size:11px}.status-measure{color:var(--warn);font-weight:500}.status-attr{text-overflow:ellipsis;color:var(--text-3);font-size:10px;overflow:hidden}.goto-input{align-items:center;gap:4px;display:flex}.goto-field{width:160px;height:30px;font-size:12px;font-family:var(--mono);color:var(--text);background:var(--surface-3);border:1px solid var(--border-hi);border-radius:var(--radius);outline:none;padding:0 8px}.goto-field:focus{border-color:var(--accent)}.goto-field::placeholder{color:var(--text-3)}.bookmark-dropdown{position:relative}.bookmark-menu{background:var(--surface-2);border:1px solid var(--border-hi);border-radius:var(--radius-lg);min-width:200px;max-height:300px;box-shadow:var(--shadow-float);z-index:100;margin-top:4px;padding:4px;position:absolute;top:100%;left:0;overflow-y:auto}.bookmark-item{align-items:center;gap:4px;padding:0;display:flex}.bookmark-add{width:100%;color:var(--accent);cursor:pointer;text-align:left;border-radius:var(--radius-sm);background:0 0;border:none;padding:6px 8px;font-size:12px}.bookmark-add:hover{background:var(--surface-3)}.bookmark-go{color:var(--text);cursor:pointer;text-align:left;border-radius:var(--radius-sm);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;flex:1;padding:6px 8px;font-size:12px;overflow:hidden}.bookmark-go:hover{background:var(--surface-3)}.bookmark-del{width:24px;height:24px;color:var(--text-3);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;display:flex}.bookmark-del:hover{color:var(--danger);background:var(--surface-3)}.bookmark-empty{color:var(--text-3);padding:6px 8px;font-size:12px}.bookmark-save-row{padding:4px}.bookmark-name-input{width:100%;height:28px;color:var(--text);background:var(--surface-3);border:1px solid var(--accent-bd);border-radius:var(--radius-sm);outline:none;padding:0 8px;font-size:12px}.compass{z-index:10;cursor:pointer;opacity:.85;background:0 0;border:none;padding:0;line-height:0;transition:opacity .15s;position:absolute;top:12px;right:12px}.compass:hover{opacity:1}.status-stats{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text-3);margin-left:auto;font-size:10px}.splash-overlay{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f1113e6;justify-content:center;align-items:center;animation:.3s ease-out splash-in;display:flex;position:absolute;inset:0}@keyframes splash-in{0%{opacity:0}to{opacity:1}}.splash-card{flex-direction:column;align-items:center;gap:16px;display:flex}.splash-title{letter-spacing:-.02em;color:var(--text-2);align-items:center;gap:8px;margin:0;font-size:20px;font-weight:400;display:flex}.splash-logo{filter:invert()brightness(1.8);width:32px;height:32px}.splash-mark{color:var(--text);font-weight:600}.splash-status{color:var(--text-3);font-variant-numeric:tabular-nums;margin:0;font-size:12px}.splash-spinner{border:3px solid var(--border-hi);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.panel-rail{background:var(--surface-1);flex-direction:column;width:36px;display:flex}.panel-rail-right{border-left:1px solid var(--border)}.panel-rail-btn{color:var(--text-3);cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:6px;padding:10px 0;transition:color .12s;display:flex}.panel-rail-btn:hover{color:var(--text)}.panel-rail-label{writing-mode:vertical-lr;font-size:11px;font-weight:500}.panel-collapse-btn{width:20px;height:20px;color:var(--text-3);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;margin-left:auto;transition:color .12s,background .12s;display:flex}.panel-collapse-btn:hover{color:var(--text);background:var(--surface-3)}@media (width<=1024px){.app-body{grid-template-rows:1fr auto;grid-template-columns:1fr!important}.panel{max-height:200px}.panel-right{border-left:none;border-top:1px solid var(--border)}.layer-float{width:min(272px,100% - 24px);max-height:calc(100% - 72px)}.toolbar{flex-wrap:wrap;gap:8px;height:auto;padding:8px 12px}.toolbar-end{margin-left:0}}.login-shell{background:var(--surface-1);justify-content:center;align-items:center;height:100vh;display:flex}.login-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;gap:14px;width:min(340px,100vw - 32px);padding:28px;display:flex}.login-title{color:var(--text-2);align-items:center;gap:8px;margin:0 0 6px;font-size:20px;font-weight:400;display:flex}.login-field{color:var(--text-2);flex-direction:column;gap:5px;font-size:12px;display:flex}.login-field input{height:34px;font:inherit;color:var(--text);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:0 10px;font-size:13px}.login-field input:focus{border-color:var(--accent-bd);outline:none}.login-error{color:var(--danger);margin:0;font-size:12px}.login-submit{height:34px;font:inherit;color:var(--on-accent);background:var(--accent);border-radius:var(--radius);cursor:pointer;border:none;font-size:13px;font-weight:600}.login-submit:hover:not(:disabled){background:var(--accent-hi)}.login-submit:disabled{opacity:.6;cursor:default}.user-menu{margin-left:6px;position:relative}.user-avatar{width:28px;height:28px;color:var(--text);background:var(--surface-3);border:1px solid var(--border-hi);cursor:pointer;border-radius:50%;font-size:11px;font-weight:600}.user-avatar:hover{border-color:var(--text-3)}.user-dropdown{z-index:60;background:var(--surface-2);border:1px solid var(--border-hi);border-radius:var(--radius-lg);min-width:200px;box-shadow:var(--shadow-float);padding:12px;position:absolute;top:calc(100% + 6px);right:0}.user-name{color:var(--text);margin:0;font-size:13px;font-weight:500}.user-email{color:var(--text-3);margin:2px 0 0;font-size:11px}.user-actions{flex-direction:column;gap:4px;margin-top:10px;display:flex}.user-actions .toolbar-btn{justify-content:center}.modal-backdrop{z-index:100;background:#0000008c;justify-content:center;align-items:flex-start;padding:8vh 16px 16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface-2);border:1px solid var(--border-hi);border-radius:var(--radius-lg);width:min(380px,100%);max-height:84vh;box-shadow:var(--shadow-modal);flex-direction:column;display:flex}.modal.wide{width:min(760px,100%)}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-header h2{color:var(--text);margin:0;font-size:15px;font-weight:500}.modal-close{color:var(--text-3);cursor:pointer;background:0 0;border:none;font-size:20px;line-height:1}.modal-close:hover{color:var(--text)}.modal-body{flex-direction:column;gap:12px;padding:16px 18px 18px;display:flex;overflow-y:auto}.password-form{flex-direction:column;gap:12px;display:flex}.admin-input,.admin-select{height:28px;font:inherit;color:var(--text);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 8px;font-size:12px}.admin-input:focus,.admin-select:focus{border-color:var(--accent-bd);outline:none}.admin-select:disabled{opacity:.6}.admin-add{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:1.4fr 1fr 1fr auto auto;gap:6px;padding:10px;display:grid}.admin-toolbar{align-items:center;gap:10px;display:flex}.admin-toolbar .admin-input{flex:1}.admin-count{color:var(--text-3);white-space:nowrap;font-size:11px}.admin-empty{color:var(--text-3);margin:0;font-size:12px}.admin-notice{color:var(--success);margin:0;font-size:12px}.admin-secret{color:var(--text-2);background:var(--accent-bg);border:1px solid var(--accent-bd);border-radius:var(--radius);padding:10px 12px;font-size:12px}.admin-secret p{margin:0 0 8px}.admin-secret strong{color:var(--text);font-weight:500}.admin-secret-row{align-items:center;gap:6px;display:flex}.admin-secret code{font-family:var(--mono);color:var(--text);background:var(--surface-1);border-radius:var(--radius-sm);-webkit-user-select:all;user-select:all;flex:1;padding:5px 8px;font-size:13px}.admin-users{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.admin-user{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;padding:10px 12px;display:flex}.admin-user-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.admin-user-id{align-items:baseline;gap:8px;min-width:0;display:flex}.admin-user-name{color:var(--text);font-size:13px;font-weight:500}.admin-user-email{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.admin-user-actions{flex-shrink:0;gap:4px;display:flex}.admin-tag{color:var(--text-2);border:1px solid var(--border-hi);border-radius:var(--radius-sm);padding:0 5px;font-size:10px}.admin-grants{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.admin-grant{color:var(--text-2);background:var(--surface-3);border-radius:var(--radius-sm);align-items:center;gap:6px;padding:2px 4px 2px 8px;font-size:12px;display:inline-flex}.admin-grant.all{color:var(--warn)}.admin-grant .admin-select{height:22px;padding:0 4px;font-size:11px}.admin-grant-role{color:var(--text-3);padding-right:4px;font-size:11px}.admin-grant-remove{color:var(--text-3);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:14px;line-height:1}.admin-grant-remove:hover{color:var(--danger)}.admin-grant-add{height:24px;color:var(--text-3)}@media (width<=640px){.admin-add{grid-template-columns:1fr 1fr}}.vector-opacity{padding:2px 0 4px 4px}.vector-bulk{gap:4px;margin:2px 0 4px 4px;display:flex}.vector-bulk button{color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:1px 8px;font-size:10px}.vector-bulk button:hover{color:var(--text);border-color:var(--accent-bd)}.vector-layers{margin:0;padding:0;list-style:none}.vector-layer{min-height:24px;color:var(--text);align-items:center;gap:6px;font-size:12px;display:flex}.vector-layer.off{color:var(--text-3)}.vector-swatch{border-radius:var(--radius-sm);flex-shrink:0;width:10px;height:10px;box-shadow:inset 0 0 0 1px #00000059}.vector-layer.off .vector-swatch{opacity:.35}.vector-layer-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.vector-count{color:var(--text-3);font-size:10px}.bookmark-scope{color:var(--text-3);padding:4px 8px 6px;font-size:10px}.bookmark-go{align-items:baseline;gap:8px;display:flex}.bookmark-author{color:var(--text-3);margin-left:auto;font-size:10px}.panel-tabs{flex:1;gap:2px;display:flex}.panel-tab{color:var(--text-3);border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:3px 8px;font-size:12px;font-weight:500;display:inline-flex}.panel-tab:hover{color:var(--text-2)}.panel-tab.active{color:var(--text);background:var(--surface-3)}.panel-tab-count{letter-spacing:0;text-align:center;min-width:16px;color:var(--surface-1);background:var(--warn);border-radius:999px;padding:0 4px;font-size:10px;line-height:16px}.marker-layer{pointer-events:none;z-index:5;position:absolute;inset:0;overflow:hidden}.marker{width:22px;height:22px;font:600 11px/20px var(--font);text-align:center;color:var(--surface-1);background:var(--warn);cursor:pointer;pointer-events:auto;will-change:transform;border:1px solid #00000059;border-radius:50%;margin:-30px 0 0 -11px;padding:0;position:absolute;top:0;left:0;box-shadow:0 2px 6px #00000073}.marker:after{content:"";background:inherit;width:2px;height:8px;margin-left:-1px;position:absolute;top:100%;left:50%}.marker-resolved{background:var(--text-3)}.marker-draft{background:var(--accent)}.marker.selected{outline:2px solid var(--text);outline-offset:1px;z-index:1}.comment-panel{flex-direction:column;gap:10px;display:flex}.comment-error,.comment-scope{margin:0;font-size:11px}.comment-error{color:var(--danger)}.comment-scope{color:var(--text-3)}.comment-draft{background:var(--accent-bg);border:1px solid var(--accent-bd);border-radius:var(--radius);padding:8px}.comment-draft-title{color:var(--text-2);margin:0 0 6px;font-size:11px}.comment-form{flex-direction:column;gap:6px;display:flex}.comment-form textarea{width:100%;font:inherit;color:var(--text);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-sm);resize:vertical;padding:6px 8px;font-size:12px}.comment-form textarea:focus{border-color:var(--accent-bd);outline:none}.comment-form-actions,.comment-actions{justify-content:flex-end;gap:6px;display:flex}.comment-btn{color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;padding:3px 10px;font-size:11px}.comment-btn:hover:not(:disabled){color:var(--text);background:var(--surface-3)}.comment-btn:disabled{opacity:.5;cursor:default}.comment-btn.primary{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.comment-btn.primary:hover:not(:disabled){color:var(--on-accent);background:var(--accent-hi)}.comment-btn.danger:hover{color:var(--danger)}.comment-filters{background:var(--border);border-radius:var(--radius-sm);gap:1px;display:flex;overflow:hidden}.comment-filter{color:var(--text-2);background:var(--surface-2);cursor:pointer;border:none;flex:1;padding:4px 0;font-size:11px}.comment-filter span{color:var(--text-3)}.comment-filter.active{color:var(--accent);background:var(--accent-bg)}.comment-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.comment{background:var(--surface-2);border-radius:var(--radius);border:1px solid #0000;padding:6px 8px 8px}.comment.selected{border-color:var(--border-hi)}.comment.resolved .comment-text{color:var(--text-2)}.comment-head{width:100%;font:inherit;text-align:left;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;display:flex}.comment-number{text-align:center;width:18px;height:18px;color:var(--surface-1);background:var(--warn);border-radius:50%;flex-shrink:0;font-size:10px;font-weight:600;line-height:18px}.comment-number.resolved{background:var(--text-3)}.comment-author{color:var(--text);font-size:12px;font-weight:500}.comment-date{color:var(--text-3);white-space:nowrap;margin-left:auto;font-size:10px}.comment-text{color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0 0;font-size:12px}.comment:not(.selected)>.comment-text{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.comment-bundles,.comment-reply-count{color:var(--text-3);margin:4px 0 0;font-size:10px}.comment-body{flex-direction:column;gap:8px;margin-top:8px;display:flex}.comment-replies{border-left:2px solid var(--border);flex-direction:column;gap:6px;margin:0;padding:0 0 0 10px;list-style:none;display:flex}.comment-reply-head{align-items:center;gap:6px;display:flex}.comment-reply-del{color:var(--text-3);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:13px;line-height:1}.comment-reply-del:hover{color:var(--danger)}
