:root,.print-sheet{--bg:#f5f6f8;--surface:#fff;--text:#1d2330;--muted:#667085;--border:#d8dce3;--accent:#1f6feb;--accent-text:#fff;--danger:#c4314b;--success:#1a7f4b;--warn-bg:#fff4d6;--warn-text:#7a5300;--error-bg:#fde8eb;--plan-bg:#fbfcfd;--grid-minor:#eef0f3;--grid-major:#dde1e7;--grid-axis:#b9c0cb;--cab-floor:#dbe7fb;--cab-floor-stroke:#5b7fbf;--cab-tall:#e4dcf7;--cab-tall-stroke:#7b62b8;--cab-wall:#d8f0e3;--cab-wall-stroke:#3f8f66;--cab-other:#ece6d9;--cab-other-stroke:#8d7a55;--cab-front:#1d2330;--guide:#e5484d;--wall-fill:#8a919c;--wall-stroke:#5d646f;--clash-fill:#fbd5da;--dim:#3b6fb6;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px}@media (prefers-color-scheme:dark){:root,.print-sheet{--lightningcss-light: ;--lightningcss-dark:initial}:root{--bg:#14171c;--surface:#1d2128;--text:#e6e8ec;--muted:#9aa3b2;--border:#343a45;--accent:#4c8dff;--danger:#ff6b81;--success:#4cc38a;--warn-bg:#3a2f12;--warn-text:#f0c860;--error-bg:#3d1d24;--plan-bg:#171a20;--grid-minor:#20242c;--grid-major:#2c313b;--grid-axis:#4a5260;--cab-floor:#22344f;--cab-floor-stroke:#6f97dc;--cab-tall:#33294d;--cab-tall-stroke:#a08ae0;--cab-wall:#1f3a2d;--cab-wall-stroke:#5cc08c;--cab-other:#3a3326;--cab-other-stroke:#c4ad7c;--cab-front:#e6e8ec;--guide:#ff6b6b;--wall-fill:#5d6470;--wall-stroke:#8a929e;--clash-fill:#5a2530;--dim:#7fa8e6}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}main{max-width:1320px;margin:0 auto;padding:20px 16px 60px}body.with-properties main{max-width:calc(1320px + var(--properties-width) + 16px)}h1{margin:8px 0 16px;font-size:1.5rem}h2{margin:0 0 12px;font-size:1.1rem}a{color:var(--accent)}.muted{color:var(--muted);font-weight:400}.loading{text-align:center;color:var(--muted);padding:40px}.topbar{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px 24px;padding:10px 16px;display:flex}.brand{color:var(--text);font-weight:600;text-decoration:none}.brand:hover{color:var(--accent)}.splash{--splash-bg:#16202a;--splash-grid:#ffffff0b;--splash-text:#fff;--splash-muted:#a9b2bd;--splash-accent:#c27c3a;--splash-accent-text:#d99a5b;--splash-track:#2a3540;background-color:var(--splash-bg);background-image:linear-gradient(var(--splash-grid) 1px, transparent 1px), linear-gradient(90deg, var(--splash-grid) 1px, transparent 1px);min-height:100vh;color:var(--splash-text);background-size:56px 56px;flex-direction:column;padding:16px;display:flex}.splash-centre{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:40px 0;display:flex}.splash-logo{max-width:40vw;height:auto;margin-bottom:36px}.splash-title{letter-spacing:-.02em;margin:0;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:800;line-height:1}.splash-subtitle{color:var(--splash-accent-text);letter-spacing:.5em;text-transform:uppercase;margin:18px 0 0;padding-left:.5em;font-size:clamp(.95rem,2vw,1.35rem);font-weight:700}.splash-tagline{color:#d5dbe2;margin:44px 0 0;font-size:clamp(1rem,2vw,1.4rem)}.splash-progress{background:var(--splash-track);border-radius:2px;width:min(320px,80vw);height:4px;margin-top:56px;overflow:hidden}.splash-progress span{background:var(--splash-accent);border-radius:2px;height:100%;transition:width .6s;display:block}.splash-status{color:var(--splash-muted);margin:16px 0 0;font-size:.95rem}.splash-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:28px;display:flex}.splash-button{color:var(--splash-text);border:1px solid #3a4652;border-radius:6px;padding:10px 20px;font-weight:600;text-decoration:none}.splash-button:hover{border-color:var(--splash-accent)}.splash-button.primary{background:var(--splash-accent);border-color:var(--splash-accent);color:#16202a}.splash-button.primary:hover{background:var(--splash-accent-text)}.splash-footer{color:var(--splash-muted);flex-wrap:wrap;justify-content:space-between;gap:8px;padding:0 4vw 24px;font-size:.9rem;display:flex}.topbar nav{gap:16px;display:flex}.topbar nav a{color:var(--muted);padding:4px 0;text-decoration:none}.topbar nav a.active{color:var(--text);border-bottom:2px solid var(--accent)}.who{color:var(--muted);align-items:center;gap:12px;margin-left:auto;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:16px;padding:18px 20px}.card-head{align-items:center;gap:12px;margin-bottom:12px;display:flex}.card-head h2{margin:0}.card.collapsed{padding-top:12px;padding-bottom:12px}.card.collapsed .card-head{margin-bottom:0}.card-toggle{color:var(--text);text-align:left;background:0 0;align-items:center;gap:8px;min-width:0;padding:0;display:flex}.card-toggle .chevron{color:var(--muted);width:1em}.card-summary{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.card-actions{align-items:center;gap:12px;margin-left:auto;display:flex}label{color:var(--muted);flex-direction:column;gap:4px;font-size:.85rem;display:flex}input,select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;min-width:0;padding:7px 9px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}button,.file-button{font:inherit;background:var(--accent);color:var(--accent-text);cursor:pointer;border:none;border-radius:6px;padding:8px 16px;display:inline-block}button:disabled{opacity:.55;cursor:default}button.link{color:var(--accent);background:0 0;padding:0}button.danger{color:var(--danger)}.inline-form{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:12px;display:flex}.inline-form .grow{flex:260px}.settings{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.settings fieldset{border:none;flex-direction:column;gap:10px;margin:0;padding:0;display:flex}.settings .actions{grid-column:1/-1}@media (width>=1100px){.settings{grid-template-columns:minmax(220px,260px) repeat(4,minmax(140px,1fr))}.settings fieldset.job-identity{border-right:1px solid var(--border);margin-right:40px;padding-right:32px}.settings fieldset:not(.job-identity):not(.materials) label>input,.settings fieldset:not(.job-identity):not(.materials) label>output{width:85%}}.job-identity label{color:var(--text);font-weight:600}.job-identity input{font-size:1.05rem;font-weight:600}.settings fieldset:not(.materials) label>input,.settings fieldset:not(.materials) label>output{align-items:center;height:36px;padding-top:0;padding-bottom:0;line-height:1;display:flex}.settings fieldset:not(.materials) label.check>input[type=checkbox]{flex:none;width:14px;height:14px;margin:0;padding:0;display:inline-block}.settings fieldset:not(.materials) label.check{align-items:center;line-height:1.3}.settings fieldset:not(.materials) label>output .muted{margin-left:.3em}.actions{align-items:center;gap:16px;display:flex}.settings-save{margin-bottom:16px}.toolbar{flex-wrap:wrap;gap:12px;margin-bottom:12px;display:flex}.error{background:var(--error-bg);color:var(--danger);border-radius:6px;padding:8px 12px}.success{color:var(--success)}.warnings{color:var(--warn-text)}.badge{background:var(--bg);border:1px solid var(--border);color:var(--muted);border-radius:10px;margin-left:8px;padding:1px 7px;font-size:.75rem;display:inline-block}.badge.warn{background:var(--warn-bg);color:var(--warn-text);border-color:#0000}.card:has(table){overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 8px}th{color:var(--muted);font-size:.8rem;font-weight:600}.num{text-align:right;font-variant-numeric:tabular-nums}table.cabinets input{text-align:right;width:84px;padding:4px 6px}table.cabinets input.overridden{border-color:var(--accent);font-weight:700}tr.selected td{background:color-mix(in srgb, var(--accent) 10%, transparent)}tr.editing td{background:color-mix(in srgb, var(--accent) 22%, transparent)}tr.editing td:first-child{box-shadow:inset 3px 0 0 var(--accent)}kbd{font:inherit;border:1px solid var(--border);border-radius:4px;padding:0 4px;font-size:.8em}.plan-toolbar{align-items:center}.plan-toolbar button{padding:5px 12px}label.check{color:var(--text);flex-direction:row;align-items:center;gap:6px}.plan-status{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;min-width:0;margin-left:auto;overflow:hidden}.plan-canvas{background:var(--plan-bg);border:1px solid var(--border);touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;border-radius:6px;width:100%;height:874px;display:block}.plan-canvas:focus-visible{outline:2px solid var(--accent)}.pane-tabs{border-top:1px solid var(--border);gap:2px;margin-top:-1px;display:flex}.pane-tabs button{border:1px solid var(--border);background:var(--bg);color:var(--muted);border-top:none;border-radius:0 0 6px 6px;padding:6px 18px;font-weight:500}.pane-tabs button.on{background:var(--surface);color:var(--text);box-shadow:inset 0 2px 0 var(--accent)}.elevations{background:var(--plan-bg);border:1px solid var(--border);box-sizing:border-box;border-radius:6px;height:874px;padding:8px 12px;overflow:auto}.elevation-grid{align-items:start;display:grid}.elevation{min-width:0;margin:0 0 18px}.elevation figcaption{margin:4px 0;font-weight:600}.elevation svg{max-width:100%;display:block}.elevation-notes{font-size:.85rem}.elev-wall{fill:var(--surface);stroke:var(--grid-axis);stroke-width:1px}.elev-floor{stroke:var(--text);stroke-width:1.5px;stroke-width:2px}.elev-benchtop{fill:var(--cab-other);stroke:var(--cab-other-stroke);stroke-width:1px}.elev-kick{fill:var(--grid-major);stroke:var(--grid-axis);stroke-width:.8px}.elev-carcass{stroke-width:1px}.elev-opening-item .frame{fill:var(--plan-bg);stroke:var(--wall-stroke);stroke-width:1.2px}.elev-opening-item .glass{fill:var(--cab-wall);fill-opacity:.45;stroke:var(--wall-stroke);stroke-width:.8px}.elev-opening-item line{stroke:var(--wall-stroke);stroke-width:.8px}.elev-opening-item .knob{fill:var(--muted)}.elev-cab.cat-floor .elev-carcass{fill:var(--cab-floor);stroke:var(--cab-floor-stroke)}.elev-cab.cat-tall .elev-carcass{fill:var(--cab-tall);stroke:var(--cab-tall-stroke)}.elev-cab.cat-wall .elev-carcass{fill:var(--cab-wall);stroke:var(--cab-wall-stroke)}.elev-front rect{fill:var(--surface);fill-opacity:.6;stroke:var(--cab-front);stroke-width:.8px}.elev-opening{fill:none;stroke:var(--guide);stroke-width:.8px;stroke-dasharray:4 3}.wall-number circle{fill:var(--surface);stroke:var(--wall-stroke);stroke-width:1px}.wall-number text{fill:var(--text);text-anchor:middle;dominant-baseline:central;font-size:10px;font-weight:600}.wall-number{pointer-events:none}.print-sheet{color:var(--text);background:#fff;position:fixed;top:0;left:-20000px}.elev-label{text-anchor:middle;fill:var(--text);pointer-events:none;font-size:9.5px}.plan-help{cursor:help;margin:8px 0 0;font-size:.8rem}.grid-minor{stroke:var(--grid-minor)}.grid-major{stroke:var(--grid-major)}.grid-axis{stroke:var(--grid-axis)}.cab polygon{fill:var(--cab-other);stroke:var(--cab-other-stroke);stroke-width:1.2px;cursor:move}.cat-floor polygon{fill:var(--cab-floor);stroke:var(--cab-floor-stroke)}.cat-tall polygon{fill:var(--cab-tall);stroke:var(--cab-tall-stroke)}.cat-wall polygon{fill:var(--cab-wall);fill-opacity:.55;stroke:var(--cab-wall-stroke);stroke-dasharray:5 3}.cab polygon.missing-size{stroke-dasharray:2 3}.cab.selected polygon{stroke:var(--accent);stroke-width:2.5px}.cab.editing>polygon:not(.door-front),.opening.editing>polygon{fill:color-mix(in srgb, var(--accent) 35%, transparent);fill-opacity:1;stroke:var(--accent);stroke-width:3px;stroke-dasharray:none}.cab.editing,.opening.editing{filter:drop-shadow(0 0 4px color-mix(in srgb, var(--accent) 70%, transparent))}.cab .front{stroke:var(--cab-front);stroke-width:3px;pointer-events:none}.cab-label{fill:var(--text);text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-size:11px}.cab-size{fill:var(--muted);font-size:10px}.handle{fill:var(--surface);stroke:var(--accent);stroke-width:2px}.handle.ew{cursor:ew-resize}.handle.ns{cursor:ns-resize}.anchor{fill:var(--accent);pointer-events:none}.guide{stroke:var(--guide);stroke-dasharray:4 3;pointer-events:none}output.calculated{border:1px dashed var(--border);color:var(--text);font-variant-numeric:tabular-nums;border-radius:6px;padding:7px 9px;display:block}output.calculated.invalid{color:var(--danger);border-color:var(--danger)}.dims line{stroke:var(--dim);stroke-width:1px}.dims line.ext{stroke-width:.6px;opacity:.7}.dims text{fill:var(--dim);text-anchor:middle;font-variant-numeric:tabular-nums;paint-order:stroke;stroke:var(--plan-bg);stroke-width:3px;font-size:10px}.dims{pointer-events:none}.benchtop-outline path{fill:none;stroke:var(--dim);stroke-width:1.2px;stroke-dasharray:8 4;fill-rule:evenodd}.cab .door-front{fill:var(--cab-front);fill-opacity:.85;stroke:none;cursor:move}.cab .swing{fill:none;stroke:var(--muted);stroke-width:1px;stroke-dasharray:4 3;pointer-events:none}.cat-wall .swing{opacity:.5}.group-toggles{gap:10px;padding:0 4px;display:inline-flex}.cab.clash polygon,.cab.clash.selected polygon{fill:var(--clash-fill);stroke:var(--danger);stroke-width:2px;stroke-dasharray:none;fill-opacity:1}.cab.ghost polygon{fill-opacity:.6;stroke:var(--accent);stroke-width:2px;stroke-dasharray:none;pointer-events:none}.cab.ghost.clash polygon{stroke:var(--danger)}.cab.ghost .front{opacity:.6}.clash-count{color:var(--danger);font-weight:600}.badge.danger{background:var(--clash-fill);color:var(--danger);border-color:#0000}.picker{align-items:flex-end}.picker .picker-type select{width:170px}input.short{width:90px}.drag-chip{border:1px dashed var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--surface));cursor:grab;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:6px;align-items:center;gap:8px;padding:7px 12px;display:flex}.drag-chip:active{cursor:grabbing}.drag-chip .grip{color:var(--accent);font-size:1.1rem;line-height:1}.select-box{fill:var(--accent);fill-opacity:.08;stroke:var(--accent);stroke-width:1px;pointer-events:none}.select-box.crossing{fill:var(--success);stroke:var(--success);stroke-dasharray:5 3}.plan-canvas.drawing{cursor:crosshair}.wall polygon{fill:var(--wall-fill);stroke:var(--wall-stroke);stroke-width:1px;cursor:pointer}.wall.selected polygon{fill:var(--accent);fill-opacity:.55;stroke:var(--accent)}.wall.selected polygon.picked{fill-opacity:.85;stroke-width:2.5px}.wall.selected polygon{cursor:move}.wall.editing polygon{fill:var(--accent);fill-opacity:.7;stroke:var(--accent);stroke-width:3px}.elev-line-path{stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:8 4;pointer-events:none}.elev-line-arrow{fill:var(--accent);pointer-events:none}.elev-line-name{fill:var(--accent);text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:11px;font-weight:600}.elev-line-depth{fill:var(--accent);fill-opacity:.08;stroke:var(--accent);stroke-opacity:.35;stroke-dasharray:3 3;pointer-events:none}.elev-line-hit{stroke:#0000;stroke-width:12px;cursor:pointer}.elev-line.selected .elev-line-hit{cursor:move}.elev-line.selected .elev-line-path,.elev-line.editing .elev-line-path{stroke-width:3px}.elev-line.drawing .elev-line-path{stroke-opacity:.7}.cabinet-comment{box-sizing:border-box;resize:vertical;width:100%;font:inherit}.line-properties-actions{align-items:center;gap:10px;margin-top:10px;font-size:13px;display:flex}.wall-properties-note{margin:4px 0 0;font-size:12px}.wall-swatches{grid-template-columns:repeat(auto-fill,28px);gap:6px;display:grid}.wall-swatch{border:1px solid var(--border);cursor:pointer;border-radius:50%;width:28px;height:28px;padding:0}.wall-swatch.on{outline:2px solid var(--accent);outline-offset:2px}.wall-colour-pick{align-items:center;gap:8px;margin-top:10px;display:flex}.wall-colour-pick input[type=color]{width:44px;height:28px;padding:0 2px}.room3d-canvas{border:1px solid var(--border);background:#dfe3e8;border-radius:6px;width:100%;height:874px;max-height:80vh;overflow:hidden}.room3d-canvas canvas{display:block}.room3d-help{margin:6px 0 0;font-size:.85rem}.room3d-render{flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:8px;font-size:.9rem;display:flex}.room3d-render label{align-items:center;gap:6px;display:inline-flex}.room3d-render select{width:auto}.room3d-wireframe{margin-left:auto}.toggle.on{background:var(--accent);border-color:var(--accent);color:#fff}.room3d-note{margin:6px 0 0;font-size:.85rem}.room3d-lower.with-staging{grid-template-columns:minmax(0,1fr) 180px;align-items:start;gap:16px;display:grid}.room3d-lower-main{min-width:0}.room3d-staging{border-top:1px solid var(--border);flex-direction:column;gap:10px;margin-top:10px;padding-top:8px;font-size:.85rem;display:flex}.room3d-staging label{color:var(--muted);flex-direction:column;gap:4px;display:flex}.room3d-staging select{width:100%}@media (width<=760px){.room3d-lower.with-staging{grid-template-columns:1fr}.room3d-staging{flex-flow:wrap}}.room3d{margin-bottom:16px}.ai-renders{border-top:1px solid var(--border);margin-top:10px;padding-top:8px;font-size:.9rem}.ai-prompt-setting textarea{box-sizing:border-box;width:100%;font:inherit;resize:vertical}.ai-render-list{flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none;display:flex}.ai-render{flex-wrap:wrap;gap:10px;display:flex}.ai-render.pending img,.ai-render.failed img{opacity:.5}.room3d-views{border-top:1px solid var(--border);margin-top:10px;padding-top:8px;font-size:.9rem}.pdf-tiles{flex-wrap:wrap;gap:10px;margin:6px 0 0;padding:0;list-style:none;display:flex}.pdf-tile{flex-direction:column;gap:4px;width:192px;margin:0;display:flex}.pdf-tile img,.pdf-tile-image{aspect-ratio:16/9;object-fit:cover;border:1px solid var(--border);box-sizing:border-box;border-radius:4px;width:192px;display:block}button.pdf-tile-image{background:var(--surface);cursor:pointer;justify-content:center;align-items:center;padding:0;display:flex;overflow:hidden}button.pdf-tile-image img{border:none;border-radius:0}.pdf-tile figcaption,.pdf-tile-actions{justify-content:space-between;align-items:center;gap:6px;display:flex}.pdf-tile .view-name{box-sizing:border-box;width:100%}.pdf-tile-name{padding:2px 0}.view-name{width:11em;padding:2px 6px}:root{--properties-width:360px}.plan-with-properties{grid-template-columns:minmax(0, 1fr) var(--properties-width);align-items:start;gap:16px;display:grid}.cabinet-properties{border:1px solid var(--border);background:var(--surface);box-sizing:border-box;border-radius:6px;max-height:940px;padding:12px 14px;overflow-y:auto}.cabinet-properties header{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.construction{border-top:1px solid var(--border);margin-top:14px;padding-top:8px}.property-group{margin-top:14px}.property-group summary{cursor:pointer;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:13px;font-weight:600}.construction summary{cursor:pointer;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:13px;font-weight:600}.construction h5{margin:10px 0 4px;font-size:12px}.construction-table{border-collapse:collapse;width:100%;font-size:12px}.construction-table td{vertical-align:top;padding:2px 4px}.cabinet-properties .based-on{font-size:12px;display:block}.cabinet-properties h3{overflow-wrap:anywhere;margin:0;font-size:15px}.cabinet-properties h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:14px 0 8px;font-size:13px}.property-sizes{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;display:grid}.property-sizes label{flex-direction:column;gap:3px;font-size:13px;display:flex}.property-sizes input{box-sizing:border-box;width:100%}.property-sizes input.overridden{font-weight:700}.stepper{align-items:stretch;display:flex}.stepper input{border-top-right-radius:0;border-bottom-right-radius:0;flex:1;min-width:0}.carcase-parts{margin-top:4px}.carcase-parts-head,.ends-as-panel{flex-wrap:wrap;align-items:center;gap:4px 12px;display:flex}.carcase-parts-head .picker-label{margin-right:auto}.carcase-part-list{margin:6px 0;display:grid}.carcase-part{cursor:pointer;border-radius:4px;grid-template-columns:auto 5.5em minmax(0,1fr);align-items:center;gap:6px;padding:2px 4px;display:grid}.carcase-part.picked{background:color-mix(in srgb, var(--accent) 12%, transparent)}.carcase-part-material{text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.carcase-part-material.own{font-weight:600}.ends-as-panel{margin-bottom:6px;font-size:.9rem}.construction-own{margin:8px 0 4px}.drawer-table{width:100%}.drawer-table th{text-align:left;font-size:.8rem;font-weight:600}.drawer-table td{vertical-align:middle}.drawer-table label{margin:0;display:block}.drawer-table input:not([type=checkbox]){width:5.5em}.drawer-table select{width:100%;max-width:11em}.drawer-table select.overridden,.door-table select.overridden{font-weight:600}.corner-hinge{align-items:center;gap:8px;display:flex}.door-table th{text-align:left;font-size:.8rem;font-weight:600}.door-table td:first-child{width:3em}.carcase-part-actions{justify-content:flex-end;gap:12px;display:flex}.stepper-buttons{flex-direction:column;display:flex}.stepper-buttons button{border:1px solid var(--border);background:var(--surface);min-height:0;color:var(--text);cursor:pointer;border-left:none;border-radius:0;flex:1;padding:0 7px;font-size:8px;line-height:1}.stepper-buttons button:first-child{border-top-right-radius:4px}.stepper-buttons button:last-child{border-top:none;border-bottom-right-radius:4px}.stepper-buttons button:hover:not(:disabled){background:var(--plan-bg)}.stepper-buttons button:disabled{color:var(--muted);cursor:default;opacity:.5}.property-note{margin:8px 0 0;font-size:12px}.property-slot{margin-bottom:12px}.property-slot .same-as-job{float:right;font-size:12px}.property-slot.collapsed{border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:6px}.property-slot.collapsed .slot-line{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.property-slot.collapsed .same-as-job{float:none}.slot-summary{text-overflow:ellipsis;white-space:nowrap;font-size:12px;display:block;overflow:hidden}@media (width<=1100px){.plan-with-properties{grid-template-columns:minmax(0,1fr)}}.opening polygon{fill:var(--plan-bg);stroke:var(--wall-stroke);stroke-width:1px;cursor:move}.opening.selected polygon{stroke:var(--accent);stroke-width:2.5px}.opening .door-leaf{stroke:var(--text);stroke-width:1.5px}.opening .door-swing{fill:none;stroke:var(--muted);stroke-width:1px;stroke-dasharray:4 3}.opening .window-glass{stroke:var(--wall-stroke);stroke-width:1px}.wall-end{fill:var(--surface);stroke:var(--accent);stroke-width:2px;cursor:grab}.wall-end:hover{fill:var(--accent)}.wall.preview polygon{fill-opacity:.45;pointer-events:none}.wall-length{fill:#fff;text-anchor:middle;dominant-baseline:central;pointer-events:none}.wall-point{fill:var(--accent);pointer-events:none}.wall-cursor{fill:none;stroke:var(--accent);stroke-width:2px;pointer-events:none}.typed-length{fill:var(--accent);pointer-events:none;font-size:12px;font-weight:600}.segmented{border:1px solid var(--border);border-radius:6px;display:inline-flex;overflow:hidden}.segmented button{background:var(--surface);color:var(--text);border-radius:0}.segmented button.on{background:var(--accent);color:var(--accent-text)}label.inline{color:var(--muted);flex-direction:row;align-items:center;gap:6px}label.inline input{text-align:right;width:70px;padding:4px 6px}.swatch{border:1px solid var(--border);object-fit:cover;background:var(--bg);border-radius:6px;flex:none;display:inline-block}.swatch.empty{background:repeating-linear-gradient(45deg, var(--bg), var(--bg) 4px, var(--border) 4px, var(--border) 5px)}.material-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;display:grid}.material-card{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;font-size:.85rem;display:flex}.material-brand+.material-brand{margin-top:18px}.material-brand h3{margin:0 0 8px;font-size:.95rem}.material-card{position:relative}.material-remove{border:1px solid var(--border);background:var(--surface);width:20px;height:20px;color:var(--danger);opacity:0;cursor:pointer;border-radius:50%;padding:0;font-size:14px;line-height:18px;position:absolute;top:2px;left:54px}.material-card:hover .material-remove,.material-remove:focus-visible{opacity:1}@media (hover:none){.material-remove{opacity:1}}.material-card .material-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.store-region{align-items:center;gap:8px;display:flex}.store-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-top:12px;display:grid}.store-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;flex-direction:column;min-width:0;display:flex;overflow:hidden}.store-card img,.store-noimage{object-fit:contain;border-bottom:1px solid var(--border);background:#fff;width:100%;height:120px}.store-noimage{background:var(--bg);display:block}.store-body{flex-direction:column;flex:1;gap:6px;padding:10px 12px 12px;font-size:.85rem;display:flex}.store-body h3{margin:0;font-size:.95rem}.store-body p{margin:0}.store-downloads{flex-direction:column;gap:6px;margin-top:auto;display:flex}.store-download{align-items:center;gap:8px;min-width:0;display:flex}.store-download>span:first-child{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.pager{justify-content:center;align-items:center;gap:12px;margin-top:14px;display:flex}.settings fieldset.materials{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}@media (width<=960px){.settings fieldset.materials{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.settings fieldset.materials{grid-template-columns:minmax(0,1fr)}}.swatch-button{cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;padding:0;line-height:0}.swatch-button:hover:not(:disabled) .swatch,.swatch-button:focus-visible .swatch{outline:2px solid var(--accent);outline-offset:1px}.swatch-button:disabled{cursor:default}.swatch-dialog{border:1px solid var(--border);background:var(--surface);width:min(1000px,94vw);max-height:86vh;color:var(--text);border-radius:10px;padding:0;overflow:hidden}.swatch-dialog[open]{flex-direction:column;display:flex}.swatch-dialog::backdrop{background:#0f121873}.swatch-dialog-head{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;display:flex}.swatch-dialog-head h2{margin:0 auto 0 0;font-size:1.05rem}.swatch-dialog-head h2 .muted{font-size:.9rem;font-weight:400}.swatch-dialog-body{padding:12px 16px 16px;overflow:auto}.material-card.choose{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:2px solid #0000;border-radius:8px;padding:4px}.material-card.choose:hover,.material-card.choose:focus-visible{border-color:var(--border)}.material-card.choose.on{border-color:var(--accent)}.door-profile-picker .picker-row{align-items:center}.door-profile-picker select{flex:1;min-width:0}.profile-thumb{border:1px solid var(--border);border-radius:4px;justify-content:center;align-items:center;width:40px;height:56px;font-size:.7rem;line-height:1;display:flex;overflow:hidden}.profile-thumb img{max-width:100%;max-height:100%}.profile-thumb:hover,.profile-thumb:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.door-profile-card{object-fit:contain;align-self:center;max-width:100%;height:110px}.door-profile-preview{border-bottom:1px solid var(--border);align-items:center;gap:16px;min-height:170px;padding:12px 16px;display:flex}.door-profile-preview .front{flex:none;height:150px}.door-profile-preview>div{flex:1;min-width:0}.door-profile-preview h3{margin:0 0 8px}.door-profile-preview .side{max-width:100%;max-height:140px}.job-setup-actions{margin:-4px 0 20px}fieldset.settings-page{border:none;min-width:0;margin:0;padding:0}.settings textarea{font:inherit;resize:vertical}.settings.pdf-contents{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(300px,2fr)}.pdf-contents .pdf-notes textarea{width:100%;min-height:11em}.pdf-contents .pdf-footer{grid-column:2/-1}.settings.pdf-contents fieldset.pdf-footer label>input{width:100%}@media (width<=760px){.settings.pdf-contents{grid-template-columns:minmax(0,1fr)}.pdf-contents .pdf-footer{grid-column:auto}}.logo-setting{flex-direction:column;gap:8px;margin-top:12px;display:flex}.logo-preview{border:1px solid var(--border);background:#fff;border-radius:6px;justify-content:center;align-items:center;width:260px;max-width:100%;height:90px;padding:8px;display:flex}.logo-preview img{object-fit:contain;max-width:100%;max-height:100%}.file-button.disabled{opacity:.6;pointer-events:none}.watermark-preview{border:1px solid var(--border);background:#fff;border-radius:6px;justify-content:center;align-items:center;min-height:140px;display:flex;position:relative;overflow:hidden}.watermark-preview span{color:#1d2330;white-space:nowrap;letter-spacing:.06em;font:700 2.2rem helvetica,arial,sans-serif;transform:rotate(-30deg)}.settings-heading{grid-column:1/-1;margin:4px 0 -6px;font-size:.95rem}.default-handle{background:var(--bg)}.default-handle .metal{fill:var(--muted)}.default-handle .shine{fill:var(--surface);opacity:.7}.hardware-items td.hardware-thumb{width:40px;padding-top:2px;padding-bottom:2px;line-height:0}.hardware-picker .picker-detail{font-size:.8rem}table.libraries{max-width:640px;margin:4px 0 14px}button.small{padding:4px 10px;font-size:.85rem}.secondary{background:var(--surface);color:var(--accent);border:1px solid var(--accent)}.material-picker .picker-label{color:var(--muted);margin-bottom:4px;font-size:.85rem;display:block}.material-picker .picker-row{align-items:flex-start;gap:10px;display:flex}.material-picker .picker-fields{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.with-edging{flex-direction:column;gap:8px;min-width:0;display:flex}.edging-picker .picker-row{align-items:center}.edging-picker select{width:100%}body.placing-cabinet,body.placing-cabinet *{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.import-notice{background:var(--warn-bg);color:var(--warn-text,var(--text));border-radius:6px;margin:6px 0 0;padding:6px 10px}.import-drop{border:2px dashed var(--border);border-radius:8px;padding:14px 16px}.import-drop.over{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, transparent)}.import-results{flex-direction:column;gap:6px;margin:12px 0 0;padding-left:18px;display:flex}.error-text{color:var(--danger)}.drag-chip .cabinet-picture{object-fit:contain;pointer-events:none;background:#fff;border-radius:4px;width:64px;height:64px}.drag-chip .chip-text{flex-direction:column;line-height:1.3;display:flex}.drag-chip .hint{font-size:.75rem}.with-thumb{align-items:center;gap:8px;display:flex}.cabinet-thumb{object-fit:contain;background:#fff;border-radius:3px;flex:none;width:32px;height:32px}span.cabinet-thumb{background:0 0}h3.subhead{margin:20px 0 6px;font-size:1rem}.auth-page{place-items:center;min-height:100vh;padding:16px;display:grid}.auth-card{flex-direction:column;gap:14px;width:100%;max-width:380px;display:flex}.auth-card h1{margin:0}
