:root{--swatch-color: transparent;--swatch-image: none;--tab-border: 2px;--light-panel-width: 460px;--sidebar-compact: 240px;--backdrop: #15251b66;color-scheme:light;--surface: #fff;--canvas: #f0f2ef;--subtle: #f5f6f3;--ink: #253c36;--muted: #68776f;--line: #dde3dc;--accent: #386b57;--accent-hover: #28533f;--tint: #e8eee7;--danger: #a54037;--on-accent: #fff;--shadow: 0 6px 26px #263b3214;--focus: 0 0 0 3px #386b5740;--font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-xs: .6875rem;--text-sm: .75rem;--text-md: .8125rem;--text-base: .875rem;--text-lg: 1rem;--text-title: 1.25rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--radius: 6px;--control: 36px;--icon: 18px;--header: 68px;--sidebar: 278px;--border: 1px;--fast: .15s;--swatch: 54px;--panel: 270px;--dialog: 520px;--mobile-panel: 230px;--canvas-min: 300px;--weight: 500;--weight-strong: 600}[data-theme=dark]{color-scheme:dark;--surface: #202b26;--canvas: #19251f;--subtle: #29362e;--ink: #edf2ed;--muted: #b0bdb3;--line: #3c4b40;--accent: #a6c9b2;--accent-hover: #c3dfcc;--tint: #34493b;--on-accent: #15281c;--danger: #f3a197;--shadow: 0 6px 26px #0003}:root{--crosshair-size: 18px;--crosshair-stroke: 2px;--crosshair-ink: #ffffff;--crosshair-shadow: #253c36}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0}body{font:var(--text-base)/1.5 var(--font);color:var(--ink);background:var(--canvas);letter-spacing:0}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button,a,input,select{touch-action:manipulation}button{border:var(--border) solid transparent;background:transparent;border-radius:var(--radius);min-height:var(--control);transition:background var(--fast)}button:hover{background:var(--tint)}button:active{transform:translateY(1px)}button:disabled{opacity:.35;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:var(--border) solid var(--accent);box-shadow:var(--focus)}button svg{width:var(--icon);height:var(--icon);flex:none}h1,h2,h3,p{margin:0}h1{font-size:var(--text-lg);font-weight:var(--weight-strong)}h2{font-size:var(--text-base);font-weight:var(--weight-strong)}h3{font-size:var(--text-sm);font-weight:var(--weight-strong)}small,.muted{color:var(--muted);font-size:var(--text-sm)}.icon-button{display:inline-flex;justify-content:center;align-items:center;width:var(--control);padding:0;flex:none}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:0 var(--space-3);font-size:var(--text-md);font-weight:var(--weight)}.primary{background:var(--accent);color:var(--on-accent)}.primary:hover{background:var(--accent-hover)}.outline{border-color:var(--line);background:var(--surface)}.danger{color:var(--danger)}.app-header{height:var(--header);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-5);gap:var(--space-4);background:var(--surface);border-bottom:var(--border) solid var(--line);position:relative;z-index:10}.brand{display:flex;align-items:center;gap:var(--space-3);min-width:0}.brand-mark{height:var(--control);width:var(--control);display:grid;place-items:center;border:var(--border) solid var(--line);border-radius:var(--radius);color:var(--accent)}.brand-mark svg{width:var(--icon)}.brand small{display:block;white-space:nowrap}.header-actions{display:flex;align-items:center;gap:var(--space-2)}.divider{height:var(--space-5);width:var(--border);background:var(--line);margin:0 var(--space-1)}.segments{display:flex;gap:var(--space-1);padding:var(--space-1);border:var(--border) solid var(--line);border-radius:var(--radius);background:var(--subtle)}.segments button{display:flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:calc(var(--control) - var(--space-2));padding:var(--space-1) var(--space-3);font-size:var(--text-sm);white-space:nowrap}.segments button[aria-pressed=true]{background:var(--surface);box-shadow:var(--shadow);color:var(--accent)}.workspace{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);height:calc(100% - var(--header))}.sidebar{background:var(--surface);border-right:var(--border) solid var(--line);overflow:auto;display:flex;flex-direction:column;z-index:4}.project-info{padding:var(--space-5);display:flex;align-items:center;justify-content:space-between}.project-info .area{font-size:var(--text-title);font-weight:var(--weight-strong)}.tabs{display:flex;padding:0 var(--space-3);border-bottom:var(--border) solid var(--line)}.tabs button{flex:1;border-radius:0;font-size:var(--text-md);padding:var(--space-3) var(--space-2);border-bottom:var(--tab-border) solid transparent}.tabs button[aria-selected=true]{border-bottom-color:var(--accent);color:var(--accent);font-weight:var(--weight-strong)}.sidebar-body{padding:var(--space-5);flex:1}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.field{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.field label{font-size:var(--text-sm);color:var(--muted)}select,input[type=number],input[type=text]{color:var(--ink);background:var(--surface);border:var(--border) solid var(--line);border-radius:var(--radius);min-height:var(--control);padding:var(--space-2);width:100%;min-width:0}input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}input[type=checkbox]{accent-color:var(--accent);width:var(--icon);height:var(--icon)}.swatches{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3) var(--space-2)}.swatch{display:flex;flex-direction:column;gap:var(--space-2);align-items:center;min-width:0;padding:var(--space-1);border:var(--border) solid transparent}.swatch[aria-pressed=true]{border-color:var(--accent);background:var(--tint)}.swatch-chip{height:var(--swatch);width:100%;border-radius:var(--radius);border:var(--border) solid var(--line);background-color:var(--swatch-color);background-image:var(--swatch-image);background-size:cover;background-blend-mode:multiply}.swatch span:last-child{font-size:var(--text-xs);text-align:center;line-height:1.35;overflow-wrap:anywhere}.rule{border:0;border-top:var(--border) solid var(--line);margin:var(--space-5) 0}.catalog{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.catalog button{border:var(--border) solid var(--line);text-align:left;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.catalog svg{width:var(--space-6);height:var(--space-6);color:var(--muted)}.catalog span{font-size:var(--text-sm);line-height:1.4}.catalog small{font-size:var(--text-xs)}.room-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);width:100%;text-align:left;padding:var(--space-2);font-size:var(--text-sm)}.room-row[aria-pressed=true]{background:var(--tint);color:var(--accent)}.room-row span:last-child{color:var(--muted);white-space:nowrap}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--text-md)}.sidebar-footer{padding:var(--space-4) var(--space-5);border-top:var(--border) solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:var(--text-xs);color:var(--muted)}.stage{position:relative;min-width:0;overflow:hidden}.viewport{position:absolute;inset:0}.viewport canvas{display:block;width:100%;height:100%;touch-action:none;outline:none}.stage-top{position:absolute;left:var(--space-5);right:var(--space-5);top:var(--space-4);display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);pointer-events:none}.scene-title{font-size:var(--text-md);font-weight:var(--weight-strong)}.scene-title small{display:block;font-weight:400}.stage-top .segments{pointer-events:auto;background:var(--surface)}.compass{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--muted)}.compass svg{width:var(--space-6);height:var(--space-6);transform:rotate(-60deg)}.view-tools{position:absolute;right:var(--space-5);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-1);background:var(--surface);border:var(--border) solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.view-tools button[aria-pressed=true]{background:var(--tint);color:var(--accent)}.stage-bottom{position:absolute;bottom:var(--space-5);left:50%;transform:translate(-50%);width:min(var(--light-panel-width),calc(100% - 2 * var(--space-5)));padding:var(--space-3) var(--space-4);background:var(--surface);border:var(--border) solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.light-heading{display:flex;justify-content:space-between;align-items:center;font-size:var(--text-sm);margin-bottom:var(--space-1)}.light-label{display:flex;gap:var(--space-2);align-items:center}.light-label svg{width:var(--icon);height:var(--icon)}.light-ticks{display:flex;justify-content:space-between;font-size:var(--text-xs);color:var(--muted)}.selection{position:absolute;left:var(--space-5);bottom:calc(var(--space-5) * 6);width:var(--panel);background:var(--surface);padding:var(--space-4);border:var(--border) solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.selection-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.dimensions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.dimensions .field{margin-bottom:var(--space-3)}.selection-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-1)}.status{position:absolute;bottom:var(--space-3);left:var(--space-5);font-size:var(--text-xs);color:var(--muted);display:flex;align-items:center;gap:var(--space-1)}.status svg{width:var(--text-sm);height:var(--text-sm)}.toast{position:absolute;top:calc(var(--space-8) * 2);left:50%;transform:translate(-50%);width:max-content;max-width:calc(100% - var(--space-8));background:var(--ink);color:var(--surface);border-radius:var(--radius);padding:var(--space-3) var(--space-4);font-size:var(--text-md);z-index:20;box-shadow:var(--shadow);text-align:center}.walk-pad{position:absolute;right:var(--space-5);bottom:calc(var(--space-5) * 6);display:grid;grid-template-columns:repeat(3,var(--control));gap:var(--space-1)}.walk-pad button{background:var(--surface);border-color:var(--line)}.walk-pad button:first-child{grid-column:2}.walk-pad button:nth-child(2){grid-column:1}.engineering-list{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-4)}.engineering-item{font-size:var(--text-xs);padding:var(--space-2) 0;border-bottom:var(--border) solid var(--line);display:flex;justify-content:space-between;gap:var(--space-2)}.engineering-item span:last-child{white-space:nowrap;color:var(--muted)}dialog{border:var(--border) solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);padding:var(--space-6);width:min(var(--dialog),calc(100% - var(--space-8)));box-shadow:var(--shadow)}dialog::backdrop{background:var(--backdrop)}dialog h2{margin-bottom:var(--space-4)}.dialog-actions{display:flex;gap:var(--space-2);justify-content:flex-end;margin-top:var(--space-5)}.share-url{font-size:var(--text-sm)}.loading{position:absolute;inset:0;display:grid;place-items:center;background:var(--canvas);z-index:12}.loading p{font-size:var(--text-lg)}[hidden]{display:none!important}.mobile-menu{display:none}.footer-link{color:var(--muted);text-decoration:none}.footer-link:hover{color:var(--ink)}@media(max-width:1000px){.brand small,.header-actions .optional,.header-actions .button span{display:none}.header-actions .button{padding:0;width:var(--control)}.app-header{gap:var(--space-2);padding:0 var(--space-3)}.workspace{grid-template-columns:var(--sidebar-compact) minmax(0,1fr)}.status{display:none}.stage-top{left:var(--space-3);right:var(--space-3)}}@media(max-width:700px){:root{--header: 60px}.workspace{grid-template-columns:minmax(0,1fr)}.sidebar{position:absolute;left:0;top:var(--header);bottom:0;width:min(var(--sidebar),85%);box-shadow:var(--shadow);z-index:15;display:none}.sidebar.open{display:flex}.mobile-menu{display:inline-flex}.header-modes span{display:none}.segments button{padding:var(--space-1) var(--space-2)}.brand-mark{display:none}.brand h1{font-size:var(--text-base)}.header-actions{gap:0}.header-actions .divider{display:none}.stage-top{top:var(--space-3)}.stage-top .segments button{font-size:var(--text-xs)}.scene-title{font-size:var(--text-sm)}.compass{display:none}.view-tools{right:var(--space-3)}.selection{width:min(var(--panel),calc(100% - var(--control) - var(--space-3) * 3));left:var(--space-3);bottom:calc(var(--space-5) * 6)}.stage-bottom{bottom:var(--space-3)}.walk-pad{right:var(--space-3)}}@media(max-width:520px){.brand>div:last-child{display:none}}@media(max-width:360px){.header-actions #export,.header-actions #screenshot{display:none}.app-header{padding:0 var(--space-2)}.header-modes button{padding:var(--space-1)}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}.tabs{flex-wrap:wrap}.tabs button{flex:1 1 auto}.sidebar-body:has(.issue-card),.sidebar-body:has(.variant-card){display:flex;flex-direction:column;gap:var(--space-3)}.feature-stack{display:flex;flex-direction:column;gap:var(--space-3)}.feature-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.variant-card,.issue-card{border:var(--border) solid var(--line);border-radius:var(--radius);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);overflow-wrap:anywhere}.variant-card img{width:100%;aspect-ratio:3 / 2;object-fit:contain;border-radius:var(--radius);background:var(--canvas)}.issue-card.warning{border-inline-start:var(--space-1) solid var(--danger)}.issue-card.info{border-inline-start:var(--space-1) solid var(--accent)}.studio-dialog{inline-size:min(var(--dialog),calc(100vw - var(--space-8)));max-block-size:calc(100dvh - var(--space-8));overflow:auto}.dialog-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-block-end:var(--space-4)}.studio-dialog-body{display:flex;flex-direction:column;gap:var(--space-3)}.studio-dialog input,.studio-dialog textarea{inline-size:100%;min-inline-size:0}textarea{font:inherit;color:var(--ink);background:var(--surface);border:var(--border) solid var(--line);border-radius:var(--radius);padding:var(--space-2);resize:vertical}textarea:focus-visible{outline:var(--border) solid var(--accent);box-shadow:var(--focus)}.comparison-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3)}.comparison-grid figure{margin:0;min-inline-size:0}.comparison-grid img{width:100%}.walk-hint{position:absolute;inset-block-start:var(--space-8);inset-inline:var(--space-4);pointer-events:none;text-align:center;color:var(--ink);background:var(--surface);border-radius:var(--radius);padding:var(--space-2);font-size:var(--text-sm)}#analysis[data-count]:not([data-count="0"]){color:var(--danger);background:var(--surface)}#menu[aria-expanded=true]{background:var(--tint)}[aria-busy=true]{cursor:progress}@media(max-width:700px){.walk-hint{inset-block-start:var(--space-8);max-inline-size:calc(100% - var(--control) - var(--space-8))}.header-actions #undo,.header-actions #redo,.header-actions #screenshot,.header-actions #export{display:none}.studio-dialog{padding:var(--space-3)}}@media(max-width:360px){.comparison-grid{grid-template-columns:minmax(0,1fr)}}.stage-top .scene-title,.stage-top .compass{background:var(--surface);padding:var(--space-2);border-radius:var(--radius)}summary{cursor:pointer;min-block-size:var(--control)}summary:focus-visible{outline:var(--border) solid var(--accent);box-shadow:var(--focus)}.feature-error{color:var(--danger);padding:var(--space-3);border:var(--border) solid var(--danger);border-radius:var(--radius)}button[aria-busy=true],form[aria-busy=true] button{opacity:1;cursor:progress}#help{color:var(--ink)}.sidebar{overflow:hidden;min-block-size:0}.sidebar-body{min-block-size:0;overflow-y:auto}.project-info,.tabs,.sidebar-footer{flex-shrink:0}.stage[data-mode=walk] .stage-top{display:none}.stage[data-mode=walk] .walk-hint{inset-block-start:var(--space-4);max-inline-size:calc(100% - var(--control) - var(--space-8))}.viewport[data-mode=walk] canvas{cursor:grab}.viewport[data-mode=walk] canvas:active{cursor:none}.viewport[data-mode=walk]:after{content:"+";position:absolute;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%);font-size:var(--crosshair-size);line-height:1;color:var(--crosshair-ink);text-shadow:0 0 var(--crosshair-stroke) var(--crosshair-shadow);pointer-events:none}.front-legend{color:var(--muted);font-size:var(--text-sm);margin-block:var(--space-2)}
