/* These brand font subsets map unsupported characters to a bullet. Limit them to real glyphs so symbols and accented letters fall through to Helvetica/Arial. */
@font-face{font-family:"Unica77 LL";src:url('./fonts/unica77-regular.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap;unicode-range:U+20,U+2C-39,U+41-5A,U+61-7A,U+AD,U+B6-B7,U+2019,U+2022,U+2219}
@font-face{font-family:"Unica77 LL";src:url('./fonts/unica77-medium.woff2') format('woff2');font-style:normal;font-weight:500 900;font-display:swap;unicode-range:U+20,U+2C-39,U+41-5A,U+61-7A,U+AD,U+B6-B7,U+2019,U+2022,U+2219}
@font-face{font-family:"Space Mono";src:url('./fonts/space-mono-regular.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
/* Editorial interiors palette. Controls share one quiet, tactile vocabulary. */
:root{--atelier-paper:#f5f2ed;--atelier-panel:#faf8f4;--atelier-ink:#302923;--atelier-muted:#72695f;--atelier-line:#d9d1c6;--atelier-wash:#ece5db;--atelier-accent:#6b3837;font-family:"Unica77 LL","Helvetica Neue",Arial,sans-serif}
body.objects-page,body.counter-page{--panel:var(--atelier-panel);--line:var(--atelier-line);--muted:var(--atelier-muted);--accent:var(--atelier-accent);color:var(--atelier-ink);background:var(--atelier-paper);-webkit-font-smoothing:antialiased}
body .topbar.shared-header{background:var(--atelier-paper);color:var(--atelier-ink);border-color:var(--atelier-line)}
body .inspector{background:var(--atelier-panel);border-color:var(--atelier-line)}
body .catalogue-picker select{font-family:"Unica77 LL","Helvetica Neue",Arial,sans-serif;font-size:20px;letter-spacing:-.35px;line-height:1.2;height:30px}
.current-category{color:var(--atelier-muted);font-size:12px;letter-spacing:.035em}
body :is(button,a,input,select,textarea,summary){-webkit-tap-highlight-color:transparent}
body button{border-radius:2px;transition:background-color .16s ease,border-color .16s ease,color .16s ease,opacity .16s ease}
body :is(button,a,input,select,textarea,summary):focus-visible{outline:2px solid var(--atelier-accent);outline-offset:3px}
body button:disabled{opacity:.4;cursor:default}
body .tabs{border-color:var(--atelier-line);gap:24px}
body .tabs>button{border-bottom-width:1px;border-radius:0;font-size:14px;letter-spacing:.02em;color:var(--atelier-muted)}
body .tabs>button[aria-selected=true]{color:var(--atelier-ink);border-bottom-color:var(--atelier-accent)}
body :is(.size-options,.pattern-choices,.sheen-options,.finish-choices,.plan-choices)>button,body .preset{border:1px solid var(--atelier-line);background:transparent;color:var(--atelier-ink);font-size:14px;min-height:44px;font-weight:400;border-radius:2px}
body :is(.size-options,.pattern-choices,.sheen-options,.finish-choices,.plan-choices)>button:is(.active,[aria-pressed=true]),body .preset:is(.active,[aria-pressed=true]){border-color:var(--atelier-ink);background:var(--atelier-wash);color:var(--atelier-ink)}
body .size-options small{color:var(--atelier-muted);font-size:12px;line-height:1.3;margin-top:6px}
body :is(.wide-button,.export-parts button,.share-close,.settings-download button,.settings-name-actions button){border:1px solid var(--atelier-line);background:transparent;color:var(--atelier-ink);border-radius:2px;min-height:44px;font-size:14px;padding:11px 14px}
body :is(.buy-object,.primary,#get-quote,.settings-name-actions button[type=submit],.share-design-dialog #download-settings,.share-design-dialog #save-lamp){background:var(--atelier-ink);border:1px solid var(--atelier-ink);color:#faf8f4;border-radius:2px;font-size:14px;letter-spacing:.025em;min-height:44px;padding:12px 16px}
body .studio-share{border:1px solid var(--atelier-ink);background:transparent;color:var(--atelier-ink);border-radius:2px;min-height:44px;flex-basis:44px}
body .studio-share svg{width:19px;height:19px}
body .studio-action-row{gap:8px}
body :is(.purchase-summary,.lamp-actions,.counter-actions){border-color:var(--atelier-line);background:var(--atelier-panel)}
body .purchase-line{font-size:14px;line-height:1.4}
body .purchase-line strong{font-family:"Unica77 LL","Helvetica Neue",Arial,sans-serif;font-size:23px;font-weight:400;letter-spacing:-.3px}
body :is(.purchase-meta,.note,.finished-width){color:var(--atelier-muted);line-height:1.55}
body .control{padding:3px 0;margin:21px 0}
body .control-head{font-size:14px;line-height:1.45;margin-bottom:8px}
body .control-head output{font-size:14px;font-variant-numeric:tabular-nums;color:var(--atelier-muted)}
body .value-box{border-color:var(--atelier-line)}
body .value-box input{color:var(--atelier-ink);font-variant-numeric:tabular-nums;background:transparent}
body input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;width:100%;min-height:52px;touch-action:pan-y;accent-color:var(--atelier-ink)}
body input[type=range]::-webkit-slider-runnable-track{height:2px;background:var(--atelier-line);border-radius:0}
body input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:44px;height:44px;border:0;border-radius:50%;background:radial-gradient(circle,var(--atelier-ink) 0 8px,var(--atelier-panel) 8px 9px,var(--atelier-ink) 9px 10px,transparent 10px);margin-top:-21px;box-shadow:none}
body input[type=range]::-moz-range-track{height:2px;background:var(--atelier-line)}
body input[type=range]::-moz-range-thumb{width:44px;height:44px;border:0;border-radius:50%;background:radial-gradient(circle,var(--atelier-ink) 0 8px,var(--atelier-panel) 8px 9px,var(--atelier-ink) 9px 10px,transparent 10px);box-shadow:none}
body input[type=range]:disabled{opacity:.4;cursor:default}
body .swatches{gap:12px}
body .swatch{position:relative;border:3px solid var(--atelier-panel);border-radius:0!important;outline:1px solid #d9d1c655;outline-offset:0;box-shadow:none;min-height:36px}
body.unified-navigation .swatch:is(.active,[aria-pressed=true]){outline:1px solid var(--atelier-ink);outline-offset:3px;box-shadow:none;border-radius:0!important}
body .swatch::after{border-radius:0!important}
body .section-title,body .section-label{color:var(--atelier-ink);font-size:14px;letter-spacing:.02em}
body :is(.refine,.studio-settings){border-color:var(--atelier-line)}
body :is(.refine,.studio-settings)>summary{color:var(--atelier-ink);font-size:14px}
body .lamp-color-group label{font-size:14px;color:var(--atelier-ink)}
body .view-switch button{font-size:12px;color:var(--atelier-muted);border-radius:0;min-height:44px;padding:0 7px}
body .view-switch button span{background:#f5f2edb8;border-radius:0}
body .view-switch button[aria-pressed=true] span{color:var(--atelier-ink);border-color:var(--atelier-ink)}
body :is(.wall-views,.view-modes,.view-nav,.camera-views) button{font-size:12px;min-height:36px;border-radius:0}
body .wall-views button{padding:7px 10px;border-color:var(--atelier-line);background:#f5f2eddd}
body .wall-views button[aria-pressed=true]{color:var(--atelier-ink);border-color:var(--atelier-ink);background:var(--atelier-wash)}
body :is(.text-button,.lamp-actions>a){font-size:13px;color:var(--atelier-muted);text-underline-offset:4px}
body dialog{background:var(--atelier-panel);color:var(--atelier-ink);border:1px solid var(--atelier-line);border-radius:3px;box-shadow:0 20px 70px #30292324}
body dialog::backdrop{background:#30292366;backdrop-filter:blur(3px)}
body dialog h2{font-family:"Unica77 LL","Helvetica Neue",Arial,sans-serif;font-size:27px;font-weight:400;letter-spacing:-.5px}
body dialog :is(input,textarea,select){border-color:var(--atelier-line);border-radius:2px;background:var(--atelier-panel);color:var(--atelier-ink);font-size:16px}
body dialog .close{min-width:44px;min-height:44px;color:var(--atelier-muted)}
@media(hover:hover){
 body :is(.size-options,.pattern-choices,.sheen-options,.finish-choices,.plan-choices)>button:not(:disabled):hover,body :is(.preset,.wide-button,.studio-share,.share-close,.settings-name-actions button:not([type=submit])):not(:disabled):hover{background:var(--atelier-wash);border-color:var(--atelier-ink)}
 body :is(.buy-object,.primary,#get-quote,.settings-name-actions button[type=submit]):not(:disabled):hover{background:#4b3b32;border-color:#4b3b32}
 body .swatch:hover{outline-color:var(--atelier-muted)}
 body .tabs>button:hover{color:var(--atelier-ink)}
}
body.dark-mode{--atelier-panel:#211e1b;--atelier-paper:#191715;--atelier-ink:#eee5da;--atelier-muted:#b7aa9a;--atelier-line:#51483e;--atelier-wash:#342d27;--atelier-accent:#c9a49a}
body.dark-mode :is(.buy-object,.primary,#get-quote,.settings-name-actions button[type=submit]){color:#211e1b}
@media(max-width:700px){
 body .catalogue-picker select{font-size:19px;height:28px}
 body .tabs{gap:20px}
 body .purchase-line strong{font-size:20px}
 body .purchase-summary{padding:8px 16px 10px}
 body .size-options{gap:7px}
 body .pattern-choices{gap:7px}
 body .pattern-choices button{padding:10px 5px}
 body .swatches{gap:10px}
 body .lamp-color-group .swatches{grid-template-columns:repeat(8,minmax(0,1fr));gap:8px}
 body .settings-name-dialog{padding:24px 20px}
}
@media(prefers-reduced-motion:reduce){body button{transition:none}}

/* Scene-aware labels: no plates, boxes or filled button backgrounds. */
body .view-switch,body .view-switch button,body .view-switch button span{background:none!important;box-shadow:none!important;backdrop-filter:none!important}
body .view-switch button,body .view-switch button span{color:#302923}
body .view-switch[data-scene="insitu"] button,body .view-switch[data-scene="insitu"] button span{color:#fffaf2}
body .view-switch button[aria-pressed="true"] span{border-bottom-color:currentColor}
body .view-switch button[aria-pressed="false"] span{border-bottom-color:transparent}

body .catalogue-picker select,body dialog h2{font-weight:500;letter-spacing:-.02em}
body .current-category,body .eyebrow{font-family:"Space Mono",ui-monospace,monospace;letter-spacing:0}
body .view-switch .product-ar-button[aria-expanded="true"] span{border-bottom-color:currentColor}
body .product-ar-dialog{width:min(500px,calc(100vw - 24px));box-sizing:border-box;padding:24px;max-height:calc(100dvh - 24px);overflow:auto}
body .product-ar-dialog h2{padding-right:26px;margin-top:0}
.product-ar-dialog .ar-description,.product-ar-dialog .ar-status{font-size:14px;line-height:1.5}
.product-ar-dialog model-viewer{display:block;width:100%;height:clamp(180px,38dvh,360px);background:var(--atelier-paper);--progress-bar-color:var(--atelier-ink)}
.product-ar-dialog .ar-launch{width:100%}
body .view-switch[data-scene="studio"] button,body .view-switch[data-scene="studio"] button span{color:#302923}

.checkout-status{font-size:14px;line-height:1.5;margin:8px 0 0}.checkout-status:empty{display:none}

.end-profile-control .finish-choices{display:flex;gap:8px;flex-wrap:wrap}.end-profile-control .finish-choices button{flex:1;padding:10px 8px;min-width:80px}.end-profile-control{margin-top:24px}

/* One calm catalogue, shared by every product family. */
body .catalogue-trigger{position:relative;display:grid;gap:4px;min-height:48px;width:100%;max-width:360px;padding:4px 32px 4px 0;text-align:left;background:transparent;border:0;color:var(--atelier-ink);font:inherit;cursor:pointer}
.catalogue-trigger::after{content:'';position:absolute;right:6px;top:50%;width:7px;height:7px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:translateY(-70%) rotate(45deg);transition:transform .3s ease}
.catalogue-trigger[aria-expanded=true]::after{transform:rotate(225deg)}
.catalogue-trigger .current-category{font-size:10px;line-height:1.4}
.current-product{font-size:20px;font-weight:500;letter-spacing:-.025em;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body dialog.catalogue-menu{position:fixed;inset:80px 24px auto auto;margin:0;padding:24px 28px 28px;width:min(640px,calc(100vw - 48px));max-width:none;max-height:calc(100dvh - 104px);box-sizing:border-box;overflow:auto;border-radius:2px;border:1px solid var(--atelier-line);background:var(--atelier-panel);overscroll-behavior:contain}
body dialog.catalogue-menu[open]{animation:catalogue-arrive .32s ease both}
body dialog.catalogue-menu::backdrop{background:#30292336;backdrop-filter:blur(4px)}
.catalogue-menu-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}
body .catalogue-menu-head h2{font-size:23px;margin:0;letter-spacing:-.03em}
body .catalogue-close{width:44px;height:44px;flex-shrink:0;background:none;border:0;font:300 28px/1 Arial,sans-serif;color:var(--atelier-ink);cursor:pointer}
.catalogue-groups{display:grid;grid-template-columns:1fr 1fr;gap:24px 32px}
.catalogue-groups h3{font-family:'Space Mono',monospace;font-size:10px;line-height:1.6;font-weight:400;color:var(--atelier-muted);margin:0 0 8px;padding-bottom:10px;border-bottom:1px solid var(--atelier-line)}
body .catalogue-groups button{display:block;position:relative;width:100%;min-height:48px;padding:12px 24px 12px 0;border:0;border-radius:0;text-align:left;font:400 15px/1.4 'Unica77 LL',Arial,sans-serif;color:var(--atelier-ink);background:transparent;cursor:pointer}
.catalogue-groups button[aria-current=true]::after{content:'';position:absolute;right:6px;top:calc(50% - 3px);width:6px;height:6px;background:var(--atelier-accent);border-radius:50%}
body .catalogue-groups button[aria-current=true]{font-weight:500}
@media(hover:hover){body .catalogue-groups button:hover{background:var(--atelier-wash)}body .catalogue-trigger:hover{color:var(--atelier-accent)}}
@keyframes catalogue-arrive{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
/* Progress follows model preparation and completes only after the first frame. */
body :is(#stage,#workspace) .route-loading{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:18px;padding:24px;background:color-mix(in srgb,var(--atelier-paper) 86%,transparent);color:var(--atelier-ink);text-align:center;transition:opacity .35s ease;pointer-events:auto}
body :is(#stage,#workspace) .route-loading.done{opacity:0;pointer-events:none}
body .route-loading p{font:400 13px/1.6 'Unica77 LL',Arial,sans-serif;color:var(--atelier-ink);max-width:260px;margin:0 auto}
body .route-loading .loading-line{width:160px;height:2px;background:var(--atelier-line);overflow:hidden;margin:auto}
body .route-loading .loading-line::after{content:'';display:block;height:100%;width:var(--load-progress,0%);background:var(--atelier-accent);animation:none;transform:none;transition:width .9s cubic-bezier(.2,.65,.3,1)}
@media(max-width:700px){
 body .catalogue-navigation{max-width:calc(100% - 108px)}
 .catalogue-trigger .current-category{font-size:9px}
 .current-product{font-size:17px}
 body dialog.catalogue-menu{inset:calc(72px + env(safe-area-inset-top)) 8px auto 8px;width:auto;max-height:calc(100dvh - 88px - env(safe-area-inset-top));padding:16px 20px 24px}
 .catalogue-menu-head{margin-bottom:16px}
 .catalogue-groups{grid-template-columns:1fr;gap:20px}
 body .catalogue-groups button{min-height:48px;font-size:16px}
}
@media(prefers-reduced-motion:reduce){body dialog.catalogue-menu[open]{animation:none}body :is(#stage,#workspace) .route-loading,body .route-loading .loading-line::after,.catalogue-trigger::after{transition:none}}

body .catalogue-trigger .current-category{padding-right:0}


/* Desktop camera angles sit above the scene selector, with separate hit areas. */
@media(min-width:701px){
 body .view-switch .product-ar-button{display:none}
 body.objects-page .stage-foot{bottom:64px}
 body .view-switch{bottom:8px}
}

/* Frozen outgoing scene, followed by the fully rendered incoming scene. */
body :is(#stage,#workspace) .route-loading{isolation:isolate;background:transparent;overflow:hidden;transition:opacity .65s ease;backdrop-filter:blur(22px)}
.loading-snapshot{position:absolute;inset:-5%;width:110%;height:110%;object-fit:cover;filter:blur(22px);z-index:-2}
.loading-snapshot:not([src]){display:none}
.route-loading::before{content:'';position:absolute;inset:0;background:#f5f2ed70;z-index:-1}
.loading-message{display:grid;justify-items:center;gap:16px}
.loading-infinity{width:64px;height:32px;fill:none;stroke:var(--atelier-ink);stroke-width:2;stroke-linecap:round}
.infinity-track{opacity:.16}
.infinity-trace{stroke-dasharray:24 76;animation:infinity-wait 1.8s linear infinite}
@keyframes infinity-wait{to{stroke-dashoffset:-100}}
.route-loading.done .infinity-trace,.route-loading.load-error .infinity-trace{animation:none}
.route-loading.load-error .loading-infinity{display:none}
body.studio-loading :is(#stage,#workspace)>canvas{filter:blur(22px)}
body :is(#stage,#workspace)>canvas{transition:filter .65s ease}
body.studio-loading .stage-foot{visibility:hidden}
@media(prefers-reduced-motion:reduce){.infinity-trace{animation:none;stroke-dasharray:none}body :is(#stage,#workspace) .route-loading,body :is(#stage,#workspace)>canvas{transition:none}}
