@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2)format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2)format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2)format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2)format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2)format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2)format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2)format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2)format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2)format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2)format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2)format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2)format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2)format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2)format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2)format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2)format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2)format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2)format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2)format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2)format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.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{--accent:#e23228;--accent-hover:#c92c23;--accent-text:#bd2118;--accent-icon:#f4493f;--accent-soft:#fdecea;--bg:#fff;--bg-app:#fafafa;--bg-muted:#f5f5f6;--bg-active:#f0f0f0;--border:#e6e6e6;--border-input:#d3d3d3;--text:#1a1a1a;--text-muted:#535353;--text-label:#404040;--icon:#a3a3a3;--sidebar-w:264px}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{color:var(--text);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif}.layout{height:100%;display:flex}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);border-right:1px solid var(--border);flex-direction:column;gap:8px;padding:16px 12px;display:flex}.main{flex:1;min-width:0;position:relative}.brand{align-items:center;gap:10px;padding:6px 8px 12px;display:flex}.brand-logo{background:var(--accent);color:#fff;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;font-size:13px;font-weight:700;display:flex}.brand-title{font-size:14px;font-weight:700}.brand-sub{color:var(--text-muted);font-size:11px}.nav{flex-direction:column;gap:2px;display:flex}.nav-section{color:var(--text-muted);padding:8px 10px 4px;font-size:12px}.nav-link{color:var(--text);border-radius:8px;justify-content:space-between;align-items:center;padding:10px 12px;font-size:14px;text-decoration:none;display:flex}.nav-link:hover{background:var(--bg-muted)}.nav-link.router-link-active{background:var(--bg-active);font-weight:600}.badge{background:var(--accent-soft);color:var(--accent);border-radius:10px;padding:1px 8px;font-size:12px;font-weight:600}.user-card{border:1px solid var(--border);border-radius:12px;align-items:center;gap:10px;margin-top:auto;padding:10px;display:flex}.avatar{color:#4b4b4f;background:#d9d9dd;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:13px;font-weight:600;display:flex}.user-meta{flex:1;min-width:0}.user-name{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.user-role{color:var(--text-muted);font-size:12px}.logout{cursor:pointer;color:var(--text-muted);background:0 0;border:none;font-size:16px}.logout:hover{color:var(--accent)}.mapview{position:absolute;inset:0}.map{width:100%;height:100%}.topbar{z-index:5;align-items:center;gap:10px;display:flex;position:absolute;top:12px;left:12px;right:12px}.spacer{flex:1}.chip,.toggle{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;padding:8px 12px;font-size:13px;box-shadow:0 1px 2px #0000000d}.toggle{align-items:center;gap:8px;display:inline-flex}.btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:#fff;border-radius:8px;padding:9px 14px;font-size:14px}.btn:hover{background:var(--bg-muted)}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 1px 2px #00000014}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.6;cursor:default}.login-page{background:var(--bg-app);flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100%;padding:24px;display:flex}.login-card{border:1px solid var(--border);background:#fff;border-radius:24px;flex-direction:column;gap:24px;width:528px;max-width:100%;padding:64px;display:flex;box-shadow:0 12px 32px #0000000f}.login-header{text-align:center;flex-direction:column;gap:8px;display:flex}.login-title{color:var(--text);margin:0;font-size:24px;font-weight:600;line-height:32px}.login-sub{color:var(--text-muted);margin:0;font-size:16px;line-height:24px}.login-fields{flex-direction:column;gap:20px;display:flex}.field2{position:relative}.field2>label{z-index:1;color:var(--text-label);background:#fff;padding:0 6px;font-size:12px;font-weight:500;line-height:18px;position:absolute;top:-8px;left:12px}.input-box{border:1px solid var(--border-input);background:#fff;border-radius:12px;align-items:center;gap:8px;height:48px;padding:0 14px;display:flex}.input-box:focus-within{border-color:var(--accent)}.input-box>svg{color:var(--icon);flex:none}.input-box input{min-width:0;font:inherit;color:var(--text);background:0 0;border:none;outline:none;flex:1;font-size:16px;line-height:24px}.toggle-eye{cursor:pointer;color:var(--icon);background:0 0;border:none;padding:0;display:inline-flex}.toggle-eye:hover{color:var(--text-muted)}.login-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.remember{color:var(--text-label);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:14px;font-weight:500;line-height:20px;display:inline-flex}.remember input{opacity:0;width:0;height:0;position:absolute}.checkbox-box{border:1.5px solid var(--border-input);background:#fff;border-radius:4px;flex:none;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.checkbox-box>svg{color:#fff;opacity:0}.remember input:checked+.checkbox-box{background:var(--accent);border-color:var(--accent)}.remember input:checked+.checkbox-box>svg{opacity:1}.remember input:focus-visible+.checkbox-box{outline:2px solid var(--accent);outline-offset:2px}.link-red{color:var(--accent-text);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;font-weight:600;line-height:20px}.login-actions{flex-direction:column;gap:16px;display:flex}.btn-block{cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:6px;width:100%;height:48px;font-size:16px;font-weight:600;line-height:24px;display:inline-flex}.btn-red{background:var(--accent);color:#fff;border:1px solid var(--accent)}.btn-red:hover{background:var(--accent-hover)}.btn-red:disabled{opacity:.6;cursor:default}.btn-outline{color:var(--text-label);border:1px solid var(--border-input);background:#fff}.btn-outline:hover{background:var(--bg-app)}.login-error{color:var(--accent);text-align:center;margin:0;font-size:13px}.login-hint{color:var(--text-muted);text-align:center;margin:0;font-size:12px}.login-logos{opacity:.9;width:502px;max-width:100%;height:auto}@media (width<=560px){.login-card{border-radius:16px;padding:32px}}.layers{position:relative}.layers-trigger{color:var(--text-label);align-items:center;gap:6px;font-weight:600;display:inline-flex}.layers-trigger.active{border-color:var(--accent)}.layers-dropdown{border:1px solid var(--border);z-index:20;background:#fff;border-radius:12px;width:360px;max-height:72vh;padding:8px;position:absolute;top:calc(100% + 8px);left:0;overflow:auto;box-shadow:0 12px 32px #0000001f}.layers-search{border:1px solid var(--border-input);height:36px;color:var(--icon);border-radius:12px;align-items:center;gap:8px;margin-bottom:8px;padding:0 12px;display:flex}.layers-search input{min-width:0;font:inherit;color:var(--text);border:none;outline:none;flex:1;font-size:14px}.layers-tree{flex-direction:column;gap:2px;display:flex}.layer-row{border-radius:12px;align-items:center;gap:8px;height:36px;padding-right:8px;display:flex}.layer-row:hover{background:var(--bg-muted)}.caret{cursor:pointer;color:var(--text-muted);background:0 0;border:none;flex:0 0 14px;align-items:center;width:14px;padding:0;display:inline-flex}.caret svg{transition:transform .12s}.caret.collapsed svg{transform:rotate(-90deg)}.caret-spacer{flex:0 0 14px;width:14px}.lcheckbox{cursor:pointer;border:1.5px solid var(--border-input);color:#fff;background:#fff;border-radius:4px;flex:none;justify-content:center;align-items:center;width:16px;height:16px;padding:0;display:inline-flex}.lcheckbox.on,.lcheckbox.indet{background:var(--accent);border-color:var(--accent)}.lcheckbox .dash{background:#fff;border-radius:1px;width:8px;height:2px}.layer-label{min-width:0;color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14px;font-weight:500;overflow:hidden}.layer-dot{border-radius:50%;flex:none;width:8px;height:8px}.layer-handle{color:#c4c4c8;cursor:grab;flex:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:default}.btn:disabled:hover{background:#fff}.modal-overlay{z-index:30;background:#00000040;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.modal{background:#fff;border-radius:16px;flex-direction:column;gap:16px;width:560px;max-width:100%;padding:28px;display:flex;box-shadow:0 20px 50px #0000002e}.modal-title{margin:0;font-size:20px;font-weight:600}.modal-sub{color:var(--text-muted);margin:-8px 0 0;font-size:14px}.modal-name{color:var(--text-muted);flex-direction:column;gap:6px;font-size:13px;display:flex}.modal-name input{border:1px solid var(--border-input);font:inherit;color:var(--text);border-radius:8px;padding:9px 12px;font-size:14px}.modal-name input:focus{border-color:var(--accent-coral);outline:none}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:8px;padding-bottom:12px;display:flex}.tab{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:14px;display:inline-flex}.tab:hover{background:var(--bg-muted)}.tab.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.tab-check{color:#16a34a;font-weight:700}.dropzone{border:1.5px dashed var(--border-input);text-align:center;color:var(--text-muted);cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:28px;display:flex}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:var(--accent-soft)}.dropzone b{color:var(--accent)}.dz-hint{color:var(--text-muted);font-size:12px}.file-list{flex-direction:column;gap:8px;display:flex}.file-row{border:1px solid var(--border);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-size:13px;display:flex}.file-slot{color:var(--text-muted);flex:0 0 150px}.file-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:500;overflow:hidden}.file-size{color:var(--text-muted)}.file-ok{color:#16a34a;font-weight:600}.file-del{cursor:pointer;color:var(--text-muted);background:0 0;border:none;font-size:14px}.file-del:hover{color:var(--accent)}.modal-error{color:var(--accent);margin:0;font-size:13px}.modal-actions{justify-content:space-between;gap:12px;display:flex}.project-panel{z-index:15;border-left:1px solid var(--border);background:#fff;flex-direction:column;gap:16px;width:380px;padding:20px;display:flex;position:absolute;top:0;bottom:0;right:0;overflow:auto;box-shadow:-8px 0 24px #0000000f}.pp-header{justify-content:space-between;align-items:center;display:flex}.pp-title{min-width:0}.pp-header h3{word-break:break-word;margin:0;font-size:18px}.pp-subtitle{color:var(--text-muted);font-size:12px}.pp-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;font-size:16px}.pp-close:hover{color:var(--accent)}.pp-steps{flex-wrap:wrap;gap:6px;display:flex}.pp-step{color:var(--text-muted);background:var(--bg-muted);border-radius:8px;padding:4px 8px;font-size:12px}.pp-step.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.pp-loaded{color:#16a34a;font-weight:600}.pp-section{flex-direction:column;gap:4px;display:flex}.pp-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:8px 0;font-size:14px;display:flex}.pp-row span{color:var(--text-muted)}.pp-next-title{color:var(--text-muted);margin-bottom:4px;font-size:13px}.pp-next p{margin:0;font-size:14px}.pp-buttons{flex-direction:column;gap:8px;display:flex}.pp-hint{color:var(--text-muted);text-align:center;margin:0;font-size:12px}.pp-block-title{margin-bottom:2px;font-size:14px;font-weight:600}.pp-help{color:var(--text-muted);margin:0 0 8px;font-size:12px}.pp-form{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}.pp-field{color:var(--text-muted);justify-content:space-between;align-items:center;gap:10px;font-size:13px;display:flex}.pp-input{align-items:center;gap:6px;display:inline-flex}.pp-input input{border:1px solid var(--border-input);width:96px;font:inherit;color:var(--text);text-align:right;border-radius:8px;padding:6px 8px;font-size:14px}.pp-input input:focus{border-color:var(--accent-coral);outline:none}.pp-input i{color:var(--text-muted);min-width:46px;font-size:12px;font-style:normal}.calc-overall{border-radius:10px;margin-bottom:10px;padding:10px 12px;font-size:14px;font-weight:600}.calc-card{border:1px solid var(--border);border-radius:12px;margin-bottom:8px;padding:10px 12px}.cc-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-size:14px;font-weight:600;display:flex}.cc-badge{white-space:nowrap;border-radius:8px;padding:2px 8px;font-size:12px;font-weight:600}.calc-bar{background:var(--bg-muted);border-radius:6px;height:16px;margin-bottom:6px;display:flex;position:relative;overflow:hidden}.calc-seg{height:100%}.calc-seg.ex{background:#c4c4c8}.calc-seg.req{background:#3b82f6}.calc-seg.reserve{background:#16a34a}.calc-seg.deficit{background:#e23228}.calc-cap{border-left:2px dashed #1a1a1a;position:absolute;top:0;bottom:0}.calc-meta{color:var(--text-muted);font-size:12px}.calc-net{color:var(--text-muted);margin-top:2px;font-size:12px}.calc-overall.v-ok,.cc-badge.v-ok{color:#1a7f37;background:#eaf7ee}.calc-overall.v-warn,.cc-badge.v-warn{color:#b8740d;background:#fdf3e3}.calc-overall.v-bad,.cc-badge.v-bad{color:#bd2118;background:#fdecea}.calc-overall.v-unknown,.cc-badge.v-unknown{background:var(--bg-muted);color:var(--text-muted)}.pp-variants{flex-direction:column;display:flex}.variant-card{border:1px solid var(--border);cursor:pointer;border-radius:12px;margin-bottom:8px;padding:10px 12px;transition:border-color .12s,box-shadow .12s}.variant-card:hover{border-color:var(--text-muted)}.variant-card.selected{border-color:var(--accent-coral);box-shadow:0 0 0 1px var(--accent-coral) inset}.vc-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.vc-pick{align-items:center;gap:8px;font-size:14px;display:inline-flex}.vc-pick input{accent-color:var(--accent-coral)}.vc-desc{color:var(--text-muted);margin:4px 0 8px;font-size:12px}.vc-conns{flex-direction:column;gap:5px;display:flex}.vc-conn{align-items:center;gap:8px;font-size:13px;display:flex}.vc-dot{border-radius:50%;flex:none;width:9px;height:9px}.vc-label{min-width:110px}.vc-net{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.vc-len{font-variant-numeric:tabular-nums;white-space:nowrap}.vc-vdot{border-radius:50%;flex:none;width:9px;height:9px}.vc-vdot.v-ok{background:#1a7f37}.vc-vdot.v-warn{background:#b8740d}.vc-vdot.v-bad{background:#bd2118}.vc-vdot.v-unknown{background:var(--text-muted)}.vc-total{color:var(--text-muted);margin-top:8px;font-size:13px}.overlap-popup{z-index:16;border:1px solid var(--border);background:#fff;border-radius:12px;min-width:200px;max-width:280px;padding:8px;position:absolute;transform:translate(-50%,calc(-100% - 12px));box-shadow:0 12px 32px #0000002e}.overlap-title{color:var(--text-muted);padding:4px 8px;font-size:12px}.overlap-item{text-align:left;cursor:pointer;width:100%;color:var(--text);background:0 0;border:none;border-radius:8px;padding:8px;font-size:14px;display:block}.overlap-item:hover{background:var(--bg-muted)}.stub{padding:40px}.stub h2{margin:0 0 8px}.stub p{color:var(--text-muted)}
