:root { --ink:#17212a; --canvas:#edf0ed; --card:#fff; --accent:#e2573a; }
* { box-sizing:border-box; }
body { margin:0; background:var(--canvas); font:14px system-ui; color:var(--ink); }
main { height:calc(100vh - var(--route-header-height,92px)); min-height:0; display:grid; grid-template-columns:1.2fr .8fr; }
#viewer { position:relative; height:100%; min-height:0; background:radial-gradient(circle at 50% 30%,#fff,#dbe2de); overflow:hidden; }
#viewer-loading { position:absolute; z-index:4; inset:0; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:.55rem; color:#17212a; background:rgba(239,243,241,.72); opacity:0; visibility:hidden; pointer-events:none; transition:opacity .18s ease,visibility .18s ease; font:500 .78rem system-ui; }
#viewer-loading.active { opacity:1; visibility:visible; }
#viewer-loading strong { font-size:.92rem; }
.viewer-spinner { width:2.2rem; height:2.2rem; border:4px solid rgba(23,33,42,.18); border-top-color:#ef4b32; border-radius:50%; animation:spin .72s linear infinite; }
canvas { width:100%; height:100%; display:block; }
#viewer>p { position:absolute; bottom:10px; width:100%; text-align:center; color:#54616a; font-size:.75rem; }
.viewer-actions { position:absolute; z-index:2; top:18px; right:18px; left:18px; display:flex; justify-content:flex-end; flex-wrap:wrap; gap:.5rem; }
.viewer-actions button { appearance:none; border:1px solid #c7cfca; background:rgba(255,255,255,.9); padding:.65rem .9rem; border-radius:999px; font:700 .72rem system-ui; color:#263139; cursor:pointer; box-shadow:0 8px 24px rgba(28,39,34,.1); }
.viewer-actions button:hover { background:#fff; }
.viewer-actions button.active { border-color:#17212a; background:#17212a; color:#fff; }
aside { padding:clamp(2rem,5vw,5rem); background:var(--card); overflow:auto; }
.eyebrow { font-size:.7rem; font-weight:800; letter-spacing:.16em; color:var(--accent); }
h1 { font:400 clamp(2.3rem,4vw,4rem) Georgia,serif; letter-spacing:-.06em; line-height:.95; margin:.6rem 0 2rem; }
label { display:block; font-weight:700; font-size:.78rem; margin-top:1rem; }
input,select { display:block; width:100%; margin-top:.45rem; padding:.75rem; border:1px solid #d8dfda; border-radius:2px; background:#fff; font:inherit; }
.future-message{margin:1.5rem 0;padding:1.1rem;border:1px solid #d8dfda;background:#f7f8f6}.future-message>div{display:flex;align-items:end;justify-content:space-between;gap:1rem}.future-message-kicker{color:var(--accent);font-size:.61rem;font-weight:900;letter-spacing:.11em}.future-message h2{margin:.25rem 0 0;font:400 1.4rem Georgia,serif}.future-message small{display:block;margin-top:.75rem;color:#647069;font-size:.7rem;line-height:1.45}.future-message button{width:100%;margin-top:.85rem;padding:.7rem;border:1px solid #17212a;background:#fff;color:#17212a;font:800 .72rem system-ui;cursor:pointer}.future-message button:hover{background:#17212a;color:#fff}
#update-model { width:100%; margin-top:1rem; border:0; border-radius:3px; padding:.9rem 1rem; background:#17212a; color:#fff; font:800 .8rem system-ui; cursor:pointer; }
#update-model:hover { background:#273641; }
#update-model.loading { cursor:wait; opacity:.82; }
.spinner { display:none; width:1rem; height:1rem; margin-left:.6rem; vertical-align:middle; border:2px solid rgba(255,255,255,.35); border-top-color:#fff; border-radius:50%; animation:spin .7s linear infinite; }
#update-model.loading .spinner { display:inline-block; }
@keyframes spin { to { transform:rotate(360deg); } }
fieldset { border:0; border-top:1px solid #dde2df; padding:1.4rem 0 0; margin:1.8rem 0; }
legend { font-weight:800; font-size:.82rem; padding:0 .3rem 0 0; }
fieldset label { position:relative; }
fieldset small { position:absolute; right:0; top:0; color:#77827b; }
.quote { border-top:1px solid #dde2df; padding-top:1.3rem; display:grid; gap:.65rem; }
.quote h2{margin:0 0 .25rem;font-size:1.05rem}
.quote span { display:flex; justify-content:space-between; color:#56615b; }
.quote strong { font-size:1.55rem; }
.quote small,#route-info { color:#6a746d; font-size:.75rem; line-height:1.4; }
.purchase-actions{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;margin-top:.35rem}.purchase-actions button{border:0;border-radius:3px;padding:.95rem .8rem;font:800 .8rem system-ui;cursor:pointer}.purchase-actions #add-to-cart{background:#17212a;color:#fff}.purchase-actions #buy-now{background:#e2573a;color:#fff}#purchase-status{min-height:1.15rem;margin:0;color:#56615b;font-size:.76rem}
.purchase-feedback{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:30px}.purchase-feedback #view-cart{flex:none;color:#e2573a;font-size:.76rem;font-weight:900}.purchase-feedback #view-cart[hidden]{display:none}
.coverage-notice { margin-top:1rem; padding:1rem; border:1px solid #e2b46a; background:#fff7e8; color:#473617; }
.coverage-notice strong { display:block; font-size:.9rem; }
.coverage-notice p { margin:.45rem 0 .8rem; line-height:1.45; font-size:.8rem; }
.coverage-notice button,#submit-city-request { border:0; border-radius:3px; padding:.72rem .9rem; background:#17212a; color:#fff; cursor:pointer; font:800 .76rem system-ui; }
dialog { width:min(92vw,470px); border:0; border-radius:8px; padding:0; box-shadow:0 20px 70px rgba(0,0,0,.35); color:var(--ink); }
dialog::backdrop { background:rgba(23,33,42,.52); }
dialog form { position:relative; padding:2rem; }
dialog h2 { margin:.4rem 0 .7rem; font:400 2rem Georgia,serif; }
dialog p { line-height:1.5; color:#52605a; }
.dialog-close { position:absolute; right:.65rem; top:.5rem; border:0; background:transparent; font-size:1.7rem; cursor:pointer; color:#52605a; }
#city-request-status { min-height:1.4rem; font-size:.78rem; }
@media(max-width:800px) {
  main { height:auto; min-height:0; grid-template-columns:1fr; }
  #viewer { height:55vh; min-height:450px; }
  aside { padding:2rem; }
}
.showcase-embed body{overflow:hidden}.showcase-embed #route-site-header,.showcase-embed aside,.showcase-embed .viewer-actions,.showcase-embed #viewer>p{display:none!important}.showcase-embed main{display:block;width:100%;height:100vh;min-height:0}.showcase-embed #viewer{width:100%;height:100vh;min-height:0}.showcase-embed canvas{cursor:grab}.showcase-embed canvas:active{cursor:grabbing}
/* Small Amazon-style promotional ribbon driven by the published catalog. */
.quote-promo[hidden]{display:none!important}
.quote .quote-promo{color:#fff}
.quote-promo{display:inline-block;width:max-content;margin:0 0 .45rem;padding:.3rem .62rem;background:#b12704;color:#fff;font-size:.66rem;font-weight:900;letter-spacing:.05em;text-transform:uppercase;clip-path:polygon(0 0,100% 0,92% 50%,100% 100%,0 100%)}.quote s{color:#7b8387;font-size:.78rem;margin-left:.35rem}.quote #base-price{color:#d43b20}.production-time{margin:.25rem 0;padding:.75rem;background:#fff4ed;color:#69402f;font-size:.76rem;line-height:1.45}.production-time strong{display:block;color:#3b2118}
