@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');

:root{
  color-scheme:dark;
  --bg:#090a0b;
  --panel:#101214;
  --line:#282b2d;
  --muted:#92999b;
  --paper:#f1f2ed;
  --acid:#d8ff39;
  --pink:#ff39b8;
  --ink:#f1f2ed;
  --accent:var(--acid);
  --player-h:92px;
  --font:'DM Sans',system-ui,sans-serif;
  --display:'Space Grotesk',sans-serif;
  --mono:'DM Mono',ui-monospace,monospace;
  font-family:var(--font);
  font-synthesis:none;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:72px;background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--paper);line-height:1.5;min-height:100vh}
body.player-on{padding-bottom:calc(var(--player-h) + 18px)}
body.modal-open,body.video-open{overflow:hidden}
a{color:var(--acid);text-decoration:none}
a:hover{text-decoration:underline}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--acid);outline-offset:3px
}
img{max-width:100%;display:block}
[hidden]{display:none!important}
h1,h2,h3,p{margin-top:0}
h1,h2,h3{font-family:var(--display);letter-spacing:-.06em;line-height:.95;font-weight:600}
h1{font-size:clamp(54px,8.4vw,106px);line-height:.91;margin:16px 0 22px}
h1 em,h2 em{color:var(--acid);font-style:normal}
h2{font-size:clamp(32px,5vw,58px);margin-bottom:16px}
h3{font-size:clamp(26px,3vw,36px);margin:0}
.skip{position:absolute;left:-999px}
.skip:focus{left:10px;top:10px;background:var(--acid);color:#000;padding:8px 12px;z-index:40;font-weight:700}

/* Masthead + page rails */
.masthead,main,footer,.page-pad{max-width:1240px;margin:auto;padding-left:68px;padding-right:68px}
.masthead{padding-top:72px;position:relative}
.mast-top{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;border-bottom:1px solid var(--line);padding-bottom:14px}
.wordmark{font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:.02em;color:var(--paper);text-decoration:none;line-height:1}
.wordmark span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--muted);font-weight:500;margin-top:6px}
.issue-mark{font:10px/1.7 var(--mono);letter-spacing:.16em;color:var(--muted);text-align:right;text-transform:uppercase}
.issue-mark b#weekMark, #weekMark{
  display:block;margin:6px 0 4px;
  font-family:var(--display);font-size:clamp(28px,3.8vw,48px);
  letter-spacing:-.07em;line-height:.9;color:var(--acid);font-weight:700
}
.issue-mark #issueLine{
  display:block;color:var(--paper);font-weight:500;letter-spacing:.14em
}
.hero-week{
  margin:0 0 10px;
  font-family:var(--display);font-size:clamp(28px,4.6vw,56px);
  letter-spacing:-.07em;line-height:.9;color:var(--acid);font-weight:700;
  text-transform:uppercase
}
.arch-week{
  display:block;margin:0 0 8px;
  font-family:var(--display);font-size:clamp(24px,3vw,32px);
  letter-spacing:-.07em;line-height:.95;color:var(--acid);font-weight:700;
  text-transform:uppercase
}
.mast-nav{display:flex;flex-wrap:wrap;gap:4px 16px;justify-content:flex-end;margin-top:10px}
.mast-nav a{color:var(--paper);font:11px var(--mono);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;opacity:.78}
.mast-nav a:hover{color:var(--acid);opacity:1;text-decoration:none}

