.floor-preview-trigger{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:46px;padding:12px 18px;border:1px solid #375346;border-radius:8px;background:#294c3d;color:#fff;font:650 13px/1.4 Inter,'Segoe UI',Arial,sans-serif;cursor:pointer;text-decoration:none;transition:background .18s,transform .18s}
.floor-preview-trigger::before{content:'⌑';font-size:22px;font-weight:400;line-height:1}
.floor-preview-trigger:hover{background:#1b382c;transform:translateY(-1px)}
.floor-preview-trigger:focus-visible,.floor-preview-dialog :focus-visible{outline:3px solid #bf8958;outline-offset:3px}

/* Shared scenes used by the catalog and product pages. */
.floor-scene{position:relative;isolation:isolate;display:grid;place-items:center;width:100%;min-width:0;aspect-ratio:3/2;overflow:hidden;border-radius:12px;background:#e7e2d8;color:#35412f}
.floor-scene-canvas{display:block;width:100%;height:auto;max-height:none!important;aspect-ratio:3/2;transform:scale(var(--floor-zoom,1));transform-origin:center 65%;transition:transform .25s ease}
.floor-scene-label{position:absolute;z-index:2;left:16px;bottom:15px;padding:7px 11px;border:1px solid #ffffff66;border-radius:30px;background:#19342a94;color:#fff;backdrop-filter:blur(8px);font:550 10px/1.2 Inter,'Segoe UI',Arial,sans-serif;letter-spacing:.06em;pointer-events:none}
.floor-scene-status{max-width:340px;margin:30px;text-align:center;font:500 14px/1.7 Inter,'Segoe UI',Arial,sans-serif}
.floor-scene[aria-busy=true]:not([data-floor-ready=true]) .floor-scene-status::before{content:'';display:block;width:28px;height:28px;margin:0 auto 16px;border:2px solid #b9bfb4;border-top-color:#385443;border-radius:50%;animation:floor-loading .9s linear infinite}
@keyframes floor-loading{to{transform:rotate(360deg)}}
.floor-preview-open{overflow:hidden}

/* Studio shell */
.floor-preview-dialog{--floor-green:#294c3d;--floor-sand:#f8f6f0;--floor-line:#dddeda;--floor-muted:#737e74;box-sizing:border-box;width:min(1570px,calc(100% - 40px));max-width:none;max-height:calc(100dvh - 32px);margin:auto;padding:0;overflow:auto;overscroll-behavior:contain;border:1px solid #ffffffb3;border-radius:20px;background:var(--floor-sand);color:#243b2f;box-shadow:0 28px 100px #102b2559;font-family:Inter,'Segoe UI',Arial,sans-serif;scrollbar-width:thin;scrollbar-color:#b3bdb1 #f0eee7}
.floor-preview-dialog *,.floor-preview-dialog *::before,.floor-preview-dialog *::after{box-sizing:border-box}
.floor-preview-dialog [hidden],.floor-preview-dialog:not([open]){display:none!important}
.floor-preview-dialog::backdrop{background:#1b322dd6;backdrop-filter:blur(9px)}
.floor-preview-dialog button,.floor-preview-dialog input,.floor-preview-dialog select{font-family:inherit}
.floor-preview-dialog button{touch-action:manipulation}
.floor-preview-dialog button:disabled{opacity:.45;cursor:default}
.floor-preview-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 28px 20px;border-bottom:1px solid var(--floor-line)}
.floor-preview-kicker{margin:0 0 6px;color:#938165;font-size:9px;font-weight:750;letter-spacing:.17em;text-transform:uppercase}
.floor-preview-heading h2{margin:0;color:#294c3d;font-size:clamp(21px,2vw,29px);font-weight:550;line-height:1.2;letter-spacing:-.035em}
.floor-preview-close{display:grid;flex:none;place-items:center;width:44px;height:44px;padding:0;border:1px solid #d5d9d0;border-radius:50%;background:#ffffffb3;color:#405846;font:400 27px/1 Arial!important;cursor:pointer;transition:background .18s}
.floor-preview-close:hover{background:#e7eadd}
.floor-preview-main{display:grid;grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:24px;padding:22px 28px 0}
.floor-preview-visual{min-width:0}
.floor-preview-room-picker{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.floor-room-button,.floor-room-upload{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:10px 15px;border:1px solid #d4d9cf;border-radius:8px;background:#ffffffa6;color:#556554;font-size:12px;line-height:1.3;font-weight:600;cursor:pointer;transition:border-color .18s,background .18s,color .18s}
.floor-room-button:hover,.floor-room-upload:hover{border-color:#84977e;background:#eff1e8}
.floor-room-button[aria-pressed=true],.floor-room-upload[aria-pressed=true]{border-color:#294c3d;background:#294c3d;color:#fff}
.floor-room-upload{margin-left:auto;border-style:dashed;color:#53684d}
.floor-preview-stage-wrap{position:relative;isolation:isolate;overflow:hidden;width:100%;border:1px solid #e0e1d7;border-radius:12px;background:#e7e2d8}
.floor-preview-stage{width:100%;border-radius:0}
.floor-preview-stage .floor-scene-canvas{aspect-ratio:auto}
.floor-compare-canvas{position:absolute;z-index:1;inset:0;display:block;width:100%;height:100%;object-fit:fill;pointer-events:none;transform:scale(var(--floor-zoom,1));transform-origin:center 65%}
.floor-compare-label{position:absolute;z-index:3;top:14px;left:14px;max-width:calc(100% - 28px);padding:7px 11px;border:1px solid #ffffffb3;border-radius:7px;background:#f8f6f0ed;color:#294c3d;box-shadow:0 2px 12px #294c3d14;font-size:10px;line-height:1.4;font-weight:650;pointer-events:none}
.floor-preview-scene-caption{display:flex;justify-content:space-between;gap:12px;margin-top:10px;color:#7b8578;font-size:10px;line-height:1.5}
.floor-preview-room-name{color:#405842;font-weight:650}
.floor-preview-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:18px;padding-top:16px;border-top:1px solid var(--floor-line)}
.floor-preview-toolbar>button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:10px 13px;border:1px solid #d5dacf;border-radius:7px;background:#ffffffa6;color:#4d604d;font-size:11px;line-height:1.3;font-weight:600;cursor:pointer}
.floor-preview-toolbar>button:hover{background:#e9ede1;border-color:#8f9f87}
.floor-preview-toolbar>button[aria-pressed=true]{background:#e4ebdc;border-color:#78916e;color:#294c3d}
.floor-preview-zoom-label{display:grid;flex:1 1 150px;gap:5px;max-width:220px;margin-left:auto;color:#65725f;font-size:10px;font-weight:550}
.floor-preview-zoom-label>span{display:flex;justify-content:space-between;align-items:center;gap:10px}
.floor-preview-zoom-value{color:#647a58;font-size:10px;font-weight:650}
.floor-preview-dialog input[type=range]{width:100%;min-height:26px;margin:0;padding:0;accent-color:#496b40;cursor:pointer}
.floor-preview-comparison{margin-top:14px;padding:13px 16px;border:1px solid #d9e0d0;border-radius:9px;background:#edf1e5}
.floor-preview-comparison label{display:grid;gap:5px;color:#53644d;font-size:11px;line-height:1.5}
.floor-preview-comparison label>span{display:flex;justify-content:space-between;gap:12px}
.floor-preview-feedback{min-height:17px;margin:10px 0 0;color:#65765d;font-size:11px;line-height:1.55}
.floor-preview-feedback:empty{min-height:0;margin:0}

/* Personal room photo calibration */
.floor-photo-editor{margin-top:0;padding:14px;border:1px solid #d6ddcc;border-radius:10px;background:#f0f2e8}
.floor-photo-canvas{display:block;width:100%;max-height:440px;height:auto;border-radius:7px;background:#e2e3d8;cursor:crosshair;touch-action:manipulation}
.floor-photo-editor p,.floor-photo-instructions{margin:0 0 12px;color:#576a50;font-size:11px;line-height:1.65}
.floor-photo-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.floor-photo-editor button{min-height:44px;padding:9px 15px;border:1px solid #bbc8b0;border-radius:7px;background:#fff;color:#365131;font-size:11px;font-weight:600;cursor:pointer}
.floor-photo-editor button[data-floor-photo=apply]{border-color:#294c3d;background:#294c3d;color:#fff}
.floor-photo-editor button:hover{filter:brightness(.97)}

/* Searchable material library */
.floor-preview-options{display:flex;flex-direction:column;gap:10px;min-width:0;padding:0 0 0 22px;border-left:1px solid var(--floor-line);font-size:12px}
.floor-catalog-heading{display:flex;flex-direction:column;align-items:flex-start;gap:3px;color:#294c3d;font-size:17px;font-weight:650;line-height:1.4;letter-spacing:-.02em}
.floor-catalog-heading h3,.floor-catalog-heading strong{margin:0;color:inherit;font-size:inherit;font-weight:inherit}
.floor-catalog-heading p,.floor-catalog-heading small,.floor-catalog-heading>span{margin:0;color:#838c7d;font-size:10px;font-weight:500;letter-spacing:0}
.floor-catalog-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border:1px solid #e0e2d8;border-radius:8px;background:#edeee5}
.floor-catalog-tabs button{min-height:36px;padding:8px 12px;border:1px solid transparent;border-radius:5px;background:transparent;color:#71806a;font-size:11px;line-height:1.4;font-weight:600;cursor:pointer}
.floor-catalog-tabs button[aria-pressed=true]{border-color:#d5ddcc;background:#fff;color:#294c3d;box-shadow:0 2px 5px #294c3d08}
.floor-preview-options label{display:grid;gap:6px;min-width:0;color:#6b7763;font-size:10px;line-height:1.4;font-weight:600}
.floor-preview-options input[type=search],.floor-preview-options select{width:100%;min-width:0;min-height:44px;margin:0;padding:10px 12px;border:1px solid #d5dbce;border-radius:7px;background:#fff;color:#3a5437;font-size:11px;line-height:1.4;font-weight:500}
.floor-preview-options input[type=search]{cursor:text}
.floor-preview-options input[type=search]::placeholder{color:#98a08f}
.floor-preview-options select{cursor:pointer}
.floor-catalog-brand{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px!important}
.floor-catalog-brand select{min-height:40px;padding-top:8px;padding-bottom:8px}
.floor-catalog-count{margin:0;color:#899180;font-size:10px;line-height:1.5}
.floor-material-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:8px;max-height:clamp(180px,calc(100dvh - 610px),350px);min-height:0;padding:2px 5px 3px 2px;margin:0 -5px 0 -2px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b4bea9 #eeeee6}
.floor-material-card{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:0;padding:6px 6px 9px;border:1px solid #e0e3d7;border-radius:8px;background:#fff;color:#4d5f45;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.floor-material-card:hover{border-color:#94a583;box-shadow:0 2px 9px #294c3d0f}
.floor-material-card[aria-pressed=true]{border-color:#46663d;box-shadow:inset 0 0 0 1px #46663d;background:#f2f5eb}
.floor-preview-dialog .floor-material-card::before{content:none!important;display:none!important}
.floor-material-card[aria-pressed=true]::after{content:'✓';position:absolute;top:11px;right:11px;display:grid;place-items:center;width:20px;height:20px;border:2px solid #fff;border-radius:50%;background:#294c3d;color:#fff;font-size:10px;font-weight:750}
.floor-material-card img{display:block;width:100%;height:auto;aspect-ratio:1.48/1;padding:3px;border-radius:4px;object-fit:contain;background:#f3f2ec}
.floor-material-name{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;min-height:28px;padding:0 3px;color:#4c6046;font-size:10px;line-height:1.4;font-weight:600;overflow-wrap:anywhere}
.floor-material-meta{display:block;padding:0 3px;color:#8b947f;font-size:9px;line-height:1.3;font-weight:450}
.floor-material-list>p{grid-column:1/-1;margin:14px 7px;color:#79846f;font-size:12px;line-height:1.6}
.floor-selected-material{display:grid;gap:10px;min-width:0;margin-top:3px;padding-top:12px;border-top:1px solid var(--floor-line)}
.floor-preview-material{display:flex;align-items:center;gap:11px;min-width:0}
.floor-preview-material>div{min-width:0}
.floor-preview-original{display:block;flex:none;width:54px;height:58px;padding:4px;border:1px solid #e0e2d8;border-radius:6px;object-fit:contain;background:#fff}
.floor-preview-material-kicker{display:block;margin-bottom:4px;color:#9a8a70;font-size:8px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.floor-preview-surface{margin:0;color:#3b5637;font-size:11px;line-height:1.45;font-weight:600;overflow-wrap:anywhere}
.floor-preview-size{display:block;margin-top:3px;color:#7f8875;font-size:9px;line-height:1.5}
.floor-preview-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.floor-preview-controls select{font-size:10px}
.floor-preview-download,.floor-preview-share{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:44px;margin:2px 0 0;padding:11px 14px;border:1px solid #294c3d;border-radius:7px;background:#294c3d;color:#fff;font-size:11px;line-height:1.4;font-weight:600;text-decoration:none;cursor:pointer;transition:background .18s}
.floor-preview-download:hover,.floor-preview-share:hover{background:#1d3c2d}
.floor-preview-download>span,.floor-preview-share>span{font-size:17px;font-weight:400;line-height:1}
.floor-preview-product{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:40px;padding:9px 3px;color:#506e41;font-size:11px;line-height:1.4;font-weight:600;text-underline-offset:4px}
.floor-preview-product>span{font-size:16px;font-weight:400;text-decoration:none}
.floor-preview-share{justify-content:center;margin-top:-4px;border-color:#d5dccc;background:transparent;color:#5a704f}
.floor-preview-share:hover{background:#e8edde}
.floor-compare-name{display:block;margin-top:4px;color:#77896c;font-size:10px;line-height:1.5}
.floor-preview-disclaimer{max-width:1100px;margin:17px 28px 20px;color:#8a9180;font-size:9px;line-height:1.65}

/* Existing product-page preview */
.floor-product-preview{align-self:start;width:100%;min-width:0;margin-top:24px;padding-top:24px;border-top:1px solid #dcded3}
.floor-product-preview h2{margin:0 0 14px;color:#334d3b;font-size:17px;font-weight:550;line-height:1.35}
.floor-product-preview .floor-preview-trigger{width:100%;margin-top:13px}
.floor-product-preview-note{margin:11px 0 0;color:#7b8373;font-size:11px;line-height:1.6}
.product-media:has(.floor-product-preview){align-content:start}
.product-media:has(.floor-product-preview)>.image-note{position:static;justify-self:start;margin-top:10px}

.floor-preview-dialog:fullscreen{width:100%;height:100dvh;max-height:none;border:0;border-radius:0}
.floor-preview-dialog:fullscreen .floor-preview-main{grid-template-columns:minmax(0,1fr) 340px}
@media(min-width:1600px){
  .floor-preview-dialog{width:min(1680px,calc(100% - 64px))}
  .floor-preview-main{gap:30px}
  .floor-material-list{max-height:clamp(220px,calc(100dvh - 610px),440px)}
}
@media(max-width:1120px){
  .floor-preview-dialog{width:calc(100% - 28px)}
  .floor-preview-heading{padding:19px 22px 17px}
  .floor-preview-main{grid-template-columns:minmax(0,1fr) 300px;gap:18px;padding:18px 22px 0}
  .floor-preview-options{padding-left:18px}
  .floor-room-button,.floor-room-upload{padding:9px 11px;font-size:11px}
  .floor-room-upload{margin-left:0}
  .floor-preview-toolbar{gap:6px}
  .floor-preview-toolbar>button{padding:9px 10px;font-size:10px}
  .floor-preview-zoom-label{flex-basis:100%;max-width:none;margin:5px 0 0}
  .floor-preview-disclaimer{margin-right:22px;margin-left:22px}
}
@media(min-width:801px) and (max-height:860px){
  .floor-preview-heading{padding-top:15px;padding-bottom:14px}
  .floor-preview-main{padding-top:15px}
  .floor-preview-stage-wrap{width:100%;max-width:min(100%,calc((100dvh - 326px)*var(--scene-ratio,1.5)));margin-right:auto;margin-left:auto}
  .floor-preview-options{height:calc(100dvh - 146px);max-height:calc(100dvh - 146px);min-height:0;gap:6px}
  .floor-preview-options>*{flex-shrink:0}
  .floor-catalog-heading{gap:1px;font-size:16px}
  .floor-catalog-tabs{padding:3px}
  .floor-catalog-tabs button{min-height:32px;padding-top:6px;padding-bottom:6px}
  .floor-preview-options input[type=search]{min-height:40px;padding-top:8px;padding-bottom:8px}
  .floor-material-list{flex:1 1 auto;max-height:none;min-height:72px}
  .floor-material-card img{aspect-ratio:1.8/1}
  .floor-selected-material{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;margin-top:1px;padding-top:9px}
  .floor-selected-material>.floor-preview-material,.floor-selected-material>.floor-preview-controls,.floor-preview-share{grid-column:1/-1}
  .floor-preview-original{width:42px;height:44px}
  .floor-preview-material-kicker{margin-bottom:2px}
  .floor-preview-controls{gap:10px}
  .floor-preview-controls label{gap:4px}
  .floor-preview-controls select{min-height:38px;padding-top:7px;padding-bottom:7px}
  .floor-preview-download{min-height:44px;margin:0;padding:9px 10px;font-size:10px}
  .floor-preview-product{justify-content:center;gap:7px;min-height:44px;padding:8px 0;font-size:10px}
  .floor-preview-share{min-height:36px;margin:0;padding:8px 10px;font-size:10px}
  .floor-preview-toolbar{margin-top:13px;padding-top:12px}
  .floor-preview-disclaimer{margin-top:13px;margin-bottom:15px}
}
@media(max-width:800px){
  .floor-preview-dialog,.floor-preview-dialog:fullscreen{width:100%;height:100dvh;max-width:100%;max-height:100dvh;margin:0;border:0;border-radius:0;overflow-x:hidden;overflow-y:auto}
  .floor-preview-heading{gap:12px;padding:16px 17px}
  .floor-preview-kicker{font-size:8px;letter-spacing:.12em}
  .floor-preview-heading h2{font-size:22px}
  .floor-preview-main,.floor-preview-dialog:fullscreen .floor-preview-main{grid-template-columns:1fr;gap:20px;padding:15px 16px 0}
  .floor-preview-room-picker{gap:6px;margin-bottom:11px}
  .floor-room-button,.floor-room-upload{flex:1 1 auto;min-height:44px;padding:9px 10px;font-size:11px}
  .floor-preview-stage-wrap{border-radius:9px}
  .floor-preview-scene-caption{gap:9px;font-size:9px}
  .floor-preview-scene-caption>:last-child{text-align:right}
  .floor-preview-toolbar{gap:7px;margin-top:13px;padding-top:12px}
  .floor-preview-toolbar>button{flex:1 1 0;min-width:0;min-height:44px;padding:8px 7px;font-size:10px}
  .floor-preview-zoom-label{flex-basis:100%;gap:2px;margin-top:4px}
  .floor-preview-comparison{margin-top:10px;padding:10px 13px}
  .floor-preview-feedback{font-size:10px}
  .floor-preview-options{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 12px;padding:18px 0 0;border-top:1px solid var(--floor-line);border-left:0}
  .floor-catalog-heading,.floor-catalog-tabs,.floor-catalog-count,.floor-material-list,.floor-selected-material,.floor-preview-controls{grid-column:1/-1}
  .floor-catalog-heading{font-size:16px}
  .floor-catalog-tabs{grid-template-columns:1fr 1fr}
  .floor-catalog-tabs button{min-height:40px;font-size:11px}
  .floor-catalog-search,.floor-catalog-brand{align-self:end}
  .floor-catalog-brand{grid-template-columns:1fr;gap:6px!important}
  .floor-catalog-brand select{min-height:44px;padding-top:10px;padding-bottom:10px}
  .floor-preview-options input[type=search],.floor-preview-options select{font-size:12px}
  .floor-material-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;max-height:265px;padding-bottom:4px}
  .floor-material-card{gap:5px;padding:5px 5px 8px;border-radius:7px}
  .floor-material-card img{aspect-ratio:1.22/1}
  .floor-material-name{min-height:28px;padding:0 2px;font-size:10px}
  .floor-material-meta{padding:0 2px;font-size:8px}
  .floor-material-card[aria-pressed=true]::after{top:8px;right:8px;width:18px;height:18px;font-size:9px}
  .floor-selected-material{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;margin-top:3px;padding-top:13px}
  .floor-selected-material>.floor-preview-material,.floor-selected-material>.floor-preview-controls{grid-column:1/-1}
  .floor-preview-original{width:55px;height:55px}
  .floor-preview-material-kicker{font-size:8px}
  .floor-preview-surface{font-size:12px}
  .floor-preview-size{font-size:10px}
  .floor-preview-controls{gap:12px}
  .floor-preview-options label{font-size:10px}
  .floor-preview-download,.floor-preview-product,.floor-preview-share{min-height:44px;margin:0;font-size:11px}
  .floor-preview-product{justify-content:center;gap:8px}
  .floor-preview-share{grid-column:1/-1}
  .floor-preview-disclaimer{margin:16px 17px 21px;font-size:9px}
  .floor-scene-label{left:10px;bottom:10px;padding:5px 8px;font-size:8px}
  .floor-compare-label{top:10px;left:10px;font-size:9px}
  .floor-photo-editor{padding:10px}
  .floor-photo-editor button{padding:8px 12px}
}
@media(max-width:390px){
  .floor-preview-heading{padding:14px}
  .floor-preview-heading h2{font-size:20px}
  .floor-preview-main{padding-right:12px;padding-left:12px}
  .floor-room-button,.floor-room-upload{padding:9px 8px;font-size:10px}
  .floor-material-list{gap:5px;max-height:240px}
  .floor-material-card{padding:4px 4px 7px}
  .floor-material-name{font-size:9px;line-height:1.45}
  .floor-preview-download,.floor-preview-product{font-size:10px}
}
@media(prefers-reduced-motion:reduce){
  .floor-preview-dialog,.floor-preview-dialog *,.floor-preview-trigger,.floor-scene-canvas{scroll-behavior:auto;transition:none}
  .floor-scene[aria-busy=true] .floor-scene-status::before{animation:none}
}
@media(max-width:800px),(prefers-reduced-motion:reduce){
  .floor-preview-dialog::backdrop{background:#1b322deb;backdrop-filter:none}
  .floor-scene-label{background:#19342abf;backdrop-filter:none}
}
