*{box-sizing:border-box}html{touch-action:manipulation}body{margin:0;overflow:hidden;background:#fff}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer;border:0;background:none;transition:background .16s,color .16s,border-color .16s}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}canvas:focus{outline:none}canvas:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}input,select{min-width:0;color:var(--ink)}svg{width:20px;height:20px;flex-shrink:0;vertical-align:middle}img{display:block;max-width:100%}h1,h2,h3,p{margin:0}h1,h2{font-weight:500;letter-spacing:-.02em}h3{font:500 14px/1.5 Roboto,Arial,sans-serif}input[type=range]{accent-color:var(--accent);width:100%;height:32px;cursor:pointer}button[hidden],[hidden],.mobile-only{display:none!important}.button{min-height:44px;padding:10px 16px;border:1px solid transparent;border-radius:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-weight:500;line-height:1.3;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;text-align:center}.button svg{width:17px;height:17px}.primary{background:var(--accent);border-color:var(--accent);color:#fff}.secondary{background:#fff;border-color:var(--line-card);color:var(--ink)}.full{width:100%;margin-top:12px}.text-button{display:inline-flex;align-items:center;gap:7px;padding:8px 0;min-height:44px;font-size:14px;color:var(--accent-hover);text-decoration:none;font-weight:500}.text-button svg{width:16px;height:16px}.icon-button{width:44px;height:44px;border-radius:0;display:inline-flex;align-items:center;justify-content:center;color:var(--ink);flex-shrink:0}.icon-button.active{color:var(--accent);background:var(--accent-soft)}.danger{color:var(--danger)}@media(hover:hover){.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.secondary:hover{background:var(--bone);border-color:#b9ac97}.text-button:hover{text-decoration:underline;text-underline-offset:4px}.icon-button:hover{background:var(--warm)}.icon-button.danger:hover,.danger:hover{background:#fbede7;color:var(--danger)}}.topbar{height:64px;display:flex;align-items:center;padding:0 20px;gap:16px;background:#fff;border-bottom:1px solid var(--line);position:relative;z-index:30}.brand{display:flex;align-items:center;flex-shrink:0;min-height:44px}.brand-logo{width:64px;height:49px;object-fit:contain}.brand-app-name{font-size:19px;white-space:nowrap;font-weight:500;padding-left:16px;border-left:1px solid var(--line)}.project-heading{display:flex;flex-direction:column;gap:4px;margin-left:16px;min-width:0}.project-heading input{font-size:14px;font-weight:500;border:0;background:transparent;width:220px;padding:0}.project-heading>span{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:5px}.project-heading>span svg{height:13px;width:13px;color:var(--accent)}.header-actions{display:flex;gap:10px;align-items:center;margin-left:auto}.history-actions{display:flex;gap:2px;margin-right:4px}.workspace{position:relative;display:flex;height:calc(100dvh - 96px);min-height:220px}.rail{width:84px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;background:#fff;border-right:1px solid var(--line);padding:16px 8px;gap:8px;z-index:20}.rail-button{width:68px;min-height:64px;display:flex;align-items:center;justify-content:center;gap:6px;flex-direction:column;color:var(--muted);position:relative}.rail-button span{font-size:12px;font-weight:500;line-height:1.2;text-align:center}.rail-button svg{width:22px;height:22px}.rail-button.active{color:var(--accent-hover);background:var(--accent-soft)}.rail-button.active:before{content:"";height:22px;width:3px;background:var(--accent);position:absolute;left:-8px;top:21px}.rail-badge{position:absolute;top:6px;right:10px;min-width:18px;height:18px;border-radius:9px;background:#b85f20;color:#fff;font-size:11px;font-weight:600;line-height:18px;padding:0 5px}.rail-bottom{margin-top:auto}@media(hover:hover){.rail-button:hover{background:var(--bone);color:var(--ink)}}.library-panel:focus,.inspector:focus{outline:none}.library-panel{width:336px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--line);overflow:auto;padding:0 20px 24px;scrollbar-width:thin;scrollbar-color:#d7d0c4 transparent}body:not(.panel-open) .library-panel{display:none}.panel-heading{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff;z-index:3;margin:0 -20px 18px;padding:20px 16px 16px 20px;border-bottom:1px solid var(--line)}.panel-heading h1{font-size:22px;line-height:1.25;margin-top:4px}.eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:500;color:var(--muted);line-height:1.6}.panel-close{margin-right:-6px}.panel-intro{font-size:15px;color:var(--muted);line-height:1.6;margin-bottom:18px}.field-note{font-size:13px;color:var(--muted);line-height:1.6;margin:12px 0}.search-field{display:flex;align-items:center;gap:9px;border:1px solid var(--line);background:var(--bone);min-height:46px;padding:0 12px;margin-bottom:14px;color:var(--muted)}.search-field input{width:100%;font-size:16px;min-height:44px;border:0;background:transparent;outline:none}.search-field svg{width:18px;height:18px}.category-list{display:flex;gap:7px;flex-wrap:nowrap;overflow-x:auto;margin:0 -20px;padding:0 20px 6px;scrollbar-width:none}.category-list::-webkit-scrollbar{display:none}@media(pointer:fine){.category-list{flex-wrap:wrap;overflow-y:auto;overflow-x:hidden;margin:0;padding:0;max-height:104px}}.category{padding:9px 14px;min-height:44px;border:1px solid var(--line);border-radius:22px;font-size:14px;white-space:nowrap;flex-shrink:0}.category.active{background:var(--ink);border-color:var(--ink);color:#fff}@media(hover:hover){.category:hover:not(.active){border-color:var(--accent)}}.catalog-label,.model-count{font-size:12px;display:flex;justify-content:space-between;gap:8px;color:var(--muted);margin:18px 0 12px}.catalog-label span:first-child,.model-count span:first-child{font-weight:500;color:var(--ink)}.catalog{display:grid;grid-template-columns:1fr 1fr;gap:18px 12px}.catalog-card{padding:0;text-align:left;min-width:0;touch-action:manipulation}.product-image{height:128px;border:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.product-image img{width:100%;height:100%;object-fit:contain;padding:6%;opacity:0;transition:opacity .2s,transform .3s}.product-image img.loaded{opacity:1}.product-name{display:block;font-size:14px;font-weight:500;margin-top:8px;line-height:1.4;color:var(--ink)}.product-type,.product-size{display:block;font-size:12px;color:var(--muted);margin-top:3px;line-height:1.4}.add-badge{position:absolute;right:7px;bottom:7px;width:28px;height:28px;background:var(--accent);border-radius:50%;display:grid;place-items:center;color:#fff}.add-badge svg{width:16px;height:16px}@media(hover:hover){.catalog-card:hover .product-image{border-color:var(--accent)}.catalog-card:hover img{transform:scale(1.035)}}.library-note{margin-top:24px;padding-top:16px;border-top:1px solid var(--line);font-size:12px;line-height:1.6;color:var(--muted)}.chosen-cabin{border:1px solid var(--line);background:var(--bone);padding:16px}.chosen-cabin>strong{display:block;font-size:21px;font-family:Roboto Slab,Georgia,serif;font-weight:500;margin-top:6px;line-height:1.3}.chosen-cabin small{font:400 14px/1.5 Roboto,Arial,sans-serif;display:block;margin-top:4px;color:var(--muted)}.chosen-cabin p{font-size:14px;margin-top:4px;color:var(--muted)}.chosen-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin-top:12px}.chosen-actions .button{flex:1 1 auto;padding:10px 12px;font-size:12px;letter-spacing:.08em;white-space:nowrap}.family-heading{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:18px 0 10px;font-weight:500}.cabin-picker{display:grid;grid-template-columns:1fr 1fr;gap:12px 10px}.cabin-choice{position:relative;text-align:left;border:1px solid var(--line-card);overflow:hidden;padding:0 0 10px;min-width:0;background:#fff}.cabin-photo{display:block;aspect-ratio:4/3;background:#fff;border-bottom:1px solid var(--line);overflow:hidden;margin-bottom:8px}.cabin-photo img{width:100%;height:100%;object-fit:contain;padding:4%;transition:transform .7s ease}.cabin-choice strong,.cabin-choice>span{display:block;padding:0 10px;font-size:14px;font-weight:500;line-height:1.45}.cabin-choice>span{font-size:12px;font-weight:400;color:var(--muted)}.cabin-choice.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.cabin-choice .chosen-mark{position:absolute;top:6px;right:6px;color:#fff;background:var(--accent);width:22px;height:22px;border-radius:50%;padding:0;text-align:center;font-size:13px;line-height:22px}@media(hover:hover){.cabin-choice:hover{border-color:var(--accent)}.cabin-choice:hover img{transform:scale(1.035)}}.product-dimensions h2{font-size:22px;line-height:1.3;margin:6px 0 4px}.product-dimensions dl{margin:12px 0 4px}.product-dimensions dl>div{display:grid;grid-template-columns:minmax(120px,40%) 1fr;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}.product-dimensions dt{font-size:13px;color:var(--muted)}.product-dimensions dd{margin:0;font-size:15px;line-height:1.45}.product-details-link{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--accent-hover);font-size:15px;font-weight:500;line-height:1.5;margin-top:18px;min-height:44px;text-underline-offset:4px}.product-details-link svg{width:17px;height:17px}.room-section{padding:0 0 18px;margin-bottom:18px;border-bottom:1px solid var(--line)}.room-section h2{font-size:18px}.room-section .section-label{margin:0 0 12px}.section-label{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:6px 0 12px;font-size:14px}.section-label>span:last-child{font-size:12px;color:var(--muted);text-align:right}.swatches{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.stain-swatches{gap:4px}.swatch{width:44px;height:44px;border-radius:50%;border:8px solid #fff;background:var(--swatch);box-shadow:inset 0 0 0 1px #3a2a1420;position:relative;flex-shrink:0}.swatch.natural{background:url(../textures/spruce-swatch.jpg) center/cover,#f1e3c8}.swatch:after{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:50%;border:1px solid transparent}.swatch.active:after{border:2px solid var(--accent)}@media(hover:hover){.swatch:hover:after{border-color:var(--accent)}}.custom-color{display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;border-radius:50%;border:1px dashed var(--line-card);background:#fff}.custom-color svg{width:18px;height:18px}.room-section .full{margin-top:0}.idea-list{display:grid;gap:12px}.idea-row{display:grid;grid-template-columns:92px 1fr;gap:12px;border:1px solid var(--line);padding:10px;background:#fff}.idea-image{height:92px;background:#fff;border:1px solid var(--line);overflow:hidden}.idea-image img{width:100%;height:100%;object-fit:contain;padding:6%;opacity:0;transition:opacity .2s}.idea-image img.loaded{opacity:1}.idea-copy h2{font-size:17px;line-height:1.3}.idea-copy p{font-size:13px;line-height:1.5;color:var(--muted);margin-top:4px}.idea-copy small{display:block;font-size:12px;color:var(--muted);margin-top:4px}.idea-actions{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin-top:8px}.idea-actions .button{padding:8px 12px;font-size:12px}.idea-row.applied{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.idea-applied{display:inline-flex;align-items:center;gap:6px;min-height:36px;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-hover)}.idea-applied svg{width:16px;height:16px}.layout-card{display:flex;align-items:center;gap:12px;padding:14px;min-height:64px;width:100%;text-align:left;border:1px solid var(--line);margin-top:12px}.layout-card strong{display:block;font-size:15px;font-weight:500}.layout-card small{display:block;font-size:13px;margin-top:3px;color:var(--muted)}.import-note{font-size:13px;line-height:1.6;padding:14px;margin-top:14px;background:var(--bone);border:1px solid var(--line);color:var(--muted)}.layer-row{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;text-align:left;border-bottom:1px solid var(--line);padding:10px 0;font-size:15px}.layer-row>span{flex:1}.layer-row small{display:block;font-size:13px;color:var(--muted);margin-top:4px}.layer-row.active{color:var(--accent-hover)}.layer-row>svg{width:18px;height:18px}@media(hover:hover){.layer-row:hover{color:var(--accent-hover)}}.empty-state{grid-column:1/-1;text-align:center;padding:30px 12px;color:var(--muted)}.empty-state h2,.empty-state h3{font-size:18px;color:var(--ink);margin:12px 0}.empty-state p{font-size:15px;line-height:1.6;margin-bottom:14px}.viewport{flex:1;min-width:0;position:relative;overflow:hidden;isolation:isolate;background:var(--bone)}body.stage-dark .viewport{background:#46546b}body.stage-dark .scene-heading h2,body.stage-dark .scene-heading .eyebrow,body.stage-dark .scene-meta,body.stage-dark .navigation-hint,body.stage-dark .scene-title .icon-button{color:#f7f4ee}body.stage-dark .scene-product{color:#cfe8b4}body.stage-dark .scene-heading{text-shadow:0 1px 2px #1d2634aa}.viewport>canvas{display:block;width:100%;height:100%;touch-action:none}.scene-heading{position:absolute;left:24px;top:20px;pointer-events:none;max-width:calc(100% - 480px);min-width:260px}.scene-heading .eyebrow{display:block}.scene-title{display:flex;align-items:center;gap:2px}.scene-title .icon-button{pointer-events:auto;width:40px;height:40px}.scene-title svg{width:18px;height:18px}.scene-heading h2{font-size:25px;line-height:1.35}.scene-meta{font-size:13px;color:var(--muted);line-height:1.5}.scene-product{pointer-events:auto;min-height:36px;padding:4px 0;font-size:14px}.view-switch{position:absolute;top:20px;right:20px;display:flex;padding:4px;border:1px solid var(--line);background:#fffffff2;gap:2px}.view-switch button{min-height:40px;font-size:13px;display:flex;align-items:center;gap:6px;padding:8px 12px;color:var(--muted)}.view-switch svg{width:16px;height:16px}.view-switch button.active{background:var(--ink);color:#fff}@media(hover:hover){.view-switch button:hover:not(.active){background:var(--warm);color:var(--ink)}}.stage-tools{position:absolute;right:20px;bottom:20px;display:flex;align-items:center;padding:3px;background:#fffffff2;border:1px solid var(--line);gap:2px;z-index:6}.zoom-tools{display:flex}.view-options-toggle{display:flex;align-items:center;gap:7px;font-size:14px;padding:0 12px;min-height:44px;border-left:1px solid var(--line)}.view-options-toggle svg{width:17px;height:17px}@media(hover:hover){.view-options-toggle:hover{background:var(--bone)}}.view-options{position:absolute;bottom:76px;right:20px;width:290px;max-height:calc(100% - 96px);overflow:auto;background:#fff;border:1px solid var(--line);padding:6px 12px 12px;box-shadow:0 12px 40px #3a2a141c;z-index:8}.view-options-heading{display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:500}.option-row{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;font-size:14px;text-align:left;padding:8px}.option-row span{margin-left:auto;font-size:12px;color:var(--muted)}.option-row.active svg{color:var(--accent)}@media(hover:hover){.option-row:hover{background:var(--bone)}}.navigation-hint{position:absolute;top:78px;right:22px;text-align:right;pointer-events:none;color:var(--muted);font-size:12px;line-height:1.5;max-width:360px}body.interacted .navigation-hint{display:none}body.interacted.inside-view .navigation-hint{display:block}.room-dimension{display:none;position:absolute;right:20px;top:104px;font-size:14px;line-height:1.5;background:#fffffff2;border:1px solid var(--line);padding:8px 12px;pointer-events:none}.room-dimension.visible{display:block}.start-hint{position:absolute;bottom:20px;left:20px;display:flex;align-items:center;gap:12px;background:#fffffff5;border:1px solid var(--line);padding:6px 6px 6px 16px;max-width:calc(100% - 290px);overflow:hidden;box-shadow:0 3px 18px #3a2a1408;white-space:nowrap}.start-hint .start-icon{color:var(--accent)}.start-hint .start-text{font-size:14px;color:var(--ink)}.start-hint .button{padding:9px 14px}.start-hint .hint-close{width:40px;height:40px;color:var(--muted)}.selection-dock{display:none}@media(min-width:1025px),(min-width:761px)and (min-height:501px){.panel-open.has-selection .selection-dock:not([hidden]){display:block;position:absolute;left:20px;bottom:20px;width:min(440px,calc(100% - 290px));border:1px solid var(--line);padding:10px 12px;background:#fff;box-shadow:0 8px 30px #3a2a1415;z-index:5}}.furniture-loading{position:absolute;left:50%;bottom:92px;transform:translate(-50%);z-index:9;background:#fffffff5;border:1px solid var(--line);border-radius:22px;padding:10px 18px;font-size:14px;color:var(--ink);box-shadow:0 4px 16px #3a2a1412;pointer-events:none;white-space:nowrap}.dock-product{display:flex;align-items:center;gap:10px;margin-bottom:8px}.dock-product>img,.dock-thumb{width:44px;height:44px;object-fit:contain;background:#fff;border:1px solid var(--line)}.dock-product>div{min-width:0;flex:1}.dock-product strong{font-size:14px;font-weight:500;display:block;line-height:1.3}.dock-product span{display:block;font-size:12px;line-height:1.4;color:var(--muted);margin-top:2px}.dock-product>.icon-button{margin-right:-6px}.dock-actions{display:flex;gap:6px;align-items:center}.dock-actions .button{flex:1;padding:9px;font-size:12px}.inspector{scroll-padding-bottom:84px;width:310px;flex-shrink:0;background:#fff;border-left:1px solid var(--line);overflow:auto;scrollbar-width:thin;padding:0 20px 20px}body:not(.has-selection) .inspector{display:none}.inspector-header{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 -20px 16px;padding:18px 14px 14px 20px}.inspector-header h2{font-size:20px;line-height:1.3;margin-top:4px}.selected-preview{height:115px;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;margin-bottom:10px}.selected-preview img{height:100%;max-width:100%;object-fit:contain;padding:6px}.object-category{font-size:12px;color:var(--muted);line-height:1.5}.selected-product{margin-bottom:14px}.property-group,.disclosure{border-bottom:1px solid var(--line)}summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;list-style:none;font-size:15px;font-weight:500;min-height:52px}summary::-webkit-details-marker{display:none}summary svg{width:17px;height:17px;transition:transform .16s}details[open]>summary svg{transform:rotate(180deg)}.property-section{padding:4px 0 18px}.field-label,.replace-label{display:block;font-size:14px;color:var(--muted);line-height:1.5}.field-label input,.field-label select,.inspector select,.three-fields input{width:100%;height:44px;border:1px solid var(--line);border-radius:0;padding:8px 10px;background:#fff;font-size:16px;margin-top:6px}.field-label input{margin-bottom:16px}.replace-label{margin-top:18px}.three-fields{display:grid;gap:10px}.three-fields label{display:grid;grid-template-columns:1fr 1.1fr;align-items:center;gap:10px;font-size:14px;color:var(--muted)}.three-fields input{margin-top:0}.rotation-row{display:flex;align-items:center;gap:10px}.rotation-row input{min-width:30px;flex:1;height:44px}.rotation-row .icon-button{border:1px solid var(--line)}.object-actions{display:flex;gap:10px;position:sticky;bottom:-20px;background:#fff;padding:14px 0;margin-top:10px}.object-actions .button{flex:1;padding:10px}.statusbar{height:32px;border-top:1px solid var(--line);background:#fff;display:flex;align-items:center;padding:0 20px;gap:20px;font-size:12px;color:var(--muted)}.status-left{display:flex;align-items:center;gap:7px;margin-right:auto;padding:0;min-height:30px;font-size:12px}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}.status-dot.warning{background:#b85f20}.statusbar>button:last-child{display:flex;align-items:center;gap:6px;padding:0;font-size:12px;min-height:30px}.statusbar svg{height:13px;width:13px}.toast{position:fixed;z-index:70;top:76px;right:20px;left:auto;transform:translateY(-10px);visibility:hidden;display:flex;align-items:center;gap:14px;background:var(--ink);color:#fff;padding:12px 18px;font-size:14px;line-height:1.5;box-shadow:0 8px 24px #3a2a1425;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s,visibility 0s linear .2s;max-width:calc(100vw - 24px);width:max-content}.toast.show{opacity:1;transform:translateY(0);visibility:visible;transition-delay:0s}.toast .toast-action{pointer-events:auto}.toast-action{color:#b9e39a;font-weight:600;letter-spacing:.08em;text-transform:uppercase;font-size:12px;white-space:nowrap;text-decoration:none;min-height:44px;display:inline-flex;align-items:center}.share-status{margin:8px 0 0;color:var(--accent-hover);font-weight:500}dialog{border:1px solid var(--line);border-radius:0;padding:30px;width:min(480px,calc(100vw - 24px));max-height:calc(100dvh - 28px);overflow:auto;color:var(--ink);box-shadow:0 24px 100px #3a2a142b}dialog::backdrop{background:#3a2a1466;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.dialog-close{position:absolute;right:8px;top:8px}dialog h2{font-size:25px;margin:8px 0 16px;line-height:1.3;padding-right:24px}dialog p{font-size:15px;line-height:1.65;color:var(--muted);margin:0 0 16px}.help-steps{margin-top:16px}.help-steps b{display:block;color:var(--ink);font-weight:500;margin-bottom:4px}.plan-history{display:flex;gap:10px;margin-bottom:6px}.plan-history .button{flex:1}.share-url{width:100%;height:44px;border:1px solid var(--line);padding:8px 10px;margin-top:10px;font-size:14px}.loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;gap:14px;background:#faf8f5f2;font-size:15px;color:var(--muted);z-index:10}.spinner{height:28px;width:28px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}.cabin-loading{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:90%;text-align:center}.loading-poster{width:min(340px,70vw);aspect-ratio:4/3;object-fit:contain;background:#fff;border:1px solid var(--line);padding:3%}.cabin-loading h3{font-family:Roboto Slab,serif;font-size:22px;color:var(--ink)}.cabin-loading p{font-size:14px;color:var(--muted)}.cabin-loading progress{width:220px;height:6px;accent-color:var(--accent)}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition:none!important;scroll-behavior:auto!important}}.no-3d .view-switch,.no-3d .stage-tools,.no-3d #export-image,.no-3d .rail-button:not([data-panel=room]){display:none!important}.inside-view .scene-heading .eyebrow,.inside-view .scene-meta,.inside-view .scene-product,.inside-view .start-hint,.inside-view .room-dimension{display:none!important}.inside-view .navigation-hint{color:var(--ink)}@media(min-width:1500px){.library-panel{width:360px;padding-left:24px;padding-right:24px}.panel-heading{margin-left:-24px;margin-right:-24px;padding-left:24px}.category-list{margin:0 -24px;padding:0 24px 6px}.product-image{height:143px}.inspector{width:330px}}@media(max-width:1250px){.project-heading{display:none}.library-panel{width:300px}.scene-heading{left:18px;max-width:calc(100% - 360px);min-width:220px}.scene-heading h2{font-size:21px}.view-switch{right:14px;top:14px}.view-switch button{padding:8px 10px;font-size:12px}.view-switch svg{display:none}.navigation-hint{top:68px;right:16px}.inspector{width:280px}.start-hint{max-width:calc(100% - 250px)}.start-hint .start-text{display:none}}@media(min-width:761px)and (max-width:1050px){.view-switch{top:auto;bottom:14px;left:14px;right:auto}.stage-tools{top:14px;right:14px;bottom:auto}.view-options{top:70px;bottom:auto;right:14px}.navigation-hint{display:none}.start-hint{bottom:72px;left:14px}.scene-heading{max-width:calc(100% - 40px)}.room-dimension{top:14px;right:14px}.rail{width:72px}.rail-button{width:60px}.library-panel,.inspector{width:280px}.brand-app-name{font-size:17px}.topbar{gap:12px;padding:0 14px}.header-actions{gap:6px}.header-actions .button{padding:9px 12px}.scene-heading{max-width:calc(100% - 330px)}.start-hint .text-button,.navigation-hint{display:none}}@media(pointer:coarse){.view-switch button{min-height:44px}.statusbar{height:44px}.status-left,.statusbar>button:last-child{min-height:44px}.workspace{height:calc(100dvh - 108px)}}@media(min-width:761px){.panel-open .inspector{display:none}.inspector-open .inspector{display:block}.inspector-open .library-panel{display:none}}@media(max-width:760px),(max-width:1024px)and (max-height:500px){:root{--header-h:52px;--nav-h: calc(62px + env(safe-area-inset-bottom,0px)) }.mobile-only{display:flex!important}.topbar{height:var(--header-h);padding:0 8px 0 10px;gap:8px}.brand-logo{width:50px;height:40px}.brand-app-name{font-size:16px;padding-left:8px}.project-heading{display:none}.header-actions{gap:2px}.header-actions .button{width:44px;padding:0;min-height:44px}.header-actions .button span{display:none}.history-actions{margin:0}.history-actions #redo,.statusbar{display:none}.workspace{height:calc(100dvh - var(--header-h) - var(--nav-h));min-height:150px}.rail{position:fixed;bottom:0;left:0;right:0;width:100%;height:var(--nav-h);padding:4px 6px env(safe-area-inset-bottom,0px);flex-direction:row;justify-content:space-between;gap:2px;border:0;border-top:1px solid var(--line);z-index:40;background:#fff}.rail-button{flex:1;min-width:0;width:auto;min-height:54px;height:54px;gap:3px}.rail-button span{font-size:11.5px}.rail-button svg{width:21px;height:21px}.rail-button.active:before{height:2px;width:24px;left:calc(50% - 12px);top:-4px}.rail-badge{top:2px;right:calc(50% - 22px)}.rail-bottom{display:none}.scene-heading{left:10px;top:10px;min-width:0;max-width:calc(100% - 118px);background:#fffffff0;border:1px solid var(--line);padding:0 0 0 12px}.scene-heading .eyebrow,.scene-meta,.scene-product{display:none}.scene-title{min-height:44px}.scene-heading h2{font-size:15px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scene-title .icon-button{width:44px;height:44px}.stage-tools{top:10px;bottom:auto;right:10px;padding:0;gap:0;border:1px solid var(--line)}.zoom-tools{display:none}.view-options-toggle{padding:0;width:44px;justify-content:center;border-left:1px solid var(--line)}.view-options-toggle span{display:none}.view-options{top:62px;bottom:auto;right:10px;width:min(290px,calc(100% - 20px));max-height:calc(100% - 76px)}.navigation-hint{display:none}.inside-view .navigation-hint{display:block;top:62px;left:10px;right:auto;text-align:left;font-size:12px;background:#fffffff0;padding:4px 10px;border:1px solid var(--line);max-width:calc(100% - 20px)}.room-dimension{left:10px;top:62px;bottom:auto;font-size:13px;padding:6px 10px}.inside-view .room-dimension{display:none}.view-switch{top:auto;bottom:10px;left:10px;right:10px;justify-content:space-between;padding:3px;gap:2px}.view-switch button{font-size:12.5px;min-height:44px;padding:6px 4px;justify-content:center;flex:1;min-width:0;white-space:nowrap}.view-switch svg{display:none}.has-selection .view-switch,.panel-open .view-switch,.inspector-open .view-switch,.panel-open .stage-tools,.inspector-open .stage-tools,.panel-open .room-dimension{display:none}.start-hint{bottom:66px;left:10px;right:10px;transform:none;max-width:none;padding:4px 4px 4px 12px;gap:8px}.start-hint .start-text,.start-hint .text-button{display:none}.start-hint .button{flex:1;min-height:44px;font-size:12px}.start-hint .hint-close{width:44px;height:44px}.selection-dock{display:block;position:absolute;bottom:10px;left:10px;right:10px;border:1px solid var(--line);padding:8px 10px;background:#fff;box-shadow:0 8px 30px #3a2a1415;z-index:5}.panel-open .selection-dock,.inspector-open .selection-dock{display:none}.dock-product{margin-bottom:6px}.dock-actions .button{min-height:44px}.furniture-loading{top:62px;bottom:auto;font-size:13px;max-width:calc(100% - 20px);white-space:normal;text-align:center}.library-panel,.inspector{position:fixed;left:0;right:0;bottom:var(--nav-h);top:auto;width:auto;max-height:min(54dvh,calc(100dvh - var(--header-h) - var(--nav-h) - 120px));padding:0 16px 18px;border:0;border-top:1px solid var(--line);box-shadow:0 -10px 40px #3a2a1422;overscroll-behavior:contain;z-index:25;background:#fff}.inspector{display:none;z-index:26}.inspector-open.has-selection .inspector{display:block}.panel-heading,.inspector-header{margin:0 -16px 14px;padding:16px 10px 12px 16px}.panel-heading h1{font-size:19px;margin-top:2px}.inspector-header h2{font-size:18px}.panel-heading .eyebrow,.inspector-header .eyebrow{font-size:10px}.category-list{margin:0 -16px;padding:0 16px 6px}.catalog{gap:16px 10px}.product-image{height:124px}.chosen-cabin{padding:12px}.chosen-cabin>strong{font-size:18px}.selected-preview{display:none}.selected-product{margin:0 0 8px}.object-actions{bottom:-18px}.idea-row{grid-template-columns:76px 1fr}.idea-image{height:76px}.toast{top:auto;bottom:calc(var(--nav-h) + 118px);font-size:13px;flex-wrap:wrap;justify-content:center;text-align:center;transform:translate(-50%,10px)}.panel-open .toast,.inspector-open .toast{bottom:auto;top:calc(var(--header-h) + 10px)}.panel-open .loading{align-items:flex-start;padding-top:10px}.panel-open .loading-poster{width:min(200px,50vw)}.loading-poster{width:min(280px,70vw)}dialog{padding:22px;max-height:calc(100dvh - 24px)}dialog h2{font-size:22px}.color-preview-row{gap:10px}}@media(max-width:760px)and (max-height:760px){.library-panel,.inspector{max-height:min(46dvh,calc(100dvh - var(--header-h) - var(--nav-h) - 120px))}}@media(max-width:360px){.brand-app-name{font-size:15px}.brand-logo{width:44px}.view-switch button{font-size:11.5px}.cabin-choice>span{font-size:11px}.product-image{height:112px}.dock-actions .button{padding:8px 6px;font-size:11px}}@media(min-width:600px)and (max-width:760px){.catalog,.cabin-picker{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:761px)and (max-width:1024px)and (max-height:500px),(max-width:760px)and (orientation:landscape)and (max-height:500px){:root{--header-h:48px;--nav-h:0px;--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px)}.topbar{height:48px;padding-left:calc(10px + var(--safe-l));padding-right:calc(8px + var(--safe-r))}.brand-logo{height:38px;width:48px}.workspace{margin-left:calc(68px + var(--safe-l));height:calc(100dvh - 48px)}.rail{top:48px;bottom:0;left:0;right:auto;width:calc(68px + var(--safe-l));padding-left:calc(4px + var(--safe-l))!important;height:auto;flex-direction:column;gap:2px;padding:4px;border-top:0;border-right:1px solid var(--line)}.rail-button{width:60px;height:auto;min-height:44px;flex:1;gap:2px}.rail-button span{font-size:10.5px}.rail-button svg{width:18px;height:18px}.rail-button.active:before{left:-4px;top:calc(50% - 9px);width:2px;height:18px}.scene-heading{max-width:calc(50% - 20px)}.view-switch{left:auto;right:10px;width:min(430px,calc(100% - 140px))}.start-hint{right:auto;width:min(360px,calc(100% - 20px));bottom:64px}.library-panel,.inspector{left:auto;right:0;top:48px;bottom:0;width:min(400px + var(--safe-r),48vw);padding-right:calc(16px + var(--safe-r));max-height:none;border-top:0;border-left:1px solid var(--line);box-shadow:-10px 0 40px #3a2a1422}.stage-tools{right:calc(10px + var(--safe-r))}.view-switch{right:calc(10px + var(--safe-r));bottom:calc(10px + env(safe-area-inset-bottom,0px))}.view-switch button span{display:none}.view-switch svg{display:block}.view-switch button{padding:6px 10px}.selection-dock{right:calc(10px + var(--safe-r));bottom:calc(10px + env(safe-area-inset-bottom,0px));max-width:46vw}.rail{padding-bottom:calc(4px + env(safe-area-inset-bottom,0px))!important}.scene-heading{max-width:min(46%,320px)}.start-hint{left:10px;right:auto;bottom:calc(10px + env(safe-area-inset-bottom,0px));width:auto;max-width:300px}.start-hint .button{font-size:11px;padding:8px 10px}.inspector .object-actions{position:static}.catalog,.cabin-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.toast{bottom:70px}.panel-open .toast,.inspector-open .toast{top:auto;bottom:16px;left:calc(50% - 100px)}.selection-dock{left:auto;width:min(380px,calc(100% - 20px))}}.use-picker{display:block;font-size:14px;font-weight:500;margin:4px 0 14px}.use-picker select{display:block;width:100%;margin-top:8px;min-height:44px;border:1px solid var(--line);border-radius:0;background:#fff;color:var(--ink);padding:9px 10px;font:inherit;font-size:16px;font-weight:400}.collection-intro{padding:14px;border:1px solid var(--line);background:var(--bone);margin-bottom:16px}.collection-intro p{font-size:14px;line-height:1.6;margin:0 0 10px;color:var(--muted)}.collection-intro .full{margin-top:0}.height-controls{margin-top:18px;border-top:1px solid var(--line);padding-top:18px}.height-controls h3{font-size:14px}.height-controls output{font-size:14px;color:var(--muted)}.height-slider{display:flex;align-items:center;gap:8px;margin:10px 0}.height-slider input{min-width:0;flex:1;height:44px}.height-slider button{font-size:22px;flex:0 0 44px;min-height:44px}.move-modes{display:flex;border:1px solid var(--line);overflow:hidden;margin:14px 0}.move-modes button{flex:1;min-height:44px;padding:7px 4px;background:#fff;font-size:14px;color:var(--ink)}.move-modes button.active{background:var(--accent-soft);color:var(--accent-hover);font-weight:600}.mount-label{display:block;font-size:14px;margin:14px 0 8px;color:var(--muted)}.mount-label select{display:block;width:100%;min-height:44px;padding:10px;margin-top:8px;border:1px solid var(--line);font:inherit;font-size:16px;background:#fff}.height-actions{display:flex;gap:14px;flex-wrap:wrap}.height-actions .text-button{min-height:44px;margin:0;font-size:14px}.light-controls{padding-top:16px;margin-top:16px;border-top:1px solid var(--line)}.light-toggle{display:flex;justify-content:space-between;align-items:center;font-size:14px;min-height:44px}.light-toggle input{width:20px;height:20px}.light-controls input[type=range]{display:block;width:100%;margin-top:12px;height:44px}#restore-materials{font-size:14px;margin-top:10px}#custom-color.custom-color{width:44px;height:44px;border-radius:50%;color:var(--ink);border:1px dashed var(--line-card)}.color-controls input[type=range]{height:28px}.color-picker-actions .button{min-height:44px}@media(max-width:760px),(max-width:1024px)and (max-height:500px){.color-shade-field{height:150px}}.color-picker h2{font-size:24px;margin-bottom:18px;line-height:1.3}.color-shade-field{height:155px;position:relative;border-radius:6px;border:1px solid #d8d1c5;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,transparent);touch-action:none;cursor:crosshair;overflow:hidden}#color-shade-cursor{position:absolute;display:block;width:14px;height:14px;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #282828;transform:translate(-50%,-50%);pointer-events:none}.color-controls{display:grid;gap:13px;margin:18px 0}.color-controls label{display:grid;grid-template-columns:1fr auto;gap:9px;font-size:14px;color:var(--ink)}.color-controls output{color:var(--muted);font-size:12px}.color-controls input[type=range]{-moz-appearance:none;appearance:none;-webkit-appearance:none;grid-column:1/-1;width:100%;height:14px;margin:0;border-radius:7px;border:1px solid #cfc6b6;background:var(--brand-soft)}.color-controls #color-h{background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.color-controls input::-webkit-slider-thumb{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:20px;height:20px;border:2px solid #fff;border-radius:50%;background:#583c1c;box-shadow:0 0 0 1px #583c1c;cursor:grab}.color-controls input::-moz-range-thumb{width:17px;height:17px;border:2px solid #fff;border-radius:50%;background:#583c1c;box-shadow:0 0 0 1px #583c1c;cursor:grab}.color-preview-row{display:flex;align-items:flex-end;gap:14px;margin-top:22px}.color-preview-row>div{flex:0 0 46px;text-align:center}.color-preview-chip{display:block;width:46px;height:38px;border:1px solid #d8d1c5;border-radius:5px}.color-preview-row small{display:block;margin-top:5px;font-size:12px;color:var(--muted)}.color-hex-label{display:flex;flex:1;min-width:0;flex-direction:column;gap:7px;font-size:14px;padding-bottom:1px}.color-hex-label input{width:100%;min-width:0;height:40px;border:1px solid var(--line);border-radius:5px;padding:8px 10px;color:var(--ink);font-size:16px;background:#fff}.color-hex-label input[aria-invalid=true]{border-color:#b33c2e}.color-picker .color-picker-error{font-size:13px;line-height:1.4;min-height:19px;margin:9px 0 0;color:#a32f23}.color-picker-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}#custom-color.custom-color{width:28px;height:28px;flex-shrink:0;color:var(--brand-brown);border-color:var(--brand-brown)}#custom-color.custom-color:hover{background:var(--accent-soft)}@media(max-height:720px){.color-picker h2{font-size:22px;margin:9px 0 14px}.color-shade-field{height:115px}.color-controls{gap:9px;margin:14px 0}.color-preview-row{margin-top:15px}.color-picker-actions{margin-top:8px}}@font-face{font-family:Roboto;src:url(../brand/roboto-latin.woff2) format("woff2");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:Roboto Slab;src:url(../brand/roboto-slab-latin.woff2) format("woff2");font-style:normal;font-weight:300 900;font-display:swap}:root{font-family:Roboto,Arial,sans-serif;font-size:16px;font-synthesis:none;--ink:#3a2a14;--ink-soft:#5a4a36;--muted:#6b5f52;--bone:#faf8f5;--warm:#f3efe8;--line:#ddd5c8;--line-card:#d3c8b4;--accent:#4e9a1e;--accent-hover:#3d7a12;--accent-soft:#edf5e6;--panel:#fff;--danger:#943a20;color:var(--ink);background:#fff}body,button,input,select{font-family:Roboto,Arial,sans-serif}h1,h2,.brand-app-name{font-family:Roboto Slab,Georgia,serif}
