@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/font-0.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/font-1.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(assets/font-2.ttf) format('truetype');
}
@font-face {
  font-family: 'Shrikhand';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/font-3.ttf) format('truetype');
}

:root{--purple:#53216b;--cream:#f4e8cb;--orange:#ed824a;--ink:#321c3c;--pink:#d5a4bb}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--cream);color:var(--ink);font-family:'DM Sans',sans-serif}body:after{content:'';position:fixed;inset:0;pointer-events:none;z-index:20;opacity:.065;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' filter='url(%23n)' opacity='.7' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:3px solid #ef8346;outline-offset:5px}header{height:94px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;border-bottom:1px solid #53216b44;background:var(--cream);position:relative;z-index:5}.brand{font-family:Shrikhand,Georgia,serif;font-size:28px;line-height:1.1}.brand span{display:block;font:9px 'DM Sans',sans-serif;letter-spacing:2px;margin-top:7px}nav{display:flex;gap:36px;font-size:13px;text-transform:uppercase;letter-spacing:1px}nav a:hover{color:#aa4c76}#motion{border:1px solid var(--purple);border-radius:50%;height:35px;width:35px;background:none}.hero{overflow:hidden}.sky{position:relative;min-height:820px;height:calc(100svh - 94px);max-height:1100px;background:linear-gradient(#d3a8c0 0%,#e1b4be 48%,#eeaf78 85%);overflow:hidden}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:700}.sky>.eyebrow{position:absolute;top:35px;left:5%;z-index:2}.sun{position:absolute;width:460px;height:460px;border-radius:50%;left:50%;top:14%;transform:translateX(-50%);background:repeating-linear-gradient(0deg,#ed9758 0 19px,#f3c185 19px 27px);opacity:.7}.logo-wrap{position:absolute;left:50%;top:3%;width:min(650px,64vw);transform:translateX(-50%);z-index:3;will-change:translate}.logo{width:100%;display:block;filter:drop-shadow(0 15px 2px #552c6630)}.logo-wrap p{text-align:center;margin:-90px 0 0;position:relative;letter-spacing:5px;font-size:12px;font-weight:700}.disco{width:155px;height:155px;left:10%;top:18%;border-radius:50%;background:radial-gradient(circle at 30% 22%,#fff8dd,transparent 40%),repeating-linear-gradient(0deg,transparent 0 12px,#55335d90 12px 14px),repeating-linear-gradient(90deg,#b6a2b0 0 12px,#765780 12px 14px);box-shadow:inset -20px -15px 25px #39164b95,8px 12px 0 #51255c20;position:absolute;animation:float 6s ease-in-out infinite;transform:rotate(-15deg)}.disco:before{content:'';height:180px;width:1px;position:absolute;background:#5c3b66;bottom:100%;left:50%}.disco:after{content:'✦';position:absolute;left:20px;top:3px;color:white;font-size:68px}.spark{position:absolute;color:var(--cream);z-index:4;animation:twinkle 3s ease-in-out infinite}.s1{top:15%;right:21%;font-size:80px}.s2{top:47%;left:25%;font-size:55px;animation-delay:1s}.s3{top:55%;right:6%;font-size:45px;animation-delay:2s}.record{position:absolute;right:5%;top:31%;width:225px;height:225px;border-radius:50%;background:repeating-radial-gradient(#201b28 0 2px,#403445 3px 4px);box-shadow:8px 15px 0 #48224d25;display:grid;place-items:center;animation:spin 24s linear infinite}.record div{background:var(--orange);width:92px;height:92px;border-radius:50%;display:flex;flex-direction:column;justify-content:center;text-align:center;font-family:Shrikhand;font-size:14px;line-height:1.2}.record span{font:8px 'DM Sans';margin-top:7px}.ticket{position:absolute;left:5%;top:49%;background:var(--cream);padding:22px 25px;transform:rotate(-12deg);font-size:10px;letter-spacing:2px;border:1px dashed var(--purple);z-index:3;box-shadow:5px 7px 0 #52236820}.ticket strong{display:block;font-family:Shrikhand;font-size:19px;letter-spacing:0;margin:9px 0}.ticket span{font-size:8px}.hills{position:absolute;width:130%;left:-15%;height:340px;border-radius:50% 50% 0 0;bottom:40px;transform:rotate(-7deg);background:#977088}.hills.front{background:#6b456b;bottom:-40px;transform:rotate(8deg);height:295px}.train{position:absolute;display:flex;gap:9px;bottom:222px;left:26%;z-index:2;transform:rotate(-5deg);animation:ride 5s ease-in-out infinite}.car,.engine{position:relative;width:180px;height:67px;background:#e4aa69;border-radius:25px 15px 4px 4px;border:3px solid #45224e;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:inset 0 -14px #b16862}.car:before,.engine:before{content:'';position:absolute;bottom:-15px;left:20px;width:22px;height:22px;border-radius:50%;background:#342238;box-shadow:112px 0 #342238}.car i,.engine i{width:27px;height:23px;background:#60445f;border-radius:10px 10px 2px 2px}.engine{width:150px;border-radius:30px 60px 4px 4px}.engine:before{box-shadow:82px 0 #342238}.engine b{font-size:10px}.rails{position:absolute;bottom:208px;left:-10%;width:120%;height:9px;background:#3e2548;transform:rotate(-5deg);border-top:2px solid #d6af9e}.hero-bottom{position:absolute;bottom:35px;left:5%;right:5%;z-index:4;display:flex;justify-content:space-between;align-items:end;color:var(--cream)}h1,h2,h3{font-weight:400;margin:0;line-height:1.02;letter-spacing:-2px}h1{font-size:clamp(48px,6.5vw,100px);font-weight:700}em{font-family:Shrikhand,Georgia,serif;font-weight:400}h1 em{font-size:.87em}h2{font-size:clamp(44px,6vw,90px);font-weight:700}.hero-bottom p{font-size:13px;line-height:1.6}.round-link{display:grid;place-items:center;border:1px solid #f4e8cb;border-radius:50%;width:70px;height:70px;font-size:30px;transition:.3s}.round-link:hover{background:var(--cream);color:var(--purple);transform:translateY(5px)}.marquee{padding:18px 0;overflow:hidden;background:var(--orange);border-block:1px solid var(--ink);font-weight:700;font-size:17px}.marquee div{width:max-content;animation:marquee 30s linear infinite}section.intro{padding:100px 8% 85px}.intro h2{margin-top:28px}.intro-bottom{display:flex;align-items:center;justify-content:space-between;gap:50px;margin-top:45px}.intro-bottom p{max-width:430px;font-size:17px;line-height:1.8}.flower{font-size:190px;color:var(--orange);line-height:1;animation:spin 40s linear infinite}.stamp{font-size:25px;line-height:1.1;border:2px solid;border-radius:50%;padding:35px 25px;transform:rotate(14deg);font-weight:700}.sound{background:var(--purple);color:var(--cream);padding:90px 8%}.sound-head{display:grid;grid-template-columns:1fr 1fr;gap:25px}.sound-head>.eyebrow{grid-column:1/-1}.sound-head p{align-self:end;justify-self:end;font-size:15px;line-height:1.7}.selector{display:flex;border-block:1px solid #f4e8cb55;margin-top:50px}.selector button{flex:1;background:none;color:var(--cream);padding:24px 12px;text-align:left;border:0;border-right:1px solid #f4e8cb55;font-family:Shrikhand;font-size:29px;transition:.3s}.selector button:last-child{border:0}.selector button span{float:right;font:10px 'DM Sans'}.selector button[aria-selected=true]{background:var(--orange);color:var(--ink)}.sound-panel{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:10%;padding-top:70px}.sleeve{aspect-ratio:1;background:#ed824a;position:relative;padding:26px;overflow:hidden;transform:rotate(-5deg);box-shadow:15px 15px #321c3c}.sleeve>span{font-family:Shrikhand;font-size:clamp(45px,5vw,80px);position:relative;z-index:2;color:var(--ink)}.sleeve small{position:absolute;bottom:20px;left:25px;font-size:8px;letter-spacing:2px;color:var(--ink)}.sleeve-lines{position:absolute;inset:0;background:repeating-radial-gradient(ellipse at 0% 100%,transparent 0 25px,#f5e5b9 26px 48px,transparent 49px 73px,#9b577c 74px 96px);opacity:.8}.mini-record{width:68%;aspect-ratio:1;border-radius:50%;position:absolute;top:28%;right:-5%;display:grid;place-items:center;background:repeating-radial-gradient(#201b28 0 2px,#403445 3px 4px);animation:spin 20s linear infinite}.mini-record i{font-style:normal;background:var(--pink);border-radius:50%;padding:20px;font-family:Shrikhand}.sound-copy h3{font-family:Shrikhand;font-size:clamp(35px,4vw,58px);margin:25px 0}.sound-copy p{font-size:17px;line-height:1.8;max-width:370px}.note{font-size:11px;opacity:.65}.next{padding:100px 8%;background:#d3a5bc}.next h2{margin-top:28px}.next-bottom{display:flex;gap:10%;justify-content:space-between;align-items:center;margin-top:50px}.next-bottom>p{max-width:330px;line-height:1.8;font-size:17px}.boarding{width:420px;max-width:100%;padding:30px;background:var(--cream);transform:rotate(5deg);border-radius:8px;box-shadow:9px 10px 0 #53216b22}.boarding>span{font-size:9px;letter-spacing:3px}.boarding>strong{font-family:Shrikhand;display:block;font-size:32px;margin:15px 0}.boarding>div:not(.barcode){display:flex;justify-content:space-between;font-size:8px;line-height:2}.boarding b{font-size:12px}.boarding p{font-size:11px;border-top:1px dashed;padding-top:15px}.barcode{height:30px;background:repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 4px,var(--ink) 4px 5px,transparent 5px 9px)}.back{display:inline-block;margin-top:70px;border-bottom:1px solid;padding-bottom:8px}footer{padding:35px 5%;background:var(--ink);color:var(--cream);display:flex;justify-content:space-between;align-items:center;font-size:10px}footer>span:first-child{font-family:Shrikhand;font-size:25px}footer p{letter-spacing:2px}.reveal{transition:opacity .8s,translate .8s}.js .reveal:not(.visible){opacity:0;translate:0 35px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float{50%{translate:0 -15px}}@keyframes twinkle{50%{opacity:.4;scale:.8}}@keyframes ride{50%{translate:12px -3px}}@keyframes marquee{to{transform:translateX(-50%)}}.paused *, .paused *:before,.paused *:after{animation-play-state:paused!important}.paused{scroll-behavior:auto}.paused .reveal{transition:none}.paused .reveal:not(.visible){opacity:1;translate:0}
@media(max-width:700px){header{height:80px;padding-inline:5%}.brand{font-size:22px}.brand span{font-size:6px;letter-spacing:1px}nav{gap:14px;font-size:9px}nav a:last-child{display:none}#motion{width:29px;height:29px}.sky{height:760px;min-height:0}.logo-wrap{width:92vw;top:12%}.logo-wrap p{margin:-65px 0 0;font-size:8px;letter-spacing:3px}.sun{width:330px;height:330px;top:22%}.disco{width:88px;height:88px;left:6%;top:9%;background-size:auto}.disco:after{font-size:40px}.record{width:130px;height:130px;right:-25px;top:51%}.record div{width:57px;height:57px;font-size:10px}.record span{font-size:5px}.ticket{top:53%;left:4%;padding:12px;font-size:8px}.ticket strong{font-size:14px}.ticket span{font-size:6px}.train{left:17%;scale:.68;transform-origin:left;bottom:205px}.rails{bottom:190px}.hills{bottom:50px;height:260px}.hills.front{bottom:-15px;height:230px}.hero-bottom{bottom:28px;align-items:end}.hero-bottom h1{font-size:44px;letter-spacing:-2px}.hero-bottom p{display:none}.round-link{width:45px;height:45px;font-size:24px}.s1{right:9%;top:17%;font-size:50px}.s2{top:49%;left:43%;font-size:35px}.s3{display:none}.intro-bottom{gap:20px;flex-wrap:wrap}.flower{font-size:100px}.intro-bottom p{order:3;max-width:none;font-size:15px}.stamp{padding:22px;font-size:17px}section.intro,.sound,.next{padding:65px 6%}h2{font-size:42px;letter-spacing:-1.5px}.sound-head{display:block}.sound-head h2{margin-top:25px}.sound-head p{font-size:12px}.selector{margin-top:30px}.selector button{font-size:17px;padding:18px 8px}.selector button span{display:none}.sound-panel{grid-template-columns:1fr;gap:45px;padding-top:45px}.sleeve{max-width:340px;width:90%;margin:auto}.sleeve>span{font-size:55px}.sound-copy h3{font-size:40px}.sound-copy p{font-size:15px}.next-bottom{flex-direction:column;align-items:start;gap:30px}.boarding{width:95%;padding:23px}.boarding>strong{font-size:28px}footer{flex-wrap:wrap;gap:20px}footer p{width:100%;order:3;font-size:8px;margin:0}.marquee{font-size:12px;padding:14px 0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal:not(.visible){opacity:1;translate:0}}
.logo-wrap p{position:absolute;top:77%;left:0;right:0;margin:0;color:var(--cream);text-shadow:0 1px 5px #321c3c}
@media(max-width:700px){.logo-wrap p{margin:0;top:79%}}
/* Photographic collage, fine halftone hills and passing steam engine. */
.hills:after{content:'';position:absolute;inset:0;border-radius:inherit;background-image:radial-gradient(circle,#f4e8cb 1.1px,transparent 1.4px);background-size:7px 7px;opacity:.13;pointer-events:none}.hills.front:after{opacity:.1;background-size:6px 6px}
.disco{width:180px;height:180px;background:none;box-shadow:none;border-radius:0;transform:rotate(0deg);animation:mirror-sway 5s ease-in-out infinite;transform-origin:50% 0;filter:drop-shadow(8px 12px 10px #321c3c33)}.disco img{display:block;width:100%;height:100%;object-fit:contain;animation:mirror-turn 9s ease-in-out infinite}.disco:before{height:240px;bottom:98%}.disco:after{content:none}.ball-glint{position:absolute;left:26%;top:30%;width:15px;height:15px;background:#fff9e9;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);animation:glint 2.6s ease-in-out infinite;filter:drop-shadow(0 0 7px white)}
.real-vinyl{width:310px;height:auto;aspect-ratio:3/2;right:2%;top:33%;background:none;border-radius:0;box-shadow:none;display:block;animation:album-float 7s ease-in-out infinite;transform:rotate(10deg);filter:drop-shadow(8px 12px 10px #321c3c30)}.real-vinyl img{width:100%;display:block;border-radius:3px}
.train-track{position:absolute;left:0;right:0;bottom:208px;height:0;z-index:2;transform:rotate(-5deg)}.train-track .train{position:absolute;left:0;bottom:0;width:clamp(370px,43vw,660px);display:block;transform:none;scale:1;animation:cross-scene 17s linear infinite;will-change:transform}.train>img{display:block;width:100%;filter:drop-shadow(0 5px 3px #321c3c33)}.smoke{position:absolute;left:85.6%;top:6%;height:1px;width:1px}.smoke i{position:absolute;width:24px;height:24px;left:-12px;bottom:0;border-radius:50%;background:radial-gradient(circle at 40% 40%,#f4e8cbb0,#d7c6d064 48%,transparent 72%);filter:blur(3px);opacity:0;animation:chimney-smoke 3.6s linear infinite}.smoke i:nth-child(2){animation-delay:-.6s}.smoke i:nth-child(3){animation-delay:-1.2s}.smoke i:nth-child(4){animation-delay:-1.8s}.smoke i:nth-child(5){animation-delay:-2.4s}.smoke i:nth-child(6){animation-delay:-3s}
@keyframes cross-scene{from{transform:translateX(-110%)}to{transform:translateX(110vw)}}
@keyframes chimney-smoke{0%{opacity:0;transform:translate(0,0) scale(.5)}15%{opacity:.65}65%{opacity:.28}100%{opacity:0;transform:translate(-135px,-170px) scale(4.5)}}
@keyframes mirror-sway{0%,100%{transform:rotate(-7deg) translateY(0)}50%{transform:rotate(7deg) translateY(-9px)}}
@keyframes mirror-turn{0%,100%{transform:scaleX(1);filter:brightness(1)}50%{transform:scaleX(.93);filter:brightness(1.18)}}
@keyframes glint{0%,100%{opacity:.2;scale:.65}45%{opacity:1;scale:1.7}}
@keyframes album-float{0%,100%{transform:rotate(9deg) translateY(0)}50%{transform:rotate(13deg) translateY(-12px)}}
@media(max-width:700px){.disco{width:108px;height:108px;left:4%;top:8%}.real-vinyl{width:180px;height:auto;right:-20px;top:50%}.train-track{bottom:190px}.train-track .train{width:350px;left:0;bottom:0;scale:1;animation-duration:13s}.smoke i{width:17px;height:17px}.ticket{z-index:3}}
.paused .train-track .train{animation:none;transform:translateX(30vw)}
@media(prefers-reduced-motion:reduce){.train-track .train{transform:translateX(25vw)}.smoke{display:none}}
/* Interactive collage destinations and tactile ticket. */
.disco{width:245px;height:245px;left:6%;top:15%;display:block;z-index:4;cursor:pointer}.real-vinyl{width:405px;right:0;top:30%;z-index:4;cursor:pointer}.disco img,.real-vinyl img{transition:scale .45s,filter .45s}.disco:hover img,.disco:focus-visible img{scale:1.1}.real-vinyl:hover img,.real-vinyl:focus-visible img{scale:1.09;filter:brightness(1.12)}.object-label{position:absolute;bottom:-15px;left:50%;translate:-50% 0;background:var(--cream);color:var(--ink);padding:10px 14px;white-space:nowrap;border-radius:2px;font-size:10px;letter-spacing:1.5px;font-weight:700;box-shadow:3px 4px 0 #321c3c35;opacity:0;transform:translateY(8px);transition:.3s}.disco:hover .object-label,.disco:focus-visible .object-label,.real-vinyl:hover .object-label,.real-vinyl:focus-visible .object-label{opacity:1;transform:translateY(0)}
.sun{background:repeating-linear-gradient(0deg,#ee9958 0 19px,#ffe1a1 19px 27px);opacity:.95;box-shadow:0 0 60px 20px #ffd79c66,0 0 140px 65px #ffc77533;animation:sun-breathe 8s ease-in-out infinite}.sun:before{content:'';position:absolute;inset:-100px;border-radius:50%;background:repeating-conic-gradient(from 0deg,#ffdf9a00 0deg 12deg,#ffe8af35 13deg 18deg,#ffdf9a00 19deg 30deg);mask-image:radial-gradient(circle,transparent 0 36%,black 41%,transparent 72%);animation:spin 80s linear infinite}.sun:after{content:'';position:absolute;inset:-25px;border-radius:50%;border:1px solid #ffedbb44;box-shadow:0 0 45px #fff0c933}
@keyframes sun-breathe{0%,100%{scale:1;filter:brightness(1);translate:0 0}50%{scale:1.045;filter:brightness(1.13);translate:0 -14px}}
.ticket{width:220px;padding:22px 25px 48px;border:0;border-radius:3px;background:linear-gradient(115deg,#f6e9c8,#e3cba5 75%,#f6e9c8);box-shadow:2px 2px 2px #fff7dd inset,0 -2px 4px #b0916744 inset,6px 10px 15px #321c3c3d;filter:drop-shadow(1px 2px 1px #321c3c22)}.ticket:before{content:'';position:absolute;inset:0;border-radius:inherit;opacity:.18;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3'/%3E%3C/filter%3E%3Cpath fill='%23a27d52' filter='url(%23grain)' d='M0 0h150v150H0z'/%3E%3C/svg%3E");pointer-events:none}.ticket strong{font-size:29px;line-height:1.05;margin:15px 0 12px}.ticket-top{font-size:7px!important;letter-spacing:1.5px;border-bottom:1px solid #6f584633;padding-bottom:9px;display:block}.ticket-route{font-size:6px!important;letter-spacing:1px;display:block}.ticket-code{height:25px;margin:13px 0 7px;background:repeating-linear-gradient(90deg,#493740 0 1px,transparent 1px 3px,#493740 3px 5px,transparent 5px 6px,#493740 6px 7px,transparent 7px 10px);opacity:.8}.ticket-serial{font-size:6px!important;letter-spacing:.7px;display:block}.ticket-stub{position:absolute;bottom:0;left:0;right:0;height:35px;display:flex;align-items:center;justify-content:center;border-top:1px dashed #6f584699;font-size:7px!important;letter-spacing:2px;background:#b7986e16}.ticket-stub:before,.ticket-stub:after{content:'';position:absolute;top:-6px;width:12px;height:12px;border-radius:50%;background:#dbadba}.ticket-stub:before{left:-6px}.ticket-stub:after{right:-6px}
.hosts{padding:95px 8%;background:#e5bb73}.hosts h2{margin-top:28px}.hosts-intro{font-size:17px;line-height:1.8;margin:30px 0 45px}.host-list{display:grid;grid-template-columns:1fr 1fr;border-block:1px solid #53216b66}.host-list article{position:relative;padding:40px 30px 45px 0}.host-list article+article{border-left:1px solid #53216b66;padding-left:45px}.host-number{font-size:9px;letter-spacing:2px}.host-list h3{font-family:Shrikhand;font-size:clamp(32px,3.6vw,54px);margin-top:25px}.host-list p{font-size:9px;letter-spacing:2px;margin-top:20px}.host-star{position:absolute;right:20px;top:28px;font-size:45px;color:#a05e83}.hosts .back{margin-top:35px}
@media(max-width:1050px) and (min-width:701px){.disco{width:185px;height:185px;left:3%}.real-vinyl{width:290px;right:-25px;top:38%}}
@media(max-width:700px){.disco{width:145px;height:145px;left:1%;top:9%}.real-vinyl{width:220px;right:-30px;top:49%}.ticket{width:156px;top:49%;left:3%;padding:15px 16px 38px}.ticket strong{font-size:22px;margin:10px 0}.ticket-top{font-size:5px!important;letter-spacing:.8px}.ticket-route{font-size:5px!important;letter-spacing:.4px}.ticket-code{height:16px;margin:9px 0 5px}.ticket-serial{font-size:4px!important}.ticket-stub{height:28px;font-size:5px!important}.object-label{font-size:8px;padding:8px 10px;bottom:-10px;opacity:1;transform:none}.sun:before{inset:-65px}.hosts{padding:65px 6%}.host-list{grid-template-columns:1fr}.host-list article{padding:30px 0}.host-list article+article{border-left:0;border-top:1px solid #53216b66;padding-left:0}.host-list h3{font-size:38px}.hosts-intro{font-size:15px}}
/* Photographic mountain panorama with a restrained halftone overlay. */
.hills.back{left:0;width:100%;height:clamp(340px,31vw,510px);bottom:0;border-radius:0;transform:none;background: url('assets/purple-mountains.png') center bottom / 100% 100% no-repeat;pointer-events:none}.hills.back:after{border-radius:0;opacity:.075;background-size:7px 7px;mask-image:url('assets/purple-mountains.png');mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-image:url('assets/purple-mountains.png');-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat}.hills.front{left:0;width:100%;height:170px;bottom:0;transform:none;border-radius:0;background:linear-gradient(transparent,#321c3c99);pointer-events:none}.hills.front:after{display:none}
@media(max-width:700px){.hills.back{height:295px;width:145%;left:-25%}.hills.front{height:150px}}
/* One-time retro television spin-in; transform stays separate from scroll parallax. */
.logo-wrap.logo-enter{animation:logo-batman-enter 1.9s cubic-bezier(.18,.68,.22,1) both;transform-origin:50% 53%}
@keyframes logo-batman-enter{0%{transform:translateX(-50%) rotate(-1080deg) scale(.025);opacity:0}7%{opacity:1}72%{transform:translateX(-50%) rotate(-65deg) scale(.88)}90%{transform:translateX(-50%) rotate(8deg) scale(1.055)}100%{transform:translateX(-50%) rotate(0deg) scale(1);opacity:1}}
@media(prefers-reduced-motion:reduce){.logo-wrap.logo-enter{animation:none!important;transform:translateX(-50%);opacity:1}}
.paused .logo-wrap.logo-enter{animation:none!important;transform:translateX(-50%);opacity:1}
/* Align the photographic wheel contact points with the rail. */
.train-track .train{bottom:-26px}
@media(max-width:700px){.train-track .train{bottom:-15px}}
/* Longer continuous spin-in with a gentle deceleration. */
.logo-wrap.logo-enter{animation:logo-batman-smooth 3.8s cubic-bezier(.16,.1,.26,1) both;will-change:transform,opacity;backface-visibility:hidden}
@keyframes logo-batman-smooth{from{transform:translateX(-50%) rotate(-1800deg) scale(.025);opacity:0}8%{opacity:1}to{transform:translateX(-50%) rotate(0deg) scale(1);opacity:1}}
/* Spin only the bitmap logo; the genre caption remains stationary. */
.logo.logo-enter{animation:logo-only-spin 3.8s cubic-bezier(.16,.1,.26,1) both;transform-origin:50% 53%;will-change:transform,opacity;backface-visibility:hidden}
@keyframes logo-only-spin{from{transform:rotate(-1800deg) scale(.025);opacity:0}8%{opacity:1}to{transform:rotate(0deg) scale(1);opacity:1}}
.logo-wrap p{top:79%;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:95vw;padding:13px 22px;background:#321c3cf2;color:#fff2d5;border:1px solid #f4e8cb66;border-radius:3px;box-shadow:0 4px 12px #321c3c33;font-size:16px;font-weight:700;letter-spacing:3px;line-height:1.4;text-shadow:none;z-index:5}
@media(max-width:700px){.logo-wrap p{top:81%;font-size:11px;letter-spacing:1.4px;padding:10px 13px}}
.paused .logo.logo-enter{animation:none!important;transform:none;opacity:1}
@media(prefers-reduced-motion:reduce){.logo.logo-enter{animation:none!important;transform:none;opacity:1}}
/* Enlarge the mountain panorama by 15%, anchored at the bottom. */
.hills.back{transform:scale(1.15);transform-origin:50% 100%}
/* Moving metallic reflections and staggered rail sparkles. */
.rails{background:linear-gradient(0deg,#38213e 0 45%,#b391a0 46% 60%,#fff0c8 61% 73%,#60415f 74%);border-top-color:#ffe7b0;box-shadow:0 -1px 5px #ffe7b044}
.rails:before{content:'';position:absolute;inset:-2px 0;background:linear-gradient(100deg,transparent 0 35%,#fff8df00 40%,#fff8dfbb 49%,#fff8df00 57%,transparent 65%);background-size:45% 100%;background-repeat:no-repeat;animation:rail-shimmer 7s linear infinite;pointer-events:none}
.rail-spark{position:absolute;top:-9px;width:22px;height:22px;background:#fff7dd;clip-path:polygon(50% 0,57% 42%,100% 50%,57% 58%,50% 100%,43% 58%,0 50%,43% 42%);filter:drop-shadow(0 0 6px #ffeeb3);opacity:0;animation:rail-twinkle 4.8s ease-in-out infinite}
.rail-spark:nth-child(1){left:17%;animation-delay:0s}.rail-spark:nth-child(2){left:29%;animation-delay:-2.1s;width:15px;height:15px;top:-5px}.rail-spark:nth-child(3){left:42%;animation-delay:-.9s}.rail-spark:nth-child(4){left:57%;animation-delay:-3.4s;width:17px;height:17px;top:-6px}.rail-spark:nth-child(5){left:73%;animation-delay:-1.6s}.rail-spark:nth-child(6){left:86%;animation-delay:-4.1s;width:14px;height:14px;top:-5px}
@keyframes rail-shimmer{from{background-position:-80% 0}to{background-position:190% 0}}
@keyframes rail-twinkle{0%,55%,100%{opacity:0;transform:scale(.3) rotate(0deg)}70%{opacity:.95;transform:scale(1.15) rotate(12deg)}85%{opacity:.3;transform:scale(.7) rotate(20deg)}}
@media(prefers-reduced-motion:reduce){.rails:before{display:none}.rail-spark{opacity:.4;transform:scale(.7)}}
/* Compact masthead, truly centered navigation, integrated retro slogan. */
header{display:grid;grid-template-columns:1fr auto 1fr;gap:20px;height:80px}.brand{justify-self:start;font-size:21px}.brand span{font-size:7px;letter-spacing:1.4px;margin-top:5px}header nav{justify-self:center;gap:38px}#motion{justify-self:end}
.hero-bottom{bottom:27px;align-items:center;gap:25px}.hero-bottom h1{font-size:30px;letter-spacing:.3px;line-height:1.12;background:var(--cream);color:var(--purple);padding:15px 23px;border:1px solid #53216b55;box-shadow:5px 6px 0 #321c3c44;transform:rotate(-4deg);position:relative}.hero-bottom h1:before{content:'✦ ALL ABOARD ✦';display:block;font:8px 'DM Sans',sans-serif;font-weight:700;letter-spacing:2.2px;margin-bottom:7px}.hero-bottom h1 em{font-size:1.04em}.hero-bottom p{font-size:12px;line-height:1.6;margin:0}.hero-bottom .round-link{width:55px;height:55px;font-size:25px}
@media(max-width:700px){header{height:74px;grid-template-columns:auto 1fr auto;gap:12px;padding-inline:4%}.brand{font-size:17px}.brand span{font-size:5px;letter-spacing:.4px}header nav{gap:12px;font-size:8px;letter-spacing:.2px}nav a:last-child{display:block}#motion{width:25px;height:25px}.hero-bottom{bottom:22px;gap:12px}.hero-bottom h1{font-size:24px;padding:12px 18px;letter-spacing:0}.hero-bottom h1:before{font-size:7px;margin-bottom:6px}.hero-bottom .round-link{width:43px;height:43px}}
@media(max-width:380px){header nav{gap:7px;font-size:7px}.brand{font-size:15px}.brand span{display:none}}
/* Identical wide groups wrap seamlessly, with no trailing empty space. */
.marquee .marquee-track{display:flex;width:max-content;animation:marquee 55s linear infinite;will-change:transform}.marquee-group{display:block;flex:none;white-space:nowrap;padding-right:.35em;min-width:100vw}
/* The entire suspension rotates around a fixed ceiling anchor. */
.disco-pendulum{position:absolute;left:6%;top:0;width:245px;height:calc(15% + 245px);z-index:4;transform-origin:50% 0;animation:disco-pendulum 5s ease-in-out infinite;pointer-events:none;will-change:transform}
.disco-pendulum:before{content:'';position:absolute;left:50%;top:0;width:1px;height:calc(100% - 245px + 5px);background:#5c3b66;transform:translateX(-50%)}
.disco-pendulum .disco{position:absolute;left:0;top:auto;bottom:0;width:100%;height:245px;animation:none;transform:none;pointer-events:auto}
.disco-pendulum .disco:before{display:none}
@keyframes disco-pendulum{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}
@media(max-width:1050px) and (min-width:701px){.disco-pendulum{left:3%;width:185px;height:calc(15% + 185px)}.disco-pendulum:before{height:calc(100% - 185px + 4px)}.disco-pendulum .disco{height:185px}}
@media(max-width:700px){.disco-pendulum{left:1%;width:145px;height:calc(9% + 145px)}.disco-pendulum:before{height:calc(100% - 145px + 3px)}.disco-pendulum .disco{height:145px}}
.train-track .train{cursor:default}
/* Continuously moving vintage artist portraits with print halftone. */
.artist-gallery{padding:25px 0 75px;background:var(--cream);overflow:hidden}.artist-heading{padding:0 8% 45px}.artist-heading h2{margin-top:24px;font-size:clamp(38px,5vw,70px)}.artist-heading p{font-size:15px;line-height:1.7}.artist-window{overflow:hidden;width:100%}.artist-track{display:flex;width:max-content;animation:artist-drift 55s linear infinite;will-change:transform}.artist-group{display:flex;gap:28px;padding-right:28px;flex:none}.artist-card{position:relative;margin:0;width:290px;background:var(--ink);padding:11px 11px 0;box-shadow:4px 6px 0 #53216b22;transform:rotate(-3deg)}.artist-card:nth-child(even){transform:rotate(3deg);margin-top:22px}.artist-photo{height:350px;position:relative;background-image:url('assets/retro-artists.png');background-size:400% 100%;background-position:0% center;filter:sepia(.15);overflow:hidden}.artist-1 .artist-photo{background-position:33.333% center}.artist-2 .artist-photo{background-position:66.667% center}.artist-3 .artist-photo{background-position:100% center}.artist-photo:after{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,#f4e8cb 1px,transparent 1.3px);background-size:5px 5px;opacity:.2;pointer-events:none}.artist-card figcaption{padding:17px 5px 20px;color:var(--cream);display:flex;flex-direction:column;gap:7px}.artist-card strong{font-family:Shrikhand;font-size:24px;font-weight:400}.artist-card figcaption span{font-size:9px;letter-spacing:2px;color:var(--pink)}.artist-credit{font-size:10px;padding:30px 8% 0;margin:0;color:#6c536e}.artist-window{padding:10px 0 15px}
@keyframes artist-drift{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(max-width:700px){.artist-heading{padding:0 6% 30px}.artist-gallery{padding-bottom:55px}.artist-card{width:225px}.artist-photo{height:290px}.artist-card strong{font-size:21px}.artist-group{gap:20px;padding-right:20px}.artist-track{animation-duration:45s}}
/* Keep animation work on transforms and opacity, and avoid offscreen rendering. */
.offscreen-motion *, .offscreen-motion *:before,.offscreen-motion *:after{animation-play-state:paused!important}
.artist-gallery{padding-top:65px}.artist-heading{padding-bottom:30px}
.artist-photo{filter:none}.artist-card{box-shadow:none}.artist-track{transform:translateZ(0);backface-visibility:hidden}.artist-photo:after{background-size:7px 7px;opacity:.16}
.disco img{animation:none}.disco-pendulum .disco{filter:none}.real-vinyl{filter:none}.real-vinyl:hover img,.real-vinyl:focus-visible img{filter:none}
.sun{animation:sun-transform 8s ease-in-out infinite}.sun:before{animation-duration:100s}
@keyframes sun-transform{0%,100%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) translateY(-12px) scale(1.04)}}
.smoke i{filter:none}.train>img{filter:none}.ball-glint,.rail-spark{filter:none}
body:after{position:absolute;height:100svh;opacity:.04}
@media(max-width:700px){.artist-gallery{padding-top:40px}.smoke i:nth-child(even){display:none}}
/* Hover enlarges each portrait without interrupting the gallery motion. */
.artist-photo{transition:transform .45s cubic-bezier(.2,.65,.3,1);transform-origin:center;position:relative}
@media(hover:hover) and (pointer:fine){.artist-card:hover{z-index:3}.artist-card:hover .artist-photo{transform:scale(1.085)}}
@media(prefers-reduced-motion:reduce){.artist-photo{transition:none}}
/* Monochrome portraits reveal brief icon notes while the ribbon keeps moving. */
.artist-photo{transition:filter .35s ease;transform:none!important}
.artist-card .artist-info{position:absolute;left:11px;right:11px;top:11px;height:350px;display:flex;flex-direction:column;justify-content:flex-end;padding:25px 20px;background:linear-gradient(transparent 15%,#211724dd 65%,#211724f5);color:var(--cream);opacity:0;transition:opacity .3s ease;pointer-events:none}
.artist-info strong{font-size:26px;line-height:1.15}.artist-info p{font-size:14px;line-height:1.6;margin:13px 0 0}
.artist-card:hover .artist-photo,.artist-card:focus-visible .artist-photo,.artist-card:focus-within .artist-photo{filter:grayscale(1)}
.artist-card:hover .artist-info,.artist-card:focus-visible .artist-info,.artist-card:focus-within .artist-info{opacity:1}
.artist-card:focus-visible{outline:2px solid var(--purple);outline-offset:5px}
@media(max-width:700px){.artist-card .artist-info{height:290px;padding:20px 15px}.artist-info strong{font-size:23px}.artist-info p{font-size:12px}}
@media(prefers-reduced-motion:reduce){.artist-photo,.artist-info{transition:none!important}}
/* Staggered entrance, then the portrait ribbon continues drifting. */
.artist-gallery:not(.artists-arrived) .artist-card{opacity:0;translate:0 90px;rotate:-12deg}.artist-gallery.artists-arrived .artist-card{animation:artist-land 1.1s cubic-bezier(.2,.75,.25,1) both}.artist-gallery.artists-arrived .artist-card:nth-child(2){animation-delay:.15s}.artist-gallery.artists-arrived .artist-card:nth-child(3){animation-delay:.3s}.artist-gallery.artists-arrived .artist-card:nth-child(4){animation-delay:.45s}
@keyframes artist-land{from{opacity:0;translate:0 100px;rotate:-12deg;scale:.85}to{opacity:1;translate:0 0;rotate:0deg;scale:1}}
.dj-section{background:#53216b;color:var(--cream);padding-bottom:65px;overflow:hidden}.dj-section h2{font-size:clamp(36px,5vw,76px)}.dj-section .hosts-intro{max-width:660px}.dj-stage{position:relative;margin:30px -5% 0;min-height:480px;isolation:isolate}.dj-rainbow{position:absolute;left:50%;top:0;width:95%;height:95%;transform-origin:center bottom;background:radial-gradient(ellipse at 50% 100%,transparent 0 36%,#986abd 36% 40%,#659eb1 40% 44%,#97af77 44% 48%,#edce7c 48% 52%,#ed945d 52% 56%,#d57f9b 56% 60%,transparent 60%);opacity:.85;animation:rainbow-sway 9s ease-in-out infinite;z-index:-1}.dj-rainbow:after{content:'';position:absolute;inset:0;background:radial-gradient(circle,#fff1c6 1px,transparent 1.5px) 0 0 / 9px 9px;mask-image:radial-gradient(ellipse at 50% 100%,transparent 36%,black 36% 60%,transparent 60%);opacity:.4}
@keyframes rainbow-sway{0%,100%{transform:translateX(-50%) rotate(-3deg) scale(1)}50%{transform:translateX(-50%) rotate(3deg) scale(1.04)}}
.dj-portraits{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:end;z-index:1}.dj-photo{position:relative;margin:0;overflow:hidden}.dj-photo img{display:block;width:100%;height:480px;object-fit:contain;object-position:center bottom}.dj-photo:after{content:'';position:absolute;inset:0;background:radial-gradient(circle,#fff2d5 1px,transparent 1.4px) 0 0/6px 6px;opacity:.13;mask-image:var(--dj-mask);mask-size:100% 100%;mask-repeat:no-repeat;pointer-events:none}.dj-photo:nth-child(1){--dj-mask:url('assets/djs-104.png')}.dj-photo:nth-child(2){--dj-mask:url('assets/djs-112.png')}.dj-photo:nth-child(3){--dj-mask:url('assets/djs-109.png')}.dj-signoff{display:flex;justify-content:space-between;gap:20px;padding-top:25px;border-top:1px solid #f4e8cb55;font-size:11px;letter-spacing:2px}.rainbow-stars{position:absolute;inset:0;pointer-events:none;z-index:0}.rainbow-stars i{position:absolute;font-style:normal;color:#fff0bc;font-size:35px;animation:twinkle 3s ease-in-out infinite}.rainbow-stars i:nth-child(1){left:15%;top:50%}.rainbow-stars i:nth-child(2){left:30%;top:20%;animation-delay:-1s}.rainbow-stars i:nth-child(3){left:50%;top:5%;animation-delay:-2s}.rainbow-stars i:nth-child(4){left:70%;top:25%;animation-delay:-.5s}.rainbow-stars i:nth-child(5){left:85%;top:50%;animation-delay:-1.7s}
@media(max-width:700px){.dj-stage{min-height:290px;margin-inline:-4%}.dj-portraits{gap:0}.dj-photo img{height:290px}.dj-signoff{flex-direction:column;font-size:9px}.dj-rainbow{width:130%}.dj-section h2{font-size:36px}}
@media(prefers-reduced-motion:reduce){.artist-gallery:not(.artists-arrived) .artist-card{opacity:1;translate:none;rotate:none}.dj-rainbow{transform:translateX(-50%)}}
.dj-photo:after{mask-size:contain;mask-position:center bottom;-webkit-mask-image:var(--dj-mask);-webkit-mask-size:contain;-webkit-mask-position:center bottom;-webkit-mask-repeat:no-repeat}
.paused .artist-gallery:not(.artists-arrived) .artist-card{opacity:1;translate:none;rotate:none}
/* Clean striped glitter rainbow; sparkle stays within its silhouette. */
.dj-rainbow{background:url('assets/glitter-rainbow.png') center / contain no-repeat;opacity:1;width:100%;height:100%;top:0;z-index:-1}
.dj-rainbow:after{background:radial-gradient(circle at 20% 25%,#fff 0 1px,transparent 3px) 0 0/43px 47px,radial-gradient(circle at 70% 50%,#fff5cb 0 1px,transparent 2px) 0 0/61px 59px;mask-image:url('assets/glitter-rainbow.png');mask-size:contain;mask-position:center;mask-repeat:no-repeat;-webkit-mask-image:url('assets/glitter-rainbow.png');-webkit-mask-size:contain;-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;opacity:.65;animation:glitter-flash 1.8s ease-in-out infinite alternate}
.rainbow-stars{display:none}
@keyframes glitter-flash{from{opacity:.15;transform:translateX(-2px)}to{opacity:.9;transform:translateX(2px)}}
/* Stronger halftone, clipped to the press portraits. */
.dj-photo:after{background-image:radial-gradient(circle,#f8edcc 1.15px,transparent 1.5px);background-size:5px 5px;opacity:.34;mask-size:contain;mask-position:center bottom;-webkit-mask-size:contain;-webkit-mask-position:center bottom}
@media(max-width:700px){.dj-rainbow{width:125%}}
/* Broad glitter panorama and cream cutout contours around the hosts. */
.dj-stage{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding-inline:6vw}
.dj-rainbow{width:108vw;height:100%;background-size:100% 100%}
.dj-rainbow:after{mask-size:100% 100%;-webkit-mask-size:100% 100%}
.dj-photo{overflow:visible}
.dj-photo img{filter:drop-shadow(5px 0 0 #f4e8cb) drop-shadow(-5px 0 0 #f4e8cb) drop-shadow(0 5px 0 #f4e8cb) drop-shadow(0 -5px 0 #f4e8cb)}
@media(max-width:700px){.dj-stage{padding-inline:4vw}.dj-rainbow{width:115vw}.dj-photo img{filter:drop-shadow(3px 0 0 #f4e8cb) drop-shadow(-3px 0 0 #f4e8cb) drop-shadow(0 3px 0 #f4e8cb) drop-shadow(0 -3px 0 #f4e8cb)}}

/* Stronger travelling rail highlights, with bright staggered starbursts. */
.rails{box-shadow:0 -1px 7px #ffe7b099}
.rails:before{inset:-5px 0;background:linear-gradient(100deg,transparent 30%,#fff2c833 40%,#fffdf2 49%,#fff2c877 53%,transparent 63%);background-size:55% 100%;background-repeat:no-repeat;animation-duration:4s}
.rails:after{content:'';position:absolute;inset:-3px 0;pointer-events:none;background:linear-gradient(100deg,transparent 38%,#fffdf2 49%,transparent 60%);background-size:28% 100%;background-repeat:no-repeat;animation:rail-shimmer 4s linear -2s infinite}
.rails .rail-spark{width:36px;height:36px;top:-16px;background:#fffdf2;animation-duration:2.8s}
.rails .rail-spark:nth-child(even){width:27px;height:27px;top:-12px}
@keyframes rail-twinkle{0%,100%{opacity:0;transform:scale(.25) rotate(0deg)}22%{opacity:.65;transform:scale(.7) rotate(6deg)}38%{opacity:1;transform:scale(1.4) rotate(12deg)}52%{opacity:.35;transform:scale(.6) rotate(18deg)}68%{opacity:1;transform:scale(1) rotate(24deg)}85%{opacity:0;transform:scale(.25) rotate(30deg)}}
@media(prefers-reduced-motion:reduce){.rails:before,.rails:after{display:none}.rails .rail-spark{animation:none;opacity:.55;transform:scale(.7)}}

/* Slower travelling shimmer across the rails. */
.rails:before{animation-duration:9s}
.rails:after{animation-duration:9s;animation-delay:-4.5s}

/* Leave purple breathing room around the rainbow. */
.dj-rainbow{width:90vw}
@media(max-width:700px){.dj-rainbow{width:96vw}}

/* Bold staggered fly-in, triggered when the portrait row is visible. */
.artist-card{--entry-x:-240px;--entry-y:260px;--entry-rotation:-28deg}
.artist-card:nth-child(even){--entry-x:240px;--entry-y:310px;--entry-rotation:28deg}
.artist-gallery:not(.artists-arrived) .artist-card{translate:var(--entry-x) var(--entry-y);rotate:var(--entry-rotation);scale:.55}
.artist-gallery.artists-arrived .artist-card{animation:artist-land 1.65s cubic-bezier(.16,.7,.25,1) both}
.artist-gallery.artists-arrived .artist-card:nth-child(2){animation-delay:.22s}
.artist-gallery.artists-arrived .artist-card:nth-child(3){animation-delay:.44s}
.artist-gallery.artists-arrived .artist-card:nth-child(4){animation-delay:.66s}
@keyframes artist-land{0%{opacity:0;translate:var(--entry-x) var(--entry-y);rotate:var(--entry-rotation);scale:.55}18%{opacity:1}72%{opacity:1;translate:0 -22px;rotate:4deg;scale:1.05}88%{translate:0 7px;rotate:-2deg;scale:.99}100%{opacity:1;translate:0 0;rotate:0deg;scale:1}}
@media(prefers-reduced-motion:reduce){.artist-gallery .artist-card{animation:none!important;opacity:1!important;translate:none!important;rotate:none!important;scale:1!important}}
.paused .artist-gallery .artist-card{animation:none!important;opacity:1;translate:none;rotate:none;scale:1}

/* Saturday radio residency. */
.radio-layout{display:grid;grid-template-columns:1fr 1fr;gap:10%;align-items:center;margin-top:65px}.radio-dial{padding:35px;background:var(--orange);color:var(--ink);transform:rotate(-4deg);box-shadow:12px 12px 0 #321c3c}.radio-dial>strong{display:block;font-family:Shrikhand,Georgia,serif;font-size:clamp(48px,6vw,85px);line-height:1.05;margin:28px 0}.radio-time{display:block;font-size:12px;letter-spacing:2px;line-height:1.8}.radio-time b{font-size:clamp(20px,2.6vw,34px);letter-spacing:0}.radio-frequency{height:40px;margin:24px 0;background:repeating-linear-gradient(90deg,transparent 0 8px,#321c3c 8px 10px);border-bottom:3px solid var(--ink);position:relative}.radio-frequency:after{content:'';position:absolute;left:67%;top:-6px;width:5px;height:48px;background:var(--cream)}.radio-copy h3{font-family:Shrikhand,Georgia,serif;font-size:clamp(35px,4vw,58px);margin:25px 0}.radio-copy p{font-size:17px;line-height:1.8}.radio-link{display:inline-block;padding:14px 18px;margin-top:15px;background:var(--cream);color:var(--ink);font-weight:700;font-size:13px;border:1px solid var(--cream);transition:background .2s}.radio-link:hover{background:var(--orange)}
@media(max-width:700px){.radio-layout{grid-template-columns:1fr;gap:45px;margin-top:45px}.radio-dial{width:94%;margin:auto;padding:25px}.radio-copy p{font-size:15px}.radio-dial>strong{font-size:58px}}

.oldie-logo{display:block;width:190px;max-width:65%;height:auto;margin-bottom:25px}.radio-dial{background:#ffcd00;color:#004ba0;box-shadow:12px 12px 0 #004ba0}.radio-dial>strong{font-family:'DM Sans',sans-serif;font-weight:900;letter-spacing:-3px}.radio-frequency{border-color:#004ba0;background:repeating-linear-gradient(90deg,transparent 0 8px,#004ba0 8px 10px)}.radio-show .radio-link{background:#ffcd00;color:#004ba0}.radio-dial:after{content:'';display:block;height:9px;margin:25px -35px -35px;background:linear-gradient(90deg,#cd007d 0 20%,#e1000f 20% 40%,#f07d00 40% 60%,#0aa537 60% 80%,#004ba0 80%)}
.dates-strip{background:#ffcd00;color:#321c3c;overflow:hidden;border-block:3px solid var(--purple);padding:23px 0}.dates-track{display:flex;width:max-content;animation:marquee 36s linear infinite}.dates-group{display:flex;align-items:center;gap:40px;padding-right:40px;flex:none;white-space:nowrap;font-size:clamp(19px,2.2vw,32px);font-weight:900}.dates-group a:hover{text-decoration:underline}.contact{padding:90px 8%;background:var(--cream)}.contact h2{margin-top:25px}.contact form{max-width:800px;margin-top:35px}.contact label{display:block;font-weight:700;font-size:13px;margin:18px 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px}.contact input,.contact select,.contact textarea{display:block;width:100%;padding:14px;margin-top:8px;background:#fff9ed;color:var(--ink);border:1px solid var(--purple);font:inherit;border-radius:0}.contact textarea{resize:vertical}.contact button{background:var(--purple);color:var(--cream);border:0;padding:16px 24px;font-weight:700}.contact button:disabled{opacity:.6}.form-privacy{font-size:12px;line-height:1.7}.form-privacy a,.contact>p a{text-decoration:underline}.contact .form-trap{position:absolute;left:-9999px}.legal-links{display:flex;gap:20px}.legal-content{max-width:850px;padding:65px 6%;margin:auto;line-height:1.8}.legal-content h1{font-size:44px}.legal-content h2{font-size:24px;margin:28px 0 12px;letter-spacing:0}.legal-content a{text-decoration:underline}.legal-draft{padding:18px;background:#ffcd00;color:#321c3c}
@media(max-width:700px){.form-grid{grid-template-columns:1fr;gap:0}.contact{padding:65px 6%}.dates-group{gap:25px;padding-right:25px}.radio-dial:after{margin:25px -25px -25px}}

/* Moving analog details around the Saturday show. */
.radio-show{position:relative;overflow:hidden;isolation:isolate}.radio-show .sound-head,.radio-layout{position:relative;z-index:2}.radio-retro{position:relative;height:135px;margin:25px 0 -25px;pointer-events:none}.radio-cassette{position:absolute;left:5%;top:0;width:190px;height:112px;border:3px solid #321c3c;border-radius:10px;background:#f4e8cb;color:#321c3c;padding:10px 15px;box-shadow:6px 7px 0 #321c3c66;animation:cassette-bob 7s ease-in-out infinite}.radio-cassette>span{display:block;text-align:center;font-size:10px;letter-spacing:2px;font-weight:900}.radio-cassette>b{display:block;text-align:center;font-size:7px;letter-spacing:1px;margin-top:9px}.cassette-reels{display:flex;justify-content:space-between;align-items:center;background:#321c3c;margin-top:9px;padding:5px 14px;border-radius:18px}.cassette-reels i{width:30px;height:30px;border:5px dashed #f4e8cb;border-radius:50%;animation:spin 5s linear infinite}.radio-vinyl{position:absolute;right:7%;top:-10px;width:130px;height:130px;border-radius:50%;display:grid;place-items:center;background:repeating-radial-gradient(#211824 0 3px,#46324c 4px 5px);box-shadow:6px 7px 0 #321c3c55;animation:spin 18s linear infinite}.radio-vinyl i{display:grid;place-items:center;width:48px;height:48px;background:#ffcd00;color:#004ba0;font-family:Shrikhand;border-radius:50%;font-style:normal}.radio-star{position:absolute;left:49%;top:20px;font-size:68px;color:#ffcd00;animation:radio-star-pulse 4s ease-in-out infinite}.radio-levels{display:flex;align-items:end;justify-content:space-between;height:42px;margin:20px 0;gap:5px}.radio-levels i{flex:1;height:100%;background:#004ba0;transform-origin:bottom;animation:radio-meter 1.1s ease-in-out infinite alternate}.radio-levels i:nth-child(3n){animation-delay:-.7s;animation-duration:.8s}.radio-levels i:nth-child(3n+1){animation-delay:-.35s;animation-duration:1.4s}.radio-levels i:nth-child(4n){background:#cd007d}.radio-frequency:after{animation:radio-tune 9s ease-in-out infinite}.radio-show .radio-dial{animation:radio-dial-sway 8s ease-in-out infinite}
@keyframes cassette-bob{0%,100%{transform:translateY(0) rotate(-9deg)}50%{transform:translateY(-13px) rotate(-3deg)}}@keyframes radio-star-pulse{0%,100%{transform:rotate(-10deg) scale(.85)}50%{transform:rotate(15deg) scale(1.15)}}@keyframes radio-meter{from{transform:scaleY(.18)}to{transform:scaleY(1)}}@keyframes radio-tune{0%,100%{transform:translateX(-35px)}50%{transform:translateX(25px)}}@keyframes radio-dial-sway{0%,100%{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(-2deg) translateY(-8px)}}
@media(max-width:700px){.radio-retro{height:125px}.radio-cassette{left:0;width:160px;height:105px;padding:8px 12px}.radio-vinyl{right:0;width:100px;height:100px;top:12px}.radio-star{left:53%;font-size:36px;top:38px}.radio-layout{margin-top:40px}}
@media(prefers-reduced-motion:reduce){.radio-show *, .radio-show *:after{animation:none!important}.radio-levels i{transform:scaleY(.6)}}

/* Mobile positions: raised train, record at the top right, smaller ticket. */
@media(max-width:700px){
 .real-vinyl{top:24px;right:12px;width:180px;z-index:6}
 .ticket{top:auto;bottom:105px;left:5%;transform:rotate(-12deg) scale(.68);transform-origin:bottom left}
 .train-track{bottom:230px}.rails{bottom:230px}
 .train-track .train{bottom:-15px}
}
@media(max-width:360px){.real-vinyl{width:160px;right:8px}}
