/* Side lighting washes over scene photography, while logos and controls stay clear. */
.festival-light{position:absolute;inset:-5%;z-index:60;pointer-events:none;mix-blend-mode:soft-light;opacity:.22;animation:festival-wash 7.6s ease-in-out infinite;animation-play-state:paused}
.light-left{background:radial-gradient(ellipse at 0 42%,#21e6ff 0%,#087bfc88 25%,transparent 61%)}
.light-right{background:radial-gradient(ellipse at 100% 55%,#fe3dac 0%,#8135ff88 25%,transparent 61%);animation-duration:9.2s;animation-delay:-3.7s}
.is-lighting .festival-light{animation-play-state:running}
@keyframes festival-wash{0%,100%{opacity:.13;filter:hue-rotate(0deg)}24%{opacity:.51;filter:hue-rotate(18deg)}48%{opacity:.2;filter:hue-rotate(70deg)}72%{opacity:.44;filter:hue-rotate(130deg)}}
.app-store-link{display:inline-block;line-height:0;border:0;padding:0;margin:16px 0;max-width:100%;border-radius:11px}
.app-store-link img{display:block;width:198px;max-width:100%;height:auto}
.app-store-link:focus-visible{outline:3px solid #e9fa39;outline-offset:8px}
.story-caption .app-store-link{margin:5px 0 0}
.story-caption .app-store-link img{width:204px}
.hero-actions{display:flex;flex-direction:column;align-items:center;gap:18px;margin-top:5px}
.hero-actions .app-store-link{margin:0 0 8px}
.hero-actions .app-store-link img{width:256px}
/* Match the official logo fill, with a solid high-contrast control and no glow. */
.enable-sound-button{appearance:none;position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:12px;min-width:256px;min-height:54px;margin:0;padding:15px 25px;border:1px solid #d7df22;border-radius:999px;background:#d7df22;color:#080b05;box-shadow:0 6px 18px #0006;cursor:pointer;font:900 16px/1 Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;text-shadow:none;filter:none;z-index:98;transform:translate3d(0,0,0) scale(1);transition:transform 2.4s cubic-bezier(.18,.7,.18,1),opacity 2.3s ease,background-color .2s ease,box-shadow .2s ease;animation:enable-sound-maraca 3.6s ease-in-out infinite}
@keyframes enable-sound-maraca{0%,32%,100%{transform:translate3d(0,0,0) rotate(0)}4%,12%,20%{transform:translate3d(-18px,-2px,0) rotate(-5deg)}8%,16%,24%{transform:translate3d(18px,2px,0) rotate(5deg)}28%{transform:translate3d(-7px,0,0) rotate(-2deg)}}
.enable-sound-button svg{width:24px;height:24px;overflow:visible}.enable-sound-button svg path{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.enable-sound-button svg path:first-child{fill:currentColor;stroke:none}
.enable-sound-button::before,.enable-sound-button::after{content:none;display:none;animation:none;filter:none;box-shadow:none}
.enable-sound-button:hover{background:#e5eb3b;box-shadow:0 8px 20px #0008;filter:none;animation-play-state:paused}
.enable-sound-button:focus-visible{outline:3px solid #fff;outline-offset:5px;animation-play-state:paused}
.enable-sound-button.is-flying{pointer-events:none;animation:none;transform:translate3d(var(--sound-fly-x,0),var(--sound-fly-y,0),0) scale(.22);opacity:0;filter:none}
.enable-sound-button.is-hidden{visibility:hidden;pointer-events:none}
.scroll-dock .sound-toggle.sound-arrived{animation:sound-arrived 1.25s ease-out}
@keyframes sound-arrived{0%{box-shadow:0 0 0 0 #9eefff;filter:brightness(1.8)}100%{box-shadow:0 0 0 18px transparent;filter:brightness(1)}}
.journey-finale{position:absolute;right:4.5%;top:39%;width:34%;display:flex;align-items:center;flex-direction:column;gap:28px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .45s;z-index:3}
.journey-finale::before{content:"";position:absolute;inset:-75px -50px;background:radial-gradient(ellipse,#060a17aa,transparent 71%);z-index:-1;pointer-events:none}
.journey-finale.is-visible{opacity:1;visibility:visible;pointer-events:auto}
.journey.has-heart-arrival .journey-finale{transition:none}
.finale-logo{display:block;width:100%;height:auto;filter:drop-shadow(0 0 14px #d7f82655)}
.journey[data-camera-scene="forest"] .finale-logo{filter:drop-shadow(2px 0 0 #000) drop-shadow(-2px 0 0 #000) drop-shadow(0 2px 0 #000) drop-shadow(0 -2px 0 #000) drop-shadow(1.5px 1.5px 0 #000) drop-shadow(-1.5px 1.5px 0 #000) drop-shadow(1.5px -1.5px 0 #000) drop-shadow(-1.5px -1.5px 0 #000) drop-shadow(0 0 14px #d7f82655)}
.journey-finale .app-store-link{margin:0;padding:15px}
.journey-finale .app-store-link img{width:228px}
.journey-bottom{bottom:18px;transition:opacity .35s,transform .35s,visibility 0s;z-index:69}
.journey-start-cue{appearance:none;position:relative;width:146px;height:96px;display:flex;align-items:flex-start;justify-content:center;padding:16px 0 0;border:0;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(180deg,#fbff9b 0%,#eaf541 18%,#d7df22 55%,#9fb50c 100%);color:#111508;cursor:pointer;font:800 18px/1 Arial,sans-serif;letter-spacing:.06em;text-shadow:0 1px 0 #ffffb8;filter:drop-shadow(0 3px 0 #74880a) drop-shadow(0 7px 8px rgba(0,0,0,.55));animation:journey-start-bob 1.4s ease-in-out infinite}
.journey-start-cue:hover{background:linear-gradient(180deg,#ffffbd 0%,#f4ff79 18%,#e3ef2a 55%,#afc916 100%)}
.journey-start-cue:focus-visible{outline:3px solid #fff;outline-offset:5px}
.journey.has-started .journey-bottom,.journey.is-arrived .journey-bottom{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(42px);transition-delay:0s,0s,.35s}
/* The photograph forms a downward point into the next section at the resting frame. */
.journey-rest-edge{--notch-half:73px;--bottom-clearance:19px;position:absolute;inset:auto 0 0;height:108px;z-index:70;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s}
.journey-rest-edge::before{content:"";position:absolute;inset:0;background:#080a0d;clip-path:polygon(0 0,calc(50% - var(--notch-half)) 0,50% calc(100% - var(--bottom-clearance)),calc(50% + var(--notch-half)) 0,100% 0,100% 100%,0 100%)}
.journey-rest-edge::after{content:"";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(to right,#d7f826 0 calc(50% - var(--notch-half)),transparent calc(50% - var(--notch-half)) calc(50% + var(--notch-half)),#d7f826 calc(50% + var(--notch-half)) 100%)}
.journey-rest-next{position:absolute;top:0;left:50%;width:calc(var(--notch-half) + var(--notch-half));height:100%;transform:translateX(-50%);pointer-events:auto;color:#d7f826;border:0}
.journey-rest-next svg{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke:currentColor;stroke-width:1.5}
.journey-rest-label{position:absolute;top:-24px;left:50%;width:146px;height:96px;display:flex;align-items:flex-start;justify-content:center;padding-top:16px;box-sizing:border-box;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(180deg,#fbff9b 0%,#eaf541 18%,#d7df22 55%,#9fb50c 100%);color:#111508;font:800 18px/1 Arial,sans-serif;letter-spacing:.06em;text-shadow:0 1px 0 #ffffb8;filter:drop-shadow(0 3px 0 #74880a) drop-shadow(0 7px 8px rgba(0,0,0,.55));animation:journey-scroll-bob 1.4s ease-in-out infinite;will-change:transform}
@keyframes journey-start-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}
@keyframes journey-scroll-bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,4px)}}
.journey-rest-next:hover{color:#f0ff65;filter:drop-shadow(0 0 6px #d7f826)}
.journey-rest-next:focus-visible{outline:2px solid #e9fa39;outline-offset:-3px;border-radius:4px}
.journey.is-arrived .journey-rest-edge{opacity:1;visibility:visible}
.journey[data-camera-scene="forest"].is-arrived .journey-progress{visibility:hidden}
@media(max-width:700px){.journey-bottom{bottom:16px}.journey-start-cue{width:116px;height:78px;padding-top:12px;font-size:15px}.journey-rest-edge{--notch-half:58px;--bottom-clearance:16px;height:88px}.journey-rest-label{top:-20px;width:116px;height:78px;padding-top:12px;font-size:15px}.journey[data-camera-scene="forest"] .journey-finale{bottom:70px}}
@media(prefers-reduced-motion:reduce){.journey-rest-edge,.journey-bottom{transition:none}.journey-rest-label{animation:none;transform:translateX(-50%)}.journey-start-cue{animation:none}}
.scroll-dock{position:fixed;left:0;top:50%;z-index:90;display:flex;flex-direction:column;align-items:center;gap:2px;width:48px;padding:6px 5px 6px 3px;transform:translateY(-50%);border:1px solid #d7f82688;border-left:0;border-radius:0 16px 16px 0;background:#090d0ee8;box-shadow:8px 0 28px #000a,0 0 22px #d7f82614;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.scroll-dock button{appearance:none;display:grid;place-items:center;width:38px;height:38px;padding:0;border:0;border-radius:10px;background:transparent;color:#f6f7f0;cursor:pointer;transition:background .18s,color .18s,transform .18s}
.scroll-dock button:first-child{margin-bottom:3px;border-bottom:1px solid #ffffff18;border-radius:10px 10px 5px 5px}
.scroll-dock button:hover{background:#d7f826;color:#101308;transform:translateX(2px)}
.scroll-dock button:focus-visible{outline:2px solid #d7f826;outline-offset:1px}
.scroll-dock button:disabled{opacity:.28;cursor:default;transform:none;background:transparent;color:#f6f7f0}
.scroll-dock svg{width:20px;height:20px;overflow:visible}.scroll-dock svg path{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.scroll-dock button:first-child svg path{fill:currentColor;stroke:none}
.scroll-dock .sound-toggle{height:48px;gap:2px;align-content:center;margin-top:3px;border-top:1px solid #ffffff25;border-radius:4px 4px 10px 10px}
.sound-toggle span{font-size:9px;font-weight:700;letter-spacing:.6px;line-height:1}
.sound-toggle .sound-waves{display:none}.sound-toggle[aria-pressed="true"] .sound-waves{display:block}.sound-toggle[aria-pressed="true"] .sound-muted{display:none}
.scroll-dock .sound-toggle[aria-pressed="true"]{color:#d7f826;background:#d7f82618}.scroll-dock .sound-toggle:hover{color:#101308;background:#d7f826}
.scroll-dock .sound-volume-control{display:flex;flex-direction:column;align-items:center;gap:3px;width:36px;padding:6px 0 3px;margin-top:1px;border-top:1px solid #ffffff25;color:#d7f826;cursor:pointer}
.sound-volume-control svg{width:15px;height:15px}
.sound-volume-control .volume-range{position:relative;display:block;width:28px;height:76px;--volume-level:100%}
.sound-volume-control .volume-track{position:absolute;left:50%;top:11px;bottom:11px;width:6px;transform:translateX(-50%);border-radius:99px;background:#ffffff55;pointer-events:none}
.sound-volume-control .volume-thumb{position:absolute;left:50%;top:calc(11px + (100% - 22px) * (1 - var(--volume-fraction,1)));width:14px;height:22px;transform:translate(-50%,-50%);border:1px solid #f5ff91;border-radius:6px;background:#d7f826;box-shadow:0 0 7px #d7f82699;pointer-events:none;box-sizing:border-box}
.sound-volume-control input[type="range"]{-webkit-appearance:none;appearance:none;position:absolute;inset:0;width:28px;height:76px;margin:0;padding:0;background:transparent;writing-mode:vertical-lr;direction:rtl;touch-action:none;cursor:pointer}
.sound-volume-control input[type="range"]::-webkit-slider-runnable-track{width:28px;background:transparent;border:0}
.sound-volume-control input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:28px;height:22px;margin:0;border:0;background:transparent;box-shadow:none}
.sound-volume-control input[type="range"]::-moz-range-track{width:28px;background:transparent;border:0}
.sound-volume-control input[type="range"]::-moz-range-thumb{width:28px;height:22px;border:0;background:transparent;box-shadow:none}
.sound-volume-control input[type="range"]:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:99px}
.download-break{text-align:center;padding-block:12px 42px}
.closing-download{display:flex;align-items:center;justify-content:space-between;gap:35px;padding-block:65px;border-top:1px solid #252a30}
.closing-download>img{width:min(510px,55%);height:auto}
.closing-download .app-store-link img{width:228px}
.release-page{padding-block:70px 110px;max-width:920px}
.release-page .release-logo{width:min(650px,100%);height:auto;margin-bottom:50px}
.release-page h1{font-size:clamp(38px,6vw,66px);line-height:1.06;letter-spacing:-.035em}
.release-page p{font-size:20px;max-width:700px;color:#bac1c5;line-height:1.65}
.release-page .button{margin-top:25px}
@media(max-width:1000px) and (min-width:701px){.journey-finale{right:3%;width:33%;top:53%}.journey-finale .app-store-link img{width:190px}}
@media(max-width:700px){.hero-actions{gap:14px;margin-top:2px}.hero-actions .app-store-link{margin-bottom:2px}.hero-actions .app-store-link img{width:224px}.enable-sound-button{min-width:224px;min-height:48px;padding:12px 21px;font-size:14px}.enable-sound-button svg{width:22px;height:22px}.journey-finale{top:auto;bottom:4%;right:6%;width:88%;gap:7px}.finale-logo{width:min(330px,100%)}.journey-finale::before{inset:-28px -35px;background:linear-gradient(transparent,#080a0dbb 40%,#080a0dcc)}.journey-finale .app-store-link{padding:9px}.journey-finale .app-store-link img{width:184px}.scroll-dock{top:auto;bottom:18px;transform:none;width:44px;padding:5px 4px 5px 2px;border-radius:0 14px 14px 0}.scroll-dock button{width:36px;height:36px}.closing-download{flex-direction:column;gap:20px;padding-block:45px}.closing-download>img{width:min(450px,100%)}.closing-download .app-store-link img{width:198px}.release-page{padding-block:45px 70px}}
@media(max-width:700px){.journey[data-camera-scene="forest"] .journey-finale{display:none!important}}
@media(prefers-reduced-motion:reduce){.festival-light{animation:none;opacity:.18;filter:none}.journey-finale{transition:none}.scroll-dock button{transition:none}}
@media(prefers-reduced-motion:reduce){.scroll-dock .sound-toggle.sound-arrived{animation:none}.enable-sound-button{animation:none;transition:none}}
@media(max-height:740px){.hero-actions{gap:10px}.hero-actions .app-store-link{margin-bottom:0}.hero-actions .app-store-link img{width:208px}.enable-sound-button{min-width:208px;min-height:44px;padding:10px 20px;font-size:13px}}
/* Mobile Safari uses smaller scene sources and one moving crowd frame to keep
   the immersive scroll within the browser's image and compositing budget. */
.camera-backdrop>picture,.camera-backdrop>picture>img{display:block;width:100%;height:100%}
.camera-backdrop>picture>img{object-fit:cover;object-position:50% 49%}
.depth-picture{position:relative;z-index:1;display:block;width:100%;height:auto}
.depth-object>.depth-picture>.photo-base{display:block;position:relative;z-index:1;width:100%;height:auto;max-width:none;border:0;border-radius:0}
.depth-dance-picture{position:absolute;inset:0;z-index:1;display:block;width:100%;height:100%;pointer-events:none}
@keyframes crowd-dance-mobile-sway{0%,100%{transform:translate3d(var(--dance-base-x),0,0)}50%{transform:translate3d(var(--dance-frame-x),-.45%,0)}}
@media(max-width:700px){.depth-dance-picture{display:none}.crowd-dance-base{animation-name:crowd-dance-mobile-sway;animation-timing-function:ease-in-out;opacity:1}}
@media(prefers-reduced-motion:reduce){.crowd-dance-base{animation:none;opacity:1;transform:none}}

/* This presenter keeps both alternating dance frames on narrow and touch screens.
   The generic mobile crowd rule must not leave its base image permanently on. */
@media (max-width:700px), (hover:none) and (pointer:coarse) {
  .depth-object[data-object="concert-host"] .crowd-dance-base { animation-name:crowd-dance-base-opacity,crowd-dance-sway; animation-timing-function:steps(1,end),ease-in-out; }
}
@media (prefers-reduced-motion:reduce) {
  .depth-object[data-object="concert-host"] .crowd-dance-base { animation:none!important;opacity:1!important;transform:none!important; }
  .concert-journey .depth-host[data-object="concert-host"] .depth-dance-picture { display:none!important; }
}

/* Stack the square app icon above the App Store badge at the reference proportions. */
.app-store-link{--store-badge-width:180px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;vertical-align:middle}
.app-store-link::before{content:"";display:block;flex:none;width:calc(var(--store-badge-width) * 1.25);height:calc(var(--store-badge-width) * 1.25);max-width:100%;background:url('/assets/glowstickgo-app-icon.webp?v=20261005-app-icon') center/contain no-repeat}
.app-store-link img,.story-caption .app-store-link img,.hero-actions .app-store-link img,.journey-finale .app-store-link img,.closing-download .app-store-link img{width:var(--store-badge-width)}
.journey-finale .app-store-link{--store-badge-width:156px;gap:19px}
@media(max-width:700px){
  .app-store-link{--store-badge-width:152px;gap:19px}
  .journey-finale .app-store-link{--store-badge-width:138px;gap:17px}
}
@media(max-width:360px){.app-store-link{--store-badge-width:130px;gap:16px}}
@media(max-height:740px){.hero-actions .app-store-link{--store-badge-width:146px;gap:17px}}

/* A full-width invitation closes the two-column lifestyle stories. */
.moment-customize-cta{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);align-items:center;gap:36px;padding:clamp(28px,4vw,54px);border:1px solid #d7f82666;border-radius:18px;background:radial-gradient(circle at 85% 10%,#d7f82616,transparent 45%),#11160f}
.moment-customize-copy .eyebrow{margin-bottom:15px}
.moment-customize-copy h3{font-size:clamp(31px,3.6vw,52px);line-height:1.07;margin:0 0 18px;max-width:780px}
.moment-customize-copy>p:last-child{max-width:690px;margin:0;color:#d1d8cb;font-size:clamp(16px,1.25vw,19px);line-height:1.55}
.moment-customize-actions{display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.moment-customize-actions .button{gap:18px}
.moment-customize-actions .platform{margin:0;color:#d1d8cb}
.moment-customize-actions .app-store-link{--store-badge-width:142px;gap:12px;margin-top:6px}
@media(max-width:700px){.moment-customize-cta{grid-template-columns:1fr;gap:24px;padding:27px 22px}.moment-customize-actions .button{font-size:14px;padding:14px 17px}.moment-customize-actions .app-store-link{--store-badge-width:130px;gap:10px}}
