/* ===== BBB scenes (v3): scroll-choreographed home. Static + readable without JS or with reduced motion. ===== */
:root{--m:1}
@media(max-width:760px){:root{--m:.4}}
.wide{width:min(1400px,calc(100% - 64px));margin:auto}
.scene,.scene-tiles,.method,.end{position:relative;z-index:1}
.mega{font-size:clamp(54px,8.2vw,150px);line-height:.96;letter-spacing:-.058em;font-weight:600;margin:0 0 24px}
.giant{font-size:clamp(46px,7.6vw,140px);line-height:1.0;letter-spacing:-.058em;font-weight:600;color:var(--ink);margin:0;text-shadow:0 4px 60px rgba(0,0,0,.6)}
.giant .w{display:inline-block;white-space:pre;padding:.04em .04em .2em;margin:-.04em -.04em -.2em}
.giant em{display:inline}

/* ---------- static (default) layout ---------- */
.hs-a{display:grid;grid-template-columns:1fr 1fr;gap:25px;align-items:center;width:min(1320px,calc(100% - 112px));margin:auto;padding:56px 0 40px}
.hs-a h1{font-size:clamp(78px,10.4vw,176px);line-height:.92;letter-spacing:-.06em}
.hs-b{width:min(1320px,calc(100% - 112px));margin:auto;padding:30px 0 100px}
.tiles-wrap{width:min(1400px,calc(100% - 64px));margin:auto;padding:70px 0 90px}
.beat{position:relative;min-height:70vh;display:grid;align-items:center;width:min(1320px,calc(100% - 64px));margin:auto;padding:30px 0}
.bi{margin:0;max-width:340px}.bi img{border-radius:18px;width:100%}.bi figcaption{font-size:9px;letter-spacing:.18em;color:var(--gold);margin-top:10px;font-weight:700}
.bt .eyebrow{margin-bottom:18px}
.film{width:min(420px,86%);margin:30px auto;border-radius:24px;overflow:hidden;aspect-ratio:9/16;position:relative}
.film video{width:100%;height:100%;object-fit:cover}
.film-copy{width:min(900px,calc(100% - 64px));margin:0 auto 90px}
.film-label{text-align:center}
.snd{position:absolute;right:14px;bottom:14px;z-index:3;font-size:10px;letter-spacing:.1em;color:var(--gold-hi);background:rgba(5,4,3,.6);border:1px solid rgba(227,194,122,.4);border-radius:999px;padding:9px 14px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.gl-head{width:min(1320px,calc(100% - 64px));margin:0 auto}
.layer-stage.free{min-height:560px;border:0;background:none;box-shadow:none;overflow:visible}
.layer-stage.free::after{display:none}
.gl-cap{width:min(1320px,calc(100% - 64px));margin:0 auto 70px;display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap}
.gl-now b{display:block;font-size:clamp(22px,2.4vw,34px);letter-spacing:-.03em;font-weight:600}.gl-now span{display:block;margin-top:8px;color:var(--muted);font-size:14px;max-width:520px;min-height:44px}
.end{min-height:80vh;display:grid;place-items:center;text-align:center;padding:60px 24px 100px}
.end-in p:not(.giant){margin:26px auto 34px;max-width:440px}.end .giant{font-size:clamp(70px,13vw,230px)}
.method{border-top:0}

/* ---------- bento tiles ---------- */
.section-head{display:flex;justify-content:space-between;align-items:end;gap:30px;flex-wrap:wrap}
.bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:26px;position:relative;margin-top:34px}
.bento .product{grid-column:span 4}
.bento .b-guide{grid-column:1/span 5;grid-row:span 2}
.bento .b-work{grid-column:span 7}
.bento .b-glass{grid-column:span 7}
.bento .b-check{grid-column:span 4}
.bento .b-char{grid-column:span 4}
.bento .b-kit{grid-column:span 4}
.bento .b-guide .product-art{height:640px}
.bento .b-work .product-art,.bento .b-glass .product-art{height:300px}
.bento .b-char .product-art,.bento .b-check .product-art,.bento .b-kit .product-art{height:300px}
.bento.flat .product{grid-column:span 4!important;grid-row:auto!important}
.bento.flat .product-art{height:300px!important}
.bento .product p{min-height:0}
.bento .product-art .book{max-height:88%;width:auto}
.bento .b-guide .product-art .book{height:84%;max-height:none;width:auto}

