.visualizer-intro { display:grid;grid-template-columns:1fr 1fr;gap:12px 60px;background:#efe4d9 }
.visualizer-intro h1 { grid-row:2/4;font-size:clamp(45px,5vw,74px) }
.visualizer-intro .eyebrow { grid-column:1/-1;margin:0 }
.visualizer-intro p:not(.eyebrow) { max-width:58ch }
.visualizer-note { font-size:12px;line-height:1.7;color:var(--muted) }
.visualizer-workspace { display:grid;gap:42px;max-width:1320px;margin:auto }
.visualizer-step { min-width:0;padding-bottom:35px;border-bottom:1px solid var(--line) }
.visualizer-step h2 { font-size:clamp(30px,4vw,45px) }
.visualizer-workspace label { display:grid;gap:8px;font-size:14px }
.visualizer-workspace input:not([type=checkbox]),.visualizer-workspace select,.visualizer-workspace textarea { min-width:0;width:100%;font:inherit;padding:12px;border:1px solid var(--line);background:var(--paper);color:var(--ink) }
.visualizer-workspace input:focus-visible,.visualizer-workspace select:focus-visible,.visualizer-workspace textarea:focus-visible,.visualizer-door:focus-visible { outline:3px solid var(--accent);outline-offset:3px }
.upload-label { max-width:450px }
#photo-status,#opening-status,#door-count,#chosen-door { font-size:13px }
.space-stage { position:relative;max-width:800px;line-height:0;margin-top:20px;background:#eee3d8 }
.space-stage img { display:block;width:100%;object-fit:contain }
#placement-preview { position:absolute;inset:0;width:100%;height:100%;pointer-events:none }
.opening-corner { position:absolute;transform:translate(-50%,-50%);width:40px;height:40px;border-radius:50%;border:3px solid white;background:var(--accent);color:white;font:600 15px/1 sans-serif;box-shadow:0 2px 10px #0005;cursor:move;touch-action:none;z-index:2 }
.opening-corner[aria-pressed=true] { outline:3px solid var(--ink);outline-offset:2px }
.opening-corner:focus-visible { outline:4px solid #1464ad;outline-offset:3px }
.corner-select { display:flex;flex-wrap:wrap;gap:8px;margin:24px 0 12px }
.corner-select button { padding:10px 12px;border:1px solid var(--line);background:var(--paper);color:var(--ink);font:inherit;font-size:12px;cursor:pointer }
.corner-select button[aria-pressed=true] { background:var(--accent);border-color:var(--accent);color:white }
#reset-opening,#adjust-placement { background:none;border:0;padding:8px 0;cursor:pointer }
.visualizer-filters { display:grid;grid-template-columns:1fr 2fr;gap:20px;margin-top:24px;max-width:800px }
.visualizer-door-grid { display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px }
.visualizer-door { display:flex;flex-direction:column;align-items:start;min-width:0;text-align:left;padding:10px;background:#fffaf5;border:1px solid var(--line);color:var(--ink);cursor:pointer }
.visualizer-door[aria-pressed=true] { outline:3px solid var(--accent);outline-offset:-3px }
.visualizer-door img { display:block;width:100%;height:210px;object-fit:contain;background:white }
.visualizer-door strong { margin-top:10px;font-size:13px;overflow-wrap:anywhere }
.visualizer-door small { font-size:11px;margin-top:4px }
#doors-more { margin-top:20px;background:none;border:0;padding:10px 0;cursor:pointer }
.visualizer-request { display:grid;grid-template-columns:1fr 1fr;gap:50px }
.visualizer-contact { display:grid;gap:18px }
.visualizer-contact .visualizer-consent { grid-template-columns:20px 1fr;align-items:start;font-size:13px;line-height:1.6 }
.visualizer-consent input { width:18px;height:18px;margin-top:3px }
#visualizer-availability { border-left:3px solid var(--accent);padding:12px 16px;background:#efe4d9 }
#visualizer-status { margin:0;font-size:13px;line-height:1.6 }
#request-visualization { justify-self:start }
#request-visualization:disabled { opacity:.5;cursor:not-allowed }
#visualizer-result img { display:block;max-height:650px;max-width:100%;margin:20px 0 }
#visualizer [hidden] { display:none }
@media(max-width:900px) { .visualizer-door-grid { grid-template-columns:repeat(4,minmax(0,1fr)) } }
@media(max-width:650px) { .visualizer-intro,.visualizer-request { grid-template-columns:1fr;gap:16px }.visualizer-intro h1 { grid-row:auto }.visualizer-filters { grid-template-columns:1fr }.visualizer-door-grid { grid-template-columns:repeat(2,minmax(0,1fr)) }.visualizer-door img { height:230px }.visualizer-workspace { gap:25px }.visualizer-request { gap:24px } }
