@font-face{font-family:Overpass;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/overpass-cyrillic-ext-400-normal-AKUz2ZI5.woff2)format("woff2"),url(/assets/overpass-cyrillic-ext-400-normal-C2ZjKngx.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:Overpass;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/overpass-cyrillic-400-normal-tXDxWGRy.woff2)format("woff2"),url(/assets/overpass-cyrillic-400-normal-CZsFKZCk.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Overpass;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/overpass-vietnamese-400-normal-BKRCEiXy.woff2)format("woff2"),url(/assets/overpass-vietnamese-400-normal-CCWAWVG7.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:Overpass;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/overpass-latin-ext-400-normal-BIkXRwl6.woff2)format("woff2"),url(/assets/overpass-latin-ext-400-normal-DUq_h-_z.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:Overpass;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/overpass-latin-400-normal-BpeLJ0bs.woff2)format("woff2"),url(/assets/overpass-latin-400-normal-c_C8zulu.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:Overpass;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/overpass-cyrillic-ext-600-normal-CW4Fknsm.woff2)format("woff2"),url(/assets/overpass-cyrillic-ext-600-normal-Zx-mtRSD.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:Overpass;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/overpass-cyrillic-600-normal-B-hc8bdn.woff2)format("woff2"),url(/assets/overpass-cyrillic-600-normal-CXB2Mrig.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Overpass;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/overpass-vietnamese-600-normal-CjS-4vQf.woff2)format("woff2"),url(/assets/overpass-vietnamese-600-normal-DlMMlPfM.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:Overpass;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/overpass-latin-ext-600-normal-Cyj4Nio0.woff2)format("woff2"),url(/assets/overpass-latin-ext-600-normal-DQKKMGzp.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:Overpass;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/overpass-latin-600-normal-25RhTNCi.woff2)format("woff2"),url(/assets/overpass-latin-600-normal-DhYQrzaY.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:Overpass;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/overpass-cyrillic-ext-700-normal-BaWk5GG2.woff2)format("woff2"),url(/assets/overpass-cyrillic-ext-700-normal-BKlBpuxy.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:Overpass;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/overpass-cyrillic-700-normal-BjZUDJrT.woff2)format("woff2"),url(/assets/overpass-cyrillic-700-normal-HIXpUAjV.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Overpass;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/overpass-vietnamese-700-normal-D-X6mUZH.woff2)format("woff2"),url(/assets/overpass-vietnamese-700-normal-Cg81EjMQ.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:Overpass;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/overpass-latin-ext-700-normal-CF2GN6rW.woff2)format("woff2"),url(/assets/overpass-latin-ext-700-normal-cssK-iBQ.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:Overpass;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/overpass-latin-700-normal-CQX2QTgM.woff2)format("woff2"),url(/assets/overpass-latin-700-normal-BjBIVHw1.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:Overpass Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/overpass-mono-cyrillic-ext-500-normal-DGTQowpm.woff2)format("woff2"),url(/assets/overpass-mono-cyrillic-ext-500-normal-DXHhqYQS.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:Overpass Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/overpass-mono-cyrillic-500-normal-tZOaLeux.woff2)format("woff2"),url(/assets/overpass-mono-cyrillic-500-normal-DF35YEs9.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Overpass Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/overpass-mono-vietnamese-500-normal-Cd0aqzaH.woff2)format("woff2"),url(/assets/overpass-mono-vietnamese-500-normal-RNTKqux2.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:Overpass Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/overpass-mono-latin-ext-500-normal-B6Yv-hCw.woff2)format("woff2"),url(/assets/overpass-mono-latin-ext-500-normal-BeoCr26i.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:Overpass Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/overpass-mono-latin-500-normal-DkKmcrh_.woff2)format("woff2"),url(/assets/overpass-mono-latin-500-normal-BmPyqWzT.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{--ink:#15212c;--ink-soft:#445362;--muted:#6c7a88;--line:#dbe2e8;--line-strong:#c3ccd5;--surface:#fff;--surface-alt:#f5f7fa;--canvas:#e8edf2;--accent:#4a8563;--accent-strong:#2f5e44;--accent-soft:#e4eee8;--warning:#9a5b00;--warning-soft:#fff4de;--danger:#b42318;--danger-soft:#fdecea;--success:#1f7a4d;--offset:#e0782b;--shadow:0 1px 2px #1021300f, 0 4px 16px #1021300f;color:var(--ink);background:var(--surface-alt);-webkit-font-smoothing:antialiased;font-family:Overpass,Segoe UI,system-ui,sans-serif;font-size:14px;line-height:1.45}*{box-sizing:border-box}body{margin:0}button,input{font:inherit;color:inherit}.app{grid-template-columns:360px minmax(0,1fr);grid-template-areas:"side main";height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--line);grid-area:side;overflow-y:auto}.config{padding:8px 20px 24px}.section{border-bottom:1px solid var(--line);padding:16px 0 6px}.section:last-child{border-bottom:0}.section__title{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);align-items:center;margin:0 0 12px;font-size:13px;font-weight:700;display:flex}.field{margin-bottom:14px}.field__head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.field__head label,.field__label{font-weight:600}.field__hint{color:var(--muted);font-size:12px}.number-input{position:relative}.number-input input{border:1px solid var(--line-strong);background:var(--surface);font-variant-numeric:tabular-nums;width:100%;height:38px;padding:0 44px 0 12px;transition:border-color .15s,box-shadow .15s}.number-input input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.number-input__unit{color:var(--muted);pointer-events:none;font-size:12px;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.slider{width:100%;accent-color:var(--accent);margin:8px 0 0}.field--invalid .number-input input{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}.field--invalid .segmented{outline:1px solid var(--danger)}.field-errors{color:var(--danger);margin:6px 0 0;padding:0;font-size:12.5px;list-style:none}.field-errors li{gap:6px;display:flex}.field-errors li:before{content:"!";background:var(--danger);color:#fff;flex:none;place-items:center;width:15px;height:15px;margin-top:1px;font-size:10px;font-weight:700;display:inline-grid}.segmented{gap:4px;padding:4px;display:flex}.segmented__option{cursor:pointer;min-height:34px;color:var(--ink-soft);background:0 0;border:1px solid #0000;flex-direction:column;flex:1;align-items:center;gap:1px;padding:6px;font-weight:600;transition:background .15s,color .15s,border-color .15s;display:flex}.segmented__option small{color:var(--muted);font-size:11px;font-weight:500}.segmented__option:hover{color:var(--ink)}.segmented__option[aria-checked=true]{background:var(--accent-soft);color:var(--accent-strong);border-color:#c3d9cb}.segmented__option:focus-visible,.tool:focus-visible,.wall-picker__wall:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.wall-picker{width:100%;max-width:230px;margin:0 auto;font-size:10px;font-weight:600;display:block}.wall-picker__floor{fill:var(--surface-alt);stroke:var(--line);stroke-dasharray:3 3}.wall-picker__caption{fill:var(--muted);pointer-events:none;font-weight:500}.wall-picker__wall{cursor:pointer;outline:none}.wall-picker__hit{fill:#0000}.wall-picker__wall .wall-picker__shape{fill:#d3dae1;transition:fill .15s}.wall-picker__wall text{fill:var(--ink-soft)}.wall-picker__wall:hover .wall-picker__shape{fill:#b5c1cc}.wall-picker__wall.is-selected .wall-picker__shape{fill:var(--accent)}.wall-picker__wall.is-selected text{fill:var(--accent-strong)}.workspace{flex-direction:column;grid-area:main;gap:16px;min-height:0;padding:16px;display:flex;overflow-y:auto}.viewer{background:var(--surface);border:1px solid var(--line);min-height:460px;box-shadow:var(--shadow);flex-direction:column;flex:1 0 460px;display:flex;overflow:hidden}.toolbar{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:8px 16px;padding:8px 10px;display:flex}.toolbar__group{gap:4px;display:flex}.tool{height:32px;color:var(--ink-soft);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.tool:hover:not(:disabled){background:var(--surface-alt);color:var(--ink)}.tool[aria-pressed=true]{background:var(--accent-soft);color:var(--accent-strong);border-color:#c3d9cb}.tool:disabled{opacity:.45;cursor:default}.icon{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px}.viewer__canvas{background:var(--canvas);flex:1;min-height:0;position:relative}.viewer__empty{color:var(--muted);place-items:center;display:grid;position:absolute;inset:0}.legend{border:1px solid var(--line);color:var(--ink-soft);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffffe0;flex-wrap:wrap;gap:4px 14px;margin:0;padding:8px 12px;font-size:12px;list-style:none;display:flex;position:absolute;bottom:12px;left:12px}.legend li{align-items:center;gap:6px;display:flex}.legend__swatch{border:1px solid #15212c59;width:14px;height:14px}.legend__swatch--line{border:0;height:3px}.banner{box-shadow:var(--shadow);padding:8px 14px;font-size:13px;font-weight:600;position:absolute;top:12px;left:50%;transform:translate(-50%)}.banner--warning{background:var(--warning-soft);color:var(--warning);border:1px solid #f3d9a4}.banner--error{background:var(--danger-soft);color:var(--danger);border:1px solid #f6c5bf}.details{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.details__bom,.price{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}.details h3{margin:0;padding:14px 16px 10px;font-size:14px}.table-wrap{max-height:340px;overflow:auto}.bom{border-collapse:collapse;width:100%;font-size:13px}.bom th,.bom td{text-align:left;border-bottom:1px solid var(--line);padding:7px 16px}.bom thead th{z-index:1;background:var(--surface-alt);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11.5px;font-weight:600;position:sticky;top:0}.bom__group th{color:var(--ink-soft);background:#fafbfc;font-weight:700}.bom__group span{color:var(--muted);margin-left:8px;font-weight:500}.bom .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.mono{color:var(--accent-strong);white-space:nowrap;font-family:Overpass Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.price dl{margin:0;padding:0 16px}.price dl div{justify-content:space-between;gap:12px;padding:6px 0;display:flex}.price dt{color:var(--ink-soft)}.price dd{font-variant-numeric:tabular-nums;white-space:nowrap;margin:0}.price__subtotal{border-top:1px solid var(--line);margin-top:6px;font-weight:600}.price__total{background:var(--accent);color:#fff;margin:6px -16px 0;padding:12px 16px!important}.price__total dt{color:#fff;font-weight:600}.price__total dd{font-size:18px;font-weight:700}.price__note{color:var(--muted);margin:0;padding:10px 16px 14px;font-size:11.5px}.splash{height:100vh;color:var(--muted);place-items:center;font-size:15px;display:grid}.splash--error{color:var(--danger)}@media (width<=1100px){.app{grid-template:"side""main"/1fr;height:auto}.sidebar{border-right:0;border-bottom:1px solid var(--line)}.details{grid-template-columns:1fr}}
