/* ---------- motion pass (10/31): more life on every page, same language as the membership page ---------- */
/* breathing orb on the hero, links to the membership page */
.vorb{position:absolute;z-index:4;right:9%;top:50%;width:260px;height:260px;margin-top:-130px;display:grid;place-items:center;text-decoration:none;will-change:transform}
.vorb .rings{position:absolute;inset:0;pointer-events:none}
.vorb .rings i{position:absolute;left:50%;top:50%;width:230px;height:230px;margin:-115px 0 0 -115px;border-radius:50%;border:1.5px solid rgba(227,182,118,.6);opacity:0;animation:bv-ring 3.4s ease-out infinite}
.vorb .rings i:nth-child(2){animation-delay:1.13s}.vorb .rings i:nth-child(3){animation-delay:2.26s}
@keyframes bv-ring{0%{transform:scale(.9);opacity:.75}100%{transform:scale(1.75);opacity:0}}
.vorb .orbb{position:relative;width:210px;height:210px;border-radius:50%;display:grid;place-items:center;align-content:center;gap:12px;background:radial-gradient(circle at 38% 28%,#FFF9EE 0,#F8E2BB 16%,#E9BE78 42%,#CF9449 70%,#9A6428 100%);box-shadow:inset 0 2px 0 rgba(255,255,255,.75),inset 0 -20px 44px rgba(120,70,20,.3),0 50px 90px -40px rgba(120,70,20,.8),0 0 80px 6px rgba(227,182,118,.5),0 0 200px 40px rgba(227,182,118,.2);animation:bv-breath 4.2s ease-in-out infinite;transition:transform .5s cubic-bezier(.16,1,.3,1)}
@keyframes bv-breath{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
.vorb:hover .orbb{transform:scale(1.07);animation-play-state:paused}
.vorb .hi{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 34% 26%,rgba(255,255,255,.9),rgba(255,255,255,0) 40%);pointer-events:none}
.vorb .wave{position:relative;display:flex;gap:6px;align-items:center;height:40px}
.vorb .wave i{display:block;width:6px;border-radius:3px;background:#3A2410;opacity:.85;animation:bv-wave 1.4s ease-in-out infinite;transform-origin:center}
.vorb .wave i:nth-child(1){height:14px}.vorb .wave i:nth-child(2){height:24px;animation-delay:-.2s}.vorb .wave i:nth-child(3){height:36px;animation-delay:-.4s}.vorb .wave i:nth-child(4){height:24px;animation-delay:-.6s}.vorb .wave i:nth-child(5){height:14px;animation-delay:-.8s}
@keyframes bv-wave{0%,100%{transform:scaleY(.45)}50%{transform:scaleY(1)}}
.vorb .olbl{position:relative;font:600 18px/1 var(--sans);color:#3A2410;text-shadow:0 1px 0 rgba(255,255,255,.45);white-space:nowrap}
.js .vorb{opacity:0;transform:translateY(16px) scale(.96);transition:opacity 1.1s ease .7s,transform 1.3s cubic-bezier(.16,1,.3,1) .7s}
.js.ready .vorb{opacity:1;transform:none}
.hero.short .vorb{width:220px;height:220px;margin-top:-110px}
.hero.short .vorb .orbb{width:180px;height:180px}
.hero.short .vorb .rings i{width:196px;height:196px;margin:-98px 0 0 -98px}
.hero.short .vorb .olbl{font-size:15px}
.hero.short .fc2{display:none}
/* live chip on the hero photo */
.hero .live{top:calc(68px + 20px);right:20px}
.js .hero .live{opacity:0;transform:translateY(-8px);transition:opacity .9s ease 1.3s,transform 1s cubic-bezier(.16,1,.3,1) 1.3s}
.js.ready .hero .live{opacity:1;transform:none}
/* rotating text inside floating cards and glass chips */
[data-rot] b,[data-rot] span{transition:opacity .35s ease,transform .45s cubic-bezier(.16,1,.3,1)}
[data-rot].out b,[data-rot].out span{opacity:0;transform:translateY(-6px)}
/* framed photos: wipe in from the bottom, then tilt with the cursor */
.js.gs .pic .frame{clip-path:inset(0 0 0 0);transform-style:preserve-3d}
.js.gs .pic:not(.in) .frame{clip-path:inset(0 0 100% 0)}
.js.gs .pic.in .frame{transition:clip-path 1.2s cubic-bezier(.2,.7,.2,1),transform .9s ease}
.pic .frame img{will-change:transform}
/* directory rows stagger + hover slide */
.dir .row{transition:background .3s,transform .4s cubic-bezier(.16,1,.3,1)}
.dir .row:hover{background:rgba(255,255,255,.55);transform:translateX(4px)}
.js.gs .dir .row.rv{filter:none;transform:translateY(14px)}
/* map card tilts like the calculator card */
.mapcard{will-change:transform;transform-style:preserve-3d}
/* tiles: live badge lifts on hover */
.tile .v .live{transition:transform .5s cubic-bezier(.16,1,.3,1)}
.tile:hover .v .live{transform:translateY(-3px)}
/* intro facts: numbers glow briefly on land */
.js.gs .facts.in b{animation:bv-fact 1.4s ease-out}
@keyframes bv-fact{0%{color:var(--gold-ink)}100%{color:var(--ink)}}
/* ticker label pulses softly */
.tk-l::after{content:"";width:6px;height:6px;margin-left:10px;border-radius:50%;background:#3E9B57;animation:bv-tkdot 2.2s ease-in-out infinite}
@keyframes bv-tkdot{0%,100%{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
/* kv numbers land one after another */
.js.gs .kv div{opacity:0;transform:translateY(14px);transition:opacity .9s ease,transform 1s cubic-bezier(.16,1,.3,1)}
.js.gs .kv.in div{opacity:1;transform:none}
.js.gs .kv.in div:nth-child(2){transition-delay:.14s}.js.gs .kv.in div:nth-child(3){transition-delay:.28s}
/* chips land in a cascade */
.js.gs .chips a{opacity:0;transform:translateY(10px)}
.js.gs .chips.in a{opacity:1;transform:none;transition:opacity .7s ease,transform .8s cubic-bezier(.16,1,.3,1)}
/* step numbers underline themselves as the row arrives */
.step .num{position:relative;display:inline-block}
.step .num::after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:1px;background:var(--gold-ink);transform:scaleX(0);transform-origin:left;transition:transform 1.1s cubic-bezier(.2,.7,.2,1) .3s}
.step.in .num::after{transform:none}
@media (max-width:1080px){.vorb{right:4%;top:auto;bottom:40px;margin:0;width:200px;height:200px}.vorb .orbb{width:170px;height:170px}.vorb .rings i{width:186px;height:186px;margin:-93px 0 0 -93px}.vorb .olbl{font-size:15px}.hero .live{top:calc(68px + 14px);right:14px}}
@media (max-width:640px){.vorb{left:50%;right:auto;bottom:28px;width:150px;height:150px;margin-left:-75px}.vorb .orbb{width:130px;height:130px;gap:7px}.vorb .rings i{width:144px;height:144px;margin:-72px 0 0 -72px}.vorb .olbl{font-size:13px}.vorb .wave{height:24px;gap:4px}.vorb .wave i{width:4px}.hero-copy{padding-bottom:200px!important}.hero .live{display:none}}
@media (prefers-reduced-motion:reduce){.vorb .orbb,.vorb .rings i,.vorb .wave i,.tk-l::after{animation:none}.js .vorb,.js .hero .live{opacity:1;transform:none}.js.gs .pic:not(.in) .frame{clip-path:none}}
