:root { --ink:#25231f; --muted:#6f6a61; --paper:#f5f2eb; --card:#fff; --line:#ded8cc; --accent:#9c4c31; --wood:#593b2c; }
* { box-sizing:border-box; }
.sr-only { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:"DM Sans",sans-serif; }
.quote-shell { max-width:1240px; margin:auto; padding:56px 28px 90px; }
.hero { max-width:740px; margin-bottom:38px; }
.eyebrow { margin:0 0 10px; color:var(--accent); font-size:.74rem; font-weight:700; letter-spacing:.13em; text-transform:uppercase; }
h1,h2 { font-family:"Libre Caslon Display",serif; font-weight:400; }
h1 { margin:0 0 12px; font-size:clamp(2.8rem,7vw,5.4rem); line-height:.95; }
.hero>p:last-child { color:var(--muted); font-size:1.1rem; }
.builder-grid { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(320px,.85fr); gap:28px; align-items:start; }
.builder { display:grid; gap:18px; }
.panel,.sticky { background:var(--card); border:1px solid var(--line); border-radius:18px; box-shadow:0 8px 30px rgba(43,36,26,.05); }
.panel { padding:28px; }
.step-heading { display:flex; gap:14px; margin-bottom:24px; align-items:flex-start; }
.step-heading>span { flex:0 0 31px; height:31px; display:grid; place-items:center; background:var(--ink); color:#fff; border-radius:50%; font-size:.82rem; }
.step-heading h2 { margin:-3px 0 4px; font-size:1.75rem; }
.step-heading p,.microcopy,.submit-note,.preview-note { margin:0; color:var(--muted); font-size:.85rem; }
.field-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
label,.field-title,legend { display:block; font-size:.83rem; font-weight:650; }
select,input,textarea { width:100%; margin-top:7px; border:1px solid #cfc7ba; border-radius:9px; background:#fff; color:var(--ink); padding:12px; font:inherit; }
select:focus,input:focus,textarea:focus { outline:2px solid rgba(156,76,49,.25); border-color:var(--accent); }
textarea { resize:vertical; }
.microcopy { margin-top:14px; }
.input-note { display:block; margin-top:7px; color:var(--muted); font-size:.75rem; font-weight:400; line-height:1.35; }
.validation { margin:12px 0 0; padding:10px 12px; border-radius:8px; color:#7b291d; background:#f9e8e3; font-size:.8rem; font-weight:650; }
fieldset { border:0; padding:0; margin:20px 0 0; }
.choice-row,.option-cards { display:flex; flex-wrap:wrap; gap:10px; }
.choice-row legend { margin-bottom:8px; }
.choice-row label input,.option-cards input,.base-card input,.swatches input { position:absolute; opacity:0; pointer-events:none; }
.choice-row label span,.option-cards label span { display:block; border:1px solid var(--line); border-radius:10px; padding:11px 15px; cursor:pointer; }
.choice-row input:checked+span,.option-cards input:checked+span { border-color:var(--ink); box-shadow:inset 0 0 0 1px var(--ink); background:#f7f2ea; }
.conditional { margin-top:22px; }
.field-title { margin:0 0 10px; }
.swatches { display:flex; flex-wrap:wrap; gap:10px; }
.swatch { width:42px; height:42px; border:3px solid #fff; border-radius:50%; box-shadow:0 0 0 1px var(--line); cursor:pointer; background:var(--swatch); }
.swatch:has(input:checked) { box-shadow:0 0 0 2px var(--ink); }
.finish-cards label,.edge-cards label { flex:1 1 180px; }
.finish-cards span,.edge-cards span { min-height:80px; }
.finish-cards strong,.finish-cards small,.edge-cards strong,.edge-cards small { display:block; }
.finish-cards small,.edge-cards small { margin-top:6px; color:var(--muted); font-weight:400; line-height:1.35; }
.edge-cards { margin-top:20px; }
.edge-cards legend { width:100%; margin-bottom:8px; }
.base-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; max-height:610px; overflow:auto; padding:2px; }
.base-card { position:relative; border:1px solid var(--line); border-radius:12px; overflow:hidden; cursor:pointer; background:#fff; }
.base-card:has(input:checked) { border-color:var(--ink); box-shadow:0 0 0 1px var(--ink); }
.base-card img,.base-placeholder { width:100%; aspect-ratio:1.25; object-fit:contain; display:grid; place-items:center; background:#f7f5f0; color:var(--muted); }
.base-card .copy { padding:10px; }
.base-card strong,.base-card small { display:block; }
.base-card strong { font-size:.82rem; line-height:1.25; }
.base-card small { margin-top:4px; color:var(--muted); font-size:.72rem; font-weight:400; }
.base-price { color:var(--accent)!important; font-weight:700!important; }
.submit { width:100%; margin-top:18px; border:0; border-radius:9px; background:var(--ink); color:white; padding:15px 20px; font:700 .92rem "DM Sans",sans-serif; cursor:pointer; }
.submit:hover { background:var(--accent); }
.submit-note { margin-top:10px; }
.sticky { position:sticky; top:20px; padding:20px; }
.preview { position:relative; height:320px; overflow:hidden; display:flex; flex-direction:column; align-items:center; justify-content:center; background:linear-gradient(#f5f3ed 0 75%,#e4ded2 75%); border-radius:12px; }
.base-model { position:absolute; z-index:1; inset:0; width:100%; height:100%; background:transparent; --poster-color:transparent; }
.base-model[hidden] { display:none; }
.preview.no-model .base-model { display:none!important; }
.preview-unavailable { max-width:220px; margin:0; color:var(--muted); font-size:.85rem; text-align:center; }
.preview-note { margin:10px 3px 20px; line-height:1.4; }
.estimate-card { border-top:1px solid var(--line); padding-top:20px; }
.estimate { font-family:"Libre Caslon Display",serif; font-size:2.5rem; line-height:1; }
#estimate-note { color:var(--muted); font-size:.82rem; line-height:1.4; }
dl { display:grid; grid-template-columns:1fr auto; gap:7px 16px; margin:17px 0 0; font-size:.79rem; }
dt { color:var(--muted); } dd { margin:0; font-weight:650; text-align:right; }
.disclaimer { margin-top:19px; border-radius:10px; background:#efeae0; padding:14px; color:var(--muted); font-size:.74rem; line-height:1.45; }
.disclaimer strong { color:var(--ink); }
@media(max-width:900px){.builder-grid{grid-template-columns:1fr}.summary{grid-row:1}.sticky{position:static}.preview{height:280px}.base-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.quote-shell{padding:35px 14px 60px}.panel{padding:20px}.field-grid{grid-template-columns:1fr}.base-grid{grid-template-columns:1fr 1fr}.sticky{padding:14px}.estimate{font-size:2.1rem}}
