/* ==========================================================================
   Goggles Energy — cinematic layer (additive; loads after goggles-site.css)
   cinematic.js adds body.cine only when motion is allowed; without JS or
   with reduced motion, every rule here degrades to the static site.
   ========================================================================== */

/* ── Hero: parallax depth + line-by-line title reveal ─────────────────── */
.cine .hero .bg{top:-12%;bottom:-12%;will-change:transform}
.cine .hero .in{will-change:transform,opacity;transform:translate3d(0,calc(var(--hp,0)*54px),0);opacity:calc(1 - var(--hp,0)*.85)}
.cine .hero .scrolln{opacity:calc(1 - var(--hp,0)*2.2)}
/* WebGL photovoltaic light-field: sits above the (dimmed) photo, below veils/text */
.hero-gl{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:0;pointer-events:none;opacity:0;transition:opacity 1.2s var(--ease)}
.hero.gl-on .hero-gl{opacity:1}
.hero.gl-on .bg img{opacity:.13}
/* film grain over the whole hero for the cinema finish */
.cine .hero::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
/* keep the headline legible against the brighter sun */
.cine .hero.gl-on .veil{background:linear-gradient(180deg,rgba(8,24,39,.7) 0%,rgba(8,24,39,.42) 34%,rgba(8,24,39,.66) 74%,rgba(8,24,39,.94) 100%)}
/* title micro-parallax: the type floats above the field (fine pointers set --pmx/--pmy) */
.cine .hero h1{transform:translate3d(calc(var(--pmx,0)*1px),calc(var(--pmy,0)*1px),0);transition:transform .8s var(--ease)}
/* Daybreak: a low warm sun-glow raking up from the horizon, lifting as you scroll */
.cine .hero::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(135% 78% at 50% 116%, rgba(228,97,30,calc(.22*(1 - var(--hp,0)))), transparent 58%),
             linear-gradient(0deg, rgba(228,97,30,calc(.08*(1 - var(--hp,0)))), transparent 40%)}
@media (prefers-reduced-motion:no-preference){
  .cine .hero h1{position:relative}
  .cine .hero h1 .l1,.cine .hero h1 .l2,.cine .hero h1 .l3{display:inline-block;opacity:0;clip-path:inset(0 105% 0 -.1em);animation:cine-line 1.05s var(--ease-io) forwards}
  .cine .hero h1 .l2{animation-delay:.18s}
  .cine .hero h1 .l3{animation-delay:.36s}
  /* one light-sweep across the headline once the hero is ready */
  .cine .hero.ready h1::after{content:"";position:absolute;inset:-.12em -.35em;pointer-events:none;
    background:linear-gradient(104deg,transparent 42%,rgba(255,255,255,.42) 50%,transparent 58%);
    transform:translateX(-125%) skewX(-14deg);animation:cine-sweep 1.25s var(--ease) .72s 1 both}
}
@keyframes cine-line{to{opacity:1;clip-path:inset(0 -.1em 0 -.1em)}}
@keyframes cine-sweep{from{transform:translateX(-125%) skewX(-14deg)}to{transform:translateX(125%) skewX(-14deg)}}

/* ── Journey: scroll-scrubbed rail + step spotlight ───────────────────── */
.journey .story{display:grid;gap:clamp(3.4rem,7vw,6rem);margin-top:clamp(2.6rem,4.5vw,4rem)}
.chap{display:grid;grid-template-columns:minmax(250px,5fr) 7fr;gap:clamp(1.8rem,4.5vw,4.5rem);align-items:center}
.chap.flip .chap-txt{order:2}
.chap-art svg{width:100%;height:auto;display:block;overflow:visible}
.cno{font-family:var(--fd);font-weight:800;font-size:clamp(2.6rem,5vw,4.2rem);line-height:1;color:var(--blue-pale);transition:color .5s ease;display:block}
.chap h3{font-size:var(--t-h3);margin:.35rem 0 .8rem}
.chap p{max-width:44ch}
.cfacts{font-family:var(--fm);font-size:.62rem;letter-spacing:.09em;text-transform:uppercase;color:var(--signal2);margin-top:1.1rem;border-top:1px solid var(--line);padding-top:.85rem;max-width:38ch}
.cine .journey .chap{transition:opacity .55s var(--ease)}
.cine .journey .chap.rvx.in:not(.st-on){opacity:.38}
.cine .journey .chap.st-on .cno{color:var(--signal)}
@media (max-width:900px){
  .chap{grid-template-columns:1fr;gap:1.4rem}
  .chap.flip .chap-txt{order:0}
}

