/* Springbreakology v9 MOTION layer (2026-10-22). "The science of partying": lab-notebook reveals, kinetic hero, beaker bubbles.
   Rules: transform/opacity only (plus a few first-paint layout choices that never change after load), gated on html.sbm
   (set before first paint by a 1-line head script), off under html.sbm-rm / prefers-reduced-motion with a static fallback.
   Undo: drop the two enqueues + the gate line in functions.php. Nothing here touches schema, links or content. */
html.sbm{--m-ease:cubic-bezier(.22,1,.36,1);--m-spring:cubic-bezier(.34,1.56,.64,1)}
/* zero-CLS fonts: metric-matched local fallbacks so the Google Fonts swap cannot re-wrap a headline (measured in Edge:
   Anton = 95.4% of Impact's width; Figtree 400/600 is within 1% of Segoe UI). Before this, Anton arriving at ~1-2.5 s
   shrank hero copy by a line on some pages (0.02-0.17 CLS, pre-existing). Line-heights are explicit site-wide, so width is all that matters. */
@font-face{font-family:"Anton FB";src:local("Impact");size-adjust:95.4%;ascent-override:105%;descent-override:28%;line-gap-override:0%}
@font-face{font-family:"Figtree FB";src:local("Segoe UI");size-adjust:99.6%}
:root{--font-display:"Anton","Anton FB","Impact","Arial Narrow",sans-serif;--font-body:"Figtree","Figtree FB",system-ui,-apple-system,"Segoe UI",sans-serif}
.sbm-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- 1. HERO: kinetic headline, typed eyebrow, bubbles, slow video zoom, scroll cue, parallax ---------- */
html.sbm .hero .photo{transform:translate3d(0,calc(var(--sp,0) * 70px),0);will-change:transform}
html.sbm .hero .hcopy{transform:translate3d(0,calc(var(--sp,0) * -46px),0);opacity:calc(1 - var(--sp,0) * .95)}
/* the plain fade on h1 waits a beat longer so the footer script can still split it on heavy pages (LCP is the hero photo) */
html.sbm:not(.sbm-rm) .hero .hcopy>h1{animation-delay:.24s}
.hero h1.ks{animation:none;opacity:1}
.hero h1.ks .w{display:inline-block;white-space:nowrap}
.hero h1.ks .l{display:inline-block;opacity:0;transform:translateY(.5em) rotate(5deg);transform-origin:0 100%;animation:sbmL .72s var(--m-ease) both;animation-delay:calc(min(var(--i,0) * 22ms,700ms) + 90ms)}
.hero h1.ks em{display:inline-block;opacity:0;transform:translateY(.3em) scale(.86);animation:sbmL .9s var(--m-ease) both;animation-delay:calc(min(var(--i,0) * 22ms,700ms) + 90ms)}
@keyframes sbmL{to{opacity:1;transform:none}}
.hero .eyebrow.ty{animation:none;opacity:1}
.hero .eyebrow.ty .c{opacity:0;animation:sbmTy 1ms steps(1,end) both;animation-delay:calc(var(--i,0) * 34ms + 160ms)}
@keyframes sbmTy{to{opacity:1}}
.hero .eyebrow.ty::after{content:"";display:inline-block;width:.5em;height:.95em;margin-left:4px;vertical-align:-.1em;background:var(--teal);box-shadow:0 0 8px var(--teal);animation:sbmCaret .8s steps(1,end) 5 forwards;animation-delay:var(--cd,1s)}
@keyframes sbmCaret{0%,49%{opacity:1}50%,100%{opacity:0}}
/* bubble layer sits between .photo (and its gradient, z 2) and the copy (.sbo-wrap, z 2): same z, later in the DOM, so nothing outranks Total's fixed header */
.sbm-bub{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.sbm-bub i{position:absolute;bottom:-24px;left:var(--x,50%);width:var(--s,10px);height:var(--s,10px);border-radius:50%;border:1.5px solid rgba(37,232,224,.65);box-shadow:0 0 10px rgba(37,232,224,.4),inset 0 0 5px rgba(255,255,255,.18);opacity:0;animation:sbmBub var(--d,12s) linear infinite;animation-delay:var(--dl,0s);will-change:transform,opacity}
.sbm-bub i:nth-child(3n){border-color:rgba(255,79,176,.65);box-shadow:0 0 10px rgba(255,79,176,.4),inset 0 0 5px rgba(255,255,255,.18)}
.sbm-bub i:nth-child(4n){border-color:rgba(154,92,255,.7);box-shadow:0 0 10px rgba(154,92,255,.45),inset 0 0 5px rgba(255,255,255,.18)}
.sbm-bub i:nth-child(even){animation-name:sbmBub2}
@keyframes sbmBub{0%{transform:translate3d(0,0,0) scale(.5);opacity:0}8%{opacity:.9}55%{transform:translate3d(16px,-52vh,0) scale(1)}100%{transform:translate3d(-10px,-100vh,0) scale(1.15);opacity:0}}
@keyframes sbmBub2{0%{transform:translate3d(0,0,0) scale(.6);opacity:0}8%{opacity:.8}50%{transform:translate3d(-18px,-48vh,0) scale(1.05)}100%{transform:translate3d(8px,-100vh,0) scale(1.2);opacity:0}}
html.sbm:not(.sbm-rm) .hero .photo video.hv.on{animation:sbmVz 26s ease-in-out infinite alternate;will-change:transform}
@keyframes sbmVz{from{transform:scale(1)}to{transform:scale(1.09)}}
.sbm-cue{position:absolute;left:50%;bottom:14px;z-index:2;margin-left:-13px;width:26px;height:40px;border:2px solid rgba(255,255,255,.5);border-radius:14px;opacity:0;animation:sbmFade .8s var(--m-ease) 1.6s both;pointer-events:none}
.sbm-cue::before{content:"";position:absolute;left:50%;top:7px;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:var(--teal);box-shadow:0 0 8px var(--teal);animation:sbmCueDot 1.7s var(--m-ease) infinite}
@keyframes sbmFade{to{opacity:1}}
@keyframes sbmCueDot{0%{transform:translateY(0);opacity:1}70%{transform:translateY(14px);opacity:0}100%{transform:translateY(14px);opacity:0}}
html.sbm-scrolled .sbm-cue{opacity:0!important;transition:opacity .3s}
@media(max-width:767px){.sbm-cue{display:none}}

/* ---------- 2. SECTIONS: lab-notebook reveals ---------- */
html.sbm .sec.s-tone{background:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1.3px) 0 0/26px 26px,linear-gradient(180deg,var(--bg2),#0e0d28)}
html.sbm.rv-on .rv{transform:translate3d(0,24px,0) scale(.985);transition:opacity .7s var(--m-ease),transform .75s var(--m-ease)}
html.sbm.rv-on .rv.in{transform:none}
html.sbm .sec-head{position:relative;padding-bottom:18px}
html.sbm .sec-head::after{content:"";position:absolute;left:0;bottom:0;width:88px;height:2px;border-radius:2px;background:var(--grad);transform:scaleX(0);transform-origin:left;transition:transform .9s var(--m-ease) .25s}
html.sbm .sec-head.in::after{transform:scaleX(1)}
html.sbm .sec-head .eyebrow::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--teal);margin:0 9px 2px 0;vertical-align:middle;box-shadow:0 0 8px var(--teal);animation:sbmPulse 2.4s ease-in-out infinite}
@keyframes sbmPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.6}}
/* list items draw in after their list reveals (ticks, card tiers, entry rules, dates, chips) */
.ticks li:nth-child(1),.lvl li:nth-child(1),.crules>.en:nth-child(1),.dates li:nth-child(1),.chips li:nth-child(1),.facts-dl>div:nth-child(1),.nt-m li:nth-child(1){--i:0}
.ticks li:nth-child(2),.lvl li:nth-child(2),.crules>.en:nth-child(2),.dates li:nth-child(2),.chips li:nth-child(2),.facts-dl>div:nth-child(2),.nt-m li:nth-child(2){--i:1}
.ticks li:nth-child(3),.lvl li:nth-child(3),.crules>.en:nth-child(3),.dates li:nth-child(3),.chips li:nth-child(3),.facts-dl>div:nth-child(3),.nt-m li:nth-child(3){--i:2}
.ticks li:nth-child(4),.lvl li:nth-child(4),.dates li:nth-child(4),.chips li:nth-child(4),.facts-dl>div:nth-child(4){--i:3}
.ticks li:nth-child(5),.lvl li:nth-child(5),.dates li:nth-child(5),.chips li:nth-child(5),.facts-dl>div:nth-child(5){--i:4}
.ticks li:nth-child(6),.dates li:nth-child(6),.chips li:nth-child(6){--i:5}
.ticks li:nth-child(n+7),.dates li:nth-child(n+7),.chips li:nth-child(n+7){--i:6}
html.sbm:not(.sbm-rm).rv-on :is(.ticks.rv li,.lvl.rv li,.crules.rv>.en,.facts-dl.rv>div){opacity:0;transform:translate3d(-12px,0,0)}
html.sbm:not(.sbm-rm).rv-on :is(.crules.rv>.en){transform:translate3d(0,18px,0)}
html.sbm:not(.sbm-rm) :is(.ticks.rv.in li,.lvl.rv.in li,.crules.rv.in>.en,.facts-dl.rv.in>div){animation:sbmSlide .55s var(--m-ease) both;animation-delay:calc(var(--i,0) * 70ms + .12s)}
@keyframes sbmSlide{to{opacity:1;transform:none}}
html.sbm:not(.sbm-rm).rv-on :is(.wk.rv .chips li,.dates.rv li){opacity:0;transform:scale(.55)}
html.sbm:not(.sbm-rm) :is(.wk.rv.in .chips li,.dates.rv.in li){animation:sbmPop .55s var(--m-spring) both;animation-delay:calc(var(--i,0) * 45ms + .28s)}
@keyframes sbmPop{to{opacity:1;transform:none}}
html.sbm:not(.sbm-rm) .faq details[open]>p{animation:sbmUp .34s var(--m-ease) both}
@keyframes sbmUp{from{opacity:0;transform:translate3d(0,-6px,0)}to{opacity:1;transform:none}}
/* count-up: the box keeps its final width, so nothing reflows while it counts */
.sbm-num{display:inline-block;min-width:var(--w,auto);font-variant-numeric:tabular-nums}

