:root{--ink:#15120f;--panel:#23201d;--panel-2:#2b2723;--panel-3:#35302b;--line:#3e3934;--text:#ece6dc;--muted:#a0978b;--dim:#6f675d;--accent:#e39235;--accent-soft:#e3923529;--ok:#62c08e;--danger:#ea5f52;--mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--sans);color:var(--text)}*{box-sizing:border-box}html,body,#root{background:var(--ink);height:100%;margin:0}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app{font-size:13px;position:fixed;inset:0;overflow:hidden}.stage{position:absolute;inset:0}.stage canvas{display:block}.app button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:6px 10px}.app button:hover:not(:disabled){border-color:var(--accent)}.app button:disabled{opacity:.4;cursor:default}.app button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.app button.primary{background:var(--accent);border-color:var(--accent);color:#1a1207;font-weight:600}.app button.danger{color:var(--danger)}.app button.wide{width:100%;margin-top:8px}.app button.x{color:var(--danger);padding:2px 7px}.app input,.app select,.app textarea{font:inherit;color:var(--text);background:var(--ink);border:1px solid var(--line);border-radius:8px;padding:5px 8px}.app input[type=checkbox]{accent-color:var(--accent)}.app input[type=color]{width:56px;height:28px;padding:0}.app select{max-width:190px}.topbar{pointer-events:none;z-index:5;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex;position:absolute;top:12px;left:12px;right:12px}.topbar>*{pointer-events:auto}.pill{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#23201deb;border-radius:12px;align-items:center;gap:2px;padding:4px;display:flex;box-shadow:0 6px 20px #00000059}.pill button{background:0 0;border:0;padding:6px 10px;font-size:12px}.pill button.on{background:var(--accent-soft);color:var(--accent)}.pill .sep{background:var(--line);align-self:stretch;width:1px;margin:3px 4px}.pill label{color:var(--muted);font-family:var(--mono);align-items:center;gap:6px;padding:0 6px;font-size:11px;display:flex}.pill select{background:0 0;border:0;padding:4px 2px;font-size:12px}.tbGroup{flex-wrap:wrap;gap:8px;display:flex}.projName{align-items:center;gap:8px;padding:0 6px;display:flex}.projName input{background:0 0;border:0;width:210px;padding:5px 4px;font-weight:500}.projName small{font-family:var(--mono);color:var(--dim);font-size:10px}.card{background:var(--panel);border:1px solid var(--line);z-index:4;border-radius:14px;flex-direction:column;width:348px;display:flex;position:absolute;top:64px;bottom:12px;left:12px;overflow:hidden;box-shadow:0 10px 30px #0006}.card.closed{bottom:auto}.cardHead{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;display:flex}.cardHead h1{font:600 12px/1.3 var(--mono);letter-spacing:.04em;text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.cardHead .btns{gap:4px;display:flex}.cardHead .btns button{padding:3px 8px;font-size:12px}.cardScroll{padding-bottom:14px;overflow-y:auto}.diagram{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;margin:12px 14px}.diagram svg{width:100%;height:210px;display:block}.diagram .dimText{font:500 11px var(--mono);fill:var(--muted)}.diagram .dimLine{stroke:var(--dim);stroke-width:1px}.diagram .body{fill:var(--panel-3);stroke:var(--text);stroke-width:1.5px}.diagram .part{fill:none;stroke:var(--muted);stroke-width:1px}.group{border-top:1px solid var(--line)}.group>summary{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:8px;padding:11px 14px;list-style:none;display:flex}.group>summary::-webkit-details-marker{display:none}.group>summary .gl{font:600 11px var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text);align-items:center;gap:8px;display:flex}.group>summary .gl:before{content:"›";color:var(--accent);font-size:14px;line-height:1;transition:transform .15s;display:inline-block}.group[open]>summary .gl:before{transform:rotate(90deg)}.group>summary .gs{font:400 11px var(--mono);color:var(--dim);text-overflow:ellipsis;white-space:nowrap;max-width:55%;overflow:hidden}.group>.gb{padding:2px 14px 12px}.group .gb section{border:0;padding:4px 0 8px}.group .gb section h2{font:600 11px var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:6px 0 8px}.group .gb section h2 small{text-transform:none;letter-spacing:0;color:var(--dim);font-weight:400}.field{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.field>span{font:500 11px var(--mono);letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}.fieldInput{align-items:center;gap:4px;display:flex}.fieldInput input{text-align:right;width:92px;font-family:var(--mono)}.fieldInput em{font:normal 11px var(--mono);color:var(--dim);width:30px}.txt{width:170px}.txt.full{width:100%;max-width:none}textarea.txt{resize:vertical;font-family:var(--sans)}.check{color:var(--text);align-items:center;gap:6px;margin-top:6px;font-size:12px;display:flex}.lbl{font:500 11px var(--mono);text-transform:uppercase;color:var(--muted);margin:8px 0 5px;display:block}.hint{color:var(--muted);margin:6px 0 0;font-size:12px;line-height:1.45}.warnText{color:var(--danger);margin:4px 0;font-size:12px}.ok{color:var(--ok);margin:0;font-size:12px}.shelfBox{border-left:2px solid var(--line);margin:6px 0 8px;padding-left:10px}.readout{background:var(--ink);border:1px solid var(--line);font-family:var(--mono);border-radius:8px;gap:3px;margin:8px 0;padding:8px 10px;font-size:12px;display:grid}.readout div{color:var(--muted);justify-content:space-between;display:flex}.readout b{color:var(--text)}.unit{color:var(--dim);font-style:normal;font:11px var(--mono);width:38px}.fixes{flex-wrap:wrap;gap:5px;margin-top:6px;display:flex}.fixes button{padding:3px 8px;font-size:12px}.app button.fix{border-color:var(--ok);color:var(--ok)}.conflict{border:1px solid var(--line);border-left:3px solid var(--danger);background:var(--panel-2);border-radius:8px;margin-bottom:7px;padding:8px 10px;font-size:12px}.badge{background:var(--danger);color:#fff;font:600 10px var(--mono);text-align:center;border-radius:9px;min-width:17px;height:17px;padding:0 4px;line-height:17px;display:inline-block}.swatches{flex-wrap:wrap;gap:5px;display:flex}.swatch{width:26px;height:26px;border:2px solid var(--line)!important;border-radius:7px!important;padding:0!important}.swatch.on{box-shadow:0 0 0 2px var(--accent-soft);border-color:var(--accent)!important}.matRow{align-items:center;gap:8px;margin-bottom:5px;font-size:12px;display:flex}.matRow span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.price{text-align:right;width:66px;font-family:var(--mono);padding:3px 6px!important}.patPreview{border:1px solid var(--line);border-radius:10px;width:100%;height:90px;margin:8px 0}.secRow{border:1px solid var(--line);background:var(--panel-2);border-radius:10px;margin-bottom:8px;padding:9px 10px}.secHead{align-items:center;gap:8px;margin-bottom:7px;display:flex}.secHead b{font:600 11px var(--mono);color:var(--accent);letter-spacing:.04em}.secHead .grow{flex:1}.secGrid{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.secGrid .fieldInput input{width:64px}.chip{font-size:11px!important;font-family:var(--mono)!important;border-radius:999px!important;padding:3px 9px!important}.dock{pointer-events:none;z-index:4;justify-content:space-between;align-items:flex-end;gap:12px;display:flex;position:absolute;bottom:12px;left:372px;right:12px}.dock>*{pointer-events:auto}.palette{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#23201df2;border-radius:16px;max-width:100%;padding:10px 12px 12px;box-shadow:0 10px 30px #00000073}.palTabs{align-items:center;gap:4px;margin-bottom:8px;display:flex}.palTabs button{font:600 11px var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:0 0;border:0;padding:5px 10px}.palTabs button.on{background:var(--accent-soft);color:var(--accent)}.palTabs .sp{flex:1}.palRow{align-items:center;gap:6px;margin-top:6px;display:flex}.palRow>i{font:600 9px var(--mono);color:var(--dim);writing-mode:vertical-rl;letter-spacing:.1em;text-align:center;width:12px;transform:rotate(180deg)}.thumbs{gap:5px;min-width:320px;max-width:calc(100vw - 880px);padding-bottom:2px;display:flex;overflow-x:auto}.thumb{flex:none;width:48px;height:62px;background:var(--panel-2)!important;border-radius:9px!important;padding:3px!important}.thumb svg{width:100%;height:100%;display:block}.thumb.on{border-color:var(--accent)!important;background:var(--accent-soft)!important}.actions{gap:8px;display:flex}.actions button{background:#23201df2;border-radius:12px;align-items:center;gap:7px;padding:10px 13px;font-weight:500;display:flex;box-shadow:0 6px 18px #0006}.actions button svg{width:15px;height:15px;stroke:var(--accent);fill:none;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.plan{border:1px solid var(--line);z-index:3;background:#23201df2;border-radius:14px;width:330px;padding:8px 10px 10px;position:absolute;top:64px;right:12px;box-shadow:0 10px 30px #0006}.planHead{font:600 11px var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.planHead button{padding:2px 8px;font-size:11px}.plan.min{width:auto}.sheetCanvas{border:1px solid var(--line);border-radius:8px;width:100%;display:block}.stats{font:12px var(--mono);color:var(--muted);margin-bottom:6px}.stats b{color:var(--text)}.warn{color:var(--danger);background:#ea5f5226;border-radius:8px;margin-bottom:6px;padding:6px 8px;font-size:12px}.nav{font:11px var(--mono);color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;display:flex}.nav .check{margin:0 0 0 auto}.spin{animation:1s linear infinite r;display:inline-block}@keyframes r{to{transform:rotate(360deg)}}.dimLabel{color:var(--text);border:1px solid var(--line);font:11px/1.4 var(--mono);white-space:nowrap;background:#15120feb;border-radius:8px;flex-direction:column;gap:1px;padding:6px 10px;display:flex}.dimLabel b{color:var(--accent);font-weight:600}.dimLabel span{color:var(--muted)}.wtag{color:#1b1712;font:600 10px var(--mono);pointer-events:none;white-space:nowrap;background:#f3efe8;border:1px solid #00000040;border-radius:4px;padding:1px 5px}@media (width<=1100px){.thumbs{max-width:calc(100vw - 420px)}.actions button span{display:none}}@media (width<=900px){.card{width:calc(100% - 24px);height:42%;top:auto;bottom:12px}.dock{flex-direction:column;align-items:stretch;bottom:calc(42% + 22px);left:12px}.thumbs{max-width:none}.plan{display:none}}@media (prefers-reduced-motion:reduce){.spin{animation:none}.group>summary .gl:before{transition:none}}.issue{border-left-color:var(--accent)}.issue.error{border-left-color:var(--danger)}.pill .warnPill{color:var(--accent);font:600 11px var(--mono);background:var(--accent-soft);border-radius:8px;padding:4px 9px}.pill .warnPill.err{color:var(--danger);background:#ea5f5226}[role=alert] button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:8px 12px}[role=alert] button:hover{border-color:var(--accent)}.palTip{z-index:50;pointer-events:none;background:var(--panel-2);border:1px solid var(--accent);width:260px;color:var(--text);border-radius:8px;gap:4px;padding:10px 12px;font-size:12px;line-height:1.4;display:grid;position:fixed;transform:translate(-50%,-100%);box-shadow:0 8px 24px #0009}.palTip b{font-size:13px}.palTip em{color:var(--accent);font-size:11px;font-style:normal}.palTip span{color:var(--text)}.palTip small{color:var(--muted,#a0978b);font-size:11px}.openingCard{z-index:20;background:var(--panel);border:1px solid var(--accent);border-radius:10px;gap:8px;width:230px;padding:12px;display:grid;position:fixed;top:64px;left:380px;box-shadow:0 8px 24px #0009}.openingCard header{align-items:center;gap:8px;font-size:13px;display:flex}.openingCard .hint{color:var(--muted);margin:0;font-size:11px;line-height:1.4}.loginPage{background:var(--ink);place-items:center;min-height:100vh;padding:16px;display:grid}.loginCard{background:var(--panel);border:1px solid var(--line);width:min(360px,100%);color:var(--text);border-radius:12px;gap:14px;padding:28px;display:grid}.loginCard h1{margin:0;font-size:20px}.loginCard p{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.loginCard label{color:var(--muted);gap:6px;font-size:12px;display:grid}.loginCard input{font:inherit;color:var(--text);background:var(--ink);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:14px}.loginCard input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.loginCard .primary{font:inherit;color:#1a1207;background:var(--accent);cursor:pointer;border:0;border-radius:8px;padding:10px 12px;font-weight:600}.loginCard .primary:disabled{opacity:.5;cursor:default}.loginCard .loginErr{color:var(--danger)}.loginCard code{color:var(--accent);font-family:IBM Plex Mono,monospace}.report{z-index:50;color:#1b1f24;background:#d9dce1;position:fixed;inset:0;overflow:auto}.reportBar{z-index:2;background:#fff;border-bottom:1px solid #ccc;align-items:center;gap:8px;padding:10px 16px;display:flex;position:sticky;top:0}.reportBar .sp{flex:1}.reportBar button{color:#1b1f24;background:#f3f4f6;border-color:#cfd3d8}.reportBar button.primary{color:#fff;background:#2f6fe4;border-color:#2f6fe4}.paper{background:#fff;max-width:1000px;margin:16px auto;padding:28px 34px;font-size:13px;box-shadow:0 2px 18px #0000002e}.paper h1{margin:0 0 6px;font-size:22px}.paper h2{border-bottom:2px solid #222;margin:26px 0 8px;padding-bottom:4px;font-size:16px}.paper h2 small{color:#555;font-size:12px;font-weight:400}.rhead{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.shot{border:1px solid #ccc;border-radius:6px;width:320px;max-width:40%}.cabGrid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;display:grid}.cabGrid figure{break-inside:avoid;border:1px solid #ddd;border-radius:6px;margin:0;padding:8px}.cabGrid figcaption{margin-top:4px;font-size:11px;line-height:1.45}.elev{background:#fafafa;width:100%;height:190px}.cutTable{border-collapse:collapse;break-inside:auto;width:100%;margin-bottom:14px}.cutTable caption{text-align:left;padding:6px 0;font-size:14px;font-weight:700}.cutTable th,.cutTable td{text-align:left;border:1px solid #bbb;padding:3px 6px}.cutTable th{background:#eceef1;font-size:12px}.cutTable td.n{text-align:right;font-variant-numeric:tabular-nums}.cutTable tr{break-inside:avoid}.cutTable.small{width:auto;min-width:320px}.cutTable tfoot td{text-align:right;background:#f7f7f7;font-weight:600}.cutTable tfoot .grand td{background:#e8f0fe;font-size:15px}.picto{display:block}.sheetList{grid-template-columns:1fr;gap:14px;display:grid}.sheetFig{break-inside:avoid;margin:0}.sheetFig figcaption{margin-bottom:3px;font-weight:600}.sheetImg{border:1px solid #999;width:100%;display:block}.warnBox{color:#b42323;background:#fdecec;border-radius:6px;padding:8px}.note{color:#555;font-size:12px}@media print{.app,.noprint{display:none!important}html,body,#root{background:#fff;height:auto}.report{background:#fff;position:static;overflow:visible}.paper{box-shadow:none;max-width:none;margin:0;padding:0}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.plan2d{background:#fff;border:1px solid #ccc;border-radius:6px;width:100%;max-height:520px}.wallElev{background:#fff;border:1px solid #ccc;border-radius:6px;width:100%}.wallFig{break-inside:avoid;margin:0 0 12px}.wallFig figcaption{margin-bottom:3px;font-weight:700}.metaLine{margin:0 0 4px}.notesBox{white-space:pre-wrap;background:#f6f6f0;border:1px solid #ddd;border-radius:6px;padding:8px 10px}.unit{color:var(--muted);width:38px;font-size:11px;font-style:normal}.noteCell{color:#444;max-width:190px;font-size:11px}.anaGrid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:12px;display:grid}.anaGrid div{border:1px solid #ddd;border-radius:8px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.anaGrid span{color:#555;font-size:12px}.anaGrid b{font-size:18px}.anaGrid em{color:#777;font-size:11px;font-style:normal}.bar{vertical-align:middle;background:#2f6fe4;border-radius:4px;max-width:120px;height:8px;margin-right:6px;display:inline-block}.reportBar button{font:inherit;cursor:pointer;border:1px solid #cfd3d8;border-radius:8px;padding:7px 12px}.reportBar button:disabled{opacity:.45;cursor:default}.repNav{flex-wrap:wrap;gap:4px;display:flex}.repNav button{color:#444!important;background:0 0!important;border-color:#0000!important}.repNav button.on{color:#fff!important;background:#1b1f24!important}.dot{vertical-align:middle;border:1px solid #00000059;border-radius:4px;flex:none;width:16px;height:16px;display:inline-block}.report{font-family:IBM Plex Sans,system-ui,sans-serif}.fin{color:#777;font-size:10px}.cutSteps{columns:2;column-gap:24px;margin:8px 0 4px;padding-left:0;font-size:11px;list-style:none}.cutSteps li{break-inside:avoid;padding:1px 0}.cutSteps li.trim{color:#b42323}.cutSteps li.cut b{color:#1e5ac8}
