.room-step{font-variant-numeric:tabular-nums;grid-template-columns:minmax(0,1fr) 352px;gap:8px;height:100%;min-height:0;display:grid}@media (width<=899px){.room-step{grid-template-rows:minmax(260px,42dvh) minmax(0,1fr);grid-template-columns:minmax(0,1fr)}}.room-canvas{background:var(--well);border-radius:10px;min-width:0;min-height:0;position:relative;overflow:hidden}.canvas{position:absolute;inset:0}.canvas svg{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%}.canvas-fit{border:1px solid var(--control);background:var(--surface);min-width:44px;color:var(--text);border-radius:8px;position:absolute;bottom:12px;left:12px}.canvas-empty{color:var(--muted);margin:0;position:absolute;inset:72px 16px auto}.view-3d{position:absolute;inset:64px 0 0}.view-3d p{color:var(--muted);margin:16px}.segments{z-index:2;flex-wrap:wrap;gap:8px;display:flex;position:absolute;top:12px;left:12px;right:12px}.segments .spacer{flex:1}.segments button,.control,.room-step .row button{border:1px solid var(--control);background:var(--surface);min-width:44px;min-height:44px;color:var(--text);border-radius:8px;padding:0 14px}.segments button.chip{min-width:44px;padding:0}.segments button[aria-pressed=true],.control[aria-pressed=true]{background:var(--active);border-color:var(--accent);font-weight:600}.segments .add{align-items:center;gap:6px;font-weight:600;display:inline-flex}.add-menu{z-index:3;border:1px solid var(--border);background:var(--surface);width:min(440px,100% - 24px);max-height:calc(100% - 76px);box-shadow:var(--shadow-float);border-radius:10px;padding:12px 16px 16px;position:absolute;top:64px;right:12px;overflow-y:auto}.add-menu h3{color:var(--muted);margin:12px 0 4px;font-size:13px;font-weight:500}.add-grid{grid-template-columns:1fr 1fr;display:grid}.add-grid button{text-align:left;min-height:48px;color:var(--text);background:0 0;border:0;border-radius:8px;padding:0 8px}.add-grid button:hover,.add-grid button:focus-visible{background:var(--raised)}.glyph:before{display:inline-block}.glyph.plus:before{content:"+";margin-right:6px}.glyph.minus:before{content:"−"}.control .glyph.minus:before,.stepper .glyph.plus:before{margin:0}.glyph.back:before{content:"‹";margin-right:6px}.glyph.arrow:before{content:"→";margin-left:6px}.glyph.chevron:before{content:"›"}.room-canvas.start{border:1px dashed var(--control);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.room-canvas.start h2{margin:0}.room-canvas.start p{color:var(--muted);margin:0 0 20px}.shape-cards{flex-wrap:wrap;justify-content:center;gap:16px;padding:0 16px;display:flex}.shape-cards button{text-align:left;width:190px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;display:flex}.shape-cards svg{fill:none;width:100%;height:96px;stroke:var(--draw-line);stroke-width:3px}.shape-cards small{color:var(--muted)}.room-panel{background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.panel-scroll{flex:1;min-height:0;padding:16px 20px;overflow-y:auto}.panel-title{justify-content:space-between;align-items:flex-start;margin-bottom:12px;display:flex}.panel-title h2{margin:0;font-size:17px}.panel-title small,.hint-line,.value-field small,.switch-row small,.row-name small{color:var(--muted);font-size:13px}.back-link{min-height:44px;color:var(--accent);background:0 0;border:0;align-items:center;margin-bottom:4px;padding:0;display:inline-flex}.panel-section{border-top:1px solid var(--rule);padding:12px 0}.panel-section:first-of-type{border-top:0}.panel-section h3{color:var(--muted);margin:0 0 8px;font-size:13px;font-weight:600}.hint-line{margin:0 0 8px}.list{flex-direction:column;display:flex}.list-row{border-bottom:1px solid var(--rule);align-items:center;min-height:56px;display:flex}.list-row.active{background:var(--accent-tint)}.list-row.sev-error{box-shadow:inset 3px 0 var(--negative)}.list-row.sev-warning{box-shadow:inset 3px 0 var(--warning)}.row-open{min-height:56px;color:var(--text);text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:10px;padding:0;display:flex}button.row-open:after{content:"›";color:var(--muted);margin-left:auto}.row-name{flex-direction:column;display:flex}.badge-letter{border:1px solid var(--draw-faint);border-radius:50%;place-items:center;width:28px;height:28px;font-size:13px;display:inline-grid}.row-value{min-height:44px;color:var(--text);white-space:nowrap;background:0 0;border:0;padding:0 8px;font-size:18px}button.row-value{text-align:right;min-width:72px}.row-value em{color:var(--muted);margin-left:4px;font-size:13px;font-style:normal}.row-value .computed{color:var(--muted)}.row-value i,.value-field i,.cell i{margin-right:4px;font-style:normal}.list-row.sev-error .row-value i,.value-field.sev-error i,.cell.sev-error i{color:var(--negative)}.list-row.sev-warning .row-value i,.value-field.sev-warning i,.cell.sev-warning i{color:var(--warning)}.row-actions,.chips{flex-wrap:wrap;gap:8px;margin:12px 0 4px;display:flex}.fields{grid-template-columns:1fr 1fr;gap:12px;margin:8px 0;display:grid}.value-field{text-align:left;min-height:72px;color:var(--text);background:var(--surface);border:1px solid var(--control);border-radius:8px;flex-direction:column;align-items:flex-start;gap:4px;padding:8px 12px;display:flex}.value-field .value{align-items:baseline;width:100%;font-size:22px;display:flex}.value-field .value em{color:var(--muted);margin-left:auto;font-size:13px;font-style:normal}.value-field.active{border:2px solid var(--accent);box-shadow:0 0 0 4px var(--accent-tint)}.value-field.sev-error{border-color:var(--negative);background:color-mix(in srgb, var(--negative) 8%, var(--surface))}.value-field.sev-warning{border-color:var(--warning);background:var(--warning-tint)}.switch-row{justify-content:space-between;align-items:center;gap:12px;min-height:56px;display:flex}.switch-row span{flex-direction:column;display:flex}.switch-row input{appearance:none;background:var(--control);border-radius:16px;flex:none;width:52px;height:32px;min-height:32px;position:relative}.switch-row input:after{content:"";background:var(--surface);border-radius:50%;width:26px;height:26px;transition:transform .12s;position:absolute;top:3px;left:3px}.switch-row input:checked{background:var(--primary)}.switch-row input:checked:after{transform:translate(20px)}.switch-row input:disabled{opacity:.4}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{border:1px solid var(--control);border-radius:50%;width:44px;height:44px;min-height:44px}.swatch.none{background:linear-gradient(135deg, transparent 46%, var(--control) 46% 54%, transparent 54%)}.swatch[aria-pressed=true]{outline:3px solid var(--accent);outline-offset:2px}.hinge-tiles{gap:12px;display:flex}.hinge-tiles button{color:var(--text);background:var(--surface);border:1px solid var(--control);border-radius:10px;flex-direction:column;flex:1;align-items:center;gap:4px;padding:8px;display:flex}.hinge-tiles button[aria-pressed=true]{border:2px solid var(--accent);background:var(--accent-tint)}.hinge-tiles svg{fill:none;stroke-width:2px;width:100%;max-width:120px}.hinge-tiles .wall{stroke:var(--draw-faint);stroke-width:6px}.hinge-tiles .leaf{stroke:var(--draw-line)}.hinge-tiles .swing{stroke:var(--draw-faint);stroke-dasharray:3 3}.select-field{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.select-field small{color:var(--muted)}.text-input{font-size:var(--fs-value)}.text-danger{min-height:44px;color:var(--negative);background:0 0;border:0;padding:0}.panel-footer{border-top:1px solid var(--rule);flex-direction:column;gap:8px;padding:12px 20px 16px;display:flex}.panel-footer small{color:var(--muted);text-align:center}.status{text-align:left;background:0 0;border:0;align-items:center;gap:8px;min-height:44px;padding:0;font-weight:500;display:flex}.status .chevron{margin-left:auto}.status.sev-ok{color:var(--positive)}.status.sev-warning{color:var(--warning)}.status.sev-error{color:var(--negative)}.panel-footer .btn.primary{width:100%}.keypad{border-top:1px solid var(--rule);background:var(--surface);padding:12px 16px 16px}.keypad-title{flex-direction:column;display:flex}.keypad-title small,.keypad-hint{color:var(--muted);font-size:13px}.keypad-readout{border:2px solid var(--accent);box-shadow:0 0 0 4px var(--accent-tint);border-radius:8px;justify-content:space-between;align-items:baseline;margin:8px 0 4px;padding:6px 14px;display:flex}.keypad-value{font-size:30px}.keypad-value:after{content:"";vertical-align:-.12em;background:var(--accent);width:2px;height:1em;margin-left:2px;display:inline-block}.keypad-unit{color:var(--muted)}.keypad-keys{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px;display:grid}.key{background:var(--raised);min-height:52px;color:var(--text);border:0;border-radius:8px;padding:0;font-size:22px}.key.op{background:var(--active)}.key.next{background:var(--primary);color:var(--on-primary);font-size:16px;font-weight:600}.survey-canvas{flex-direction:column;gap:12px;display:flex;position:absolute;inset:64px 12px 12px;overflow-y:auto}.survey-bar{justify-content:space-between;align-items:center;display:flex}.progress{background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;min-height:44px;padding:0 12px;display:flex}.progress progress{width:80px}.sizing{background:var(--surface);border-radius:8px;gap:16px;padding:8px 12px;display:flex}.stepper{align-items:center;gap:8px;display:flex}.stepper button{border:1px solid var(--control);background:var(--surface);width:44px;color:var(--text);border-radius:8px;padding:0}.diagrams{gap:12px;display:flex}.diagram{background:var(--surface);border-radius:10px;flex:1;margin:0;padding:8px 12px}.diagram figcaption{color:var(--muted);font-size:13px}.diagram svg{width:100%;max-height:150px}.diagram-wall{fill:none;stroke:var(--draw-faint)}.diagram line{stroke:var(--draw-faint);stroke-dasharray:3 3}.diagram .active line{stroke:var(--accent);stroke-dasharray:none;stroke-width:2px}.diagram text{fill:var(--muted);text-anchor:end;font-size:9px}.grid{align-items:stretch;gap:8px;display:grid}.grid .corner{color:var(--muted);align-self:end;font-size:13px}.grid .axis{min-height:44px;color:var(--muted);background:0 0;border:0;padding:0 6px;font-size:15px}.grid .cell{min-height:56px;color:var(--text);background:var(--surface);border:1px solid var(--control);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;padding:0;font-size:20px;display:flex}.grid .cell small{color:var(--muted);font-size:12px}.grid .cell.empty{color:var(--muted);border-style:dashed}.grid .cell.active{border:2px solid var(--accent);background:var(--accent-tint)}.grid .cell.sev-error{border-color:var(--negative)}.grid .cell.sev-warning{border-color:var(--warning);background:var(--warning-tint)}.issue-actions{flex-wrap:wrap;gap:8px;margin:-4px 0 12px;display:flex}.issue-empty{color:var(--muted)}.floor{fill:var(--surface);stroke:none}.wall{stroke:var(--draw-line);stroke-width:3px;stroke-linecap:round}.wall.selected{stroke:var(--accent);stroke-width:5px}.wall.sev-error,.face.sev-error{stroke:var(--negative)}.wall.sev-warning,.face.sev-warning{stroke:var(--warning)}.wall-hit{cursor:pointer}.wall-hit line{stroke:#0000;stroke-width:44px;pointer-events:stroke}.badge circle{fill:var(--surface);stroke:var(--draw-faint)}.badge.selected circle{fill:var(--accent);stroke:var(--accent)}.badge text{fill:var(--text);text-anchor:middle;dominant-baseline:central;font-size:12px}.badge.selected text{fill:var(--surface)}.face{fill:var(--draw-wall);stroke:var(--draw-line);stroke-width:1.5px}.floor-line{stroke:var(--draw-line);stroke-width:4px}.dim path{fill:none;stroke:var(--draw-faint);stroke-width:1px}.dim text{fill:var(--text);font-variant-numeric:tabular-nums;text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:var(--well);stroke-width:4px;font-size:14px}.dim.sev-error text,.dim.sev-error path{fill:var(--negative);stroke:var(--negative)}.dim.sev-warning text,.dim.sev-warning path{fill:var(--warning);stroke:var(--warning)}.dim text{stroke-width:0}.mark circle,.mark .body{fill:var(--surface);stroke-width:2px}.mark path{fill:none;stroke-width:2px;stroke-linecap:round}.mark.sev-error{stroke:var(--negative)}.mark.sev-warning{stroke:var(--warning)}.dim.editable .pill{fill:var(--surface);stroke:var(--accent);stroke-width:1.5px}.dim.editable.active .pill{fill:var(--accent)}.dim.editable.active text{fill:var(--surface)}.dim.sev-error .pill{stroke:var(--negative)}.dim.sev-warning .pill{stroke:var(--warning)}.dim .hit,.corner-label .hit,.opening .hit{fill:#0000;stroke:#0000;stroke-width:44px;pointer-events:all}.dim.editable,.corner-label.editable,.opening,.part{cursor:pointer}.corner-label text{fill:var(--muted);text-anchor:middle;dominant-baseline:central;font-size:13px}.corner-label.editable text{fill:var(--text)}.alcove-mark{stroke:var(--accent);stroke-width:9px;stroke-opacity:.3;stroke-linecap:round}.sweep{fill:var(--accent-tint);stroke:var(--draw-faint);stroke-width:1px;stroke-dasharray:4 3;pointer-events:none}.sweep.selected{stroke:var(--accent)}.opening .gap{stroke:var(--surface);stroke-width:7px}.opening.window .gap{stroke:var(--well)}.opening .glass{stroke:var(--draw-faint);stroke-width:2px}.opening .leaf{stroke:var(--draw-line);stroke-width:2px}.opening .tint{stroke-width:3px;stroke-opacity:.8}.opening.selected .glass,.opening.selected .leaf{stroke:var(--accent);stroke-width:3px}.opening.sev-error .glass,.opening.sev-error .leaf{stroke:var(--negative)}.opening.sev-warning .glass,.opening.sev-warning .leaf{stroke:var(--warning)}.part{stroke:var(--draw-line);stroke-width:1px}.part.solid{fill:var(--draw-faint);fill-opacity:.55}.part.access{fill:var(--accent-tint);stroke-dasharray:3 2}.part.aperture{fill:var(--surface);fill-opacity:.9}.part.selected{stroke:var(--accent);stroke-width:2.6px;fill:var(--accent-tint)}.part.sev-error{stroke:var(--negative);stroke-width:2.6px}.part.sev-warning{stroke:var(--warning);stroke-width:2.6px}.issues{margin:0 0 16px;padding:0;list-style:none}.issue{text-align:left;width:100%;min-height:64px;color:var(--text);background:var(--raised);border:1px solid var(--rule);border-left-width:4px;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;margin-bottom:8px;padding:8px 12px 8px 14px;display:flex}.issue.sev-error{border-left-color:var(--negative)}.issue.sev-warning{border-left-color:var(--warning)}.issue.selected{outline:2px solid var(--accent);background:var(--accent-tint)}.issue small{color:var(--muted)}.issue-severity:before{margin-right:6px}.issue.sev-error .issue-severity{color:var(--negative)}.issue.sev-error .issue-severity:before{content:"✕"}.issue.sev-warning .issue-severity{color:var(--warning)}.issue.sev-warning .issue-severity:before{content:"⚠"}.issue-severity{font-size:13px;font-weight:600}.status.sev-missing{color:var(--muted)}.project-name{max-width:420px}
