:root{--paper:#f6f3ee;--panel:#fff;--ink:#2b2118;--ink-soft:#6d5f51;--ink-faint:#9a8d7f;--line:#e7e0d6;--line-strong:#d3c9bb;--accent:#d96a1d;--accent-dark:#b8540f;--accent-soft:#fdf0e4;--select:#1f7aec;--select-soft:#e8f1fe;--danger:#c4372b;--guide:#ff2d87;--radius:10px;--shadow:0 1px 2px #2b21180f, 0 4px 14px #2b211814;color:var(--ink);-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.4}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);overscroll-behavior:none}h1,h2,h3,p{margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.38}.muted{color:var(--ink-faint);font-weight:400}.strong{font-weight:650}.btn{border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--panel);white-space:nowrap;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 16px;font-weight:600;transition:background .12s,border-color .12s,transform 50ms;display:inline-flex}.btn:hover:not(:disabled){background:#faf7f2;border-color:#bfb3a3}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark)}.btn-quiet{color:#f4ebe0;background:0 0;border-color:#0000}.btn-quiet:hover:not(:disabled){background:#ffffff1a;border-color:#0000}.btn-large{min-height:52px;padding:0 24px;font-size:17px}.btn-small{min-height:34px;padding:0 12px;font-size:14px}.btn-block{width:100%;padding:0 8px}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger-quiet{color:var(--danger)}.btn-toggle.is-on{background:var(--select-soft);color:#1559b3;border-color:#b9d4fa}.icon-btn{border-radius:var(--radius);width:42px;height:42px;color:inherit;background:0 0;border:1px solid #0000;place-items:center;display:inline-grid}.icon-btn:hover:not(:disabled){background:#7d695521}.link{color:var(--select);background:0 0;border:0;align-items:center;gap:4px;padding:0;font-weight:600;display:inline-flex}.link:hover{text-decoration:underline}:focus-visible{outline-offset:1px;outline:3px solid #1f7aec73}.field{margin-bottom:14px;display:block}.field-label{color:var(--ink-soft);letter-spacing:.01em;margin-bottom:5px;font-size:12.5px;font-weight:650;display:block}.input{border:1px solid var(--line-strong);background:#fff;border-radius:8px;outline:none;width:100%;min-width:0;min-height:42px;padding:0 12px;transition:border-color .12s,box-shadow .12s}.row-2>*,.row-3>*{min-width:0}.input:focus{border-color:var(--select);box-shadow:0 0 0 3px #1f7aec2e}.input-large{min-height:50px;font-size:18px}select.input{appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%236d5f51' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 12px center no-repeat;padding-right:34px}.field-big .input{letter-spacing:.01em;min-height:54px;font-size:24px;font-weight:700}.field-problem .input{border-color:var(--danger);box-shadow:0 0 0 3px #c4372b26}.field-note{color:var(--danger);margin-top:5px;font-size:12.5px;display:block}.hint{color:var(--ink-faint);margin:-6px 0 14px;font-size:12.5px}.problem{color:var(--danger);margin:0 0 12px;font-size:13.5px}.row-2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.row-3{grid-template-columns:1fr 1fr 1fr;gap:8px;display:grid}.row-2>.btn{margin-bottom:14px}.check{grid-column:1/-1;align-items:flex-start;gap:10px;font-size:14px;display:flex}.check input{width:20px;height:20px;accent-color:var(--accent);flex:none;margin:0}.home{flex-direction:column;min-height:100%;display:flex}.home-header{background:var(--ink);color:#f8f1e7;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:22px clamp(16px,5vw,56px);display:flex}.brand{align-items:center;gap:14px;display:flex}.brand h1{letter-spacing:-.01em;font-size:26px}.brand p{color:#cdbfae;font-size:14.5px}.home-actions{gap:10px;display:flex}.home-header .btn:not(.btn-primary){color:#f8f1e7;background:0 0;border-color:#6d5f51}.home-header .btn:not(.btn-primary):hover{background:#ffffff14}.home-main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:30px clamp(16px,5vw,56px) 60px}.section-title{margin-bottom:16px;font-size:18px}.project-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px;display:grid}.project-card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}.project-open{text-align:left;background:linear-gradient(135deg,#f3dcb4 0%,#e6c78f 100%);border:0;flex-direction:column;flex:1;gap:4px;padding:26px 18px 18px;display:flex}.project-open:hover{filter:brightness(1.03)}.project-name{color:var(--ink);font-size:19px;font-weight:700}.project-meta{color:#6b5433;font-size:13.5px}.project-tools{min-height:54px;color:var(--ink-soft);justify-content:flex-end;align-items:center;gap:6px;padding:6px 8px;display:flex}.confirm-text{color:var(--danger);margin-right:auto;padding-left:8px;font-size:14px;font-weight:600}.examples{text-align:left;width:100%;margin-top:36px}.preset-strip{gap:10px;padding-bottom:6px;display:flex;overflow-x:auto}.preset-strip .preset-card{flex:none;width:132px}.preset-strip .preset-art{width:84px}.preset-grid{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px;display:grid}.preset-card{text-align:center;border:1px solid var(--line);background:#fdfcfa;border-radius:14px;flex-direction:column;align-items:center;gap:3px;padding:12px 10px 14px;transition:border-color .12s,box-shadow .12s,transform 80ms;display:flex}.preset-card:hover{border-color:var(--accent);box-shadow:0 2px 12px #d96a1d2e}.preset-card:active{transform:scale(.98)}.preset-art{width:100%;max-width:104px;height:auto;margin-bottom:2px;display:block}.preset-name{font-size:15px;font-weight:700}.preset-blurb{color:var(--ink-faint);font-size:12px;line-height:1.32}.preset-card-plain{background:0 0;border-style:dashed}.dialog-wide{width:min(760px,100%)}.dialog-lead{color:var(--ink-soft);margin:-8px 0 14px;font-size:14px}.dialog-head h2{flex:1}.dialog-close{margin-left:auto}.preview-notes{background:var(--accent-soft);border-radius:var(--radius);color:#5c4630;gap:5px;margin-bottom:14px;padding:11px 14px;font-size:13px;display:grid}.recipe-form .hint{margin-top:-8px}.hint-indent{padding-left:30px}.recipe-panel{border-bottom:1px solid var(--line);margin-bottom:16px;padding-bottom:4px}.recipe-panel .hint{margin-top:2px}.empty{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:72px 20px;display:flex}.empty h2{font-size:26px}.empty p{color:var(--ink-soft);max-width:420px;margin-bottom:10px}.scrim{z-index:80;padding:calc(16px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));background:#2b211873;place-items:center;display:grid;position:fixed;inset:0}.dialog{width:min(480px,100%);max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));background:var(--panel);border-radius:16px;padding:22px;overflow-y:auto;box-shadow:0 24px 60px #0000004d}.dialog-head{z-index:1;background:linear-gradient(var(--panel) calc(100% - 8px), transparent);justify-content:space-between;align-items:center;gap:4px;margin:-22px -22px 16px;padding:22px 22px 12px;display:flex;position:sticky;top:-22px}.dialog-head h2{font-size:21px}.dialog-sub{margin-top:6px;font-size:13.5px}.dialog-foot{justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.dialog .hint{margin-top:-4px}.wood-swatch{border:1px solid #2b21182e;border-radius:6px;flex:none;width:40px;height:28px;display:inline-block;box-shadow:inset 0 1px #ffffff40}.wood-swatch-small{border-radius:4px;width:18px;height:14px}.wood-verdict{white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:2px 8px;font-size:11.5px;font-weight:750;display:inline-block}.wood-verdict-great{color:#17652f;background:#e3f4e8;border-color:#b9e0c4}.wood-verdict-good{color:#1559b3;background:var(--select-soft);border-color:#b9d4fa}.wood-verdict-fair{color:#8a5a00;background:#fff4d9;border-color:#f1d79a}.wood-verdict-poor{color:#a8261c;background:#fde9e6;border-color:#f4c2bb}.chip-wood{padding-left:8px}.dialog-wood{width:min(580px,100%)}.wood-where{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.wood-where .field-label{margin:0}.segmented-2 button{padding:8px 12px;font-size:13.5px}.segmented-4{flex:1;grid-template-columns:repeat(4,minmax(0,1fr));min-width:280px}.wood-finish{margin-top:-4px}.finish-swatches{flex-basis:100%;gap:6px;margin-top:4px;display:grid}.finish-swatch-row{flex-wrap:wrap;gap:8px;display:flex}.finish-swatch{width:30px;height:30px;box-shadow:0 0 0 1px var(--line-strong);border:2px solid #fff;border-radius:50%;padding:0}.finish-swatch:hover{box-shadow:0 0 0 1px var(--ink-soft)}.finish-swatch.is-on{box-shadow:0 0 0 2px var(--accent)}.finish-swatch-name{color:var(--ink-soft);font-size:12.5px}.finish-swatch-own{color:#fff;text-shadow:0 1px 2px #00000080;background:conic-gradient(#d24b3c,#e6b43c,#6bb05a,#3c8fd2,#8a5ad2,#d24b3c);font-size:17px;font-weight:800;line-height:1}.own-paint{grid-template-columns:44px 1fr;align-items:center;gap:8px;display:grid}.own-paint-color{border:1px solid var(--line-strong);background:#fff;border-radius:8px;width:44px;height:38px;padding:2px}.own-paint .hint{grid-column:1/-1;margin:0}.wood-saving{border-radius:var(--radius);background:#f1faf3;border:1px solid #b9e0c4;justify-items:start;gap:8px;padding:10px 12px;font-size:13.5px;display:grid}.wood-saving p{margin:0}.sheen-choice{flex-wrap:wrap;flex-basis:100%;align-items:center;gap:10px;margin-top:4px;display:flex}.sheen-choice .field-label{margin:0}.sheen-choice .segmented{min-width:220px}.wood-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;margin:0 0 10px;display:flex}.wood-order{flex:0 auto}.wood-order button{white-space:nowrap;padding:7px 12px;font-size:13px}.wood-budget-field{align-items:center;gap:8px;display:flex}.wood-budget-field .field-label{margin:0}.wood-budget-field .input{width:92px}.wood-alike{border-radius:var(--radius);background:#fdf7ee;border:1px solid #e3cfae;justify-items:start;gap:7px;padding:10px 12px;font-size:13.5px;line-height:1.4;display:grid}.wood-alike p{margin:0}.wood-alike-head{align-items:center;gap:8px;display:flex}.wood-alike-head .wood-swatch{flex:none}.wood-alike-verdict{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.wood-alike-actions{flex-wrap:wrap;gap:8px;display:flex}.wood-plan .wood-alike{margin:10px 0}.wood-compare-row{flex-wrap:wrap;align-items:center;gap:8px;margin:-2px 0 10px;font-size:13.5px;display:flex}.wood-tick{border:2px solid var(--line-strong);background:#fff;border-radius:6px;place-items:center;width:26px;height:26px;display:grid}.wood-tick.is-on{background:var(--accent);border-color:var(--accent);color:#fff}.wood-list.is-ticking .wood-row-head{grid-template-columns:26px minmax(0,1fr) auto 0}.wood-list.is-ticking .wood-chevron{display:none}.wood-compare{gap:12px;margin-bottom:12px;display:grid}.wood-compare-grid{grid-template-columns:minmax(56px,auto) minmax(0,1fr) minmax(0,1fr);align-items:start;gap:8px 12px;font-size:13.5px;display:grid}.wood-compare-grid>*{overflow-wrap:anywhere;min-width:0}.wood-compare-grid .btn{white-space:normal;text-align:left;padding:6px 10px;font-size:13px;line-height:1.25}.wood-compare-name{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.wood-compare-name .wood-swatch{width:28px;height:20px}.wood-compare-label{color:var(--ink-soft);padding-top:1px;font-size:12px;font-weight:700}.wood-compare .wood-reasons{gap:4px;font-size:13px}.wood-compare-foot{flex-wrap:wrap;gap:8px;display:flex}.compare-bar{z-index:6;background:var(--panel);border:1px solid var(--line-strong);border-radius:16px;gap:8px;width:min(520px,100% - 24px);padding:10px 12px;display:grid;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 26px #2b211840}.compare-bar-head{justify-content:space-between;align-items:center;font-size:13.5px;display:flex}.compare-bar-pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.compare-choice{text-align:left;border-radius:var(--radius);border:1px solid var(--line-strong);background:#fff;justify-items:start;gap:4px;padding:8px 10px;font-size:13.5px;display:grid}.compare-choice.is-on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)}.compare-choice-top{align-items:center;gap:6px;display:flex}.compare-choice-facts{color:var(--ink-soft);align-items:center;gap:6px;font-size:12.5px;display:flex}.compare-bar-foot{flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.wood-plan .wood-why{margin:10px 0}.wood-plan-head{align-items:flex-start;gap:12px;display:flex}.wood-plan-name{flex:1;min-width:0}.wood-plan-name b{margin-right:6px;font-size:16px}.wood-plan-name p{margin:4px 0 0;font-size:13.5px}.wood-plan .wood-facts{margin:6px 0 0;font-size:13.5px}.yard-note{border:1px solid var(--line);border-radius:var(--radius);background:#fbf8f2;justify-items:start;gap:6px;margin:8px 0 16px;padding:12px 14px;display:grid}.yard-note h4{margin:0;font-size:14px}.yard-note ul{gap:4px;margin:0;padding-left:18px;font-size:13.5px;display:grid}.budget-box{gap:8px;margin:14px 0 6px;display:grid}.budget-field{align-items:center;gap:10px;display:flex}.budget-field .field-label{margin:0}.budget-input{align-items:center;gap:4px;font-weight:700;display:inline-flex}.budget-input .input{width:110px}.budget-ok{color:#1f7a3a;margin:0;font-size:14px;font-weight:650}.budget-over{border-left:4px solid #d79b1d;gap:6px;padding:4px 0 4px 12px;font-size:14px;display:grid}.budget-over p{margin:0}.budget-savings{gap:6px;margin:0;padding:0;list-style:none;display:grid}.budget-savings li{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.shopping-sheet{z-index:75;background:var(--paper);position:fixed;inset:0;overflow-y:auto}.sheet-bar{border-bottom:1px solid var(--line);background:#f6f3eef0;justify-content:space-between;align-items:center;gap:10px;padding:10px clamp(12px,3vw,28px);display:flex;position:sticky;top:0}.sheet-bar-actions{gap:8px;display:flex}.sheet-page{max-width:720px;margin:0 auto;padding:22px clamp(14px,3vw,28px) 60px}.sheet-page h1{margin-bottom:2px;font-size:24px}.sheet-stop{margin-top:20px}.sheet-stop h2{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:baseline;gap:8px;padding-bottom:4px;font-size:18px;display:flex}.sheet-lines{margin:0;padding:0;list-style:none}.sheet-lines li{border-bottom:1px solid var(--line);grid-template-columns:34px 1fr auto;align-items:center;gap:10px;padding:9px 0;font-size:15px;display:grid}.sheet-tick{border:2px solid var(--ink-soft);background:#fff;border-radius:7px;place-items:center;width:30px;height:30px;padding:0;display:grid}.sheet-tick.is-on{color:#fff;background:#2f8f4e;border-color:#2f8f4e}.sheet-item.is-done{color:var(--ink-faint);text-decoration:line-through}.sheet-price{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink-soft)}.sheet-ask{border:1px solid var(--line);border-radius:var(--radius);background:#fbf8f2;padding:10px 14px}.sheet-ask h3{margin:0 0 6px;font-size:15px}.sheet-ask ul{gap:4px;margin:0 0 6px;padding-left:18px;font-size:14px;display:grid}@media print{body.printing-sheet .plan>:not(.shopping-sheet){display:none!important}body.printing-sheet .shopping-sheet{background:#fff;position:static;overflow:visible}body.printing-sheet .sheet-tick{border-color:#555}}.money-bars{gap:7px;margin:0 0 8px;padding:0;list-style:none;display:grid}.money-bars li{grid-template-columns:minmax(120px,1.2fr) 2fr auto;align-items:center;gap:10px;font-size:13.5px;display:grid}.money-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.money-bar{background:var(--line);border-radius:6px;height:12px;overflow:hidden}.money-bar span{background:var(--accent);border-radius:6px;height:100%;display:block}.money-cents{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}@media (width<=640px){.money-bars li{grid-template-columns:1fr auto}.money-bar{grid-area:2/1/auto/-1}}.finish-dot{width:12px;height:12px;box-shadow:0 0 0 1px var(--line-strong);border-radius:50%;margin:0 5px -1px 2px;display:inline-block}.properties .wood-finish{flex-direction:column;align-items:stretch;gap:5px;margin:-6px 0 16px}.properties .wood-finish .segmented-4{min-width:0}.wood-list{gap:8px;margin:0 0 12px;padding:0;list-style:none;display:grid}.wood-row{border:1px solid var(--line);border-radius:var(--radius);background:#fff}.wood-row.is-now{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.wood-row-head{text-align:left;border-radius:var(--radius);background:0 0;border:0;grid-template-columns:40px minmax(0,1fr) auto 16px;align-items:center;gap:3px 10px;width:100%;padding:10px 12px;display:grid}.wood-row-head:hover{background:#fbf8f3}.wood-row-title{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.wood-name{font-size:15px;font-weight:700}.wood-now{letter-spacing:.06em;text-transform:uppercase;color:var(--accent-dark);font-size:10.5px;font-weight:800}.wood-cost{color:var(--ink-soft);white-space:nowrap;justify-items:end;gap:1px;font-size:13px;display:grid}.wood-fit{font-size:11.5px;font-weight:700}.wood-fit.is-ok{color:#1f7a3a}.wood-fit.is-over{color:#a5660f}.wood-summary{color:var(--ink-soft);grid-column:2/4;font-size:13px;line-height:1.35}.wood-chevron{color:var(--ink-faint);grid-area:1/4;place-items:center;transition:transform .15s;display:grid;transform:rotate(180deg)}.wood-chevron[data-open]{transform:none}.wood-body{justify-items:start;gap:10px;padding:2px 14px 14px 62px;display:grid}.wood-reasons{gap:7px;margin:0;padding:0;font-size:14px;line-height:1.4;list-style:none;display:grid}.wood-reasons li{grid-template-columns:18px 1fr;gap:6px;display:grid}.wood-mark{padding-top:2px}.wood-reasons .is-good .wood-mark{color:#1f7a3a}.wood-reasons .is-bad .wood-mark{color:var(--danger)}.wood-reasons .basis{vertical-align:1px;margin-left:6px}.wood-why{justify-items:start;gap:10px;display:grid}.wood-buying{border-top:1px dashed var(--line);gap:5px;width:100%;padding-top:8px;display:grid}.wood-buying-label{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);font-size:11.5px;font-weight:800}.wood-buying-label .muted{letter-spacing:0;text-transform:none;font-weight:600}.wood-reasons .is-note{color:var(--ink-soft)}.wood-reasons .is-note .wood-mark{color:var(--ink-faint);text-align:center;padding-top:0}.wood-compare .wood-why{gap:6px}.wood-compare .wood-buying{padding-top:5px}.wood-facts{color:var(--ink-soft);margin:0;font-size:13px}.wood-foot{margin:0}.wood-field{margin-bottom:16px}.wood-pick{text-align:left;border:1px solid var(--line-strong);border-radius:var(--radius);background:#fff;align-items:center;gap:10px;width:100%;padding:10px 12px;display:flex}.wood-pick:hover{border-color:var(--accent)}.wood-pick-text{flex:1;gap:3px;min-width:0;display:grid}.wood-pick-name{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.wood-pick-summary{color:var(--ink-soft);font-size:12.5px;line-height:1.35}.wood-pick-change{color:var(--accent-dark);font-size:13px;font-weight:700}.editor{grid-template-rows:auto minmax(0,1fr);height:100dvh;display:grid;overflow:hidden}.topbar{background:var(--ink);color:#f8f1e7;align-items:center;gap:8px;min-height:60px;padding:8px 12px;display:flex}.project-title{color:#fff;text-overflow:ellipsis;background:0 0;border:1px solid #0000;border-radius:8px;outline:none;flex:1;min-width:60px;max-width:420px;padding:8px 10px;font-size:17px;font-weight:700}.project-title:hover{border-color:#6d5f51}.project-title:focus{background:#ffffff14;border-color:#a9987f}.topbar-tools{align-items:center;gap:2px;margin-left:auto;display:flex}.topbar .btn-toggle{color:#cdbfae;background:0 0;border-color:#5a4d40;min-height:38px;margin:0 6px}.topbar .btn-toggle.is-on{color:#cfe3fd;background:#6aa9f52e;border-color:#4f7fbd}.btn-plan{min-height:44px;padding:0 18px;font-size:15.5px;box-shadow:0 2px 10px #d96a1d73}.editor-body{grid-template-columns:232px minmax(0,1fr) 304px;min-height:0;display:grid}.panel{background:var(--panel);min-height:0;padding:16px 14px 24px;overflow-y:auto}.library{border-right:1px solid var(--line)}.properties{border-left:1px solid var(--line)}.panel-title{margin-bottom:12px;font-size:16px;font-weight:750}.sheet-handle{display:none}.panel-hint{color:var(--ink-faint);margin:-6px 0 12px;font-size:12.5px}.panel-foot{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:10px;margin-top:18px;padding-top:16px;display:grid}.library-heading{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin:16px 0 8px;font-size:11.5px}.library-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.stock-tile{border:1px solid var(--line);border-radius:var(--radius);touch-action:pan-y;-webkit-user-select:none;user-select:none;background:#fdfcfa;flex-direction:column;align-items:center;gap:1px;min-height:76px;padding:9px 4px 8px;transition:border-color .12s,box-shadow .12s,transform 80ms;display:flex}.stock-tile:hover{border-color:var(--accent);box-shadow:0 2px 10px #d96a1d29}.stock-tile:active{transform:scale(.97)}.stock-end{margin-bottom:3px}.stock-name{font-size:15px;font-weight:750}.stock-size{color:var(--ink-faint);font-size:11.5px}.drag-ghost{z-index:90;pointer-events:none;background:var(--accent);color:#fff;box-shadow:var(--shadow);border-radius:999px;padding:8px 14px;font-weight:700;position:fixed;top:0;left:0}.select-with-swatch{position:relative}.select-with-swatch .swatch{pointer-events:none;border:1px solid #0000002e;border-radius:5px;width:20px;height:20px;margin-top:-10px;position:absolute;top:50%;left:10px}.select-with-swatch .input{padding-left:40px}.stepper{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.stepper .icon-btn{border-color:var(--line-strong)}.stepper-value{text-align:center;min-width:34px;font-size:20px;font-weight:750}.stepper-more{margin-left:auto}.dup-many{flex-wrap:wrap;gap:4px;margin-left:auto;display:flex}.dup-many .btn{padding:0 9px}.stepper+.hint{margin-top:8px}.segmented{border:1px solid var(--line-strong);border-radius:var(--radius);grid-template-columns:repeat(3,1fr);display:grid;overflow:hidden}.segmented button{color:var(--ink-soft);background:#fff;border:0;flex-direction:column;align-items:center;gap:2px;padding:7px 2px 6px;font-size:12.5px;font-weight:600;display:flex}.segmented button+button{border-left:1px solid var(--line-strong)}.segmented button:hover{background:#faf7f2}.segmented button.is-on{background:var(--select-soft);color:#1559b3}.sits-row{margin-top:10px}.sits-row>.btn,.mirror-row>.btn{margin-bottom:0}.icon-turned{display:inline-flex;transform:rotate(90deg)}.space-evenly .segmented button{padding:9px 2px}.space-evenly .space-now{margin:6px 0 10px}.space-evenly .space-note{margin:4px 0 12px}.gap-field{margin:0}.gap-row{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.gap-field .hint{margin:6px 0 0}.angle-field{color:var(--ink-soft);align-items:center;gap:4px;font-weight:700;display:flex}.fold{border-top:1px solid var(--line);margin-top:4px;padding-top:12px}.fold summary{cursor:pointer;color:var(--ink-soft);margin-bottom:12px;font-size:14px;font-weight:650}.fold .hint{margin-top:0}.fold .field-label{font-size:11.5px}.stat-list{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px;padding:4px 12px}.stat-list>div{justify-content:space-between;gap:10px;padding:9px 0;font-size:14px;display:flex}.stat-list>div+div{border-top:1px solid var(--line)}.stat-list span{color:var(--ink-soft)}.stat-list strong{text-align:right}.stat-list .hint{text-align:right;margin:-4px 0 8px}.tips{border-radius:var(--radius);background:var(--accent-soft);margin-top:20px;padding:14px;font-size:13.5px}.tips h3{margin-bottom:6px;font-size:13.5px}.tips ul{color:#5c4630;gap:5px;margin:0;padding-left:18px;display:grid}.workspace{background:#eef1f4;min-width:0;min-height:0;position:relative}.viewport{position:absolute;inset:0;overflow:hidden}.viewport-canvas{touch-action:none;outline:none;width:100%;height:100%;display:block}.viewport-overlay{pointer-events:none;position:absolute;inset:0;overflow:hidden}.dim-label{white-space:nowrap;border:1.5px solid var(--select);color:#0f4f9e;background:#fff;border-radius:999px;padding:2px 8px;font-size:13px;font-weight:750;display:none;position:absolute;top:0;left:0;box-shadow:0 1px 4px #0000002e}.snap-chip{white-space:nowrap;background:var(--guide);color:#fff;border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:700;display:none;position:absolute;top:0;left:0;box-shadow:0 2px 8px #ff2d8766}.workspace-top{pointer-events:none;justify-content:space-between;align-items:flex-start;gap:10px;display:flex;position:absolute;top:12px;left:12px;right:12px}.workspace-top>*{pointer-events:auto}.size-chips{flex-wrap:wrap;gap:6px;display:flex}.chip-info{border:1px solid var(--line);box-shadow:var(--shadow);background:#ffffffeb;border-radius:999px;padding:5px 12px;font-size:13px}.chip-info b{color:var(--ink-soft);margin-right:4px;font-weight:650}.chip-goal{border-style:dashed;border-color:#9aa8b6}.view-buttons{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fffffff2;flex:none;display:flex;overflow:hidden}.view-buttons button{min-width:50px;min-height:40px;color:var(--ink-soft);background:0 0;border:0;padding:0 10px;font-size:13.5px;font-weight:650}.view-buttons button+button{border-left:1px solid var(--line)}.view-buttons button:hover{background:#f6f3ee}.view-buttons button.is-on{background:var(--ink);color:#fff}.workspace-empty{text-align:center;pointer-events:none;color:var(--ink-soft);width:min(360px,80%);position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.workspace-empty h2{color:var(--ink);margin-bottom:6px;font-size:22px}.move-hint{z-index:4;background:var(--panel);border:1px solid var(--line-strong);width:min(420px,100% - 24px);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:12px;padding:10px 12px 10px 14px;font-size:14px;display:flex;position:absolute;top:96px;left:50%;transform:translate(-50%)}.move-hint p{flex:1;margin:0}.nudge-pad{z-index:6;background:var(--panel);border:1px solid var(--line-strong);border-radius:16px;align-items:center;gap:14px;padding:10px 12px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 26px #2b211840}.nudge-arrows{grid-template-rows:repeat(3,42px);grid-template-columns:repeat(3,48px);gap:3px;display:grid}.nudge-arrows button,.nudge-lift button{border:1px solid var(--line-strong);color:var(--ink);touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#fff;border-radius:10px;place-items:center;display:grid}.nudge-arrows button:active,.nudge-lift button:active{background:var(--accent-soft)}.nudge-away{grid-area:1/2}.nudge-left{grid-area:2/1}.nudge-left svg{transform:rotate(-90deg)}.nudge-right{grid-area:2/3}.nudge-right svg{transform:rotate(90deg)}.nudge-toward{grid-area:3/2}.nudge-toward svg{transform:rotate(180deg)}.nudge-group{flex-direction:column;align-self:stretch;align-items:center;gap:4px;display:flex}.nudge-caption{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);font-size:11px;font-weight:750}.nudge-lift{flex-direction:column;flex:1;justify-content:center;gap:6px;display:flex}.nudge-lift button{width:60px;height:50px;font-weight:700}.nudge-side{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.nudge-steps{flex-direction:column;gap:4px;display:flex}.nudge-steps .chip{min-width:62px;min-height:32px;padding:0 8px;font-size:13px}.move-hint .btn{flex:none}.action-bar{background:var(--ink);border-radius:14px;gap:2px;padding:5px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 26px #2b211859}.action-bar button{color:#f8f1e7;background:0 0;border:0;border-radius:10px;align-items:center;gap:7px;min-height:44px;padding:0 14px;font-weight:650;display:inline-flex}.action-bar button:hover{background:#ffffff21}.action-bar .danger{color:#ffb1a8}.workspace-tools{flex:none;align-items:flex-start;gap:6px;display:flex}.measure-toggle{border:1px solid var(--line);border-radius:var(--radius);min-height:40px;box-shadow:var(--shadow);color:var(--ink-soft);background:#fffffff2;flex:none;align-items:center;gap:6px;padding:0 12px;font-size:13.5px;font-weight:650;display:inline-flex}.measure-toggle:hover{background:#f6f3ee}.measure-toggle.is-on{background:var(--accent);border-color:var(--accent);color:#fff}.measure-label{white-space:nowrap;background:var(--accent);color:#fff;border-radius:999px;padding:2px 9px;font-size:13.5px;font-weight:800;display:none;position:absolute;top:0;left:0;box-shadow:0 1px 5px #00000040}.measure-card{border:1px solid var(--line);border-top:4px solid var(--accent);background:#fff;border-radius:14px;align-items:flex-end;gap:12px;width:min(460px,100% - 24px);padding:12px 14px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 26px #2b211840}.measure-body{flex:1;min-width:0}.measure-prompt{font-weight:700}.measure-big{color:var(--accent-dark);font-size:30px;font-weight:800;line-height:1.1}.measure-caption{color:var(--ink-soft);margin-bottom:6px;font-weight:600}.measure-lines{gap:2px;margin:0;padding:0;font-size:13.5px;list-style:none;display:grid}.measure-card .measure-next{margin:6px 0 0}.measure-buttons{flex-direction:column;flex:none;gap:6px;display:flex}.preset-heading{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin:4px 0 8px;font-size:12.5px}.preset-grid+.preset-heading{margin-top:18px}.design-card-wrap{display:flex;position:relative}.design-card-wrap .preset-card{flex:1}.design-art{place-items:center;height:60px;display:grid}.design-art svg{max-width:100%;max-height:60px}.design-delete{width:30px;height:30px;color:var(--ink-faint);position:absolute;top:4px;right:4px}.design-delete-ask{box-shadow:var(--shadow);background:#fff;border-radius:8px;padding:2px 6px;font-size:12.5px;position:absolute;top:6px;right:8px}.save-design-open{margin-top:4px}.save-design{border:1px solid var(--line);border-radius:var(--radius);margin-top:4px;padding:12px}.save-design .row-2>.btn{margin-bottom:0}.save-design .hint{margin:10px 0 0}.recipe-gone{margin:0 0 14px}.rules-list{border:1px solid var(--line);border-radius:var(--radius);margin:0 0 8px;padding:0;list-style:none;overflow:hidden}.rules-list li{background:var(--select-soft);align-items:center;gap:6px;padding:4px 4px 4px 10px;font-size:13.5px;font-weight:600;display:flex}.rules-list li+li{border-top:1px solid var(--line)}.rules-list li span{flex:1}.rules-list .icon-btn{flex:none;width:32px;height:32px}.rules-offer{border-radius:var(--radius);background:var(--accent-soft);color:#5c4630;margin:0 0 8px;padding:8px 10px;font-size:13px}.rules-pick .hint{margin:0 0 5px;display:block}.rules-suggest{gap:8px;margin-top:10px;display:grid}.rules-suggest .row-2>.btn{margin-bottom:0}.rules-none,.rules-hint{margin:8px 0 0}.chip-button{border:1px solid var(--line);color:var(--ink-soft);box-shadow:var(--shadow);background:#fffffff2;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:13px;font-weight:650;display:inline-flex}.chip-button:hover{background:#f6f3ee}.chip-button.is-on{background:var(--ink);border-color:var(--ink);color:#fff}.chip-hidden{background:#fff7ea;border-color:#f0c98f}.chip-hidden .link{font-size:13px}.parts-list{z-index:6;border:1px solid var(--line);background:#fff;border-radius:14px;flex-direction:column;width:min(320px,100% - 24px);max-height:calc(100% - 150px);display:flex;position:absolute;top:58px;left:12px;overflow:hidden;box-shadow:0 10px 30px #2b211838}.parts-head{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:6px 6px 6px 14px;display:flex}.parts-head .muted{font-size:13px}.parts-close{width:36px;height:36px;margin-left:auto}.parts-rows,.parts-rows ul{margin:0;padding:0;list-style:none}.parts-rows{flex:1;min-height:0;padding:4px 0;overflow-y:auto}.parts-row{align-items:center;gap:2px;padding-right:4px;display:flex}.parts-row.is-picked{background:var(--select-soft)}.parts-row.is-hidden .parts-name{opacity:.45}.parts-open{width:24px;height:30px;color:var(--ink-faint);background:0 0;border:0;flex:none;place-items:center;padding:0;display:inline-grid}.parts-open span{display:inline-flex;transform:rotate(180deg)}.parts-open span.turned{transform:rotate(90deg)}.parts-name{text-align:left;background:0 0;border:0;flex-direction:column;flex:1;align-items:flex-start;min-width:0;padding:5px 4px;font-size:14px;display:flex}.parts-name>span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.parts-detail{color:var(--ink-faint);font-size:12px}.parts-name:hover>span:first-child{color:var(--select)}.parts-eye{width:34px;height:34px;color:var(--ink-soft);background:0 0;border:0;border-radius:8px;flex:none;place-items:center;display:inline-grid}.parts-eye:hover{background:#7d695521}.parts-eye[aria-pressed=true]{color:var(--accent-dark)}.parts-foot{border-top:1px solid var(--line);margin:0;padding:8px 14px 10px}.parts-empty{margin:12px 14px}.select-box{border:1.5px dashed var(--select);background:#1f7aec14;border-radius:2px;display:none;position:absolute}.select-toggle.is-on{background:var(--select);border-color:var(--select)}.box-prompt{background:var(--ink);color:#f8f1e7;border-radius:14px;align-items:center;gap:12px;max-width:calc(100% - 24px);padding:8px 8px 8px 16px;font-weight:650;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 26px #2b211859}.in-group{margin:-4px 0 14px}.btn-group{margin-bottom:8px}.group-list{border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:0;list-style:none;overflow:hidden}.group-list li+li{border-top:1px solid var(--line)}.group-member{text-align:left;background:#fff;border:0;width:100%;padding:9px 12px;font-size:14px;font-weight:650;display:block}.group-member:hover{background:var(--select-soft)}.toast{left:50%;bottom:calc(84px + env(safe-area-inset-bottom));z-index:100;background:var(--ink);color:#fff;border-radius:12px;align-items:center;gap:14px;max-width:calc(100vw - 32px);padding:12px 18px;font-weight:600;animation:.18s ease-out toast-in;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #00000059}.toast-action{color:#ffc48f;white-space:nowrap;background:0 0;border:0;padding:4px 0;font-weight:750}.toast-action:hover{text-decoration:underline}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}.plan{z-index:60;background:var(--paper);position:fixed;inset:0;overflow-y:auto}.plan-bar{z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#f6f3eef0;justify-content:space-between;gap:10px;padding:10px clamp(12px,3vw,28px);display:flex;position:sticky;top:0}.plan-bar-actions{gap:8px;display:flex}.plan-page{max-width:980px;margin:0 auto;padding:26px clamp(14px,3vw,28px) 80px}.plan-title{margin-bottom:20px}.plan-title h1{letter-spacing:-.015em;font-size:30px}.plan-title p{color:var(--ink-soft)}.summary{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px;display:grid}.plan-nav{scrollbar-width:none;gap:8px;margin:-4px 0 18px;padding-bottom:2px;display:flex;overflow-x:auto}.plan-nav .chip{flex:none;padding:0 14px;font-size:14px}.plan-anchor{scroll-margin-top:76px}.stat{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;padding:14px 16px;display:flex}.stat-label{color:var(--ink-soft);font-size:12.5px;font-weight:650}.stat-value{letter-spacing:-.01em;font-size:24px;font-weight:780}.stat-note{color:var(--accent-dark);font-size:12px}.warnings{border-radius:var(--radius);background:#fff6dd;border:1px solid #ecd48a;gap:6px;margin-bottom:18px;padding:12px 16px;font-size:14px;display:grid}.plan-section{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;margin-bottom:18px;padding:20px clamp(12px,2.4vw,24px)}.plan-section h2{margin-bottom:12px;font-size:20px}.plan-section h3{margin:20px 0 10px;font-size:15.5px}.plan-section>.hint{margin:10px 0 0}.table{border-collapse:collapse;width:100%;font-size:14.5px}.table th{text-align:left;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--line-strong);padding:6px 10px;font-size:12px;font-weight:700}.table th .muted{text-transform:none;letter-spacing:0}.table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 10px}.table tr:last-child td{border-bottom:0}.table .num{text-align:right;white-space:nowrap}.letter{border:1px solid #2b211840;border-radius:7px;place-items:center;min-width:28px;height:28px;padding:0 6px;font-size:14px;font-weight:800;display:inline-grid}.tag{background:var(--accent-soft);color:var(--accent-dark);border-radius:999px;margin-left:8px;padding:1px 8px;font-size:12px;font-weight:700;display:inline-block}.price-input{color:var(--ink-soft);align-items:center;gap:4px;display:inline-flex}.notice{border-radius:var(--radius);margin:0 0 16px;padding:10px 14px;font-size:14px}.notice-warn{background:#fff6dd;border:1px solid #ecd48a}.home-hint{margin:10px 0 0}.cloud-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);justify-items:start;gap:8px;max-width:640px;margin:16px 0 0;padding:14px 16px;display:grid}.cloud-panel h3{margin:0;font-size:16px}.cloud-panel p{margin:0;font-size:14px}.cloud-panel.is-on{background:#f1faf3;border-color:#b9e0c4}.empty .cloud-panel.is-on{text-align:left;width:min(100%,520px);margin-top:18px}.cloud-actions{flex-wrap:wrap;align-items:center;gap:8px 14px;display:flex}.cloud-join{flex-wrap:wrap;gap:8px;display:flex}.cloud-join .input{letter-spacing:.08em;text-transform:uppercase;width:200px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.cloud-code-line{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.cloud-code{letter-spacing:.08em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:18px}.cloud-status{color:var(--ink-soft);font-size:13px}.cloud-status.is-trouble,.cloud-status.is-offline{color:#a5660f}.cloud-first{text-align:center;background:0 0;border:0;justify-items:center;margin-top:18px;padding:0}.home-hint svg{vertical-align:-2px}.price-input .input{text-align:right;width:92px;min-height:36px}.price-input .input.is-typical::placeholder{color:var(--ink-soft);opacity:1;font-style:italic}.typical{color:var(--ink-soft);vertical-align:1px;background:#efe9df;border-radius:999px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:650;display:inline-block}.typical-total{color:var(--ink-soft)}.phone-only,.plan-bar .short,.sheet-bar .short{display:none}.input-qty{text-align:right;width:58px;min-height:36px}.table-extras{margin-bottom:10px}.table-extras .input{min-height:36px}.cost-box{border-top:2px solid var(--line-strong);max-width:380px;margin:18px 0 0 auto;padding-top:10px}.cost-box>div{justify-content:space-between;padding:4px 0;display:flex}.cost-total{border-top:1px solid var(--line);margin-top:6px;font-size:19px;font-weight:800;padding-top:10px!important}.cost-box .hint{text-align:right;margin:6px 0 0}.review{border-left:5px solid var(--line-strong)}.review-bad{border-left-color:var(--danger)}.review-warn{border-left-color:#d79b1d}.review-good{border-left-color:#2f8f4e}.verdict{margin-bottom:14px;font-size:16.5px;font-weight:650}.finding{border:1px solid var(--line);border-radius:var(--radius);break-inside:avoid;margin-bottom:8px;overflow:hidden}.finding-head{text-align:left;background:#fdfcfa;border:0;align-items:center;gap:10px;width:100%;padding:11px 14px;font-size:15px;font-weight:650;display:flex}.finding-head:hover{background:#f7f3ec}.pip{border-radius:50%;flex:none;width:10px;height:10px}.pip-problem{background:var(--danger)}.pip-watch{background:#d79b1d}.finding-title{flex:1}.basis{letter-spacing:.03em;text-transform:uppercase;border:1px solid;border-radius:999px;flex:none;padding:3px 8px;font-size:11px;font-weight:700}.basis-calculated{color:#1559b3;background:var(--select-soft);border-color:#b9d4fa}.basis-shop-wisdom{color:#7a5a17;background:#fff6dd;border-color:#ecd48a}.finding-body{padding:0 14px 14px;font-size:14.5px;display:none}.finding-body[data-open]{display:block}.finding-body ul{gap:7px;margin:0;padding-left:20px;display:grid}.fix-label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin:12px 0 6px;font-size:13px;font-weight:700}.fixes li{flex-wrap:wrap;align-items:center;gap:6px 12px;display:flex}.fixes li>span{flex:260px}.btn-fix{background:var(--accent-soft);color:var(--accent-dark);border-color:#f0c9a3;flex:none;gap:6px}.btn-fix:hover:not(:disabled){border-color:var(--accent);background:#fbe3cc}.passed{color:#2f6b45;gap:6px;margin:14px 0 0;padding:0;font-size:14px;list-style:none;display:grid}.passed li:before{content:"✓ ";font-weight:800}.tools{gap:5px;margin:0 0 8px;padding-left:20px;font-size:14.5px;display:grid}.stage{margin-top:22px}.step{border-top:1px solid var(--line);break-inside:avoid;padding:14px 0 2px}.step-head{align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.step-number{background:var(--ink);color:#fff;border-radius:50%;flex:none;align-self:center;place-items:center;width:26px;height:26px;font-size:14px;font-weight:800;display:grid}.step-head h4{flex:1;margin:0;font-size:16.5px}.step-time{color:var(--ink-faint);white-space:nowrap;flex:none;font-size:13px}.step p{margin-bottom:9px;font-size:14.5px;line-height:1.55}.step-picture{border:1px solid var(--line);break-inside:avoid;background:#fbf9f6;border-radius:12px;margin:4px 0 14px;padding:14px 18px}.step-picture svg{width:100%;height:auto;max-height:300px;margin:0 auto;display:block}.step-picture-tall svg{width:auto;max-width:100%;max-height:360px}.exploded{border:1px solid var(--line);break-inside:avoid;background:#fbf9f6;border-radius:12px;margin:2px 0 10px;padding:16px 20px}.exploded svg{width:100%;height:auto;max-height:560px;margin:0 auto;display:block}.step-check{background:var(--select-soft);border-radius:8px;padding:9px 12px}.step-tip{color:#5c4630;background:#f7f3ec;border-radius:8px;padding:9px 12px}.auto-hardware{gap:5px;margin:0 0 12px;padding:0;font-size:14.5px;list-style:none;display:grid}.auto-hardware b{min-width:34px;display:inline-block}.shop-settings{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:start;gap:4px 18px;display:grid}.shop-settings>.field:first-child{grid-column:1/-1}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1.5px solid var(--line-strong);background:#fff;border-radius:999px;min-width:58px;min-height:42px;font-weight:700}.chip.is-on{background:var(--ink);border-color:var(--ink);color:#fff}.waste-line{border-radius:var(--radius);background:#f7f4ee;flex-wrap:wrap;gap:8px 28px;margin:4px 0 6px;padding:10px 14px;font-size:14px;display:flex}.waste-line span{color:var(--ink-soft);margin-right:8px}.diagram-group{break-inside:avoid;margin-top:18px}.board-row{break-inside:avoid;margin-bottom:12px}.board-caption{color:var(--ink-soft);justify-content:space-between;margin-bottom:4px;font-size:13px;display:flex}.board-caption strong{color:var(--ink)}.board-bar{background:#4a3420;border:1.5px solid #4a3420;border-radius:5px;gap:2px;height:44px;display:flex;overflow:hidden}.board-piece{white-space:nowrap;justify-content:center;align-items:center;gap:6px;min-width:0;font-size:13px;display:flex;overflow:hidden}.board-piece b{font-weight:800}.board-waste{background:repeating-linear-gradient(45deg,#efe9df 0 6px,#ddd3c4 6px 8px);min-width:0}.sheet-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;display:grid}.sheet{break-inside:avoid;margin:0}.sheet svg{width:100%;height:auto;display:block}.sheet figcaption{color:var(--ink-soft);margin-top:4px;font-size:13px}@media (width<=1100px){.editor-body{grid-template-columns:196px minmax(0,1fr) 272px}.btn-plan{padding:0 12px}}@media (width<=940px){.editor-body{grid-template-columns:128px minmax(0,1fr) 236px}.panel{padding:12px 10px 20px}.library .panel-hint{display:none}.library-grid{grid-template-columns:1fr;gap:6px}.stock-tile{min-height:58px;padding:6px 4px}.library-heading{margin:12px 0 6px}.topbar{gap:4px;min-height:54px;padding:6px 8px}.topbar .btn-toggle{gap:0;margin:0 2px;padding:0 10px;font-size:0}.project-title{font-size:15.5px}.field{margin-bottom:11px}.field-big .input{min-height:48px;font-size:21px}.segmented button{font-size:11.5px}.btn-block{gap:5px;font-size:13.5px}.chip-info{padding:4px 10px;font-size:12px}.view-buttons button{min-width:42px;min-height:36px;padding:0 8px;font-size:12.5px}.measure-toggle{min-height:36px;padding:0 9px;font-size:12.5px}.parts-list{top:52px;left:8px}.chip-button{padding:4px 10px;font-size:12px}.action-bar .label{display:none}.action-bar button{padding:0 13px}.workspace-top{top:8px;left:8px;right:8px}.summary{grid-template-columns:1fr 1fr}}@media (width<=640px){.editor-body{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);position:relative}.library{border-right:0;border-bottom:1px solid var(--line);align-items:stretch;gap:8px;padding:8px 10px;display:flex;overflow:auto hidden}.library .panel-title,.library .panel-hint,.library-heading{display:none}.library section,.library-grid{display:contents}.stock-tile{touch-action:pan-x;flex:none;min-width:84px}.properties{z-index:20;border-left:0;border-top:1px solid var(--line-strong);max-height:min(48vh,520px);padding:0 14px calc(20px + env(safe-area-inset-bottom));transform:translateY(calc(100% - var(--peek,54px) - env(safe-area-inset-bottom)));border-radius:18px 18px 0 0;flex-direction:column;transition:transform .22s ease-out;display:flex;position:absolute;bottom:0;left:0;right:0;overflow:hidden;box-shadow:0 -8px 30px #2b21182e}.properties[data-open]{transform:translateY(0)}.sheet-handle{border:0;border-bottom:1px solid var(--line);background:var(--panel);text-align:left;flex:none;align-items:center;gap:10px;min-height:54px;margin:0 -14px;padding:0 16px;font-size:15px;font-weight:700;display:flex;position:sticky;top:0}.sheet-handle:before{content:"";background:var(--line-strong);border-radius:2px;width:40px;height:4px;margin-left:-20px;position:absolute;top:7px;left:50%}.sheet-handle .sheet-sub{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:500;overflow:hidden}.sheet-handle svg{flex:none;transition:transform .22s}.properties[data-open] .sheet-handle svg{transform:rotate(180deg)}.sheet-body{min-height:0;padding-top:14px;overflow-y:auto}.topbar{gap:2px;padding:6px}.topbar .long{display:none}.topbar .btn-quiet{padding:0 10px}.topbar .btn-toggle,.topbar-tools .icon-btn[title^=Save]{display:none}.topbar-tools{margin-left:0}.btn-plan{padding:0 12px;font-size:14px}.project-title{flex:40px;width:40px;min-width:40px;padding:8px 6px;font-size:15px}.action-bar{bottom:calc(66px + env(safe-area-inset-bottom))}.action-bar button{min-height:46px;padding:0 12px}.editor-body:has(.properties[data-open]) .action-bar{display:none}.workspace-top{flex-direction:column;align-items:stretch;gap:6px}.workspace-tools{align-self:flex-end}.chip-info{font-size:11.5px}.measure-card,.box-prompt{bottom:calc(66px + env(safe-area-inset-bottom))}.parts-list{width:auto;max-height:calc(100% - 180px);top:104px;left:8px;right:8px}.workspace-tools .long{display:none}.measure-big{font-size:26px}.summary{grid-template-columns:1fr 1fr}.preset-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.preset-card{padding:10px 6px 12px}.dialog{border-radius:14px;padding:16px}.dialog-head{margin:-16px -16px 12px;padding:16px 16px 10px;top:-16px}.table-scroll{margin:0 -12px;padding:0 12px;overflow-x:auto}.plan-page{padding-bottom:calc(60px + env(safe-area-inset-bottom))}.plan-bar{padding:8px 10px}.plan-bar .btn{padding:0 12px}}@media (pointer:coarse){.btn,.icon-btn,.input,.chip,.stock-tile{min-height:44px}.view-buttons button,.measure-toggle{min-height:42px}}@media print{@page{margin:14mm}body{background:#fff}.editor>:not(.plan),.toast,.no-print{display:none!important}.editor{height:auto;display:block;overflow:visible}.plan{background:#fff;position:static;overflow:visible}.plan-page{max-width:none;padding:0}.plan-section,.stat{box-shadow:none;border-color:#bbb}.plan-section{break-inside:auto;border:0;border-top:1px solid #bbb;border-radius:0;padding:12px 0}.price-input .input,.input-qty,.table-extras .input{background:0 0;border:0;width:auto;max-width:120px;min-height:0;padding:0}.finding-body{display:block!important}.finding-head{background:0 0}.board-piece,.board-waste,.letter,.sheet rect{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.btn-start{margin:2px 0 8px}.shop{z-index:70;background:var(--paper);grid-template-rows:auto auto minmax(0,1fr) auto;display:grid;position:fixed;inset:0}.shop-top{background:var(--ink);color:#f8f1e7;padding:calc(8px + env(safe-area-inset-top)) 12px 8px;align-items:center;gap:10px;display:flex}.shop-top .icon-btn{color:#f8f1e7}.shop-where{flex:1;font-size:16px}.shop-where span{color:#cdbfae}.shop-awake{color:#a8d5b5;white-space:nowrap;font-size:12.5px}.shop-awake:before{content:"●";color:#5fcf85;margin-right:6px}.shop-dots{background:var(--panel);border-bottom:1px solid var(--line);gap:8px;padding:10px 14px;display:flex;overflow-x:auto}.shop-dot{border:2px solid var(--line-strong);width:40px;height:40px;color:var(--ink-soft);background:#fff;border-radius:50%;flex:none;font-size:15px;font-weight:800}.shop-dot.is-done{color:#fff;background:#2f8f4e;border-color:#2f8f4e}.shop-dot.is-here{border-color:var(--accent);color:var(--ink);box-shadow:0 0 0 4px #d96a1d38}.shop-body{touch-action:pan-y;padding:18px max(16px,50vw - 390px) 28px;overflow-y:auto}.shop-stage{letter-spacing:.08em;text-transform:uppercase;color:var(--accent-dark);margin:0;font-size:13px;font-weight:800}.shop-title{letter-spacing:-.01em;margin:4px 0 16px;font-size:clamp(25px,6vw,34px);line-height:1.18}.shop-picture{border:1px solid var(--line);background:#fff;border-radius:16px;margin:0 0 18px;padding:12px}.shop-picture svg{width:100%;height:auto;max-height:42vh;margin:0 auto;display:block}.shop-body>p,.shop-finished>p{margin:0 0 14px;font-size:18px;line-height:1.6}.shop-callout{padding:12px 16px!important;font-size:17px!important}.shop-need{margin:0 0 18px}.shop-need h3,.shop-saw h3{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 8px;font-size:13px;font-weight:800}.shop-chips{flex-wrap:wrap;gap:8px;display:flex}.shop-chip{border:1.5px solid var(--line-strong);background:#fff;border-radius:999px;align-items:center;gap:8px;padding:7px 14px 7px 8px;font-size:16.5px;font-weight:650;display:inline-flex}.shop-chip:not(:has(.letter)){padding-left:14px}.shop-saw{margin:0 0 20px}.shop-saw h3 span{float:right;text-transform:none;letter-spacing:0;color:var(--accent-dark);font-weight:700}.shop-saw ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.saw-tick{text-align:left;border:1.5px solid var(--line-strong);background:#fff;border-radius:14px;align-items:flex-start;gap:14px;width:100%;min-height:64px;padding:12px 14px;display:flex}.saw-tick:hover{border-color:var(--accent)}.is-done .saw-tick{background:#eef8f1;border-color:#9fd3b1}.is-done .saw-what b{color:#2f6b45}.saw-box{border:2px solid var(--line-strong);background:#fff;border-radius:9px;flex:none;place-items:center;width:34px;height:34px;margin-top:1px;font-size:14px;font-weight:800;display:grid}.is-done .saw-box{color:#fff;background:#2f8f4e;border-color:#2f8f4e;font-size:18px}.saw-what{flex-direction:column;gap:6px;min-width:0;font-size:16px;display:flex}.saw-cuts{flex-wrap:wrap;gap:6px 12px;display:flex}.saw-cut{align-items:center;gap:6px;font-weight:650;display:inline-flex}.saw-cut .letter{min-width:24px;height:24px;font-size:12.5px}.saw-left{color:var(--ink-faint);font-size:14px}.shop-hint{color:var(--ink-faint);margin:8px 0 0!important;font-size:14px!important}.shop-finished-actions{flex-wrap:wrap;gap:10px;display:flex}.shop-foot{padding:10px 14px calc(12px + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,2.2fr);gap:10px;display:grid}.shop-foot .btn{border-radius:14px;min-height:60px;font-size:18px}@media (width<=640px){.plan-bar .long,.sheet-bar .long{display:none}.plan-bar .btn{padding:0 12px}.plan-bar .short,.sheet-bar .short{display:inline}.plan-bar .btn-stack,.sheet-bar .btn-stack{flex-direction:column;gap:1px;min-width:52px;padding:3px 8px;font-size:11.5px;line-height:1.1}.plan-bar .btn-primary{gap:6px}.phone-only{display:inline}.wide-only{display:none}.wood-body{padding:2px 12px 12px}.wood-row-head{grid-template-columns:34px minmax(0,1fr) auto 14px;column-gap:8px;padding:9px 10px}.wood-row-head .wood-swatch{width:34px;height:24px}.wood-summary{grid-column:1/4}.nudge-pad{bottom:calc(66px + env(safe-area-inset-bottom));gap:10px;padding:8px 10px}.compare-bar{bottom:calc(66px + env(safe-area-inset-bottom))}.price-input .input{width:70px}.typical-total .typical{width:fit-content;margin:2px 0 0 auto;display:block}}@media print{.shop{display:none!important}}.tools-check{border-left:5px solid var(--line-strong)}.tools-ok{border-left-color:#2f8f4e}.tools-missing{border-left-color:#d79b1d}.needs{gap:4px;margin:0 0 16px;padding:0;list-style:none;display:grid}.need{border-top:1px solid var(--line);gap:12px;padding:10px 0;display:flex}.need:first-child{border-top:0}.need-mark{width:26px;height:26px;color:var(--ink-soft);background:#efe9df;border-radius:50%;flex:none;place-items:center;margin-top:1px;font-size:14px;font-weight:800;display:grid}.need-have .need-mark{color:#fff;background:#2f8f4e}.need-missing .need-mark{color:#fff;background:#d79b1d}.need-body{flex:1;min-width:0}.need-what{margin:0 0 2px;font-size:15px}.need-why{color:var(--ink-soft);font-size:14px}.need-tool{color:var(--ink-soft);margin:0;font-size:14px}.need-missing .need-tool{color:#8a5a07;font-weight:600}.need .fixes{gap:7px;margin:8px 0 0;padding-left:18px;font-size:14px;display:grid}.joinery{margin:4px 0 14px}.joint-groups{gap:0;margin:0;padding:0;list-style:none;display:grid}.joint-group{border-top:1px solid var(--line);padding:12px 0}.joint-group:first-child{border-top:0}.joint-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;display:flex}.joint-letters{gap:4px;display:inline-flex}.joint-letters .letter{min-width:24px;height:24px;padding:0 5px;font-size:12.5px}.joint-title{font-size:15px;font-weight:700}.joint-count{color:var(--ink-faint);font-size:13.5px}.joint-pick{margin-bottom:6px}.joint-select{width:100%;max-width:340px;min-height:40px;font-weight:600}.joint-about{color:var(--ink-soft);margin:0;font-size:14px}.joint-note{color:var(--accent-dark);margin:4px 0 0;font-size:13.5px;font-weight:600}.door-picks{flex-wrap:wrap;gap:8px;display:flex}.door-picks .joint-select{flex:200px;width:auto}.door-field .door-row{grid-template-columns:7.5em 1fr;align-items:center;gap:8px;margin:6px 0;font-size:14px;display:grid}.door-field .hint{margin:4px 0 8px}.door-adrift{color:#8a5a07;font-weight:600}.print-only{display:none}@media print{.print-only{display:inline}}.segmented-2{grid-template-columns:1fr 1fr}.segmented-4{grid-template-columns:repeat(4,1fr)}.segmented-4 button{padding:9px 2px;font-size:13px}.ends-row,.ends-angle{margin-top:8px}.ends-angle .field-label{margin:0 6px 0 0}.ends-angle .input{width:72px}.ends-flip{margin-top:8px}.ends-hint{margin:6px 0 0}.cut-note{color:var(--accent-dark);margin-top:2px;font-size:12.5px;font-weight:600;display:block}.segmented-2 button{gap:1px;padding:9px 8px;font-size:14px}.segmented-2 button small{color:var(--ink-faint);font-size:12px;font-weight:500}.my-tools{border-top:1px solid var(--line);padding-top:12px}.my-tools summary{cursor:pointer;font-size:15px;font-weight:700}.my-tools .hint{margin:6px 0 10px}.my-tools-groups{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:6px 22px;margin-bottom:8px;display:grid}.my-tools fieldset{border:0;gap:8px;margin:0;padding:0;display:grid}.my-tools legend{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:4px;padding:0;font-size:12px;font-weight:800}.shop-chip-tool{background:#f7f3ec}.home-header,.topbar,.plan-bar,.sheet-bar{border-top:env(safe-area-inset-top) solid var(--ink)}.home{padding-bottom:env(safe-area-inset-bottom)}@media (width<=420px){.plan-bar{gap:6px;padding-left:8px;padding-right:8px}.plan-bar-actions{gap:4px}.plan-bar .btn-stack{min-width:46px;padding:3px 6px}.plan-bar .btn-primary{padding:0 10px}}.kept-list{max-width:640px;margin:14px 0 0;font-size:14px}.kept-list summary{cursor:pointer;color:var(--ink-soft);padding:4px 0;font-weight:650}.kept-list .hint{margin:4px 0 8px}.kept-list ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.kept-list li{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.crash{text-align:center;background:var(--paper);place-content:center;justify-items:center;gap:12px;min-height:100dvh;padding:24px;display:grid}.crash h1{margin:0;font-size:24px}.crash p{max-width:380px;color:var(--ink-soft);margin:0}.crash-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:6px;display:flex}.home-footer{padding:24px 16px calc(24px + env(safe-area-inset-bottom));border-top:1px solid var(--line);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 16px;margin-top:24px;font-size:13.5px;display:flex}.home-footer a{color:var(--ink-soft)}.help-steps{gap:8px;margin:0 0 12px;padding-left:20px;font-size:14.5px;line-height:1.45;display:grid}.wood-settings{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);margin:0 0 12px;padding:0 12px}.wood-settings>summary{cursor:pointer;color:var(--ink-soft);justify-content:space-between;align-items:center;gap:10px;padding:10px 0;font-size:14px;list-style:none;display:flex}.wood-settings>summary::-webkit-details-marker{display:none}.wood-settings[open]>summary{border-bottom:1px solid var(--line);margin-bottom:12px}.wood-settings[open]>summary .link{visibility:hidden}.wood-settings .wood-tools{margin-bottom:12px}.pro-card{max-width:420px}.pro-why{margin:0 0 10px;font-size:15.5px;line-height:1.45}.pro-list{gap:6px;margin:0 0 10px;padding-left:20px;font-size:14.5px;line-height:1.4;display:grid}.pro-actions{justify-items:center;gap:10px;margin-top:6px;display:grid}.pro-actions .btn{width:100%}.step-basics{margin:6px 0 10px}.step-basics summary{cursor:pointer;color:var(--accent-dark);font-size:14px;font-weight:600}.step-basics p{color:var(--ink-soft)}
