/* Per-section one-time reveal effects. Triggered by .go (added once by IntersectionObserver). */
.fx-hero .hbub{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden;display:none}
.rv-on .fx-hero .hbub{display:block}
.hbub i{position:absolute;bottom:-24px;width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #0007,inset 0 0 0 1px #0005;background:#ffffff1f;opacity:0}
.fx-hero.go .hbub i{animation:hb 1.1s ease-out both}
@keyframes hb{0%{transform:translate3d(0,0,0) scale(.6);opacity:0}25%{opacity:.95}100%{transform:translate3d(0,-320px,0) scale(1.1);opacity:0}}
.fxrow{display:flex;align-items:flex-end;gap:1rem}
.pint{flex:none;overflow:visible}.pint .beer{transform-box:fill-box;transform-origin:50% 100%}
.fx-tap.go .pint .beer{animation:pour 1.1s cubic-bezier(.3,.7,.3,1) both}.fx-tap.go .pint .foam{animation:fade .35s .8s both}
@keyframes pour{from{transform:scaleY(0)}to{transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}
.fx-week #homeWeek .card{transform-origin:50% 0;backface-visibility:hidden}
.fx-week.go #homeWeek .card{animation:poster .7s cubic-bezier(.2,.8,.3,1) both}
.fx-week.go #homeWeek .card:nth-child(2){animation-delay:.12s}.fx-week.go #homeWeek .card:nth-child(3){animation-delay:.24s}.fx-week.go #homeWeek .card:nth-child(n+4){animation-delay:.36s}
@keyframes poster{from{transform:perspective(700px) rotateX(-75deg) translate3d(0,-10px,0);opacity:0}to{transform:none;opacity:1}}
.rv-on .fx-week:not(.go) #homeWeek .card{opacity:0}
.vin{flex:none;overflow:visible}.vin .drop,.vin .spin{transform-box:fill-box;transform-origin:50% 50%}
.fx-play.go .vin .drop{animation:drop .4s cubic-bezier(.3,1.4,.5,1) both}.fx-play.go .vin .spin{animation:spin1 .75s .35s ease-out both}
@keyframes drop{from{transform:translate3d(0,-50px,0);opacity:0}to{transform:none;opacity:1}}
@keyframes spin1{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.eq{display:inline-flex;align-items:flex-end;gap:3px;height:20px;margin-left:.4rem;vertical-align:middle}
.eq i{display:block;width:4px;height:20px;background:#C8102E;transform-origin:bottom;transform:scaleY(.5)}
.eq i:nth-child(even){background:#111}
.fx-play.go .eq i{animation:eqb .3s ease-in-out 3 alternate both}.fx-play.go .eq i:nth-child(2){animation-delay:.08s}.fx-play.go .eq i:nth-child(3){animation-delay:.16s}.fx-play.go .eq i:nth-child(4){animation-delay:.04s}
@keyframes eqb{from{transform:scaleY(.2)}to{transform:scaleY(1)}}
.pnote{display:inline-block;width:18px;height:18px;fill:#C8102E;vertical-align:top}
.fx-play.go .pnote{animation:pn .9s ease-out both}.fx-play.go .pnote+.pnote{animation-delay:.2s}
@keyframes pn{from{transform:translate3d(0,14px,0);opacity:0}to{transform:none;opacity:1}}
.trailfx{display:block;width:100%;height:auto;margin:0 0 .8rem;overflow:visible}
.fx-trail.go .trailfx .line{animation:draw 1.1s ease-in-out both}
.fx-trail.go .trailfx .bike{animation:fade .3s both}
.fx-trail.go .trailfx .pin{animation:pin .35s .9s cubic-bezier(.3,1.5,.5,1) both}
.trailfx .pin{transform-box:fill-box;transform-origin:50% 100%}
@keyframes draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes pin{from{transform:translate3d(0,-18px,0);opacity:0}to{transform:none;opacity:1}}
.lights{display:block;width:100%;height:46px;margin:-1.5rem 0 1.5rem;overflow:visible}
.lights circle{fill:#fff6c9;stroke:#111;stroke-width:1.5}
.fx-book.go .lights circle{animation:lit .25s both}
@keyframes lit{0%{opacity:.15}60%{opacity:1}80%{opacity:.6}100%{opacity:1}}
.rv-on .fx-book:not(.go) .lights circle{opacity:.15}
.pola{background:#fff;padding:10px 10px 36px;border-radius:4px;aspect-ratio:auto;box-shadow:0 14px 34px #0003}
.pola .ph{position:relative;overflow:hidden;aspect-ratio:4/3}
.pola .ph img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}
.pola .ph::after{content:"";position:absolute;inset:0;background:#e8e2d4;opacity:0}
.fx-story.go .pola .ph::after{animation:dev 1.15s ease-out both}.fx-story.go .pola img{animation:fade 1.15s both}
@keyframes dev{from{opacity:1}to{opacity:0}}
.pola.tilt{transform:rotate(-2.5deg)}
@media (prefers-reduced-motion:reduce){[class*="fx-"] *,[class*="fx-"] *::after{animation:none!important}.hbub{display:none!important}}

/* Hero bubbles v2: continuous loop, mixed with the floating notes (preview only). */
.fx-hero .hbub{display:block!important}
.hbub i{border:2px solid #fff!important;background:#ffffff14!important;box-shadow:0 0 0 1px #0008,inset 0 0 0 1px #0006,0 0 6px #fff6!important;opacity:0;animation:hbl 6s linear infinite!important}
.hbub i:nth-child(3n){border-color:#f6c445!important;box-shadow:0 0 0 1px #0008,0 0 6px #f6c44588!important}
.hbub i:nth-child(1){animation-duration:6.5s!important;animation-delay:-1s!important}
.hbub i:nth-child(2){animation-duration:5.2s!important;animation-delay:-3.4s!important}
.hbub i:nth-child(3){animation-duration:7s!important;animation-delay:-5s!important}
.hbub i:nth-child(4){animation-duration:5.8s!important;animation-delay:-.4s!important}
.hbub i:nth-child(5){animation-duration:6.2s!important;animation-delay:-2.6s!important}
.hbub i:nth-child(6){animation-duration:5s!important;animation-delay:-4.1s!important}
.hbub i:nth-child(7){animation-duration:6.8s!important;animation-delay:-1.8s!important}
.hbub i:nth-child(8){animation-duration:5.5s!important;animation-delay:-3s!important}
@keyframes hbl{0%{transform:translate3d(0,0,0) scale(.7);opacity:0}10%{opacity:.9}50%{transform:translate3d(10px,-300px,0) scale(1)}90%{opacity:.75}100%{transform:translate3d(-8px,-620px,0) scale(1.15);opacity:0}}
.hbub i{border-width:2.5px!important;box-shadow:0 0 0 1.5px #000a,inset 0 0 0 1px #0007,0 0 8px #fff8!important;background:radial-gradient(circle at 32% 30%,#ffffffcc 0 12%,#ffffff22 14%)!important}
.hbub i:nth-child(odd){width:30px!important;height:30px!important}.hbub i:nth-child(even){width:22px!important;height:22px!important}.hbub i:nth-child(4n){width:36px!important;height:36px!important}
@media (prefers-reduced-motion:reduce){.hbub{display:none!important}}

/* Hero fizz: tiny carbonation streams (preview only). */
.fizz{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:3;--fh:-440px}
.fizz i{position:absolute;bottom:-8px;border-radius:50%;background:#fffef2;box-shadow:0 0 0 .5px #0003;opacity:0;will-change:transform,opacity;animation:fz 5s linear infinite}
.fizz i:nth-child(3n){background:#fbe7a6}
@keyframes fz{0%{transform:translate(0,0);opacity:0}6%{opacity:.95}25%{transform:translate(3px,calc(var(--fh)*.25))}50%{transform:translate(-3px,calc(var(--fh)*.5))}70%{opacity:.85}75%{transform:translate(3px,calc(var(--fh)*.75))}100%{transform:translate(0,var(--fh));opacity:0}}
@media (max-width:700px){.fizz{--fh:-620px}.fizz i:nth-child(n+25){display:none}}
@media (prefers-reduced-motion:reduce){.fizz{display:none!important}}