.flowlab{margin-top:clamp(1.6rem,3vw,2.6rem)}
.mlab-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:clamp(1.4rem,2.5vw,2rem)}
.mlab-tabs button{font-family:var(--fm);font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:.7em 1.15em;border:1px solid var(--line);background:var(--paper2);color:var(--slate);cursor:pointer;transition:background var(--d-ui) ease,color var(--d-ui) ease,border-color var(--d-ui) ease,transform var(--d-fast) var(--spring)}
.mlab-tabs button:hover{border-color:var(--blue);color:var(--blue2)}
.mlab-tabs button:active{transform:scale(.97)}
.mlab-tabs button[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.mlab-stage{min-height:clamp(240px,42vw,360px)}
.mlab-scene svg{width:100%;max-width:880px;height:auto;display:block;overflow:visible}
.mlab-sum{font-size:var(--t-lead);color:var(--ink);max-width:62ch;margin-top:clamp(1.2rem,2vw,1.8rem);line-height:1.5;font-weight:500}
.mlab-specs{font-family:var(--fm);font-size:.64rem;letter-spacing:.09em;text-transform:uppercase;color:var(--signal2);margin-top:.6rem}

/* ── Media parallax (scroll-eased) ────────────────────────────────────── */
.cine .sol-img .ph img,.cine .bipv .lead-img .ph img{
  will-change:transform;
  transition:transform .4s cubic-bezier(.2,.6,.3,1),opacity .5s ease;
  transform:translate3d(0,var(--py,0px),0) scale(1.14);
}

/* ── Microinteractions ────────────────────────────────────────────────── */
@media (hover:hover) and (pointer:fine){
  .cine .btn.bp{position:relative;overflow:hidden}
  .cine .btn.bp::after{content:"";position:absolute;top:0;bottom:0;left:-45%;width:34%;pointer-events:none;background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-18deg) translateX(0);transition:none}
  .cine .btn.bp:hover::after{transform:skewX(-18deg) translateX(460%);transition:transform .85s var(--ease)}
}
.cine #gaugeCells i.on{animation:cine-pop .35s var(--spring)}
@keyframes cine-pop{from{transform:scale(.45)}to{transform:scale(1)}}

/* ── Cashflow theater: hover year readout ─────────────────────────────── */
.cine .cf-stage{position:relative}
.cf-guide{position:absolute;top:9%;bottom:11%;width:1px;background:var(--signal2);opacity:0;transition:opacity .2s ease;pointer-events:none;z-index:2}
.cf-guide.show{opacity:.55}
.cf-tip{position:absolute;top:10px;pointer-events:none;background:var(--paper2);border:1px solid var(--line);box-shadow:0 10px 28px rgba(11,27,46,.14);padding:.6rem .75rem;font-family:var(--fm);font-size:.62rem;letter-spacing:.03em;color:var(--slate);opacity:0;transform:translate3d(-50%,5px,0);transition:opacity .2s ease,transform .2s var(--ease);z-index:3;white-space:nowrap;display:grid;gap:.28rem}
.cf-tip.show{opacity:1;transform:translate3d(-50%,0,0)}
.cf-tip b{color:var(--ink);font-size:.68rem;font-weight:600}
.cf-tip span{display:flex;align-items:center;gap:.45rem;font-variant-numeric:tabular-nums}
.cf-tip i{width:8px;height:8px;flex:none}

/* ── Estimator: lifetime strip ────────────────────────────────────────── */
.calc-more{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border-top:1px solid var(--line)}
.calc-more .o{background:var(--paper2);padding:clamp(1.1rem,2vw,1.6rem)}
.calc-more .big{font-family:var(--fd);font-weight:700;font-size:clamp(1.25rem,2.2vw,1.7rem);color:var(--ink);letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums;transition:transform var(--d-fast) var(--spring)}
.calc-more .big.bump{transform:scale(1.05)}
.calc-more .lbl{font-family:var(--fm);font-size:.6rem;letter-spacing:.07em;text-transform:uppercase;color:var(--mist);margin-top:.5rem}
@media (max-width:720px){.calc-more{grid-template-columns:1fr}}

