/* ROOF.DSGN — polish + interactive hero stage (additive on styles.css).
   No smooth-scroll hijack, no scroll-scrubbed cinematics. Hero interactions are
   button-driven (preview of the Studio configurator). RTL + reduced-motion safe. */

html.rd-loading,html.rd-loading body{overflow:hidden}

/* ===== LOADER ===== */
.loader{position:fixed;inset:0;z-index:200;background:var(--pine-2);
  display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1.4rem}
.loader.done{pointer-events:none}
.loader-mark{width:92px;height:92px}
.loader-mark .lbeam,.loader-mark .lpost{fill:#fff}
.loader-mark .lslat{fill:var(--amber);transform-box:fill-box;transform-origin:center;
  opacity:0;animation:slatIn .5s var(--ease) forwards}
.loader-mark .lslat:nth-of-type(4){animation-delay:.12s}
.loader-mark .lslat:nth-of-type(5){animation-delay:.26s}
.loader-mark .lslat:nth-of-type(6){animation-delay:.4s}
@keyframes slatIn{from{opacity:0;transform:rotate(-16deg) scaleX(.2)}to{opacity:1;transform:rotate(-16deg) scaleX(1)}}
.loader-word{font-family:'Montserrat',sans-serif;font-weight:800;letter-spacing:.04em;color:#fff;font-size:1.1rem;
  opacity:0;animation:fadeUp .6s .45s var(--ease) forwards}
.loader-word b{color:var(--amber)}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.loader-curtain{position:fixed;inset:0;z-index:199;background:var(--pine);transform:scaleY(0);transform-origin:bottom;pointer-events:none}

/* ===== reveal (on-enter clip+lift; toggled by app.js IntersectionObserver) ===== */
.reveal{opacity:0;transform:translateY(30px);clip-path:inset(0 0 6% 0);
  transition:opacity .8s var(--ease),transform .8s var(--ease),clip-path .8s var(--ease)}
.reveal.in{opacity:1;transform:none;clip-path:inset(0 0 0 0)}

/* ===== HERO (pine canvas + interactive stage) ===== */
.hero{position:relative;min-height:94svh;display:flex;align-items:center;overflow:hidden;
  background:radial-gradient(120% 90% at 80% 0%,#1b2620 0%,var(--pine) 45%,var(--pine-2) 100%);color:#fff}
.hero::before{content:"";position:absolute;inset:0;opacity:.5;pointer-events:none;
  background:radial-gradient(50% 40% at 12% 90%,rgba(233,191,101,.10),transparent 70%)}
.hero-grid{position:relative;z-index:2;display:grid;grid-template-columns:1.02fr 1.12fr;gap:clamp(2rem,5vw,4.5rem);
  align-items:center;width:100%;padding-block:120px 70px}
.hero-copy{max-width:36ch}
.hero-copy h1{color:#fff;font-weight:300;margin-block:.5rem 1.1rem;font-size:clamp(2.3rem,4.6vw,4rem)}
.hero-copy .hero-sub{font-size:clamp(1.05rem,1.5vw,1.28rem);color:rgba(255,255,255,.82);font-weight:300;margin-bottom:2rem;max-width:42ch}
.hero-ctas{display:flex;flex-wrap:wrap;gap:.8rem;margin-bottom:1.8rem}
.hero-tags{display:flex;flex-wrap:wrap;gap:.5rem}
.hero-tag{font-family:'Montserrat',sans-serif;font-size:.74rem;letter-spacing:.04em;color:rgba(255,255,255,.7);
  border:1px solid var(--line-dark);border-radius:var(--pill);padding:.4em .9em}

/* the stage */
.stage{position:relative}
.hero3d{position:relative;width:100%;height:clamp(360px,48vh,540px);border-radius:var(--r);overflow:hidden;
  background:radial-gradient(120% 100% at 50% 0%,#1b2620,#0d130e);box-shadow:0 44px 100px -44px rgba(0,0,0,.75);cursor:grab}
.hero3d:active{cursor:grabbing}
.hero3d canvas{display:block;width:100%!important;height:100%!important}
.stage-frame{position:relative;border-radius:var(--r);overflow:hidden;aspect-ratio:5/4;
  box-shadow:0 40px 90px -36px rgba(0,0,0,.7);background:#0d130e;isolation:isolate}
.stage-photo{position:absolute;inset:0;background-size:cover;background-position:center;transition:filter .8s var(--ease),transform .8s var(--ease)}
/* sun/shade */
.stage-shade{position:absolute;inset:0;opacity:0;transition:opacity .7s var(--ease);pointer-events:none;
  background:repeating-linear-gradient(180deg,rgba(8,12,9,.42) 0 7px,rgba(8,12,9,0) 7px 20px)}
.stage-frame.is-closed .stage-shade{opacity:.85}
.stage-frame.is-closed .stage-photo{filter:brightness(.74) saturate(.95)}
/* evening */
.stage-eve{position:absolute;inset:0;opacity:0;transition:opacity .8s var(--ease);pointer-events:none;
  background:linear-gradient(180deg,rgba(20,26,46,.5),rgba(10,12,24,.66))}
.stage-glow{position:absolute;inset-inline:0;inset-block-end:0;height:62%;opacity:0;transition:opacity .8s var(--ease);
  pointer-events:none;mix-blend-mode:screen;background:radial-gradient(70% 80% at 50% 100%,rgba(233,191,101,.5),transparent 70%)}
.stage-frame.is-evening .stage-eve{opacity:1}
.stage-frame.is-evening .stage-glow{opacity:1}
.stage-frame.is-evening .stage-photo{filter:brightness(.7) saturate(1.05) hue-rotate(-6deg)}

/* overhead louver roof (the controllable bit) */
.stage-roof{position:absolute;inset-block-start:0;inset-inline:0;height:30%;z-index:3;
  perspective:480px;perspective-origin:50% 130%;display:flex;flex-direction:column;gap:1.1%;padding:6px 6px 0}
.stage-roof .sl{flex:1;border-radius:3px;transform-origin:top center;transition:transform .7s var(--ease),box-shadow .7s;
  background:linear-gradient(180deg,#4a514b,#222a25 70%,#161c15);transform:rotateX(62deg);box-shadow:0 1px 3px rgba(0,0,0,.4)}
.stage-frame.is-closed .stage-roof .sl{transform:rotateX(2deg);box-shadow:0 4px 8px rgba(0,0,0,.5)}
.stage-roof::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,12,9,.5),transparent);pointer-events:none}

.stage-state{position:absolute;inset-block-start:12px;inset-inline-start:12px;z-index:4;
  font-family:'Montserrat',sans-serif;font-size:.72rem;letter-spacing:.04em;color:#fff;
  background:rgba(14,20,15,.5);backdrop-filter:blur(6px);padding:.4em .8em;border-radius:var(--pill)}

/* controls under the stage */
.stage-ctrls{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.1rem;align-items:center}
.seg{display:inline-flex;background:rgba(255,255,255,.08);border:1px solid var(--line-dark);border-radius:var(--pill);padding:3px}
.seg button{background:none;border:none;cursor:pointer;font-family:var(--font-head);font-weight:600;font-size:.86rem;
  color:rgba(255,255,255,.8);padding:.5em 1.05em;border-radius:var(--pill);transition:.2s}
.seg button.on{background:var(--amber);color:var(--pine-2)}
.stage-hint{font-size:.8rem;color:rgba(255,255,255,.55)}
.stage-hint a{color:var(--amber);font-weight:600}

/* ===== studio teaser band ===== */
.studio-teaser-grid{display:grid;grid-template-columns:1fr 1.12fr;gap:clamp(2rem,4vw,3.5rem);align-items:center}
.studio-teaser-copy{max-width:46ch}
.studio-teaser-shot{display:block;height:clamp(300px,40vw,460px);border-radius:var(--r);background-size:cover;background-position:center;
  box-shadow:0 44px 100px -44px rgba(0,0,0,.6);transition:transform .4s var(--ease)}
.studio-teaser-shot:hover{transform:translateY(-5px)}
@media(max-width:860px){.studio-teaser-grid{grid-template-columns:1fr}}

/* ===== context cursor ===== */
.cursor-dot{position:fixed;top:0;left:0;z-index:300;width:9px;height:9px;border-radius:50%;background:var(--amber);
  pointer-events:none;mix-blend-mode:difference;transform:translate(-50%,-50%);opacity:0;
  transition:width .25s var(--ease),height .25s var(--ease),opacity .3s}
.cursor-dot.show{opacity:1}
.cursor-dot.hot{width:46px;height:46px;background:rgba(233,191,101,.35)}
@media (hover:none){.cursor-dot{display:none}}

/* ===== reduced motion / responsive ===== */
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;clip-path:none;transition:none}
  .loader,.loader-curtain{display:none!important}
  .stage-photo,.stage-roof .sl,.stage-shade,.stage-eve,.stage-glow{transition:none}
}
@media(max-width:880px){
  .hero-grid{grid-template-columns:1fr;gap:2rem;padding-block:108px 60px}
  .hero-copy{max-width:none}
  .stage-frame{aspect-ratio:4/3}
}
