@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/dm-sans-latin-400-normal.woff2) format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/dm-sans-latin-500-normal.woff2) format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/dm-sans-latin-700-normal.woff2) format("woff2")}:root{--bg: #0f1115;--bg-elevated: #1a1e26;--bg-soft: #242a35;--text: #f3f1ec;--text-muted: #a8a29a;--accent: #d4a373;--accent-press: #b8895a;--success: #3ddc97;--danger: #e85d5d;--border: #2e3542;--swatch-ring: #ffffff;--font-ui: "DM Sans", system-ui, sans-serif;--radius-btn: 10px;--touch-min: 44px;--config-panel-width: 320px;--sheet-peek-height: 7.5rem;--ar-cta-clearance: calc(var(--touch-min) + 1.75rem)}@media(orientation:landscape)and (max-height:500px){:root{--sheet-peek-height: 34svh}}@media(max-height:700px)and (orientation:portrait){:root{--sheet-peek-height: 11.5rem}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font-ui);overflow:hidden}.icon{display:block;width:1.25rem;height:1.25rem;flex-shrink:0}.icon--sm{width:1.125rem;height:1.125rem}#app{position:relative;width:100%;height:100%;min-height:100dvh}#app canvas{display:block;width:100%;height:100%;touch-action:none}.top-bar{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;gap:.75rem;min-height:var(--touch-min);padding:calc(.5rem + env(safe-area-inset-top,0px)) .75rem .5rem;background:color-mix(in srgb,var(--bg) 72%,transparent);border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none}html[data-layout=mobile] .top-bar,html[data-layout=short-landscape] .top-bar{-webkit-backdrop-filter:none;backdrop-filter:none;background:color-mix(in srgb,var(--bg) 94%,transparent)}.top-bar>*{pointer-events:auto}.top-bar__brand{flex:0 0 auto}.top-bar__logo{font-weight:700;letter-spacing:.02em;font-size:.95rem}.top-bar__tabs{display:flex;gap:.25rem;flex:1 1 auto;justify-content:center;min-width:0}.top-bar__tab{min-height:var(--touch-min);min-width:var(--touch-min);padding:0 .75rem;border:1px solid transparent;border-radius:var(--radius-btn);background:transparent;color:var(--text-muted);font:inherit;font-weight:500;cursor:default}.top-bar__tab.is-active{color:var(--text);border-color:var(--border);background:var(--bg-elevated)}.top-bar__tab:disabled{opacity:1}.top-bar__actions{display:flex;align-items:center;gap:.5rem;flex:0 0 auto}.top-bar__lang{display:flex;align-items:center;gap:.15rem}.top-bar__lang-btn{min-height:var(--touch-min);min-width:var(--touch-min);padding:0 .35rem;border:none;background:transparent;color:var(--text-muted);font:inherit;font-weight:600;font-size:.85rem;cursor:pointer}.top-bar__lang-btn.is-active{color:var(--accent)}.top-bar__lang-btn:focus-visible,.top-bar__about:focus-visible,.top-bar__saved:focus-visible,.top-bar__tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.top-bar__lang-sep{color:var(--text-muted);opacity:.5}.top-bar__saved,.top-bar__about{position:relative;display:inline-flex;align-items:center;gap:.35rem;min-height:var(--touch-min);min-width:var(--touch-min);padding:0 .65rem;border:1px solid var(--border);border-radius:var(--radius-btn);background:transparent;color:var(--text);font:inherit;font-size:.85rem;cursor:pointer}.top-bar__saved:hover,.top-bar__about:hover{border-color:var(--accent)}@media(min-width:768px){.top-bar{right:var(--config-panel-width)}}@media(min-width:768px)and (orientation:landscape)and (max-height:500px){.top-bar{right:0}}@media(max-width:767px),(orientation:landscape)and (max-height:500px){.top-bar{gap:.35rem;padding-left:.5rem;padding-right:.5rem}.top-bar__brand{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.top-bar__tabs{flex:0 0 auto;justify-content:flex-start}.top-bar__tab{flex-shrink:0;padding:0 .5rem}.top-bar__actions{gap:.25rem;margin-left:auto}.top-bar__saved,.top-bar__about{gap:0;justify-content:center;padding:0;width:var(--touch-min)}.top-bar__saved span,.top-bar__about span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}.splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1.5rem;background:color-mix(in srgb,var(--bg) 88%,transparent);text-align:center}.splash[hidden]{display:none}.splash__title{margin:0;font-size:1.25rem;font-weight:600;letter-spacing:.02em}.splash__pct{margin:0;font-size:2rem;font-variant-numeric:tabular-nums;color:var(--accent)}.splash__status{margin:0;color:var(--text-muted);font-size:.95rem}.splash__retry{margin-top:.75rem;min-width:44px;min-height:44px;padding:.6rem 1.25rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-elevated);color:var(--text);font:inherit;cursor:pointer}.splash__retry:hover,.splash__retry:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}.splash__retry[hidden]{display:none}.model-busy{position:fixed;top:calc(3.75rem + env(safe-area-inset-top,0px));left:50%;z-index:25;transform:translate(-50%);display:inline-flex;align-items:center;min-height:var(--touch-min);padding:.4rem .9rem;border-radius:999px;border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 92%,transparent);color:var(--text);font-size:.85rem;pointer-events:none}.model-busy[hidden]{display:none}@media(prefers-reduced-motion:no-preference){.model-busy:not([hidden]){animation:model-busy-fade .2s ease-out}}@keyframes model-busy-fade{0%{opacity:0}to{opacity:1}}.webgl-poster{position:fixed;top:0;right:0;bottom:0;left:0;z-index:15;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:var(--bg);text-align:center;color:var(--text-muted)}.webgl-poster[hidden]{display:none}.about-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:1rem}.about-modal[hidden]{display:none}.about-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,#000 55%,transparent)}.about-modal__panel{position:relative;z-index:1;width:min(100%,22rem);padding:1.25rem;border:1px solid var(--border);border-radius:12px;background:var(--bg-elevated);box-shadow:0 12px 40px color-mix(in srgb,#000 45%,transparent)}.about-modal__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.about-modal__header h2{margin:0;font-size:1.1rem;font-weight:600}.about-modal__panel p{margin:0 0 .75rem;line-height:1.45;font-size:.95rem}.about-modal__muted{color:var(--text-muted);font-size:.85rem!important}.about-modal__cta{margin:.25rem 0 .75rem}.about-modal__work{display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-min);padding:.55rem 1.1rem;border-radius:var(--radius-btn);background:var(--accent);color:#0b0d10;font-weight:600;text-decoration:none}.about-modal__work:focus-visible{outline:2px solid var(--text);outline-offset:3px}.about-modal__links{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem}.about-modal__links a{color:var(--accent);text-decoration:underline;text-underline-offset:.15em;min-height:var(--touch-min);display:inline-flex;align-items:center}.about-modal__links a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.about-modal__close{display:inline-flex;align-items:center;justify-content:center;min-width:var(--touch-min);min-height:var(--touch-min);margin:-.35rem -.35rem -.35rem 0;border:none;border-radius:var(--radius-btn);background:transparent;color:var(--text);cursor:pointer}.about-modal__close:focus-visible,.about-modal__done:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.about-modal__done{min-height:var(--touch-min);width:100%;margin-top:.25rem;border:1px solid var(--border);border-radius:var(--radius-btn);background:var(--bg-soft);color:var(--text);font:inherit;font-weight:500;cursor:pointer}.about-modal__done:hover{border-color:var(--accent)}.config-rail{position:fixed;top:0;right:0;bottom:0;z-index:12;width:var(--config-panel-width);padding:calc(3.5rem + env(safe-area-inset-top,0px)) 1rem 1rem;border-left:1px solid var(--border);background:var(--bg-elevated);overflow-y:auto;overscroll-behavior:contain}.config-sheet{z-index:12;--sheet-background: var(--bg-elevated);--sheet-border-radius: 12px;color:var(--text)}.config-sheet__handle{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.5rem 0 .25rem;cursor:grab}.config-sheet__grabber{display:block;width:2.25rem;height:.25rem;border-radius:999px;background:var(--text-muted);opacity:.55}.config-sheet__chevron{display:inline-flex;color:var(--text-muted);opacity:.7;line-height:0}.config-sheet__chevron .icon{width:1rem;height:1rem}.config-panel{display:flex;flex-direction:column;gap:0}.config-panel__footer{position:sticky;bottom:0;z-index:1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-top:1.25rem;padding:.875rem 0 calc(.5rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border);background:var(--bg-elevated)}bottom-sheet [slot=footer] .config-panel__footer{margin-top:0;padding-inline:1rem}.config-panel__actions{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.5rem}.config-panel__action{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-width:var(--touch-min);min-height:var(--touch-min);padding:.45rem .85rem;border:1px solid var(--border);border-radius:var(--radius-btn);background:var(--bg-soft);color:var(--text);font:inherit;font-size:.875rem;font-weight:500;cursor:pointer}.config-panel__action:hover,.config-panel__action:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}.config-panel__heading{margin:0 0 .75rem;font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.config-panel__heading:not(:first-child){margin-top:1.25rem}.price-bar{display:flex;flex-wrap:wrap;align-items:baseline;gap:0;font-size:.95rem;line-height:1.35;color:var(--text)}.price-bar__label{color:var(--text-muted);font-size:.8rem;font-weight:500}.price-bar__sep{color:var(--text-muted)}.price-bar__amount{font-weight:600;font-variant-numeric:tabular-nums;color:var(--accent)}.option-chips{display:flex;flex-wrap:wrap;gap:.5rem}.option-chip{display:inline-flex;align-items:center;justify-content:center;min-width:var(--touch-min);min-height:var(--touch-min);padding:.5rem 1rem;border:1px solid var(--border);border-radius:999px;background:var(--bg-soft);color:var(--text);font:inherit;font-size:.875rem;line-height:1.2;cursor:pointer}.option-chip.is-active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);font-weight:500}.option-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.swatches{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem .35rem}.swatch{display:flex;flex-direction:column;align-items:center;gap:.35rem;min-width:var(--touch-min);min-height:var(--touch-min);padding:.25rem;border:none;border-radius:var(--radius-btn);background:transparent;color:var(--text);font:inherit;cursor:pointer}.swatch__disc{width:40px;height:40px;border-radius:50%;background:var(--swatch-fill, var(--bg-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 80%,transparent)}.swatch.is-active .swatch__disc{box-shadow:0 0 0 2px var(--swatch-ring),0 0 0 4px color-mix(in srgb,var(--accent) 55%,transparent)}.swatch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.swatch__label{max-width:100%;font-size:.7rem;line-height:1.2;color:var(--text-muted);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.swatch.is-active .swatch__label{color:var(--text);font-weight:500}.toast-host{position:fixed;left:1rem;right:1rem;bottom:calc(var(--sheet-peek-height) + var(--ar-cta-clearance) + env(safe-area-inset-bottom,0px));z-index:60;display:flex;justify-content:center;pointer-events:none}html[data-toast-visible="1"]{--ar-cta-clearance: calc(var(--touch-min) + 3.5rem)}html[data-toast-visible="1"] .ar-cta{opacity:.38;pointer-events:none}html[data-sheet-snap=mid] .toast-host,html[data-sheet-snap=full] .toast-host{bottom:auto;top:calc(3.25rem + env(safe-area-inset-top,0px))}.toast{max-width:22rem;padding:.75rem 1rem;border-radius:12px;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);font-size:.9rem;box-shadow:0 8px 24px color-mix(in srgb,#000 45%,transparent)}.ar-cta{position:fixed;left:1rem;bottom:calc(var(--sheet-peek-height) + 1rem + env(safe-area-inset-bottom,0px));z-index:14;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:var(--touch-min);padding:.55rem 1rem;border:none;border-radius:var(--radius-btn);background:var(--accent);color:#0b0d10;font:inherit;font-weight:600;font-size:.9rem;box-shadow:0 8px 24px color-mix(in srgb,#000 40%,transparent);cursor:pointer}html[data-sheet-snap=mid] .ar-cta,html[data-sheet-snap=full] .ar-cta{visibility:hidden;pointer-events:none}.ar-cta[aria-disabled=true]{opacity:.55;cursor:not-allowed}.ar-cta[aria-busy=true]{opacity:.72;cursor:wait;pointer-events:none}.ar-cta:focus-visible{outline:2px solid var(--text);outline-offset:3px}.tooltip{position:absolute;top:0;left:0;z-index:70;max-width:240px;padding:.5rem .65rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-elevated);color:var(--text);font-size:.8rem;line-height:1.35;box-shadow:0 8px 20px color-mix(in srgb,#000 40%,transparent);pointer-events:none}.saved-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;padding:1rem;background:color-mix(in srgb,var(--bg) 55%,transparent)}.saved-panel[hidden]{display:none}.saved-panel__dialog{width:min(100%,420px);max-height:min(80dvh,560px);display:flex;flex-direction:column;border:1px solid var(--border);border-radius:12px;background:var(--bg-elevated);color:var(--text);overflow:hidden}.saved-panel__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.875rem 1rem;border-bottom:1px solid var(--border)}.saved-panel__title{margin:0;font-size:1.05rem;font-weight:600}.saved-panel__close{display:inline-flex;align-items:center;justify-content:center;min-width:var(--touch-min);min-height:var(--touch-min);border:none;border-radius:var(--radius-btn);background:transparent;color:var(--text);cursor:pointer}.saved-panel__close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.saved-panel__list{margin:0;padding:.5rem;list-style:none;overflow:auto;flex:1}.saved-panel__empty{margin:1.5rem 1rem;color:var(--text-muted);text-align:center;font-size:.95rem;display:flex;flex-direction:column;align-items:center;gap:.85rem}.saved-panel__empty p{margin:0}.saved-panel__empty-cta{display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-min);padding:.55rem 1.1rem;border:none;border-radius:var(--radius-btn);background:var(--accent);color:#0b0d10;font:inherit;font-weight:600;cursor:pointer}.saved-panel__empty-cta:focus-visible{outline:2px solid var(--text);outline-offset:3px}.saved-panel__empty[hidden],.saved-panel__list[hidden]{display:none}.saved-item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:.75rem;border-radius:10px}.saved-item+.saved-item{margin-top:.25rem}.saved-item:hover{background:var(--bg-soft)}.saved-item__meta{display:flex;flex-direction:column;gap:.15rem;min-width:0}.saved-item__name{font-weight:500}.saved-item__date{font-size:.75rem;color:var(--text-muted)}.saved-item__actions{display:flex;gap:.35rem}.saved-item__btn{display:inline-flex;align-items:center;justify-content:center;gap:.3rem;min-width:var(--touch-min);min-height:var(--touch-min);padding:.35rem .65rem;border:1px solid var(--border);border-radius:var(--radius-btn);background:var(--bg-soft);color:var(--text);font:inherit;font-size:.8rem;cursor:pointer}.saved-item__btn--danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,var(--border))}.saved-item__btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(min-width:768px){#app{padding-right:var(--config-panel-width)}.saved-panel{align-items:center}.toast-host{left:auto;right:calc(var(--config-panel-width) + 1rem);bottom:calc(1rem + env(safe-area-inset-bottom,0px));top:auto;justify-content:flex-end}.ar-cta{bottom:calc(1.5rem + env(safe-area-inset-bottom,0px));visibility:visible;pointer-events:auto}}@media(min-width:768px)and (orientation:landscape)and (max-height:500px){#app{padding-right:0}.toast-host{left:1rem;right:1rem;bottom:calc(var(--sheet-peek-height) + var(--ar-cta-clearance) + env(safe-area-inset-bottom,0px));justify-content:flex-start}html[data-sheet-snap=mid] .toast-host,html[data-sheet-snap=full] .toast-host{bottom:auto;top:calc(3.25rem + env(safe-area-inset-top,0px))}.ar-cta{bottom:calc(var(--sheet-peek-height) + 1rem + env(safe-area-inset-bottom,0px))}}html[data-layout=short-landscape] #config-color-heading{margin:0 0 .35rem;font-size:.7rem}html[data-layout=short-landscape] .swatches{display:flex;flex-wrap:nowrap;gap:.35rem;overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:.15rem;-webkit-overflow-scrolling:touch}html[data-layout=short-landscape] .swatch{flex:0 0 auto}html[data-layout=short-landscape] .swatch__disc{width:36px;height:36px}html[data-layout=short-landscape] .swatch__label{font-size:.65rem}@media(max-height:700px){.config-panel__footer{margin-top:.5rem;padding:.4rem 0 calc(.25rem + env(safe-area-inset-bottom,0px));gap:.4rem}bottom-sheet [slot=footer] .config-panel__footer{padding-block:.35rem calc(.25rem + env(safe-area-inset-bottom,0px))}.swatches{gap:.35rem .25rem}.swatch{gap:.2rem}.swatch__disc{width:36px;height:36px}.config-panel__heading{margin-bottom:.35rem}.config-panel__heading:not(:first-child){margin-top:.65rem}}html.sheet-fallback .config-sheet--fallback{position:fixed;top:0;right:0;bottom:0;left:0;z-index:12;pointer-events:none}html.sheet-fallback .config-sheet__scroller{height:100%;overflow-x:hidden;overflow-y:auto;scroll-snap-type:y proximity;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;pointer-events:none}html.sheet-fallback .config-sheet__snap--peek{height:calc(100% - var(--sheet-peek-height));scroll-snap-align:start;scroll-snap-stop:always;pointer-events:none}html.sheet-fallback .config-sheet__panel{scroll-snap-align:end;scroll-snap-stop:always;min-height:var(--sheet-peek-height);max-height:90dvh;padding:0 1rem calc(1rem + env(safe-area-inset-bottom,0px));border-radius:12px 12px 0 0;border:1px solid var(--border);border-bottom:none;background:var(--bg-elevated);pointer-events:auto}
