/* ROOF.DSGN Studio — configurator (needs styles.css + anim.css).
   Parametric CSS pergola scene + control panel. Render core is class/var driven
   so the same CONFIG can later drive a Three.js backend behind window.__roof. */

.studio{display:grid;grid-template-columns:1fr 380px;gap:0;min-height:100svh;padding-block-start:74px}
.studio-scene-wrap{position:relative;background:linear-gradient(180deg,#0e140f,#141a13);overflow:hidden}
.studio-panel{background:var(--surface);border-inline-start:1px solid var(--line);
  padding:1.6rem 1.5rem 2rem;overflow-y:auto;max-height:100svh}

/* ===== 3D MOUNT ===== */
.studio3d{position:absolute;inset:0;width:100%;height:100%}
.studio3d canvas{display:block;width:100%!important;height:100%!important}
.studio3d.no3d{display:flex;align-items:center;justify-content:center;padding:2rem}
.no3d-msg{max-width:34ch;text-align:center;color:rgba(255,255,255,.72);font-size:1.05rem;line-height:1.6}
.scene-badge{position:absolute;inset-block-start:16px;inset-inline-start:16px;z-index:5;font-family:'Montserrat',sans-serif;
  font-size:.72rem;letter-spacing:.05em;color:#fff;background:rgba(14,20,15,.5);backdrop-filter:blur(6px);padding:.42em .9em;border-radius:var(--pill)}
.scene-view-toggle{position:absolute;inset-block-start:16px;inset-inline-end:16px;z-index:6;display:flex;gap:2px;padding:3px;
  background:rgba(14,20,15,.58);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.16);border-radius:var(--pill)}
.scene-view-toggle button{border:0;border-radius:var(--pill);padding:.52em .9em;background:transparent;color:rgba(255,255,255,.72);
  font-family:'Montserrat',sans-serif;font-size:.7rem;font-weight:600;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease)}
.scene-view-toggle button.on{background:rgba(255,255,255,.94);color:#1f2c23}
.tour-status{position:absolute;inset-block-start:62px;inset-inline-end:18px;z-index:5;min-height:1.2em;color:rgba(255,255,255,.78);
  font-family:'Montserrat',sans-serif;font-size:.7rem;text-align:end;pointer-events:none}
.scene-hintbar{position:absolute;inset-block-end:14px;inset-inline:0;z-index:5;text-align:center;
  font-size:.78rem;color:rgba(255,255,255,.6);pointer-events:none}

/* ===== PANEL ===== */
.studio-head h1{font-size:1.5rem;font-weight:300;font-family:var(--font-head);margin-bottom:.2rem}
.studio-head p{font-size:.9rem;color:#6c736d;margin-bottom:1.4rem}
.ctrl{margin-bottom:1.4rem}
.ctrl-label{display:block;font-family:'Montserrat',sans-serif;font-weight:600;font-size:.74rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--amber-deep);margin-bottom:.6rem}
.opts{display:flex;flex-wrap:wrap;gap:.5rem}
.opt{font-family:var(--font-head);font-weight:500;font-size:.92rem;cursor:pointer;background:#fff;border:1px solid var(--line);
  border-radius:var(--pill);padding:.55em 1.05em;color:#2b322d;transition:.18s var(--ease)}
.opt:hover{border-color:var(--amber-deep)}
.opt.on{background:var(--pine);color:#fff;border-color:var(--pine)}
.opt[disabled]{opacity:.35;cursor:not-allowed}

.swatches{display:flex;gap:.6rem}
.sw{width:38px;height:38px;border-radius:50%;cursor:pointer;border:2px solid #fff;outline:1px solid var(--line);transition:.18s}
.sw:hover{transform:scale(1.08)}
.sw.on{outline:2px solid var(--amber-deep);outline-offset:2px}

.range-row{display:flex;align-items:center;gap:.8rem}
.range-row input[type=range]{flex:1;accent-color:var(--pine)}
.range-val{font-family:'Montserrat',sans-serif;font-weight:600;font-size:.9rem;min-width:3.2em;text-align:center;color:#2b322d}

.summary{background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);padding:1.1rem 1.2rem;margin-block:.6rem 1rem}
.summary h3{font-size:.95rem;margin-bottom:.6rem}
.summary ul{list-style:none;display:grid;gap:.35rem}
.summary li{display:flex;justify-content:space-between;font-size:.9rem;color:#5b625c;gap:1rem}
.summary li b{color:#2b322d;font-weight:600}
.studio-cta{display:flex;flex-direction:column;gap:.6rem}
.studio-note{font-size:.78rem;color:#8a908a;text-align:center;margin-top:.4rem}
.btn-block{width:100%}

/* presets (ready-made Vitlion models) */
.presets{gap:.45rem}
.preset{font-family:var(--font-head);font-weight:500;font-size:.9rem;cursor:pointer;background:#fff;border:1px dashed var(--line);
  border-radius:var(--pill);padding:.5em 1em;color:#2b322d;transition:.18s var(--ease)}
.preset:hover{border-color:var(--amber-deep)}
.preset.on{background:#e9bf65;border-style:solid;border-color:var(--amber-deep);color:#2b241a}
/* per-side add/remove rows */
.side-row{display:flex;align-items:center;gap:.4rem;margin-bottom:.45rem}
.side-name{flex:0 0 52px;font-family:'Montserrat',sans-serif;font-weight:600;font-size:.72rem;letter-spacing:.06em;color:#5b625c}
.side-row .opt{flex:1;padding:.5em .2em;font-size:.82rem;text-align:center}
/* louver slider dims out when the roof isn't louvered */
.ctrl-louver.off{opacity:.4;pointer-events:none}

/* ===== mobile: scene on top, panel as sheet ===== */
@media(max-width:900px){
  .studio{grid-template-columns:1fr;padding-block-start:64px}
  .studio-scene-wrap{padding:1.2rem;min-height:46svh}
  .studio-panel{border-inline-start:none;border-block-start:1px solid var(--line);max-height:none}
  .scene{aspect-ratio:1/1}
  .scene-view-toggle{inset-block-start:12px;inset-inline-end:12px}
  .scene-view-toggle button{padding:.48em .72em;font-size:.64rem}
  .tour-status{inset-block-start:54px;inset-inline-end:14px}
}
@media (prefers-reduced-motion:reduce){
  .scene *,.scene{transition:none!important}
}