/* one distinct light per tile — no more same corners */
.product-art::before{background:radial-gradient(var(--lw,60%) var(--lh,60%) at var(--lx,50%) var(--ly,0%),var(--lc,rgba(255,226,160,.5)),transparent 72%)!important}
.light-a .product-art{--lx:8%;--ly:0%;--lc:rgba(255,232,170,.55);--lw:70%;--lh:55%}
.light-b .product-art{--lx:100%;--ly:100%;--lc:rgba(201,112,42,.55);--lw:75%;--lh:80%}
.light-c .product-art{--lx:88%;--ly:-10%;--lc:rgba(240,190,90,.55);--lw:55%;--lh:90%}
.light-d .product-art{--lx:-8%;--ly:85%;--lc:rgba(164,127,52,.6);--lw:65%;--lh:70%}
.light-e .product-art{--lx:50%;--ly:-12%;--lc:rgba(255,244,214,.5);--lw:38%;--lh:95%}
.light-f .product-art::before{display:none!important}
.product-art.glass-art::before,.product-art.sage::before,.product-art.blue::before,.product-art.purple::before,.product-art.gold::before{background:radial-gradient(var(--lw,60%) var(--lh,60%) at var(--lx,50%) var(--ly,0%),var(--lc,rgba(255,226,160,.5)),transparent 72%)!important}
.ex:nth-child(1) .ex-stage::before{background:radial-gradient(70% 55% at 50% -12%,rgba(255,232,170,.55),transparent 72%)!important}
.ex:nth-child(2) .ex-stage::before{background:radial-gradient(50% 60% at 50% 50%,rgba(240,184,80,.5),transparent 70%)!important}
.ex:nth-child(3) .ex-stage::before{background:radial-gradient(90% 50% at 50% 118%,rgba(201,112,42,.6),transparent 72%)!important}
.ex:nth-child(4) .ex-stage::before{background:radial-gradient(48% 80% at -8% 40%,rgba(255,226,160,.5),transparent 72%)!important}