/* ---------- 3. CARDS: cursor-lit edge, lift, micro tilt (fine pointer); tap squish + glow release (touch) ---------- */
html.sbm .wk,html.sbm .party,html.sbm .bc,html.sbm .vn,html.sbm .lvl,html.sbm .b{position:relative}
@media(hover:hover) and (pointer:fine){
  html.sbm .sbm-spot::before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;border-radius:inherit;padding:1.5px;opacity:0;transition:opacity .3s ease;
    background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),rgba(255,79,176,1),rgba(154,92,255,.7) 40%,rgba(37,232,224,0) 72%);
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
  html.sbm:not(.sbm-rm) .sbm-spot:hover::before{opacity:1}
  html.sbm:not(.sbm-rm) .sbm-tilt{transition:transform .35s var(--m-ease),border-color var(--t),box-shadow .35s var(--m-ease)}
  html.sbm:not(.sbm-rm) .sbm-tilt:hover{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-5px)}
  html.sbm:not(.sbm-rm) .sbm-tilt:active{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-2px) scale(.99)}
  html.sbm .pc{overflow:hidden}
  html.sbm .pc img{transition:transform .8s var(--m-ease)}
  html.sbm:not(.sbm-rm) .pc:hover img{transform:scale(1.06)}
}
/* party card: the art flips to a details back (venue, nights) on hover; JS builds .pflip/.pfb on fine pointers only */
html.sbm .party{perspective:1100px}
.pflip{position:relative;display:block;transform-style:preserve-3d;transition:transform .75s var(--m-ease)}
.pflip picture{-webkit-backface-visibility:hidden;backface-visibility:hidden}
.pfb{position:absolute;inset:0;transform:rotateY(180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;flex-direction:column;justify-content:center;gap:6px;padding:16px 20px;color:#fff;
  background:radial-gradient(80% 100% at 100% 0%,rgba(255,79,176,.4),transparent 60%),radial-gradient(70% 100% at 0% 100%,rgba(37,232,224,.3),transparent 60%),radial-gradient(rgba(255,255,255,.06) 1px,transparent 1.3px) 0 0/22px 22px,var(--card2)}
.pfb b{font-family:var(--font-display);font-weight:400;font-size:.82rem;letter-spacing:.16em;color:var(--teal);text-transform:uppercase}
.pfb span{font-weight:700;font-size:1rem;line-height:1.3}
.pfb em{font-style:normal;font-family:var(--font-display);letter-spacing:.06em;color:var(--pink);font-size:.95rem;margin-top:4px}
@media(hover:hover) and (pointer:fine){html.sbm:not(.sbm-rm) .party:hover .pflip,html.sbm:not(.sbm-rm) .party:focus-visible .pflip{transform:rotateY(180deg)}}
@media(pointer:coarse){
  html.sbm:not(.sbm-rm) :is(.wk,.party,.bc,.vn){transition:transform .18s var(--m-ease),border-color var(--t),box-shadow var(--t)}
  html.sbm:not(.sbm-rm) :is(.wk,.party,.bc,.vn):active{transform:scale(.985)}
  html.sbm:not(.sbm-rm) :is(.wk,.party,.bc,.vn)::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;border-radius:inherit;opacity:0;box-shadow:inset 0 0 0 1.5px rgba(255,79,176,.9),inset 0 0 26px rgba(255,79,176,.35)}
  html.sbm:not(.sbm-rm) :is(.wk,.party,.bc,.vn).is-tap::after{animation:sbmTap .5s ease-out both}
}
@keyframes sbmTap{0%{opacity:0}20%{opacity:1}100%{opacity:0}}

