.demo-shell{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:32px 24px;background:var(--paper)}.demo-shell .app-window{min-width:0;width:100%;max-width:1200px;border-radius:13px}.demo-shell .app-body{grid-template-columns:250px 1fr;height:clamp(520px,75vh,700px);overflow:hidden}.demo-shell .rules-panel{width:250px;background:#fbfaf6;min-height:0;overflow-x:hidden;overflow-y:auto}.demo-shell .rules-panel.hidden{display:none}.demo-shell .app-body.no-sidebar{grid-template-columns:1fr}.demo-shell .canvas{background:#ece9e1;min-height:0}.stepper{display:inline-flex;border:1px solid #cfc8ba;border-radius:4px;overflow:hidden;background:var(--white)}.step{display:inline-flex;align-items:center;gap:7px;padding:8px 15px;min-height:44px;border:0;border-right:1px solid #e2ddd2;background:transparent;cursor:pointer;font-family:var(--font-sans);font-size:.62rem;font-weight:700;color:#4f4b44;white-space:nowrap;transition:background .15s ease,color .15s ease}.step:last-child{border-right:0}.step .step-num{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;background:#e2ddd2;color:#6d6a62;font-size:.52rem;font-family:var(--font-mono);font-weight:500;flex-shrink:0}.step .step-num svg{width:10px;height:10px}.step:hover:not(:disabled):not(.active){background:#f5f2ea}.step.active{background:var(--orange);color:#fff}.step.active .step-num{background:#ffffff4d;color:#fff}.step.done .step-num{background:var(--mint);color:var(--ink)}.step:disabled{color:#c2bcae;cursor:not-allowed}.step:disabled .step-num{background:#ece9e1;color:#c2bcae}.step:focus-visible{outline:2px solid var(--orange);outline-offset:-2px}.pane{display:flex;flex-direction:column}.pane-hint{font-size:.58rem;color:var(--muted);line-height:1.5;margin:0 0 14px}.zone-list{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.zone-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #e2ddd2;border-radius:6px;background:var(--white);font-size:.66rem}.zone-swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0}.zone-item .zone-name{flex:1;font-weight:600}.zone-del{width:22px;height:22px;border:0;background:transparent;cursor:pointer;color:#b0ab9b;border-radius:4px;font-size:.8rem;line-height:1}.zone-del:hover{background:#f5eeea;color:#e0554a}.panel-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:8px;border:1px solid #cfc8ba;border-radius:3px;background:var(--white);color:var(--ink);font-size:.6rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease;font-family:var(--font-sans);min-height:38px}.panel-btn:hover{background:#f5f2ea;border-color:#b8b0a0}.layout-list{display:flex;flex-direction:column;gap:8px}.layout-card{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:11px 13px;border:1px solid #e2ddd2;border-radius:3px;cursor:pointer;text-align:left;flex-shrink:0;font-family:var(--font-sans);background:var(--white);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.layout-card:active{transform:scale(.985)}.layout-card:hover{border-color:#cfc8ba;box-shadow:0 2px 10px #312c2314}.layout-card.selected{border-color:var(--orange);box-shadow:0 0 0 1px var(--orange),0 4px 14px #f06a4724}.layout-card:focus-visible{outline:2px solid var(--orange);outline-offset:2px}.layout-card .lc-score{width:44px;height:44px;flex-shrink:0;border-radius:3px;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:.95rem;font-weight:800;color:#fff}.layout-card .lc-body{flex:1;min-width:0;overflow:hidden;display:flex;flex-direction:column}.layout-card .lc-name{font-size:.66rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layout-card .lc-meta{font-size:.53rem;color:var(--muted);font-family:var(--font-mono);margin-top:1px;white-space:nowrap}.zone-name-edit{border:0;border-bottom:1px solid var(--orange);padding:1px 3px;font:inherit;font-size:.65rem;background:transparent;color:var(--ink);width:100%;max-width:110px}.zone-name-edit:focus{outline:none;border-bottom-width:2px}.zone-rect{stroke-width:2;stroke-dasharray:6 4;cursor:default}.zone-draft{stroke-width:2;stroke-dasharray:6 4;opacity:.7}.zone-rect-label{font-family:var(--font-mono);font-size:9px;fill:#4d4942;pointer-events:none}#canvasContent svg.zones-svg{cursor:crosshair}.step-desc{padding:8px 0;font-size:1rem;color:var(--ink);text-align:center;line-height:1.5;font-weight:500;letter-spacing:-.01em;transition:opacity .2s ease;max-width:1200px;width:100%;margin:0 auto 14px}.step-desc em{font-style:normal;color:var(--ink);font-weight:600}.app-bar .btn-ghost{padding:7px 13px;min-height:44px;border:1px solid #cfc8ba;border-radius:3px;background:var(--white);color:var(--ink);font-size:.62rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.app-bar .btn-ghost:hover:not(:disabled){background:#f5f2ea;border-color:#b8b0a0}.app-bar .btn-ghost:disabled{opacity:.35;cursor:not-allowed}.app-bar .btn-ghost:focus-visible{outline:2px solid var(--orange);outline-offset:2px}.app-bar .btn-primary{padding:8px 14px;min-height:44px;border:none;border-radius:3px;background:var(--orange);color:#fff;font-size:.62rem;font-weight:700;cursor:pointer;transition:background .15s ease,box-shadow .15s ease;box-shadow:0 2px 8px #d7543433}.app-bar .btn-primary:hover:not(:disabled){background:var(--orange-dark)}.app-bar .btn-primary:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.app-bar .btn-primary:focus-visible{outline:2px solid var(--orange-dark);outline-offset:2px}.canvas-toolbar .btn-tool{padding:4px 10px;border:1px solid #d5cfc3;border-radius:4px;background:#ffffffc7;color:var(--ink);font-size:.56rem;font-weight:700;cursor:pointer;transition:background .15s ease}.canvas-toolbar .btn-tool:hover{background:#fffffff2}.canvas-toolbar .btn-tool.active{background:var(--ink);color:var(--white);border-color:var(--ink)}.rules-panel .btn-generate{display:block;width:100%;margin:8px 0 0;padding:7px 0;border:none;border-radius:3px;background:var(--orange);color:#fff;font-size:.58rem;font-weight:700;cursor:pointer;transition:background .15s ease,box-shadow .15s ease;box-shadow:0 2px 8px #d754342e;text-align:center}.rules-panel .btn-generate:hover:not(:disabled){background:var(--orange-dark)}.rules-panel .btn-generate:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.rules-panel .btn-edit-rules{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;margin:10px 0 0;padding:7px 0;min-height:36px;border:1px solid #cfc8ba;border-radius:3px;background:var(--white);color:var(--ink);font-size:.58rem;font-weight:600;cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease}.rules-panel .btn-edit-rules:hover{background:#f5f2ea;border-color:#b8b0a0}.rules-panel .btn-edit-rules svg{width:12px;height:12px}.canvas{position:relative}.score-badge{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:none;align-items:baseline;gap:9px;padding:9px 18px;border-radius:100px;background:#fffefaf0;border:1px solid #cfc8ba;box-shadow:0 6px 22px #312c2324;backdrop-filter:blur(8px);z-index:12;white-space:nowrap}.score-badge.visible{display:inline-flex}.score-badge-label{font-size:.6rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.score-badge-value{font-size:1.15rem;font-weight:800;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}.score-badge-meta{font-size:.6rem;font-family:var(--font-mono);color:var(--muted)}.canvas-loading-overlay{position:absolute;inset:36px 0 0;background:#ece9e1d9;backdrop-filter:blur(3px);display:none;flex-direction:column;align-items:center;justify-content:center;gap:18px;z-index:20}.canvas-loading-overlay.active{display:flex}.canvas-loading-overlay .loading-icon{width:56px;height:56px;border-radius:50%;background:var(--white);box-shadow:0 4px 20px #00000014;display:flex;align-items:center;justify-content:center;color:var(--orange);animation:loadPulse 1.5s ease-in-out infinite}@keyframes loadPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.12);opacity:.55}}.canvas-loading-overlay .loading-title{font-size:.95rem;font-weight:600;color:var(--ink)}.canvas-loading-overlay .loading-step{font-size:.72rem;color:var(--muted);min-height:1.3em;text-align:center}.canvas-loading-overlay .loading-progress-track{width:min(340px,65%);height:8px;border-radius:4px;background:#ded8cc;overflow:hidden}.canvas-loading-overlay .loading-progress-fill{height:100%;background:var(--orange);border-radius:4px;width:0%;transition:width .35s ease}#canvasContent{position:absolute;inset:36px 0 0}#canvasContent model-viewer{width:100%;height:100%;background:#fff}#canvasContent svg.floorplan{display:block;width:100%;height:100%}.placement-group{cursor:grab;transition:opacity .2s ease}.placement-group.dragging{cursor:grabbing}.placement-group.selected rect{stroke:var(--orange)!important;stroke-width:3!important}.placement-group.overlap rect{stroke:#e0554a!important;stroke-width:2.5!important}.placement-label{font-family:var(--font-mono);font-size:9px;fill:#4d4942;text-anchor:middle;dominant-baseline:central;pointer-events:none}.inspector{position:absolute;right:12px;top:48px;width:220px;padding:16px;border:1px solid #cfc8ba;border-radius:6px;background:#fffefaf5;box-shadow:0 14px 35px #312c2326;backdrop-filter:blur(8px);z-index:10;display:none;font-family:var(--font-sans)}.inspector.open{display:block}.inspector h4{font-size:.63rem;font-weight:600;margin-bottom:2px}.inspector .sub{font-size:.52rem;color:#918d83;margin-bottom:10px}.inspector .dim{font-family:var(--font-mono);font-size:.52rem;color:#918d83;margin-bottom:10px}.inspector .row{display:flex;gap:6px;align-items:center;margin-bottom:6px}.inspector .row label{font-size:.52rem;color:#918d83;width:16px}.inspector .row input{width:64px;min-height:44px;padding:4px 6px;border:1px solid #cfc8bc;border-radius:3px;font-family:var(--font-mono);font-size:.55rem;background:var(--white)}.inspector .rots{display:flex;gap:3px;margin-bottom:8px}.inspector .rots button{padding:6px 10px;min-width:44px;min-height:44px;border:1px solid #cfc8bc;border-radius:3px;font-size:.55rem;background:var(--white);cursor:pointer;font-family:var(--font-mono);transition:background .15s ease}.inspector .rots button.on{background:var(--ink);color:var(--white);border-color:var(--ink)}.inspector .rots button:focus-visible{outline:2px solid var(--orange);outline-offset:1px}.catalog-drawer{position:absolute;bottom:0;left:0;right:0;background:#fffefaf7;border-top:1px solid #cfc8ba;transform:translateY(100%);transition:transform .2s ease-out;z-index:11;padding:14px 18px;max-height:160px;overflow-y:auto;backdrop-filter:blur(6px)}.catalog-drawer.open{transform:translateY(0)}.catalog-drawer .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.catalog-drawer .header span{font-family:var(--font-mono);font-size:.54rem;text-transform:uppercase;color:#9a968c}.catalog-drawer .grid{display:flex;flex-wrap:wrap;gap:8px}.catalog-item{width:72px;padding:8px 6px;border:1px solid #cfc8bc;border-radius:4px;cursor:grab;font-size:.52rem;text-align:center;background:var(--white);transition:border-color .15s ease}.catalog-item:hover{border-color:var(--orange)}.export-dropdown{position:relative}.export-menu{position:absolute;top:100%;right:0;margin-top:4px;background:#fffefafa;border:1px solid #cfc8ba;border-radius:4px;overflow:hidden;display:none;min-width:100px;z-index:20;box-shadow:0 8px 20px #0000001a}.export-menu.open{display:block}.export-menu-item{padding:6px 12px;font-family:var(--font-mono);font-size:.55rem;color:#918d83;cursor:not-allowed}.export-menu-item+.export-menu-item{border-top:1px solid #e2ddd2}.rule-group .section-label{margin:8px 7px 2px;color:#9a968c;font-family:var(--font-mono);font-size:.48rem;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;user-select:none;display:flex;align-items:center;gap:5px}.rule-group .section-label:after{content:"▾";font-size:.42rem;transition:transform .15s ease;opacity:.5}.rule-group .section-label.collapsed:after{transform:rotate(-90deg)}.rule-group .section-label:first-child{margin-top:0}.canvas-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--muted);font-size:.85rem}@media(prefers-color-scheme:dark){.demo-shell{background:#1c1a18}.demo-shell .app-window{background:#242220;border-color:#3a3732}.demo-shell .app-bar{background:#2a2825;border-color:#3a3732}.demo-shell .app-bar .btn-ghost{background:#2a2825;border-color:#3a3732;color:#dedad0}.demo-shell .rules-panel{background:#1f1e1c;border-color:#3a3732}.demo-shell .canvas{background:#1a1917}.demo-shell .canvas-empty{color:#9a968c}.demo-shell .rule{color:#b0ab9b}.demo-shell .rule:hover,.demo-shell .rule.active{background:#2a2825;color:#dedad0}.demo-shell .confidence{border-color:#3a3732}.demo-shell .confidence strong{color:#dedad0}.rules-panel .btn-edit-rules{background:#2a2825;border-color:#3a3732;color:#b0ab9b}.rules-panel .btn-edit-rules:hover{background:#34312c}.stepper{background:#2a2825;border-color:#3a3732}.step{color:#b0ab9b;border-right-color:#3a3732}.step:hover:not(:disabled):not(.active){background:#34312c}.step .step-num{background:#3a3732;color:#b0ab9b}.step.active{background:var(--orange);color:#fff}.step:disabled,.step:disabled .step-num{color:#6b6659}.step:disabled .step-num{background:#2f2c28}.step-desc{color:#b0ab9b}.step-desc em{color:#dedad0}.zone-item,.layout-card{background:#2a2825;border-color:#3a3732}.layout-card:hover{border-color:#4a463f}.panel-btn{background:#2a2825;border-color:#3a3732;color:#b0ab9b}.panel-btn:hover{background:#34312c}.score-badge{background:#242220f0;border-color:#3a3732}.score-badge-value{color:#dedad0}.canvas-loading-overlay{background:#1a1917e0}.canvas-loading-overlay .loading-progress-track{background:#3a3732}.canvas-loading-overlay .loading-title{color:#dedad0}.demo-shell .canvas-toolbar .btn-tool{background:#2a2825;border-color:#3a3732;color:#b0ab9b}.demo-shell .canvas-toolbar .btn-tool.active{background:#dedad0;color:#242220;border-color:#dedad0}.inspector{background:#242220f5;border-color:#3a3732}.inspector .sub,.inspector .dim{color:#8b8677}.inspector .row input{background:#2a2825;border-color:#3a3732;color:#dedad0}.inspector .rots button{background:#2a2825;border-color:#3a3732;color:#b0ab9b}.inspector .rots button.on{background:#dedad0;color:#242220}.catalog-drawer{background:#242220f7;border-color:#3a3732}.catalog-item{background:#2a2825;border-color:#3a3732;color:#b0ab9b}.export-menu{background:#242220fa;border-color:#3a3732}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:0s!important;animation-duration:0s!important}}:focus-visible{outline:2px solid var(--orange);outline-offset:2px}button:focus-visible,[role=button]:focus-visible{outline:2px solid var(--orange);outline-offset:2px;border-radius:3px}:focus:not(:focus-visible){outline:none}.rule{min-height:44px}.export-menu-item{min-height:44px;display:flex;align-items:center}.catalog-item{min-height:52px}