/* ---------- chapter marker + storyline ---------- */
.chap{position:fixed;right:22px;top:50%;z-index:40;transform:translateY(-50%);writing-mode:vertical-rl;font-size:10px;letter-spacing:.2em;color:rgba(255,236,190,.38);font-weight:700;transition:color .5s,text-shadow .5s;pointer-events:none;display:flex;gap:12px;align-items:center}
.chap.pulse{color:var(--gold-hi);text-shadow:0 0 18px rgba(255,226,160,.8)}
.chap i{width:1px;height:46px;background:linear-gradient(var(--gold),transparent);display:block}
.storyline{position:absolute;left:0;top:0;width:100%;height:100%;z-index:0;pointer-events:none;overflow:visible}
.storyline path{fill:none;stroke:url(#slg);stroke-width:1.6;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(227,174,70,.7))}
.storyline .base{stroke:rgba(227,194,122,.08);filter:none}
.storyline circle{fill:#fff3cf;filter:drop-shadow(0 0 10px #f6dc98) drop-shadow(0 0 22px rgba(227,174,70,.9))}
main{position:relative}
@media(max-width:1200px){.chap{display:none}}

/* ======== ANIMATED MODE ======== */
.anim .s-hero{height:320svh}
.anim .s-flow{height:440svh}
.anim .s-film{height:260svh}
.anim .s-glass{height:340svh}
.anim .scene .stage{position:sticky;top:0;height:100svh;overflow:hidden}
/* hero */
.anim .s-hero .stage{display:grid;align-items:center}
.anim .hs-a,.anim .hs-b{grid-area:1/1;padding:0;align-self:center}
.anim .hs-a{--q:clamp(0,calc((var(--sp) - .26)*3.6),1);opacity:calc(1 - var(--q))}
.anim .hs-a .hero-copy{transform:translateY(calc(var(--q)*-80px));filter:blur(calc(var(--q)*14px))}
.anim .hs-a .hero-art{transform:translateX(calc(var(--q)*-36vw)) rotate(calc(var(--q)*-9deg)) scale(calc(1 - var(--q)*.35))}
.anim .hs-a .hero-art{animation:artIn 1.5s cubic-bezier(.2,.8,.2,1) both}
@keyframes artIn{from{translate:30vw 8vh;opacity:0}to{translate:0 0;opacity:1}}
.anim .hs-b{--q2:clamp(0,calc((var(--sp) - .36)*2.6),1);--q3:clamp(0,calc((var(--sp) - .62)*5),1);--x:clamp(0,calc((var(--sp) - .90)*10),1);opacity:calc(1 - var(--x));transform:translateY(calc(var(--x)*-40px))}
.anim .hs-b .giant{font-size:clamp(50px,8.2vw,150px);text-align:center}
.hs-sub{max-width:560px;margin:34px auto 0;text-align:center;font-size:clamp(15px,1.5vw,19px);color:#d8d0bb}
.anim .hs-sub{opacity:var(--q3);transform:translateY(calc((1 - var(--q3))*22px));filter:blur(calc((1 - var(--q3))*8px))}
.anim .hs-b{text-align:center}
.anim .hs-b .w{--wk:clamp(0,calc(var(--q2)*9 - var(--i)),1);opacity:var(--wk);transform:translateY(calc((1 - var(--wk))*34px));filter:blur(calc((1 - var(--wk))*12px))}
/* tiles: pull in + parallax */
.anim [data-pull]{translate:calc((1 - var(--pp,0))*var(--dx,0)*var(--m)*1px) calc((1 - var(--pp,0))*var(--dy,0)*var(--m)*1px + var(--py,0)*1px);rotate:calc((1 - var(--pp,0))*var(--rot,0)*1deg);scale:calc(.84 + .16*var(--pp,0));opacity:clamp(0,calc(var(--pp,0)*1.7),1);will-change:translate,rotate,scale,opacity}
/* flow beats */
.anim .s-flow .beat{position:absolute;inset:0;width:auto;margin:0;padding:0;min-height:0;display:grid;place-items:center;
  --e:clamp(0,calc(var(--t)*3.4),1);--x:clamp(0,calc((var(--t) - .70)*3.4),1);opacity:calc(var(--e) - var(--x));pointer-events:none}
.anim .beat .bt{grid-area:1/1;text-align:left;width:min(1320px,calc(100% - 64px));transform:scale(calc(.97 + .03*var(--e) + 1.1*var(--x)));filter:blur(calc(var(--x)*14px));padding-bottom:.2em}
.anim .beat .bt-r{text-align:right}.anim .beat .bt-r .giant{margin-left:auto}
.anim .beat .giant{max-width:62%}
.anim .beat .bt .w{--wk:clamp(0,calc(var(--t)*6 - var(--i)*.6),1);opacity:var(--wk);transform:translateY(calc((1 - var(--wk))*.45em));filter:blur(calc((1 - var(--wk))*10px));transition:none}
/* media: fades in place, loops, feathers out, then rises away toward the header */
.anim .beat .bi{--ee:clamp(0,calc(var(--t)*5),1);position:absolute;top:50%;width:min(34vw,460px);max-width:none;margin:0;transform:translateY(calc(-50% - var(--x)*20svh)) scale(calc(.93 + .07*var(--ee)));opacity:var(--ee);filter:blur(calc((1 - var(--ee))*14px))}
.anim .beat .bi-tall{width:min(30vw,40svh)}
.anim .beat .bi-r{right:3vw}.anim .beat .bi-l{left:3vw}
.anim .beat .bi video,.anim .beat .bi img{display:block;width:100%;height:auto;box-shadow:none;border-radius:0;-webkit-mask-image:radial-gradient(ellipse 68% 66% at 50% 50%,#000 52%,transparent 100%);mask-image:radial-gradient(ellipse 68% 66% at 50% 50%,#000 52%,transparent 100%)}
.anim .beat .bi-cut img{-webkit-mask-image:none;mask-image:none;filter:drop-shadow(0 30px 40px #000a);animation:bfloat 7s ease-in-out infinite}
@keyframes bfloat{50%{transform:translateY(-14px)}}
.anim .beat .bi figcaption{position:absolute;bottom:2%;left:14%;right:14%;text-align:center}
/* film grows past the viewport */
.anim .s-film .stage{--g:clamp(0,calc(var(--sp)*2.4),1);--c:clamp(0,calc((var(--sp) - .58)*4),1)}
.anim .film{position:absolute;left:50%;top:50%;margin:0;aspect-ratio:auto;width:calc((32 + 68*var(--g))*1vw);height:calc((62 + 38*var(--g))*1svh);transform:translate(-50%,-50%);border-radius:calc((1 - var(--g))*28px);box-shadow:0 40px 100px -20px #000,0 0 120px -30px rgba(227,174,70,calc(.6*(1 - var(--g))))}
.anim .film::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,4,3,calc(var(--c)*.5)),rgba(5,4,3,calc(.15 + var(--c)*.7)));pointer-events:none}
.anim .film-label{position:absolute;top:13%;left:0;right:0;opacity:calc(1 - var(--g)*2);z-index:2}
.anim .film-copy{position:absolute;inset:0;margin:0;width:auto;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:0 8vw;z-index:3;opacity:var(--c);transform:translateY(calc((1 - var(--c))*50px))}
.anim .film-copy .giant{font-size:clamp(42px,6.4vw,118px);margin-bottom:22px}
.anim .film-copy p{max-width:560px}
.anim .snd{opacity:var(--c)}
/* glass scene */
.anim .s-glass .stage{display:grid;grid-template-rows:auto 1fr auto}
.anim .gl-head{padding-top:15svh}.anim .gl-head .mega{font-size:clamp(40px,5.2vw,92px);margin-bottom:0;transform:translateY(calc(var(--gp,0)*-6px))}
.anim .layer-stage.free{align-self:center;min-height:0;height:100%}
.anim .layer-stage.free .stack{width:min(640px,70vw)}
.anim .gl-cap{margin-bottom:5svh}
.anim .layer-stage.free .lbl{opacity:calc((var(--sep) - .25)*2)}

/* ---------- mobile ---------- */
@media(max-width:1050px){
 .hs-a{grid-template-columns:1fr;width:calc(100% - 40px);padding-top:40px}
 .hs-b{width:calc(100% - 40px)}
 .bento{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
 .bento .product,.bento .b-guide,.bento .b-work,.bento .b-glass,.bento .b-check,.bento .b-char,.bento .b-kit{grid-column:auto;grid-row:auto}
 .bento .b-guide,.bento .b-work{grid-column:1/-1}
 .bento .b-guide .product-art{height:420px}.bento .product-art{height:250px}
 .anim .beat .giant{max-width:100%}
 .anim .beat .bi,.anim .beat .bi-tall{width:50vw;opacity:calc(var(--ee)*.6)}
 .anim .hs-a .hero-art{height:360px}
}
@media(max-width:760px){
 .bento{grid-template-columns:1fr}.bento .product,.bento .b-guide,.bento .b-work{grid-column:1/-1}
 .bento .b-guide .product-art{height:380px}.bento .product-art{height:280px}
 .anim .film-copy{padding:0 22px}
 .anim .gl-head{padding-top:12svh}
 .anim .s-flow{height:400svh}
 .tiles-wrap{padding-top:50px}
}
@media(prefers-reduced-motion:reduce){.chap,.storyline{display:none}}
.bento .b-guide{display:flex;flex-direction:column}
.bento .b-guide .product-art{flex:1;height:auto;min-height:560px}
.bento.flat .b-guide{display:block}.bento.flat .b-guide .product-art{min-height:0}
@media(max-width:1050px){.bento .b-guide .product-art{min-height:380px}}

/* ============ v5 · gold light thread (dot + soft trailing glow) ============ */
.storyline path{filter:none!important;fill:none;stroke-linecap:round}
.storyline .base{display:none}
.storyline .trail{stroke:rgba(227,194,122,.13);stroke-width:1}
.storyline .tail{stroke:#f3cf78}
.storyline .t0{stroke-width:1;stroke-opacity:0.07}
.storyline .t1{stroke-width:1.4;stroke-opacity:0.08}
.storyline .t2{stroke-width:1.9;stroke-opacity:0.09}
.storyline .t3{stroke-width:2.5;stroke-opacity:0.11}
.storyline .t4{stroke-width:3.2;stroke-opacity:0.13}
.storyline .t5{stroke-width:4;stroke-opacity:0.15}
.storyline .t6{stroke-width:4.8;stroke-opacity:0.18}
.storyline .t7{stroke-width:5.6;stroke-opacity:0.22}
.storyline .t7{stroke:#ffe9a8}
.storyline .dotg circle{filter:none!important;fill:none}
.storyline .dotg .halo{fill:url(#sl-halo);animation:dotHalo 2.8s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.storyline .dotg .ring{stroke:#f7dc7e;stroke-width:1.2;animation:dotRing 2.8s ease-out infinite;transform-box:fill-box;transform-origin:center}
.storyline .dotg .core{fill:url(#sl-core);animation:dotCore 2.8s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes dotHalo{0%,100%{opacity:.75;transform:scale(.9)}50%{opacity:1;transform:scale(1.18)}}
@keyframes dotRing{0%{opacity:.7;transform:scale(.7)}100%{opacity:0;transform:scale(3)}}
@keyframes dotCore{0%,100%{transform:scale(1)}50%{transform:scale(1.14)}}
/* hero fades to black as it hands over to the next section */
.s-hero{position:relative}
.s-hero::after{content:'';position:absolute;left:0;right:0;bottom:0;height:38svh;z-index:4;pointer-events:none;background:linear-gradient(to bottom,rgba(5,4,3,0),rgba(5,4,3,.72) 55%,var(--bg,#050403))}
.scene-tiles{position:relative}
.scene-tiles::before{content:'';position:absolute;left:0;right:0;top:-1px;height:18vh;background:linear-gradient(to bottom,var(--bg,#050403),transparent);pointer-events:none;z-index:0}

/* split words inside <em> need their own gold fill (parent text-clip does not reach inline-block children) */
.giant em .w{background:linear-gradient(100deg,#a47f34 0%,#f6dc98 22%,#fff3cf 38%,#e3c27a 55%,#b88a38 75%,#f6dc98 100%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:goldflow 7s linear infinite;padding-right:.06em;font-style:italic}
.giant em{filter:drop-shadow(0 0 22px rgba(247,214,120,.28))}

/* v7: the hero is NOT a pinned scene any more — it loads in, then everything scrolls with you */
.anim .s-hero{height:auto}
.anim .s-hero .stage{position:relative;height:auto;overflow:visible;display:block}
.anim .hs-a{opacity:1}.anim .hs-a .hero-copy{transform:none;filter:none}
.anim .hs-a .hero-art{transform:none}
.anim .hs-b{padding:16svh 0 18svh;opacity:1;transform:none}
.s-hero::after{display:none}
.scene-tiles::before{display:none}
.anim .hs-a{padding-top:clamp(28px,7svh,80px);padding-bottom:4svh}

/* v28: hero words rise with more drama and lift away on exit */
html.anim .hs-b .w{transform:translateY(calc((1 - var(--wk))*64px)) scale(calc(.93 + var(--wk)*.07));filter:blur(calc((1 - var(--wk))*16px))}
html.anim main .hs-b{opacity:calc(1 - var(--x,0)*.9);transform:translateY(calc(var(--x,0)*-46px))}