/* ---------- 4. PHOTOS: pausable marquee with parallax, carousels, polaroid toss-in ---------- */
.ptwrap{position:relative}
html.sbm .ptrain{transform:translate3d(0,calc(var(--sp,0) * 18px),0)}
html.sbm:not(.sbm-rm) .tr-ph:nth-child(odd){transform:translate3d(0,calc(var(--sp,0) * -12px),0)}
html.sbm:not(.sbm-rm) .tr-ph:nth-child(even){transform:translate3d(0,calc(var(--sp,0) * 12px),0)}
.ptrain.paused .tr{animation-play-state:paused}
.sbm-pt{position:absolute;left:16px;bottom:22px;z-index:4;width:44px;height:44px;border-radius:50%;border:1.5px solid rgba(255,255,255,.55);background:rgba(10,9,25,.7);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font:800 .8rem/1 var(--font-body);transition:background var(--t-fast),border-color var(--t-fast),transform .3s var(--m-spring)}
.sbm-pt:hover{background:rgba(10,9,25,.9);border-color:#fff}
.sbm-pt:active{transform:scale(.92)}
html.sbm-rm .sbm-pt{display:none}
.sbm-dots{display:none;justify-content:center;align-items:center;gap:7px;height:26px;margin:-26px 0 0}
.sbm-dots i{display:block;width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.28);transition:transform .25s var(--m-spring),background .25s ease}
.sbm-dots i.on{background:var(--teal);transform:scale(1.5);box-shadow:0 0 8px var(--teal)}
@media(max-width:1000px){html.sbm .pscroll{margin-bottom:26px;scrollbar-width:none}html.sbm .pscroll::-webkit-scrollbar{display:none}.pscroll+.sbm-dots{display:flex}}
@media(max-width:640px){
  html.sbm .strip{display:flex;gap:12px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin:0 calc(-1 * var(--gutter)) 26px;padding:0 var(--gutter) 4px;scroll-padding:0 var(--gutter);
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 var(--gutter),#000 calc(100% - var(--gutter)),transparent);mask-image:linear-gradient(90deg,transparent,#000 var(--gutter),#000 calc(100% - var(--gutter)),transparent)}
  html.sbm .strip::-webkit-scrollbar{display:none}
  html.sbm .strip .pc{flex:0 0 min(76%,320px);scroll-snap-align:start}
  .strip+.sbm-dots{display:flex}
}
/* photo dump (/photos/): polaroid frames that toss in and settle on a slight tilt */
html.sbm .gallery .pc{padding:8px 8px 26px;background:linear-gradient(170deg,#fbf9ff,#dcd6f5);border:0;border-radius:6px;box-shadow:0 18px 40px -18px rgba(0,0,0,.95)}
html.sbm .gallery .pc img{border-radius:3px}
.gallery .pc:nth-child(4n+1){--r:-7deg;--rr:-1.4deg}.gallery .pc:nth-child(4n+2){--r:5deg;--rr:1.1deg}.gallery .pc:nth-child(4n+3){--r:-4deg;--rr:.8deg}.gallery .pc:nth-child(4n){--r:6deg;--rr:-.9deg}
html.sbm:not(.sbm-rm).rv-on .gallery .rv{transform:translate3d(0,48px,0) rotate(var(--r,-5deg)) scale(.86);transition:opacity .6s var(--m-ease),transform .8s var(--m-spring)}
html.sbm:not(.sbm-rm).rv-on .gallery .rv.in{transform:rotate(var(--rr,0deg))}

/* ---------- 5. PARTY / WEEK PAGES: sticky section rail (desktop), drawing timeline ---------- */
/* the rail's hit area is only the dot column (labels are positioned outside the box) and it takes no pointer events until the page is scrolled */
.sbm-rail{position:fixed;right:12px;top:50%;z-index:90;transform:translateY(-50%);display:none;flex-direction:column;gap:6px;margin:0;padding:4px 0;list-style:none;opacity:0;pointer-events:none;transition:opacity .4s var(--m-ease)}
@media(min-width:1280px) and (hover:hover){.sbm-rail{display:flex}html.sbm-scrolled .sbm-rail{opacity:1;pointer-events:auto}}
.sbm-rail a{position:relative;display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;text-decoration:none!important;color:var(--muted)!important;font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.sbm-rail a span{position:absolute;right:100%;top:50%;margin-right:6px;opacity:0;transform:translate(8px,-50%);transition:opacity .25s,transform .3s var(--m-ease);background:rgba(10,9,25,.92);padding:5px 9px;border-radius:7px;border:1px solid var(--line);white-space:nowrap;pointer-events:none;line-height:1.2}
.sbm-rail a i{display:block;flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.3);transition:transform .35s var(--m-spring),background .3s,box-shadow .3s}
.sbm-rail a.on i{background:var(--teal);transform:scale(1.5);box-shadow:0 0 10px var(--teal)}
.sbm-rail a.on{color:var(--text)!important}
.sbm-rail:hover a span,.sbm-rail a:focus-visible span{opacity:1;transform:translate(0,-50%)}
html.sbm .nlist{position:relative;padding-left:26px}
html.sbm .nlist::before{content:"";position:absolute;left:5px;top:12px;bottom:12px;width:2px;border-radius:2px;background:rgba(255,255,255,.1)}
html.sbm .nlist::after{content:"";position:absolute;left:5px;top:12px;bottom:12px;width:2px;border-radius:2px;background:var(--grad);transform:scaleY(var(--draw,0));transform-origin:top;box-shadow:0 0 10px rgba(255,79,176,.5)}
html.sbm .nt::before{content:"";position:absolute;left:-26px;top:26px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid rgba(255,255,255,.28);transform:scale(.8);transition:transform .45s var(--m-spring),border-color .3s,background .3s,box-shadow .3s;z-index:2}
html.sbm .nt.lit::before{border-color:var(--teal);background:var(--teal);box-shadow:0 0 14px var(--teal);transform:scale(1)}
html.sbm:not(.sbm-rm) .nt.rv.in .nt-m li{animation:sbmSlide .5s var(--m-ease) both;animation-delay:calc(var(--i,0) * 70ms + .2s)}
html.sbm:not(.sbm-rm).rv-on .nt.rv .nt-m li{opacity:0;transform:translate3d(-10px,0,0)}
html.sbm-rm .nlist::after{transform:none}

/* ---------- 6. BUTTONS + NAV: sheen, press squish, gradient underline, compact sticky header, progress, back-to-top ---------- */
html.sbm .btn,html.sbm body.sbo a.btn,html.sbm button.share,html.sbm .filters button,html.sbm .catnav a,html.sbm body.sbo #site-navigation li.sbo-cta-item>a{position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}
html.sbm:not(.sbm-rm) .btn,html.sbm:not(.sbm-rm) body.sbo a.btn,html.sbm:not(.sbm-rm) button.share{transition:transform .45s var(--m-spring),box-shadow var(--t) var(--ease),background-color var(--t),color var(--t),border-color var(--t)}
html.sbm:not(.sbm-rm) .btn:active,html.sbm:not(.sbm-rm) body.sbo a.btn:active,html.sbm:not(.sbm-rm) button.share:active{transform:translateY(0) scale(.94);transition-duration:.1s}
html.sbm:not(.sbm-rm) .filters button:active,html.sbm:not(.sbm-rm) .catnav a:active{transform:scale(.94)}
.sbm-rip{position:absolute;border-radius:50%;pointer-events:none;background:rgba(255,255,255,.65);transform:scale(0);z-index:1}
@media(hover:hover) and (pointer:fine){
  html.sbm:not(.sbm-rm) :is(.btn,button.share)::after{content:"";position:absolute;top:-40%;bottom:-40%;left:0;width:40%;z-index:1;pointer-events:none;opacity:0;background:linear-gradient(105deg,rgba(255,255,255,0) 15%,rgba(255,255,255,.5) 50%,rgba(255,255,255,0) 85%);transform:translateX(-180%) skewX(-18deg)}
  html.sbm:not(.sbm-rm) :is(.btn,button.share):hover::after{animation:sbmSheen .8s var(--m-ease) forwards}
}
@keyframes sbmSheen{0%{transform:translateX(-180%) skewX(-18deg);opacity:0}12%{opacity:1}100%{transform:translateX(360%) skewX(-18deg);opacity:0}}
/* nav CTA: one quiet sheen every 7 s */
html.sbm:not(.sbm-rm) body.sbo #site-navigation li.sbo-cta-item>a::after{content:"";position:absolute;top:-40%;bottom:-40%;left:0;width:40%;pointer-events:none;background:linear-gradient(105deg,rgba(255,255,255,0) 15%,rgba(255,255,255,.45) 50%,rgba(255,255,255,0) 85%);transform:translateX(-180%) skewX(-18deg);animation:sbmSheenLoop 7s linear 3s infinite}
@keyframes sbmSheenLoop{0%{transform:translateX(-180%) skewX(-18deg)}14%{transform:translateX(360%) skewX(-18deg)}100%{transform:translateX(360%) skewX(-18deg)}}
html.sbm body.sbo #site-navigation .link-inner::after{background:var(--grad);transform-origin:right;transition:transform .34s var(--m-ease)}
html.sbm body.sbo #site-navigation a:hover .link-inner::after,html.sbm body.sbo #site-navigation a:focus-visible .link-inner::after,html.sbm body.sbo #site-navigation .current-menu-item>a .link-inner::after,html.sbm body.sbo #site-navigation .current_page_parent>a .link-inner::after{transform:scaleX(1);transform-origin:left}
/* compact sticky header: Total fixes #site-header inside a wrapper that keeps its height (no layout shift) */
body.sbo #site-header-sticky-wrapper.wpex-can-sticky:not(.not-sticky) #site-header{background:rgba(10,9,25,.93)!important;box-shadow:0 12px 40px -22px rgba(0,0,0,.95)}
body.sbo #site-header-sticky-wrapper.wpex-can-sticky:not(.not-sticky) #site-header-inner{padding-top:6px!important;padding-bottom:6px!important}
body.sbo #site-header-sticky-wrapper.wpex-can-sticky:not(.not-sticky) #site-logo img.sbo-wm{height:36px}
@media(max-width:640px){body.sbo #site-header-sticky-wrapper.wpex-can-sticky:not(.not-sticky) #site-logo img.sbo-wm{height:32px}}
/* mobile menu (sidr): items cascade in */
html.sbm:not(.sbm-rm) body.mobile-menu-is-open .sidr-mobile-nav-menu__item{animation:sbmMenu .45s var(--m-ease) both;animation-delay:calc(90ms + var(--i,0) * 45ms)}
.sidr-mobile-nav-menu__item:nth-child(2){--i:1}.sidr-mobile-nav-menu__item:nth-child(3){--i:2}.sidr-mobile-nav-menu__item:nth-child(4){--i:3}.sidr-mobile-nav-menu__item:nth-child(5){--i:4}.sidr-mobile-nav-menu__item:nth-child(6){--i:5}.sidr-mobile-nav-menu__item:nth-child(7){--i:6}.sidr-mobile-nav-menu__item:nth-child(8){--i:7}.sidr-mobile-nav-menu__item:nth-child(n+9){--i:8}
@keyframes sbmMenu{from{opacity:0;transform:translate3d(0,14px,0)}to{opacity:1;transform:none}}
/* reading progress (posts): glow */
html.sbm .rp i{box-shadow:0 0 12px rgba(255,79,176,.8)}
/* back-to-top chip */
html.sbm body.sbo #site-scroll-top{width:auto;height:44px;padding:0 16px 0 14px;border-radius:99px;gap:8px;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.08em;font-size:.82rem;transform:translateY(16px) scale(.9);transition:opacity .35s var(--m-ease),transform .45s var(--m-spring),background var(--t-fast),color var(--t-fast),visibility .35s}
html.sbm body.sbo #site-scroll-top.show{transform:none}
html.sbm body.sbo #site-scroll-top::after{content:"Top"}
html.sbm body.sbo #site-scroll-top .wpex-icon svg{width:13px;height:13px}

/* ---------- 7. PAGE TRANSITIONS: cross-document View Transitions where supported (same-origin only) ---------- */
@view-transition{navigation:auto}
::view-transition-old(root){animation:sbmVtOut .16s ease-out both}
::view-transition-new(root){animation:sbmVtIn .34s cubic-bezier(.22,1,.36,1) both}
@keyframes sbmVtOut{to{opacity:0}}
@keyframes sbmVtIn{from{opacity:0;transform:translateY(10px)}}
/* no view-transition-name on the header: naming Total's sticky wrapper makes it a stacking context, which traps the fixed
   header's z-index and lets hero copy paint over the nav. The root cross-fade carries the header unchanged anyway. */

/* ---------- 8. REDUCED MOTION / PRINT: everything visible, nothing moves ---------- */
@media(prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  .sbm-bub,.sbm-cue,.sbm-pt{display:none!important}
  .hero h1.ks .l,.hero h1.ks em,.hero .eyebrow.ty .c,.ticks li,.lvl li,.crules>.en,.dates li,.chips li,.facts-dl>div,.nt-m li,.gallery .rv{opacity:1!important;transform:none!important;animation:none!important}
  .hero .eyebrow.ty::after,.sec-head .eyebrow::before,#site-navigation li.sbo-cta-item>a::after,.hero .photo video.hv.on{animation:none!important}
  html.sbm .hero .photo,html.sbm .hero .hcopy,html.sbm .ptrain,.tr-ph{transform:none!important;opacity:1!important}
  html.sbm .nlist::after{transform:none!important}
  html.sbm .sec-head::after{transform:scaleX(1)!important}
  html.sbm.rv-on .rv{transform:none!important;opacity:1!important}
  .pflip{transition:none!important}
}
@media print{
  .sbm-bub,.sbm-cue,.sbm-pt,.sbm-rail,.sbm-dots{display:none!important}
  .hero h1.ks .l,.hero h1.ks em,.hero .eyebrow.ty .c,.ticks li,.lvl li,.crules>.en,.dates li,.chips li,.facts-dl>div,.nt-m li,.gallery .rv{opacity:1!important;transform:none!important;animation:none!important}
  html.sbm .sec-head::after{transform:scaleX(1)}
}