/* ── Estimator: compact dashboard ── */
.calc2{display:grid;grid-template-columns:5fr 7fr;gap:0;border:1px solid var(--line);background:var(--paper2)}
.calc-in{padding:clamp(1.4rem,2.5vw,2.2rem);border-right:1px solid var(--line)}
.calc-in .refine-t{font-family:var(--fm);font-size:.6rem;letter-spacing:.09em;text-transform:uppercase;color:var(--mist);margin:1.6rem 0 .8rem;border-top:1px solid var(--line);padding-top:1.2rem}
.calc2 .est-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem 1rem}
.calc2 .est-grid label{font-family:var(--fm);font-size:.58rem;letter-spacing:.07em;text-transform:uppercase;color:var(--mist);display:block;margin-bottom:.3rem}
.calc2 .est-grid input,.calc2 .est-grid select{width:100%;border:1px solid var(--line);background:#fff;padding:.5em .6em;font:inherit;font-size:.86rem;color:var(--ink)}
.calc-res{padding:clamp(1.4rem,2.5vw,2.2rem);display:grid;gap:clamp(1rem,1.8vw,1.5rem);align-content:start}
.res-hero{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.res-hero .big.xl{font-family:var(--fd);font-weight:800;font-size:clamp(1.9rem,3.4vw,2.8rem);letter-spacing:-.03em;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.res-hero .rh:last-child .big.xl{color:var(--signal-deep)}
.calc-res .lbl{font-family:var(--fm);font-size:.58rem;letter-spacing:.07em;text-transform:uppercase;color:var(--mist);margin-top:.45rem}
.pay-strip .lbl{margin:0 0 .55rem;display:flex;justify-content:space-between;align-items:baseline}
.pay-strip .lbl b{font-family:var(--fd);font-size:1.05rem;color:var(--ink);letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.pay-track{position:relative;height:8px;background:var(--blue-pale);margin:0 0 1.1rem}
.pay-fill{position:absolute;inset:0 auto 0 0;width:40%;background:var(--signal);transition:width .5s var(--ease)}
.pay-dot{position:absolute;top:50%;left:40%;width:14px;height:14px;background:var(--signal-deep);transform:translate(-50%,-50%) rotate(45deg);transition:left .5s var(--ease)}
.pay-track .pt{position:absolute;top:14px;transform:translateX(-50%);font-family:var(--fm);font-size:.55rem;letter-spacing:.05em;color:var(--mist)}
.pay-track .pt:first-of-type{transform:none}
.pay-track .pt:last-of-type{transform:translateX(-100%)}
.res-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.res-mini .m{background:#fff;padding:.85rem .9rem}
.res-mini .big{font-family:var(--fd);font-weight:700;font-size:clamp(.98rem,1.5vw,1.2rem);letter-spacing:-.01em;color:var(--ink);line-height:1.1;font-variant-numeric:tabular-nums}
.calc2 .big{transition:transform var(--d-fast) var(--spring)}
.calc2 .big.bump{transform:scale(1.06)}
.calc2 .split-viz{margin:0;padding:0;border:0;background:transparent}
@media (max-width:880px){.calc2{grid-template-columns:1fr}.calc-in{border-right:0;border-bottom:1px solid var(--line)}.res-mini{grid-template-columns:1fr 1fr}}

/* ── Footer: offices + maps up top ── */
.fg2{display:grid;grid-template-columns:1.25fr 1fr 1fr .55fr .55fr;gap:clamp(1.6rem,3vw,2.8rem)}
.fg2 .fb .fc-row{display:flex;margin-top:.7rem}
.fg2 .social{margin-top:1.2rem}
.fg2 .office{display:grid;gap:.55rem;align-content:start}
.mapbox{border:1px solid var(--line);background:var(--paper2);aspect-ratio:16/9}
.mapbox iframe{width:100%;height:100%;border:0;display:block;filter:grayscale(.25)}
.fnavrow{display:flex;gap:clamp(3rem,8vw,7rem);margin-top:clamp(2rem,4vw,3rem);padding-top:clamp(1.6rem,3vw,2.2rem);border-top:1px solid var(--line)}
@media (max-width:1080px){.fg2{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.fg2{grid-template-columns:1fr}}

/* ── Guards ───────────────────────────────────────────────────────────── */
.eng-index{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(2.6rem,5vw,4.6rem);margin-top:clamp(1.8rem,3vw,2.6rem)}
.eng-row{display:flex;gap:1.3rem;padding:clamp(1.2rem,2vw,1.7rem) 0;border-top:1px solid var(--line);align-items:flex-start}
.eno{font-family:var(--fd);font-weight:800;font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.1;color:var(--blue-lite);min-width:2.5rem;transition:color .3s ease;font-variant-numeric:tabular-nums}
.eng-row:hover .eno{color:var(--signal)}
.eng-row h4{font-size:1.06rem;letter-spacing:-.01em}
.eng-row .eb p{font-size:.95rem;margin:.35rem 0 .55rem;max-width:46ch}
.espec{font-family:var(--fm);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--signal2)}
@media (max-width:900px){.eng-index{grid-template-columns:1fr}}
.why-open{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(2.6rem,5vw,4.6rem)}
.wrow{display:flex;gap:1.4rem;align-items:flex-start;padding:clamp(1.3rem,2.2vw,1.8rem) 0;border-top:1px solid rgba(255,255,255,.16)}
.wstat{font-family:var(--fd);font-weight:800;font-size:clamp(1.6rem,3vw,2.3rem);line-height:1.05;color:var(--signal);letter-spacing:-.02em;min-width:7.4rem;font-variant-numeric:tabular-nums}
.wstat small{font-size:.38em;color:#C9D8E6;font-weight:600;letter-spacing:.04em;vertical-align:super;margin-left:.15em}
.wrow h4{color:#fff;font-size:1.06rem}
.wrow p{color:#C9D8E6;font-size:.95rem;margin-top:.35rem;max-width:46ch}
@media (max-width:900px){.why-open{grid-template-columns:1fr}.wstat{min-width:5.8rem}}
#qualify .q-list{background:transparent;border:0;gap:0}
#qualify .q{background:transparent;padding:1.3rem 0}
#qualify .q + .q{border-top:1px solid var(--line)}
#qualify .seg-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.5rem}
#qualify .seg-opts button{background:transparent;padding:.55em 1.15em}
#qualify .seg-opts button[aria-pressed="true"]{background:var(--navy)}
#qualify .next-check{border:0;background:transparent;padding:1.4rem 0 0}

/* ── Why Goggles: timeline + stat band ────────────────────────── */
.why-time svg{width:100%;height:auto;display:block;overflow:visible}
.why-band{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(1.6rem,3vw,2.8rem);margin-top:clamp(2.2rem,4vw,3.4rem);padding-top:clamp(1.4rem,2.5vw,2rem);border-top:1px solid rgba(255,255,255,.16)}
.wb{display:grid;gap:.45rem;align-content:start}
.wb .n{font-family:var(--fd);font-weight:800;font-size:clamp(2.2rem,4.2vw,3.3rem);line-height:1;color:var(--signal);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.wb .n small{font-size:.4em;color:#C9D8E6;font-weight:600;letter-spacing:.04em;margin-left:.12em}
.wb .l{color:#C9D8E6;font-size:1.02rem;line-height:1.5;max-width:26ch}
@media (max-width:820px){.why-band{grid-template-columns:1fr 1fr}}
.wcyc{opacity:.8;transition:opacity .6s ease,fill .6s ease}
.wcyc.on{opacity:1;fill:var(--signal)!important;font-weight:700}
@media (prefers-reduced-motion:reduce){
  .cine .hero .in{transform:none;opacity:1}
  .cine .journey .chap.rvx.in:not(.st-on){opacity:1}
  .cine .sol-img .ph img,.cine .bipv .lead-img .ph img,.cine .pr-img .ph img{transform:none}
}

/* ══ Scroll narrative: "one roof, one day of sun" ═══════════════════════════
   All rules gated on body.cine (added by cinematic.js only when motion is
   allowed); html.dusk / body.spot / .chud are toggled/built by the same JS. */

/* Signature-project photos join the media-parallax system */
.cine .pr-img .ph img{will-change:transform;transition:transform .4s cubic-bezier(.2,.6,.3,1);transform:translate3d(0,var(--py,0px),0) scale(1.08)}

/* Fluid section seams: soft light-bleed instead of hard 1px cuts */
.cine #how,.cine #insights,.cine #calculator{box-shadow:inset 0 78px 66px -66px rgba(8,24,39,.5)}
.cine #solutions,.cine #why,.cine #contact{box-shadow:inset 0 92px 72px -72px rgba(224,234,246,.13)}

/* Motion-designed cards: image clip-wipe reveal (leaves the parallax transform intact) */
.cine .pr .pr-img .ph img,.cine .solrow .sol-img .ph img{clip-path:inset(0 0 101% 0);transition:transform .5s cubic-bezier(.2,.6,.3,1),filter .5s ease,clip-path 1.1s var(--ease-io)}
.cine .pr.card-in .pr-img .ph img,.cine .solrow.card-in .sol-img .ph img{clip-path:inset(0 0 0 0)}
/* caption chip rises in just after the image */
.cine .pr .pr-img .cap{transform:translateY(100%);transition:transform .7s var(--ease) .25s}
.cine .pr.card-in .pr-img .cap{transform:translateY(0)}
/* solution photos warm on hover */
.cine .solrow:hover .sol-img .ph img{filter:brightness(1.07) saturate(1.05)}

/* ── Per-section choreography (all keyed off .card-in / .rvx.in) ──────── */
/* Signature projects: specs + case blocks rise in staggered; ticks pop */
.cine .pr .pr-specs .s,.cine .pr .pr-cs .b{opacity:0;transform:translate3d(0,16px,0);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.cine .pr.card-in .pr-specs .s,.cine .pr.card-in .pr-cs .b{opacity:1;transform:none}
.cine .pr.card-in .pr-specs .s:nth-child(2),.cine .pr.card-in .pr-cs .b:nth-child(2){transition-delay:.09s}
.cine .pr.card-in .pr-specs .s:nth-child(3),.cine .pr.card-in .pr-cs .b:nth-child(3){transition-delay:.18s}
.cine .pr .ticks span{transform:scale(0);transition:transform .45s var(--spring)}
.cine .pr.card-in .ticks span{transform:scale(1)}
.cine .pr.card-in .ticks .t2{transition-delay:.08s}
.cine .pr.card-in .ticks .t3{transition-delay:.16s}
.cine .pr.card-in .ticks .t4{transition-delay:.24s}

/* Solutions: number badge slides, capability chips cascade */
.cine .solrow .sol-img .no{opacity:0;transform:translate3d(-14px,0,0);transition:opacity .55s var(--ease) .3s,transform .55s var(--ease) .3s}
.cine .solrow.card-in .sol-img .no{opacity:1;transform:none}
.cine .solrow .sol-txt .chips span{opacity:0;transform:translate3d(0,8px,0);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.cine .solrow.card-in .sol-txt .chips span{opacity:1;transform:none}
.cine .solrow.card-in .sol-txt .chips span:nth-child(2){transition-delay:.07s}
.cine .solrow.card-in .sol-txt .chips span:nth-child(3){transition-delay:.14s}
.cine .solrow.card-in .sol-txt .chips span:nth-child(4){transition-delay:.21s}

/* Models teaser: chips cascade + hover lift */
.cine #models-teaser .chips span{transition:transform .3s var(--spring),box-shadow .3s var(--ease),opacity .5s var(--ease)}
.cine #models-teaser .chips.rvx span{opacity:0;transform:translate3d(0,10px,0)}
.cine #models-teaser .chips.rvx.in span{opacity:1;transform:none}
.cine #models-teaser .chips.rvx.in span:nth-child(2){transition-delay:.07s}
.cine #models-teaser .chips.rvx.in span:nth-child(3){transition-delay:.14s}
.cine #models-teaser .chips.rvx.in span:nth-child(4){transition-delay:.21s}
.cine #models-teaser .chips.rvx.in span:nth-child(5){transition-delay:.28s}
@media (hover:hover) and (pointer:fine){
  .cine #models-teaser .chips span:hover{transform:translateY(-3px);box-shadow:0 10px 22px -10px rgba(11,27,46,.35)}
}

/* Estimator: one sheen sweep over the results when the spotlight arms */
.cine .res-hero{position:relative;overflow:hidden}
body.cine.spot .res-hero::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(105deg,transparent 40%,rgba(228,97,30,.14) 50%,transparent 60%);
  transform:translateX(-130%) skewX(-14deg);animation:cine-sweep 1.1s var(--ease) .15s 1 both}

/* Insights: article icon springs in */
.cine .ins-grid .art .art-ic{opacity:0;transform:scale(.4) rotate(-14deg);transition:opacity .5s var(--ease) .15s,transform .55s var(--spring) .15s}
.cine .ins-grid .art.card-in .art-ic{opacity:1;transform:none}

/* Contact: fluid form focus + animated success reveal */
.cine .fld input:focus,.cine .fld select:focus{border-color:var(--signal);box-shadow:0 0 0 3px rgba(228,97,30,.16);transition:border-color .25s ease,box-shadow .25s ease}
.cine .form .done.show{animation:cine-done .7s var(--ease) both}
@keyframes cine-done{from{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:none}}
/* insights blog cards: lift + arrow slide */
.cine .ins-grid .art{transition:transform .55s var(--ease),box-shadow .55s var(--ease),background var(--d-ui) ease}
.cine .ins-grid .art:hover{transform:translateY(-5px);box-shadow:0 26px 54px -26px rgba(11,27,46,.42)}
.cine .ins-grid .art .more svg{transition:transform .4s var(--ease)}
.cine .ins-grid .art:hover .more svg{transform:translateX(6px)}

/* Estimator spotlight: dim the room, key-light the calculator */
.cine #calculator{position:relative;z-index:1;transition:box-shadow .6s var(--ease)}
body.cine::after{content:"";position:fixed;inset:0;z-index:90;pointer-events:none;opacity:0;
  background:radial-gradient(58% 48% at 50% 46%, transparent, rgba(6,14,24,.52));
  transition:opacity .6s var(--ease)}
body.cine.spot::after{opacity:1}
body.cine.spot #calculator{z-index:95}
body.cine.spot #calculator .calc2{box-shadow:0 40px 120px -30px rgba(0,0,0,.6),0 0 0 1px rgba(228,97,30,.12);
  background:linear-gradient(180deg,#fff, #fff) padding-box,radial-gradient(120% 90% at 50% -10%, rgba(228,97,30,.18), transparent 55%) border-box}

/* Dusk finale: plant lights on, one last band of orange on the horizon */
.cine #contact{position:relative;transition:background .9s var(--ease)}
.cine #contact > *{position:relative;z-index:1}
.cine #contact::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;z-index:2;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--signal),transparent);opacity:0;transition:opacity 1s var(--ease)}
.cine #contact::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(95% 62% at 50% 0%, rgba(228,97,30,.16), transparent 60%);opacity:0;transition:opacity 1.2s var(--ease)}
html.dusk .cine #contact::before,html.dusk.cine-host #contact::before{opacity:.85}
html.dusk .cine #contact::after{opacity:1}

/* ── Estimator: darker + larger labels (contrast pass) ──────────────────── */
#calculator .slabel .t{color:var(--ink);font-size:.82rem}
#calculator .srange{color:var(--ink);font-size:.7rem}
#calculator .refine-t{color:var(--ink);font-size:.72rem}
#calculator .est-grid label{color:var(--ink);font-size:.72rem}
#calculator .calc-res .lbl,#calculator .calc-more .lbl{color:var(--ink);font-size:.72rem}
#calculator .pay-strip .lbl{color:var(--ink);font-family:var(--fm);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}
#calculator .pay-track .pt{color:var(--ink);font-size:.64rem}
#calculator .split-cap{color:var(--ink);font-size:.72rem}
#calculator .split-key{color:var(--ink);font-size:.82rem}