.edge-date{
  position:fixed;z-index:16;left:14px;top:14px;
  display:flex;align-items:center;gap:8px;
  border:1px solid #3a403b;border-radius:999px;
  background:#090a0bd9;backdrop-filter:blur(10px);
  padding:8px 12px;font:10px var(--mono);letter-spacing:.14em;color:#c8cdc6
}
.live-dot{width:7px;height:7px;border-radius:50%;background:#3ddc97;box-shadow:0 0 8px #3ddc97;animation:live 1.6s ease-in-out infinite}
@keyframes live{50%{opacity:.4}}
.edge-date b{color:var(--acid);font-weight:500}

.share-rail{
  position:fixed;z-index:16;right:14px;top:42%;
  writing-mode:vertical-rl;transform:rotate(180deg);
  display:flex;align-items:center;gap:8px;
  border:1px solid var(--acid);border-radius:999px;
  background:transparent;color:var(--acid);
  padding:16px 10px;font:10px var(--mono);letter-spacing:.18em;
  cursor:pointer
}
.share-rail:hover{background:#d8ff3914}

/* Hero */
.hero{min-height:535px;display:grid;grid-template-columns:1fr 1fr;position:relative;align-items:center;overflow:hidden;border-bottom:1px solid var(--line)}
.hero-copy{padding:60px 0 48px 28px;z-index:1}
.eyebrow,.section-index{font:10px var(--mono);letter-spacing:.18em;color:#a9b0ab;text-transform:uppercase}
.eyebrow{display:flex;align-items:center;gap:12px;margin:0 0 22px}
.eyebrow i{display:block;width:28px;height:1px;background:var(--acid)}
.hero-deck{font-size:17px;line-height:1.7;color:#aeb3b0;margin:0 0 10px}
.hero-deck strong{color:var(--paper);font-weight:600}
.fetched{font:11px/1.6 var(--mono);color:var(--muted);margin:8px 0 18px}
.badge{font:10px var(--mono);letter-spacing:.1em;padding:2px 8px;border:1px solid #e8c66a;color:#e8c66a;margin-left:8px;vertical-align:middle}
.edsel{margin:12px 0 22px;font:12px var(--mono);letter-spacing:.08em;color:var(--muted)}
select,input[type=search],input[type=text],input[type=email],textarea{
  background:var(--panel);color:var(--paper);border:1px solid var(--line);
  border-radius:0;padding:10px 12px;font:14px var(--font)
}
select{min-width:240px}
.jump-link{display:inline-flex;gap:25px;align-items:center;margin:8px 0 22px;font:11px var(--mono);letter-spacing:.18em;color:var(--paper);text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:10px}
.jump-link:hover{color:var(--acid);text-decoration:none}
.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.outline-button{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  border:1px solid var(--acid);background:transparent;color:var(--acid);
  font:11px var(--mono);letter-spacing:.16em;text-transform:uppercase;
  padding:13px 18px;cursor:pointer;text-decoration:none;border-radius:0
}
.outline-button:hover{background:#d8ff3918;text-decoration:none}
.outline-button.solid{background:var(--acid);color:#111}
.outline-button.solid:hover{background:#e7ff7a}
.outline-button:disabled{opacity:.4;cursor:not-allowed}

.hero-art{position:relative;height:100%;min-height:480px;display:grid;place-items:center}
.orbit{position:absolute;border:1px solid #d8ff3933;border-radius:50%;width:370px;height:370px;transform:rotate(-30deg) scaleY(.36);animation:pulse 8s ease-in-out alternate infinite}
.orbit-two{width:460px;height:460px;transform:rotate(23deg) scaleY(.34);border-color:#d8ff3935;animation-delay:-3s;animation-direction:alternate-reverse}
.hero-disc{
  position:relative;width:310px;height:310px;border-radius:50%;
  background:radial-gradient(circle at 50% 50%,#141814 0 28%,#0c0e0c 29%);
  border:1px solid #2a3220;box-shadow:0 0 80px #d8ff3920, inset 0 0 40px #000c
}
.hero-disc:before{
  content:"";position:absolute;inset:18px;border-radius:50%;
  background:
    repeating-radial-gradient(circle at 50% 50%, transparent 0 22px, #d8ff3926 23px 24px);
}
.hero-disc span{
  position:absolute;left:50%;top:50%;
  font-family:var(--display);font-weight:700;font-size:64px;letter-spacing:-.08em;
  transform:translate(-58%,-54%) rotate(-14deg);color:#f2f3ec
}
.hero-disc b{position:absolute;right:58px;bottom:78px;font:10px var(--mono);color:var(--acid);letter-spacing:.16em}
.hero-caption{position:absolute;bottom:28px;right:0;font:9px/1.7 var(--mono);letter-spacing:.16em;color:var(--muted);text-align:right}
.hero-vertical{position:absolute;left:auto;right:calc(50% + 8px);bottom:48px;z-index:2;writing-mode:vertical-rl;transform:rotate(180deg);font:10px var(--mono);letter-spacing:.2em;color:#6f7673;max-height:220px;overflow:hidden;pointer-events:none}

/* Spotlight — keep the sharp #1 row, magazine dress */
#spotlight{padding:48px 0 20px;border-bottom:1px solid var(--line)}
.spot-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px}
.spot-head .heading-note{text-align:right}
.heading-note{font:10px/1.7 var(--mono);letter-spacing:.14em;color:var(--muted);text-transform:uppercase}
.spot{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.card{background:var(--panel);border:1px solid var(--line);padding:12px;display:flex;flex-direction:column;gap:7px;min-width:0}
.card .chart{font:10px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent,#54dcce);font-weight:500}
.card img,.card .ph{width:100%;aspect-ratio:1;object-fit:cover;background:#16191a}
.card .t{font-family:var(--display);font-size:16px;letter-spacing:-.03em;line-height:1.2;font-weight:600}
.card .who{font-size:13px;color:#c5cbc6}
.card .handle{color:var(--acid)}
.card .stats{font:10px var(--mono);color:var(--muted);letter-spacing:.04em}
.card .cta{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:6px}
.card .cta .outline-button{padding:8px 10px;font-size:9px}

/* Episode + blurb */
#listen{padding:42px 0;border-bottom:1px solid var(--line)}
.listen-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.slot{border:1px dashed #3a403b;padding:22px;min-height:140px;background:linear-gradient(180deg,#101214,#0c0e10)}
.slot h3{font-size:22px;margin-bottom:8px}
.slot p{color:#aeb3b0;margin:0 0 12px;font-size:14px}
.slot.ready{border-style:solid;border-color:#3a403b}
.slot audio,.slot video{width:100%;margin-top:8px}
.placeholder-note{font:11px/1.6 var(--mono);color:#e8c66a;letter-spacing:.04em}

/* Lede band */
.lede-band{display:grid;grid-template-columns:1fr auto;gap:12px 28px;align-items:center;padding:36px 0;border-bottom:1px solid var(--line)}
.lede-band .section-index{grid-column:1/-1}
.lede-band p{margin:0;font-size:18px;line-height:1.55;color:#d7dcd6;max-width:720px}
.lede-stats{display:flex;align-items:center;gap:10px}
.lede-stats b{font-family:var(--display);font-size:64px;letter-spacing:-.08em;line-height:1;color:var(--acid)}
.lede-stats span{font:10px/1.5 var(--mono);letter-spacing:.16em;color:var(--muted)}

/* QR section */
#qr{padding:48px 0;border-bottom:1px solid var(--line)}
.qr-grid{display:grid;grid-template-columns:minmax(220px,340px) 1fr;gap:40px;align-items:center}
.qr-stage{
  --qr-glow:var(--acid);
  --qr-flip-duration:13s;
  --qr-flip-delay:0s;
  position:relative;aspect-ratio:1;max-width:340px;width:100%;
  display:grid;place-items:center;
  perspective:1100px;
}
.qr-frame{
  position:relative;z-index:1;width:78%;
  background:transparent;padding:0;border:0;box-shadow:none;
  perspective:1100px;
  display:block;aspect-ratio:1;
  text-decoration:none;color:inherit;
}
.qr-card{
  display:block;
  position:relative;width:100%;height:100%;
  aspect-ratio:1;
  transform-style:preserve-3d;
  -webkit-transform-style:preserve-3d;
  animation:qrFlipY var(--qr-flip-duration,13s) var(--qr-flip-delay,0s) ease-in-out infinite;
}
.qr-face{
  position:absolute;inset:0;width:100%;height:100%;
  backface-visibility:hidden;-webkit-backface-visibility:hidden;
  border:2px solid var(--qr-glow);
  box-shadow:0 0 18px color-mix(in srgb,var(--qr-glow),transparent 55%);
  animation:qrGlow 3.2s ease-in-out infinite;
  overflow:hidden;
  box-sizing:border-box;
}
.qr-front{
  background:#f1f2ed;padding:10px;
  display:flex;flex-direction:column;
  transform:rotateY(0deg);
}
.qr-front img,.qr-front svg{width:100%;height:auto;flex:1 1 auto;min-width:0;min-height:0;aspect-ratio:1;object-fit:contain;display:block}
.qr-frame .mc-mark{
  position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);
  width:18%;aspect-ratio:1;border-radius:4px;background:var(--paper);
  display:grid;place-items:center;
  font:700 11px/1 var(--display);color:#090a0b;letter-spacing:-.06em;
  pointer-events:none
}
.qr-caption{display:block;text-align:center;font:8px var(--mono);letter-spacing:.16em;color:#222;background:var(--paper);padding:4px 0 2px;flex-shrink:0}
.qr-back{
  background:#090a0b;
  color:#d8ff39;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:10%;
  gap:6%;
  transform:rotateY(180deg);
}
.qr-back-word{
  font-family:var(--display);font-weight:700;
  font-size:22cqw;letter-spacing:-.07em;line-height:.86;
  color:#d8ff39;text-transform:uppercase;
}
.qr-back-week{
  font-family:var(--display);font-weight:700;
  font-size:11cqw;letter-spacing:-.06em;line-height:1;
  color:#d8ff39;text-transform:uppercase;
}
.qr-back-date{
  font:5.8cqw/1.3 var(--mono);letter-spacing:.12em;color:#d8ff39;text-transform:uppercase
}
.qr-back{container-type:inline-size;container-name:qr}
.qr-halo{position:absolute;inset:4%;border:1px solid var(--qr-glow);opacity:.45;pointer-events:none}
.qr-copy h2{margin-bottom:12px}
.qr-copy p{color:#aeb3b0;max-width:520px}
.qr-url{display:block;margin:8px 0;font:13px/1.5 var(--mono);color:var(--acid);word-break:break-all}

/* Flip loop: ~75% still and face-up so the code stays scannable, then a brief flip. */
@keyframes qrFlipY{0%,74%{transform:rotateY(0deg)}82%,90%{transform:rotateY(180deg)}98%,100%{transform:rotateY(360deg)}}
@keyframes qrFlipYn{0%,74%{transform:rotateY(0deg)}82%,90%{transform:rotateY(-180deg)}98%,100%{transform:rotateY(-360deg)}}
@keyframes qrFlipX{0%,74%{transform:rotateX(0deg)}82%,90%{transform:rotateX(180deg)}98%,100%{transform:rotateX(360deg)}}
@keyframes qrFlipXn{0%,74%{transform:rotateX(0deg)}82%,90%{transform:rotateX(-180deg)}98%,100%{transform:rotateX(-360deg)}}
@keyframes qrFlipD{0%,74%{transform:rotate3d(1,1,0,0deg)}82%,90%{transform:rotate3d(1,1,0,180deg)}98%,100%{transform:rotate3d(1,1,0,360deg)}}

body[data-flip-axis=y] .qr-card, [data-flip-axis=y] .qr-card{animation-name:qrFlipY}
body[data-flip-axis=yn] .qr-card, [data-flip-axis=yn] .qr-card{animation-name:qrFlipYn}
body[data-flip-axis=x] .qr-card, [data-flip-axis=x] .qr-card{animation-name:qrFlipX}
body[data-flip-axis=xn] .qr-card, [data-flip-axis=xn] .qr-card{animation-name:qrFlipXn}
body[data-flip-axis=d] .qr-card, [data-flip-axis=d] .qr-card{animation-name:qrFlipD}

body[data-flip-axis=x] .qr-back, [data-flip-axis=x] .qr-back{transform:rotateX(180deg)}
body[data-flip-axis=xn] .qr-back, [data-flip-axis=xn] .qr-back{transform:rotateX(-180deg)}
body[data-flip-axis=yn] .qr-back, [data-flip-axis=yn] .qr-back{transform:rotateY(-180deg)}
body[data-flip-axis=d] .qr-back, [data-flip-axis=d] .qr-back{transform:rotate3d(1,1,0,180deg)}

.qr-frame:hover .qr-card,
.qr-frame.is-flipped .qr-card,
.qr-frame:focus-visible .qr-card,
#flyQr:hover .qr-card,
#flyQr.is-flipped .qr-card{
  animation:none;
  transition:transform .65s cubic-bezier(.4,.12,.2,1);
}
body[data-flip-axis=y] .qr-frame:hover .qr-card,
body[data-flip-axis=y] .qr-frame.is-flipped .qr-card,
body[data-flip-axis=y] .qr-frame:focus-visible .qr-card,
body[data-flip-axis=y] #flyQr:hover .qr-card,
body[data-flip-axis=y] #flyQr.is-flipped .qr-card,
[data-flip-axis=y] .qr-frame:hover .qr-card,
[data-flip-axis=y] .qr-frame.is-flipped .qr-card{transform:rotateY(180deg)}
body[data-flip-axis=yn] .qr-frame:hover .qr-card,
body[data-flip-axis=yn] .qr-frame.is-flipped .qr-card,
body[data-flip-axis=yn] .qr-frame:focus-visible .qr-card,
body[data-flip-axis=yn] #flyQr:hover .qr-card,
body[data-flip-axis=yn] #flyQr.is-flipped .qr-card,
[data-flip-axis=yn] .qr-frame:hover .qr-card,
[data-flip-axis=yn] .qr-frame.is-flipped .qr-card{transform:rotateY(-180deg)}
body[data-flip-axis=x] .qr-frame:hover .qr-card,
body[data-flip-axis=x] .qr-frame.is-flipped .qr-card,
body[data-flip-axis=x] .qr-frame:focus-visible .qr-card,
body[data-flip-axis=x] #flyQr:hover .qr-card,
body[data-flip-axis=x] #flyQr.is-flipped .qr-card,
[data-flip-axis=x] .qr-frame:hover .qr-card,
[data-flip-axis=x] .qr-frame.is-flipped .qr-card{transform:rotateX(180deg)}
body[data-flip-axis=xn] .qr-frame:hover .qr-card,
body[data-flip-axis=xn] .qr-frame.is-flipped .qr-card,
body[data-flip-axis=xn] .qr-frame:focus-visible .qr-card,
body[data-flip-axis=xn] #flyQr:hover .qr-card,
body[data-flip-axis=xn] #flyQr.is-flipped .qr-card,
[data-flip-axis=xn] .qr-frame:hover .qr-card,
[data-flip-axis=xn] .qr-frame.is-flipped .qr-card{transform:rotateX(-180deg)}
body[data-flip-axis=d] .qr-frame:hover .qr-card,
body[data-flip-axis=d] .qr-frame.is-flipped .qr-card,
body[data-flip-axis=d] .qr-frame:focus-visible .qr-card,
body[data-flip-axis=d] #flyQr:hover .qr-card,
body[data-flip-axis=d] #flyQr.is-flipped .qr-card,
[data-flip-axis=d] .qr-frame:hover .qr-card,
[data-flip-axis=d] .qr-frame.is-flipped .qr-card{transform:rotate3d(1,1,0,180deg)}

/* Week-varying QR motion (applied to #flyQr and .qr-stage) */
@keyframes qrGlow{0%,100%{box-shadow:0 0 10px color-mix(in srgb,var(--qr-glow),transparent 60%)}50%{box-shadow:0 0 28px color-mix(in srgb,var(--qr-glow),transparent 20%)}}
@keyframes qrFlight{0%{left:8vw;top:16vh}12%{left:76vw;top:10vh}24%{left:87vw;top:48vh}38%{left:58vw;top:80vh}52%{left:14vw;top:70vh}66%{left:5vw;top:39vh}79%{left:45vw;top:19vh}91%{left:83vw;top:75vh}100%{left:8vw;top:16vh}}
@keyframes qrOrbit{0%{transform:rotate(0) translateX(28px) rotate(0)}100%{transform:rotate(360deg) translateX(28px) rotate(-360deg)}}
@keyframes qrFigure8{0%{transform:translate(0,0)}25%{transform:translate(22px,-16px)}50%{transform:translate(0,0)}75%{transform:translate(-22px,-16px)}100%{transform:translate(0,0)}}
@keyframes qrPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes qrScan{
  0%,100%{filter:none}
  40%{filter:drop-shadow(0 0 12px var(--qr-glow))}
  50%{filter:drop-shadow(0 18px 0 color-mix(in srgb,var(--qr-glow),transparent 40%))}
}
@keyframes qrPendulum{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(9deg)}}
@keyframes qrPrism{0%{filter:hue-rotate(0)}100%{filter:hue-rotate(360deg)}}
@keyframes qrSpin{to{transform:rotate(360deg)}}

#flyQr{
  position:fixed;z-index:12;left:8vw;top:16vh;width:88px;height:auto;
  perspective:700px;cursor:pointer;aspect-ratio:1;
}
#flyQr .qr-frame{width:100%;padding:0;display:block;aspect-ratio:1;box-sizing:border-box}
#flyQr .qr-front{padding:4px}
#flyQr .qr-caption{font-size:5px;letter-spacing:.1em;padding:2px 0;line-height:1.2}
#flyQr .mc-mark{font-size:7px;top:46%}
#flyQr:hover{animation-play-state:paused;z-index:18}
body[data-qr=flight] #flyQr{animation:qrFlight 38s linear infinite}
body[data-qr=orbit] #flyQr{left:auto;right:22px;top:22%;animation:qrOrbit 14s linear infinite}
body[data-qr=figure8] #flyQr{left:auto;right:28px;top:28%;animation:qrFigure8 7s ease-in-out infinite}
body[data-qr=pulse] #flyQr{left:auto;right:18px;top:24%;animation:qrPulse 2.6s ease-in-out infinite}
body[data-qr=scan] #flyQr{left:auto;right:18px;top:22%;animation:qrScan 3.4s linear infinite}
body[data-qr=pendulum] #flyQr{left:auto;right:28px;top:26%;transform-origin:top center;animation:qrPendulum 3.8s ease-in-out infinite}
body[data-qr=prism] #flyQr{left:auto;right:18px;top:22%;animation:qrPrism 10s linear infinite}

.qr-stage[data-style=flight] .qr-halo{animation:qrSpin 18s linear infinite}
.qr-stage[data-style=orbit] .qr-halo{animation:qrOrbit 10s linear infinite;inset:-4%}
.qr-stage[data-style=figure8]{animation:qrFigure8 6s ease-in-out infinite}
.qr-stage[data-style=figure8] .qr-face{animation:qrGlow 3.2s ease-in-out infinite}
.qr-stage[data-style=pulse]{animation:qrPulse 2.4s ease-in-out infinite}
.qr-stage[data-style=pulse] .qr-face{animation:qrGlow 3.2s ease-in-out infinite}
.qr-stage[data-style=scan] .qr-front:after{
  content:"";position:absolute;left:0;right:0;height:3px;background:var(--qr-glow);
  animation:scanLine 2.8s linear infinite;opacity:.85;pointer-events:none
}
@keyframes scanLine{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}100%{top:100%;opacity:0}}
.qr-stage[data-style=pendulum]{transform-origin:top center;animation:qrPendulum 4s ease-in-out infinite}
.qr-stage[data-style=prism] .qr-face{animation:qrPrism 9s linear infinite,qrGlow 3.2s ease-in-out infinite}

/* Charts / listening room */
#charts{padding:52px 0 28px}
.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px}
.genre-nav{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--line);margin-bottom:28px;position:sticky;top:52px;background:color-mix(in srgb,var(--bg),transparent 8%);backdrop-filter:blur(10px);z-index:8}
.genre-nav a,.genre-nav button{
  appearance:none;background:none;border:0;border-bottom:1px solid transparent;
  color:var(--paper);font:11px var(--mono);letter-spacing:.14em;text-transform:uppercase;
  padding:12px 16px;cursor:pointer;text-decoration:none;margin-bottom:-1px
}
.genre-nav a:hover,.genre-nav button:hover{color:var(--acid);text-decoration:none}
.genre-nav a.is-on,.genre-nav button.is-on,.genre-nav a[aria-current],.genre-nav button[aria-selected=true]{
  color:var(--acid);border-bottom-color:var(--acid)
}

.chart-section{--accent:var(--acid);padding:8px 0 48px}
.chart-head{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}
.chart-title .section-index{color:var(--accent)}
.chart-title p{margin:6px 0 0;color:var(--muted);font-size:14px}
.master-card{
  display:flex;align-items:center;gap:13px;
  border:1px solid #343738;padding:10px 12px 10px 10px;border-radius:70px;min-width:min(100%,280px)
}
.master-ring{
  width:52px;height:52px;border:1px solid var(--accent);border-radius:50%;
  display:grid;place-items:center;position:relative;color:var(--accent);font:9px var(--mono)
}
.master-ring i{position:absolute;inset:-4px;border:1px solid color-mix(in srgb,var(--accent),transparent 78%);border-radius:50%;animation:qrSpin 8s linear infinite}
.master-copy{display:flex;flex-direction:column;gap:2px}
.master-copy b{font:11px var(--mono);letter-spacing:.12em}
.master-copy span{font:10px var(--mono);color:var(--muted)}
.master-button{
  margin-left:auto;width:42px;height:42px;border-radius:50%;
  border:0;background:var(--accent);color:#111;font-size:16px;cursor:pointer;line-height:1
}
.master-button.active{background:var(--paper)}
.master-button:disabled{opacity:.35;cursor:not-allowed}

.art-strip{height:122px;display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:22px 0 16px;overflow:hidden}
.art-cell{position:relative;background:center/cover no-repeat var(--art,#16191a);overflow:hidden}
.art-cell span{position:absolute;left:8px;bottom:6px;font:10px var(--mono);color:#fff;text-shadow:0 1px 4px #000}
.art-cell:after{content:"";position:absolute;inset:6px;border:1px solid #fff2;animation:pulse 5s ease-in-out alternate infinite;animation-delay:var(--delay,0s)}
.shape-1{clip-path:polygon(8% 0,100% 0,92% 100%,0 100%)}
.shape-2{clip-path:circle(48% at 50% 50%)}
.shape-3{clip-path:polygon(50% 0,100% 38%,82% 100%,18% 100%,0 38%)}
.shape-4{clip-path:polygon(0 12%,88% 0,100% 88%,12% 100%)}

/* Visualizer stage over artwork */
.viz-stage.is-on{display:grid}
.viz-stage{
  display:none;grid-template-columns:minmax(200px,280px) 1fr;gap:22px;
  align-items:center;margin:8px 0 22px;
  border:1px solid var(--line);background:#0c0e10;padding:14px
}
.viz-artwrap{position:relative;aspect-ratio:1;background:#16191a;overflow:hidden}
.viz-artwrap img{width:100%;height:100%;object-fit:cover;display:block}
.viz-artwrap canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.viz-artwrap .viz-idle{position:absolute;inset:0;display:grid;place-items:center;font:10px var(--mono);letter-spacing:.14em;color:#fff9;text-align:center;padding:12px;background:#0004}
.viz-meta .now-kicker{font:10px var(--mono);letter-spacing:.16em;color:var(--accent);text-transform:uppercase;margin:0 0 6px}
.viz-meta h3{font-size:26px;margin:0 0 6px}
.viz-meta .who{color:#c5cbc6;margin:0 0 8px}
.viz-meta .time{font:12px var(--mono);color:var(--muted)}
.viz-note{font:10px var(--mono);color:#e8c66a;margin:8px 0 0}
.viz-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.icon-btn{
  width:38px;height:38px;border:1px solid var(--line);background:var(--panel);
  color:var(--paper);cursor:pointer;font-size:14px
}
.icon-btn.solid{background:var(--accent);color:#111;border-color:var(--accent)}

.track-list{margin-top:4px}
.track-row{
  min-height:76px;border-top:1px solid #242728;
  display:grid;grid-template-columns:34px 50px 1fr auto auto 26px;
  gap:14px;align-items:center;transition:background .2s
}
.track-row:last-child{border-bottom:1px solid #242728}
.track-row.playing{background:linear-gradient(90deg,color-mix(in srgb,var(--accent),transparent 90%),transparent)}
.rank{font:13px var(--mono);color:var(--muted)}
.cover-play{position:relative;width:50px;height:50px;padding:0;border:0;background:#16191a;cursor:pointer}
.cover-play img{width:100%;height:100%;object-fit:cover}
.cover-play span{
  position:absolute;inset:0;display:grid;place-items:center;
  background:#0005;color:#fff;font-size:13px;opacity:0;transition:opacity .15s
}
.cover-play:hover span,.track-row.playing .cover-play span{opacity:1}
.track-info{min-width:0}
.track-info a{color:var(--paper);font-family:var(--display);font-weight:600;letter-spacing:-.03em;font-size:16px}
.track-info a:hover{color:var(--acid)}
.track-info span{display:block;font-size:12px;color:var(--muted)}
.track-info i{font-style:normal;opacity:.5;padding:0 4px}
.track-metrics{font:10px var(--mono);color:var(--muted);text-align:right;display:flex;flex-direction:column;gap:3px}
.track-out{color:var(--paper);opacity:.6;text-decoration:none;font-size:16px}
.track-out:hover{opacity:1;color:var(--acid);text-decoration:none}
.empty{color:var(--muted);font-size:14px;padding:18px 0}

/* Playlist */
#playlist{padding:42px 0;border-top:1px solid var(--line)}
.checklist{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:16px 0}
.checklist fieldset{border:1px solid var(--line);margin:0;padding:12px 14px}
.checklist legend{font:11px var(--mono);letter-spacing:.14em;color:var(--acid);padding:0 6px}
.checklist label{display:flex;gap:8px;align-items:flex-start;padding:6px 0;font-size:13px;border-bottom:1px solid #1c2021;cursor:pointer}
.checklist label.done{color:var(--muted);text-decoration:line-through}
.checklist label:last-child{border:0}
.progress{font:12px var(--mono);color:var(--muted)}

/* Archive + about + last word */
#archive{padding:42px 0;border-top:1px solid var(--line)}
.filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.filters input[type=search]{flex:1;min-width:200px}
.arch{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.arch .card ul{margin:8px 0;padding-left:18px;color:#c5cbc6;font-size:13px}
.arch .card h3{font-size:20px;margin:4px 0 8px}

#about{padding:42px 0 20px;border-top:1px solid var(--line)}
#about p{max-width:760px;color:#c5cbc6}
#about code{font:12px var(--mono);color:var(--acid)}

.editor-note{display:grid;grid-template-columns:1fr auto auto;gap:28px;align-items:center;padding:28px 0 52px;border-top:1px solid var(--line)}
.editor-note p{color:#c5cbc6;max-width:460px}
.editor-stamp{font:11px/1.4 var(--mono);letter-spacing:.16em;color:var(--acid);text-align:right;border:1px solid var(--acid);padding:18px}
.editor-stamp b{display:block;font-size:22px;margin-top:8px}

/* Signup */
.signup{
  border:1px solid var(--line);padding:28px;background:var(--panel);max-width:520px
}
.signup h3{margin-bottom:8px}
.signup p{color:#aeb3b0;font-size:14px;margin:0 0 16px}
.signup label{display:block;font:10px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:10px 0 6px}
.signup input{width:100%}
.signup .row{display:grid;gap:8px}
.signup .form-note{font:11px var(--mono);color:var(--muted);margin-top:10px}
.signup .form-note a{color:var(--acid)}

/* Sticky player */
.sticky-player{
  position:fixed;left:0;right:0;bottom:0;z-index:17;
  background:#0c0e10f2;backdrop-filter:blur(12px);
  border-top:1px solid #343738;
  transform:translateY(110%);transition:transform .28s ease;
  padding:8px 18px
}
.sticky-player.on{transform:translateY(0)}
.sticky-inner{max-width:1240px;margin:auto;display:grid;grid-template-columns:56px 1fr auto auto;gap:14px;align-items:center}
.sticky-art{position:relative;width:56px;height:56px;background:#16191a;overflow:hidden}
.sticky-art img,.sticky-art canvas{position:absolute;inset:0;width:100%;height:100%}
.sticky-art canvas{pointer-events:none}
.sticky-info{min-width:0}
.sticky-info .k{font:9px var(--mono);letter-spacing:.14em;color:var(--acid);text-transform:uppercase}
.sticky-info .t{font-family:var(--display);font-weight:600;letter-spacing:-.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sticky-info .a{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sticky-controls{display:flex;align-items:center;gap:6px}
.sticky-time{font:11px var(--mono);color:var(--muted);min-width:92px;text-align:right}
.progbar{height:3px;background:#232628;width:100%;margin-top:6px;position:relative}
.progbar > i{display:block;height:100%;background:var(--acid);width:0}

/* Footer, modal, toast */
footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:28px 68px 48px;border-top:1px solid var(--line);font:11px var(--mono);letter-spacing:.1em;color:var(--muted)}
.footer-brand{color:var(--paper);text-decoration:none;font-weight:600}
.footer-mail{color:var(--paper)}

.modal-backdrop,.video-backdrop{
  position:fixed;z-index:22;inset:0;background:#050606d9;
  display:grid;place-items:center;padding:20px;
  opacity:0;visibility:hidden;transition:.25s
}
.modal-backdrop.open,.video-backdrop.open{opacity:1;visibility:visible}
.modal{position:relative;width:min(480px,100%);background:#111415;border:1px solid #3a403b;padding:42px}
.modal h2{margin-bottom:8px}
.modal p{color:#aeb3b0}
.modal form{display:grid;gap:12px}
.modal label{font:10px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.modal input,.modal textarea{width:100%;margin-top:6px}
.modal-close{
  position:absolute;top:12px;right:14px;border:0;background:none;
  color:var(--paper);font-size:28px;cursor:pointer;line-height:1
}
.video-dialog{width:min(720px,100%);display:grid;gap:10px}
.video-dialog iframe,.video-dialog video{width:100%;aspect-ratio:16/9;border:0;background:#000}

.toast{
  position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);
  background:#16191a;border:1px solid var(--acid);color:var(--paper);
  padding:10px 16px;font:12px var(--mono);opacity:0;visibility:hidden;transition:.25s;z-index:30
}
body.player-on .toast{bottom:calc(var(--player-h) + 20px)}
.toast.show{opacity:1;visibility:visible;transform:translate(-50%,0)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

@media(max-width:980px){
  .spot{grid-template-columns:repeat(2,1fr)}
  .spot .card:last-child{grid-column:1/-1}
  .listen-grid,.qr-grid,.hero{grid-template-columns:1fr}
  .lede-band{grid-template-columns:1fr auto;gap:14px}
  .lede-band .section-index{grid-column:1/-1}
  .editor-note{grid-template-columns:1fr;gap:18px}
  .viz-stage{grid-template-columns:160px 1fr}
}
@media(max-width:760px){
  .masthead,main,footer,.page-pad{padding-left:28px;padding-right:28px}
  footer{padding:24px 28px 40px}
  .edge-date{left:7px;top:9px;font-size:8px;padding:7px 8px}
  .share-rail{right:7px;padding:10px 7px}
  .masthead{padding-top:48px}
  .hero{min-height:610px;align-content:start}
  .hero-copy{padding:40px 0 200px;position:relative;z-index:2}
  .hero-art{position:absolute;right:-54px;bottom:0;width:75%;height:340px;opacity:.82;min-height:0}
  .hero-disc{width:250px;height:250px}
  .orbit{width:280px;height:280px}
  .orbit-two{width:350px;height:350px}
  .hero-vertical{right:auto;left:0;top:auto;bottom:22px}
  .hero-caption{bottom:20px;right:6px}
  .spot{grid-template-columns:1fr 1fr}
  .art-strip{height:86px;gap:5px}
  .track-row{grid-template-columns:23px 43px 1fr 26px;gap:8px}
  .track-metrics{display:none}
  .master-card{min-width:min(100%,320px)}
  .sticky-inner{grid-template-columns:48px 1fr;gap:10px}
  .sticky-controls{grid-column:1/-1;justify-content:space-between}
  .viz-stage{grid-template-columns:1fr}
  #flyQr{width:68px;left:5vw;top:12vh}
  h1{font-size:clamp(44px,14vw,72px)}
}
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  #flyQr{animation:none!important;left:auto!important;right:12px;top:72px}
  .qr-stage,.qr-frame,.qr-halo,.qr-card,.qr-face{animation:none!important}
  /* Instant flip only on hover/tap — no looping motion. */
  body[data-flip-axis=y] .qr-frame:hover .qr-card,
  body[data-flip-axis=y] .qr-frame.is-flipped .qr-card,
  body[data-flip-axis=y] #flyQr:hover .qr-card,
  body[data-flip-axis=y] #flyQr.is-flipped .qr-card{transform:rotateY(180deg)}
  body[data-flip-axis=yn] .qr-frame:hover .qr-card,
  body[data-flip-axis=yn] .qr-frame.is-flipped .qr-card,
  body[data-flip-axis=yn] #flyQr:hover .qr-card,
  body[data-flip-axis=yn] #flyQr.is-flipped .qr-card{transform:rotateY(-180deg)}
  body[data-flip-axis=x] .qr-frame:hover .qr-card,
  body[data-flip-axis=x] .qr-frame.is-flipped .qr-card,
  body[data-flip-axis=x] #flyQr:hover .qr-card,
  body[data-flip-axis=x] #flyQr.is-flipped .qr-card{transform:rotateX(180deg)}
  body[data-flip-axis=xn] .qr-frame:hover .qr-card,
  body[data-flip-axis=xn] .qr-frame.is-flipped .qr-card,
  body[data-flip-axis=xn] #flyQr:hover .qr-card,
  body[data-flip-axis=xn] #flyQr.is-flipped .qr-card{transform:rotateX(-180deg)}
  body[data-flip-axis=d] .qr-frame:hover .qr-card,
  body[data-flip-axis=d] .qr-frame.is-flipped .qr-card,
  body[data-flip-axis=d] #flyQr:hover .qr-card,
  body[data-flip-axis=d] #flyQr.is-flipped .qr-card{transform:rotate3d(1,1,0,180deg)}
}
