/* Purple prototype restored. Motion now spans the entire stage. */
.hero-scene{background:linear-gradient(120deg,#302d70,#46429e 38%,#5954b1 64%,#373283);background-size:180% 180%;animation:purpleTide 18s ease-in-out infinite alternate}
.hero-scene:after{content:'';position:absolute;inset:-35%;background:linear-gradient(105deg,transparent 35%,#c4b7ff10 43%,#b7a6ff18 48%,transparent 61%);transform:translateX(-25%) rotate(-9deg);animation:lightAcross 14s ease-in-out infinite alternate;pointer-events:none}
.current-lines{stroke:#d2ccff44;stroke-width:1.5;animation:connectionSwell 16s ease-in-out infinite alternate}
.current-lines .signal{stroke:#6ef4d4;stroke-width:3;stroke-dasharray:250 2100;animation-duration:9s;opacity:.85;filter:drop-shadow(0 0 8px #29d0ac55)}
.hero-plane{border-color:#ffffff20;background:linear-gradient(145deg,#ffffff0a,#ffffff02);animation:planeOrbit 18s ease-in-out infinite alternate}
.giant-word{animation:largeType 30s ease-in-out infinite alternate;-webkit-text-stroke:1px #ffffff17;bottom:-10%}
.logo-frame{animation:logoSuspension 8s ease-in-out infinite alternate;will-change:translate}
.logo-stage:before{animation:frameOrbit 17s ease-in-out infinite alternate}.logo-stage:after{animation:frameOrbit 23s ease-in-out infinite alternate-reverse}
.scene-routes{position:absolute;inset:-15%;width:130%;height:130%;pointer-events:none;z-index:0;fill:none;stroke:#46429e14;stroke-width:1;animation:routeCurrent 18s ease-in-out infinite alternate;overflow:visible}
.scene-routes .route-signal{stroke:var(--brand);stroke-width:2;stroke-dasharray:130 2400;animation:routeSignal 13s linear infinite;opacity:.35}
.voices-bg{background:linear-gradient(130deg,#f7f7fc,#eeedf6 55%,#f5faf8);background-size:200% 200%;animation:purpleTide 22s ease-in-out infinite alternate}
.voices-bg span{animation:backdropWords 26s ease-in-out infinite alternate}.voices-bg span:last-child{animation-direction:alternate-reverse;animation-delay:-8s}
.voices-sticky .scene-routes{animation-direction:alternate-reverse;opacity:.9;top:5%;height:100%}.voices h2{z-index:5}.voice-field{z-index:4}.voice{transition:box-shadow .4s,scale .4s}.voice:hover{scale:1.04;box-shadow:0 22px 45px #34317a18}
.flow-background{background:linear-gradient(145deg,#1e1c43,#292654 50%,#25234e);background-size:160% 160%;animation:purpleTide 21s ease-in-out infinite alternate}
.flow-band{height:40%;width:170%;left:-35%;background:linear-gradient(90deg,transparent,#5149b365 35%,#607ac133 57%,#10c8a91f 75%,transparent);animation:wideBand 16s ease-in-out infinite alternate}
.flow-sticky .scene-routes{stroke:#c3baff20;animation-duration:22s}.flow-sticky .route-signal{stroke:#7ce4d2;opacity:.55;animation-duration:11s}
.flow-background>span{animation:numberBreathe 16s ease-in-out infinite alternate}
.play-background{background:linear-gradient(130deg,#e8e6f6,#f9f9fd 50%,#e8f6f2);background-size:220% 220%;animation:purpleTide 18s ease-in-out infinite alternate}
.type-row{color:#46429e07;animation-duration:20s}.play-background svg{stroke:#46429e13;stroke-width:65;animation:playRiver 18s ease-in-out infinite alternate}
.play-heading,.scene-display{position:relative;z-index:3}.play>.scene-routes{z-index:0;stroke:#46429e10;animation-duration:16s}.play[data-state=join]>.scene-routes{animation-duration:10s}.play[data-state=connect] .route-signal{stroke-width:3;opacity:.6;animation-duration:7s}
.stage-sticky:before{content:'01　02　03　04';font-size:25vw;font-family:Georgia,serif;letter-spacing:-.07em;white-space:nowrap;color:transparent;-webkit-text-stroke:1px #46429e0a;position:absolute;left:0;bottom:5%;animation:stageType 36s linear infinite;pointer-events:none;z-index:0}
.stage-sticky .scene-routes{opacity:.45;top:-25%;height:150%;animation-duration:27s}.stage-sticky>h2,.slide-track{position:relative;z-index:3}.slide-track article{transition:box-shadow .4s}.slide-track article:hover{box-shadow:inset 0 -3px 0 #46429e55}.card-graphic{animation-duration:8s}
.end{background:linear-gradient(130deg,#393581,#46429e 50%,#514aa4);background-size:180% 180%;animation:purpleTide 18s ease-in-out infinite alternate}.end-backdrop>span{animation:largeType 26s ease-in-out infinite alternate}.end>.scene-routes{stroke:#c6beff22}.end .route-signal{stroke:#74e7cd;opacity:.6;stroke-width:3;animation-duration:10s}
@keyframes purpleTide{0%{background-position:0% 25%}100%{background-position:100% 85%}}
@keyframes lightAcross{to{transform:translateX(28%) rotate(5deg);opacity:.5}}
@keyframes connectionSwell{from{transform:translate(-4%,4%) scale(1.02) rotate(-6deg)}to{transform:translate(5%,-6%) scale(1.17) rotate(6deg)}}
@keyframes planeOrbit{from{transform:translate(-7%,9%) rotate(-36deg) scale(.95)}to{transform:translate(-18%,20%) rotate(-16deg) scale(1.18)}}
@keyframes largeType{from{translate:-5% 0}to{translate:12% -8%}}
@keyframes logoSuspension{from{translate:0 0;rotate:-1deg}to{translate:0 -22px;rotate:2deg}}
@keyframes frameOrbit{to{rotate:12deg;scale:1.04}}
@keyframes routeCurrent{from{transform:translate(-4%,3%) rotate(-7deg) scale(1.02)}to{transform:translate(4%,-4%) rotate(7deg) scale(1.12)}}
@keyframes routeSignal{to{stroke-dashoffset:-2530}}
@keyframes backdropWords{from{translate:-5% 0}to{translate:8% -4%}}
@keyframes wideBand{from{translate:-6% 12%;scale:1;opacity:.55}to{translate:8% -15%;scale:1.25;opacity:1}}
@keyframes numberBreathe{to{translate:-4% 8%;scale:1.08}}
@keyframes playRiver{from{transform:translate(-8%,8%) rotate(-8deg) scale(1)}to{transform:translate(7%,-8%) rotate(9deg) scale(1.2)}}
@keyframes stageType{to{translate:-40% 0}}
.reduced .scene-routes,.reduced .hero-scene:after,.reduced .stage-sticky:before{animation:none!important}
@media(max-width:650px){.hero-plane{width:140%;height:50%;right:-80%;top:15%}.scene-routes{inset:-10% -35%;width:170%;height:120%}.hero-scene:after{inset:-25% -75%}.giant-word{font-size:80vw;bottom:22%}.logo-frame{animation-duration:10s}.stage-sticky:before{font-size:60vw;bottom:15%}.current-lines{stroke-width:2}}
@media(prefers-reduced-motion:reduce){.scene-routes,.hero-scene:after,.stage-sticky:before{animation:none!important}}
