/* Audio spectrum: radial bars carry measured analyser values, never a playback timer. */
.visualizer{position:relative;width:150px;height:150px;margin:22px auto 18px;overflow:visible;border:1px solid #d6b65f40;border-radius:50%;background:radial-gradient(circle,#251315 0 34%,#120d0e 35% 57%,#d6b65f0a 58% 59%,transparent 60%);box-shadow:inset 0 0 30px #d6b65f0d,0 0 28px #d6b65f0c}
.visualizer:before,.visualizer:after{position:absolute;content:"";inset:12px;border:1px solid #d6b65f28;border-radius:50%;pointer-events:none}
.visualizer:after{inset:38px;border-style:dashed;border-color:#d6b65f30}
.visualizer i{position:absolute;z-index:1;top:50%;left:50%;display:block;width:3px;height:var(--bar-size,4px);min-height:3px;max-width:none;flex:none;border-radius:3px;background:linear-gradient(to top,#a8202b,#f0d27a);box-shadow:0 0 8px #d6b65f45;opacity:.28;transform:translate(-50%,-50%) rotate(var(--bar-angle)) translateY(-55px);transition:height 90ms linear,opacity .3s}
.visualizer.is-analyzing i{opacity:.95}
.visualizer-core{position:absolute;z-index:2;inset:50%;display:grid;width:38px;height:38px;place-items:center;border:1px solid #d6b65f66;border-radius:50%;background:#160e10;color:#edcf77;font:18px Arial,sans-serif;transform:translate(-50%,-50%);box-shadow:0 0 19px #d6b65f27}
.visualizer i:nth-of-type(1){--bar-angle:0deg}.visualizer i:nth-of-type(2){--bar-angle:10deg}.visualizer i:nth-of-type(3){--bar-angle:20deg}.visualizer i:nth-of-type(4){--bar-angle:30deg}.visualizer i:nth-of-type(5){--bar-angle:40deg}.visualizer i:nth-of-type(6){--bar-angle:50deg}.visualizer i:nth-of-type(7){--bar-angle:60deg}.visualizer i:nth-of-type(8){--bar-angle:70deg}.visualizer i:nth-of-type(9){--bar-angle:80deg}.visualizer i:nth-of-type(10){--bar-angle:90deg}.visualizer i:nth-of-type(11){--bar-angle:100deg}.visualizer i:nth-of-type(12){--bar-angle:110deg}.visualizer i:nth-of-type(13){--bar-angle:120deg}.visualizer i:nth-of-type(14){--bar-angle:130deg}.visualizer i:nth-of-type(15){--bar-angle:140deg}.visualizer i:nth-of-type(16){--bar-angle:150deg}.visualizer i:nth-of-type(17){--bar-angle:160deg}.visualizer i:nth-of-type(18){--bar-angle:170deg}.visualizer i:nth-of-type(19){--bar-angle:180deg}.visualizer i:nth-of-type(20){--bar-angle:190deg}.visualizer i:nth-of-type(21){--bar-angle:200deg}.visualizer i:nth-of-type(22){--bar-angle:210deg}.visualizer i:nth-of-type(23){--bar-angle:220deg}.visualizer i:nth-of-type(24){--bar-angle:230deg}.visualizer i:nth-of-type(25){--bar-angle:240deg}.visualizer i:nth-of-type(26){--bar-angle:250deg}.visualizer i:nth-of-type(27){--bar-angle:260deg}.visualizer i:nth-of-type(28){--bar-angle:270deg}.visualizer i:nth-of-type(29){--bar-angle:280deg}.visualizer i:nth-of-type(30){--bar-angle:290deg}.visualizer i:nth-of-type(31){--bar-angle:300deg}.visualizer i:nth-of-type(32){--bar-angle:310deg}.visualizer i:nth-of-type(33){--bar-angle:320deg}.visualizer i:nth-of-type(34){--bar-angle:330deg}.visualizer i:nth-of-type(35){--bar-angle:340deg}.visualizer i:nth-of-type(36){--bar-angle:350deg}

/* The needle moves onto the groove and the existing record turn follows live playback. */
body.playing .hero-art .tonearm{transform:rotate(19deg)}
body.playing .hero-art .tonearm-stylus{filter:drop-shadow(0 0 5px #e6c66b)}
.tonearm{transition:transform 1.1s cubic-bezier(.18,.8,.18,1)}
.record-label.has-artwork{position:relative;overflow:hidden;border-color:#170e0e;padding:0;background:#171012}
.record-label.has-artwork>img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}
.record-label.has-artwork>:not(img){display:none}

/* Program cards read as three different show posters. */
.program-card{min-height:400px;isolation:isolate}
.program-card:before{position:absolute;inset:10px;z-index:-1;border:1px solid color-mix(in srgb,var(--program-accent) 30%,transparent);content:"";pointer-events:none}
.program-card:after{position:absolute;right:-18%;top:34%;width:76%;aspect-ratio:1;border:1px solid color-mix(in srgb,var(--program-accent) 23%,transparent);border-radius:50%;content:"";pointer-events:none}
.program-art{width:min(57%,215px);right:8%;top:15%;opacity:.82;mix-blend-mode:screen}
.program-card-one .program-art{background:radial-gradient(circle at 50% 50%,#5c1722 0 17%,#d8bd75 17.4% 18%,transparent 18.4%),repeating-radial-gradient(circle at 50% 50%,transparent 0 15px,#d8bd7522 16px 17px,transparent 18px 25px)}
.program-card-two .program-art{background:radial-gradient(circle,#8a631d44 0 13%,#f0cb70 13.5% 14.5%,transparent 15%),repeating-conic-gradient(from 0deg,transparent 0 14deg,#f0cb7038 14deg 15deg,transparent 15deg 30deg)}
.program-card-three .program-art{background:radial-gradient(circle at 50% 50%,#100b12 0 28%,#c8858d 28.5% 29.5%,transparent 30%),conic-gradient(from 40deg at 50% 50%,transparent 0 35%,#d5909830 36% 38%,transparent 39% 68%,#d5909835 69% 71%,transparent 72%)}
.program-card-two .program-art{transform:rotate(18deg)}
.program-card-three .program-art{transform:rotate(0);border-radius:50%}

/* The official timetable forms a clear weekly timeline when confirmed data is added. */
.schedule-list{position:relative;gap:0;padding-left:25px}
.schedule-list:before{position:absolute;top:12px;bottom:16px;left:8px;width:1px;background:linear-gradient(#d6b65f77,#d6b65f16);content:""}
.schedule-row{position:relative;grid-template-columns:112px 112px minmax(0,1fr) auto;gap:15px;padding:17px 12px;border-bottom:1px solid #c8a65024;transition:background .25s,border-color .25s}
.schedule-row:before{position:absolute;left:-22px;top:50%;width:7px;height:7px;border:1px solid #c8a650;background:#120d0e;border-radius:50%;content:"";transform:translateY(-50%);box-shadow:0 0 0 4px #120d0e}
.schedule-row.is-live{background:linear-gradient(90deg,#a8202b20,transparent);border-color:#a8202b65}
.schedule-row.is-live:before{background:#de4144;box-shadow:0 0 0 4px #120d0e,0 0 14px #de4144}
.schedule-row.is-next:before{background:#d8bd75;box-shadow:0 0 0 4px #120d0e,0 0 12px #d8bd7566}
.schedule-row.is-live .schedule-row-live{color:#f17870}
.schedule-row.is-next .schedule-row-live{color:#e5cf88}
.schedule-row-time{white-space:nowrap}
.audio-analysis-option{display:flex!important;align-items:flex-start;gap:12px;padding:13px;border:1px solid #c8a65040;background:#171012;line-height:1.7}
.settings-form .audio-analysis-option input{flex:0 0 16px;width:16px;height:16px;margin:2px 0 0;accent-color:#d6b65f}
.audio-analysis-option span{color:#e3d0a0}
.audio-analysis-option small{color:#9f8d7b;font:11px/1.5 'DM Sans',sans-serif}
@media(max-width:760px){.visualizer{width:124px;height:124px;margin:17px auto 10px}.visualizer i{transform:translate(-50%,-50%) rotate(var(--bar-angle)) translateY(-45px)}.schedule-row{grid-template-columns:1fr auto;gap:6px 12px;padding:15px 8px}.schedule-row-day{grid-column:1}.schedule-row-time{grid-column:2;grid-row:1}.schedule-row-details{grid-column:1;grid-row:2}.schedule-row-live{grid-column:2;grid-row:2;text-align:right}.schedule-row:before{left:-22px}}
@media(prefers-reduced-motion:reduce){body.playing .hero-art .tonearm{transform:rotate(19deg)}.tonearm{transition:none}.visualizer i{transition:none}.program-card:before,.program-card:after{display:none}}

/* Recently aired songs stay tied to the station's Now Playing history feed. */
.recent-history{grid-column:1/-1;position:relative;z-index:1;width:min(1180px,100%);margin:4px auto 0;padding-top:24px;border-top:1px solid #c8a65040}
.recent-history-heading{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:17px}
.recent-history-heading h3{margin:9px 0 0;color:#eee4d5;font:600 clamp(28px,3vw,42px)/.9 'Cormorant Garamond',serif;letter-spacing:-.03em}
.recent-history-heading h3 em{color:#d6b65f;font-weight:500}
.recent-history-heading>span{max-width:300px;color:#9d8a79;font:10px/1.5 'DM Sans',sans-serif;text-align:right}
.recent-track-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.recent-history-empty{grid-column:1/-1;margin:0;padding:15px 18px;border-left:1px solid #c8a65066;color:#b8a79a;font:13px/1.5 'DM Sans',sans-serif}
.recent-track{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:11px;border:1px solid #c8a65030;background:linear-gradient(110deg,#211315,#140e10)}
.recent-track>img,.recent-track-symbol{width:52px;height:52px;object-fit:cover;border:1px solid #c8a65055}
.recent-track-symbol{display:grid;place-items:center;color:#d6b65f;font-size:22px;background:radial-gradient(circle,#49222a,#161012)}
.recent-track-details{display:grid;gap:4px;min-width:0}
.recent-track-details strong,.recent-track-details span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.recent-track-details strong{color:#eee4d5;font:600 18px/1 'Cormorant Garamond',serif}
.recent-track-details span{color:#b5a499;font:10px 'DM Sans',sans-serif}
.recent-track-details small{color:#8f785e;font:7px 'Space Mono',monospace;letter-spacing:.08em}
.recent-track-save{align-self:end;padding:7px 0;border:0;background:none;color:#d8bd75;font:7px 'Space Mono',monospace;white-space:nowrap;cursor:pointer}
.recent-track-save:hover{color:#fff0bf}

/* Countdown is derived from the next official slot in the configured timezone. */
.next-show-card{display:grid;grid-template-columns:50px minmax(180px,1fr) auto;align-items:center;gap:18px;margin:12px 0 18px;padding:17px 18px;border:1px solid #c8a65038;background:linear-gradient(100deg,#271719,#140e10 62%,#211413)}
.next-show-sigil{display:grid;width:45px;height:45px;place-items:center;border:1px solid #d6b65f7a;border-radius:50%;color:#e4ca7e;font-size:22px;box-shadow:inset 0 0 0 5px #d6b65f12}
.next-show-copy{display:grid;gap:4px;min-width:0}
.next-show-copy strong{color:#eee4d5;font:600 25px/1 'Cormorant Garamond',serif}
.next-show-copy small{color:#ae9b8b;font:10px 'DM Sans',sans-serif}
.next-show-countdown{display:flex;align-items:center;gap:6px;color:#f2d786;font:17px 'Space Mono',monospace}
.next-show-countdown>span{display:grid;justify-items:center;min-width:31px}
.next-show-countdown>span small{margin-top:4px;color:#9d896b;font:6px 'Space Mono',monospace;letter-spacing:.07em}
.next-show-countdown>b{color:#725d44;font-weight:400}

/* Focused listening surface. It controls the same underlying station player. */
.listen-mode-open{min-height:42px;padding:0 13px;border:1px solid #c8a65075;background:#1b1112;color:#e4ce87;font:8px 'Space Mono',monospace;letter-spacing:.05em}
.listen-mode-open:hover{border-color:#eed684;background:#2a1719}
.listen-mode{position:fixed;inset:0;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:24px;border:0;background:radial-gradient(ellipse at 50% 34%,#4c1b22 0,#1b1115 42%,#0c090b 78%);color:#eee4d5;overflow:auto}
.listen-mode[open]{display:grid;place-items:center}
.listen-mode::backdrop{background:#070507f2;backdrop-filter:blur(14px)}
.listen-mode-close{position:absolute;z-index:3;top:22px;right:25px;width:44px;height:44px;border:1px solid #d6b65f77;border-radius:50%;background:#130e10;color:#e7d18b;font-size:27px;cursor:pointer}
.listen-mode-inner{position:relative;z-index:1;display:grid;justify-items:center;width:min(100%,560px);text-align:center}
.listen-mode-inner>.feature-kicker:first-child{display:flex;align-items:center;gap:10px;color:#ddc781;font:9px 'Space Mono',monospace;letter-spacing:.12em}
.listen-mode-inner>.feature-kicker:first-child .status-light{background:#d34b50;box-shadow:0 0 12px #dc464a}
.listen-mode-art{position:relative;width:min(52vw,270px);aspect-ratio:1;margin:26px 0 25px;display:grid;place-items:center;overflow:hidden;border:1px solid #d6b65f99;border-radius:50%;background:radial-gradient(circle,#5e2028 0 23%,#d6b65f 23.4% 24%,#1a1113 24.5% 60%,#d6b65f 60.5% 61%,#120d0e 61.5%);box-shadow:0 0 0 8px #d6b65f10,0 0 55px #b12f3a35}
.listen-mode-art>span{color:#e7cd7e;font:60px Arial,sans-serif;text-shadow:0 0 25px #d6b65f88}
.listen-mode-art.has-artwork>span{display:none}
.listen-mode-art>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.listen-mode-inner>p.feature-kicker{margin:0 0 10px;color:#d6b65f;font:8px 'Space Mono',monospace;letter-spacing:.16em}
.listen-mode-inner h2{margin:0;max-width:100%;color:#f2e5d2;font:600 clamp(38px,6vw,68px)/.94 'Cormorant Garamond',serif;letter-spacing:-.035em;overflow-wrap:anywhere}
.listen-mode-inner>p:not(.feature-kicker){margin:9px 0 0;color:#b9a89a;font:14px 'DM Sans',sans-serif}
.listen-mode-visualizer{margin:13px auto 7px}
.listen-mode-controls{display:flex;align-items:center;gap:26px;margin-top:4px}
.listen-mode-controls .player-play{width:57px;height:57px;border:1px solid #d6b65f88;background:#d6b65f;color:#170e10;font-size:19px}
.listen-mode-controls label{display:grid;gap:7px;color:#c6b18f;font:8px 'Space Mono',monospace;text-align:left}
.listen-mode-controls input{width:160px;accent-color:#d6b65f}
.listen-mode-foot{margin-top:36px;color:#8f795e;font:8px 'Space Mono',monospace;letter-spacing:.18em}
@media(max-width:1000px){.recent-track-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.live-actions .listen-mode-open{flex:1;padding:0 8px;font-size:7px}.recent-history{margin-top:15px}.recent-history-heading{align-items:start;display:grid}.recent-history-heading>span{text-align:left}.recent-track-grid{grid-template-columns:1fr}.next-show-card{grid-template-columns:40px minmax(0,1fr);gap:12px;padding:14px}.next-show-sigil{width:38px;height:38px}.next-show-countdown{grid-column:1/-1;justify-content:center;padding-top:12px;border-top:1px solid #c8a65024;font-size:15px}.next-show-copy strong{font-size:22px}.listen-mode{padding:65px 20px 25px}.listen-mode-art{width:min(62vw,250px);margin:22px 0}.listen-mode-inner h2{font-size:42px}.listen-mode-inner>p:not(.feature-kicker){font-size:12px}.listen-mode-foot{margin-top:25px}}
