:root{
  --bg:#0b0a14; --bg2:#171230; --ink:#f4efe6; --dim:#9c97b4;
  --red:#ff2a3d; --red-glow:rgba(255,42,61,.65); --amber:#ffb627;
  --pop:#ff4f9a; --pop-bg:#3a1530; --neil:#35d0ff; --neil-bg:#10303d;
  --namio:#ffb627; --namio-bg:#3a2c10; --music-bg:#241c4a;
  --pop-live:#5e3220; --pop-live-edge:#d9894f; --pop-live-glow:rgba(217,137,79,.35);
  --neil-live:#143f58; --neil-live-edge:#4aa8d8; --neil-live-glow:rgba(74,168,216,.35);
  --namio-live:#5a2340; --namio-live-edge:#d8789f; --namio-live-glow:rgba(216,120,159,.35);
  --music-live:#352c70; --music-live-edge:#8f82e0; --music-live-glow:rgba(143,130,224,.35);
  --timeslip-top:16px; /* タイムスリップの窓の、画面の上端からの間隔（額縁の中でも上寄せ） */
  --sky-height:140px; /* 星の夜空の帯の高さ（120〜160px） */
  --lights-down-dim:.7; /* 灯りを落としたときの背景・周りの明るさ（1 = いつも。字は落とさない） */
  --font-head:'Bungee','Zen Kaku Gothic New',sans-serif;
  --font-body:'Zen Kaku Gothic New',sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:radial-gradient(ellipse at 50% -10%,var(--bg2),var(--bg) 60%) fixed;color:var(--ink);font-family:var(--font-body);line-height:1.7}
.station{max-width:760px;margin:0 auto;padding:24px 16px 64px}
.masthead{text-align:center;padding:24px 0 8px}
.lamp{display:inline-flex;align-items:center;gap:10px;padding:6px 18px;border:2px solid var(--dim);border-radius:999px;color:var(--dim);font-family:var(--font-head);letter-spacing:.12em;font-size:.95rem}
.lamp__bulb{width:14px;height:14px;border-radius:50%;background:#3a3a48}
.lamp.is-on-air{border-color:var(--red);color:var(--red)}
.lamp.is-on-air .lamp__bulb{background:var(--red);box-shadow:0 0 14px 4px var(--red-glow);animation:pulse 2.6s ease-in-out infinite}
.lamp.is-on-air .lamp__text{text-shadow:0 0 10px var(--red-glow)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}
.callsign{font-family:var(--font-head);font-size:clamp(4rem,22vw,8rem);line-height:1;margin:18px 0 6px;letter-spacing:.06em;color:#ffe9f4;text-shadow:0 0 6px #fff,0 0 18px var(--pop),0 0 38px var(--pop),0 0 70px rgba(255,79,154,.55),3px 3px 0 rgba(53,208,255,.55);opacity:.55}
.callsign.is-on-air{opacity:1;animation:neon 5s linear infinite}
@keyframes neon{0%,18%,22%,62%,64%,100%{opacity:1}20%,63%{opacity:.7}}
.station-name{margin:14px 0 0;font-size:1.4rem;font-weight:700}
.tagline{margin:0;color:var(--dim);font-family:var(--font-head);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase}
.panel{margin:28px 0;padding:18px;border:1px solid #2c2748;border-radius:14px;background:rgba(255,255,255,.03);text-align:center}
.offair-message,.norecording-message{margin:0;font-size:1.05rem}
.btn{font-family:var(--font-head);font-size:1rem;color:var(--ink);background:var(--red);border:0;border-radius:10px;padding:10px 22px;cursor:pointer;box-shadow:0 4px 0 #8c1523}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 #8c1523}
.episode{margin:28px 0}
.episode__head{display:flex;flex-wrap:wrap;align-items:center;gap:12px;justify-content:space-between;border-bottom:2px dashed #2c2748;padding-bottom:10px;margin-bottom:16px}
.episode__title{margin:0;font-size:1.2rem}
.script{display:flex;flex-direction:column;gap:12px}
.line{max-width:86%;padding:10px 14px;border-radius:16px;background:#1d1a33;border:2px solid transparent;transition:background-color .45s ease,border-color .45s ease,box-shadow .45s ease,opacity .45s ease,filter 2.4s ease}
.line__who{display:block;font-size:.75rem;font-weight:700;letter-spacing:.08em;margin-bottom:2px}
.line__text{margin:0;overflow-wrap:anywhere}
.line--pop{align-self:flex-start;background:var(--pop-bg);border-bottom-left-radius:4px}
.line--pop .line__who{color:var(--pop)}
.line--neil{align-self:flex-end;background:var(--neil-bg);border-bottom-right-radius:4px;text-align:right}
.line--neil .line__who{color:var(--neil)}
.line--neil .line__text{text-align:left} /* カードは右寄せ・名前は右・セリフの文は左揃え（🌹 2026-10-04） */
.line--namio{align-self:center;max-width:94%;background:var(--namio-bg);border-style:dashed;border-color:var(--namio)}
.line--namio .line__who{color:var(--namio)}
.line--music{align-self:center;max-width:94%;background:var(--music-bg);text-align:center;font-style:italic;color:var(--dim)}
.line.is-done{opacity:.55}
.line--pop.is-speaking{background:var(--pop-live);border-color:var(--pop-live-edge);box-shadow:0 0 18px var(--pop-live-glow)}
.line--neil.is-speaking{background:var(--neil-live);border-color:var(--neil-live-edge);box-shadow:0 0 18px var(--neil-live-glow)}
.line--namio.is-speaking{background:var(--namio-live);border-color:var(--namio-live-edge);box-shadow:0 0 18px var(--namio-live-glow)}
.line--music.is-speaking{background:var(--music-live);border-color:var(--music-live-edge);box-shadow:0 0 18px var(--music-live-glow)}
.fatal{margin:24px 0;padding:16px;border:2px solid var(--red);border-radius:10px;background:#2a0b10;color:#ffd9dd;font-family:monospace;white-space:pre-wrap}
.song-card{margin-top:10px;padding:12px;border:1px solid var(--amber);border-radius:12px;background:rgba(0,0,0,.25);text-align:left;font-style:normal;color:var(--ink)}
.song-card__heading{margin:0 0 4px;font-family:var(--font-head);font-size:.9rem;letter-spacing:.06em;color:var(--amber)}
.song-card__title{margin:0;font-size:1.1rem;font-weight:700}
.song-card__artist{margin:0 0 8px;color:var(--dim)}
.song-card__embed{display:block;width:100%;height:175px;border:0;border-radius:12px;background:#000}
.song-card__link{display:inline-block;margin-top:8px;color:var(--neil)}
.song-card__pending{margin:0;color:var(--dim)}
.btn--small{font-size:.85rem;padding:6px 14px}
[hidden]{display:none !important}
@media (max-width:480px){.line{max-width:94%}.btn{padding:10px 16px}}

/* ---- 入口ページ・アバター・共通の追加 ---- */
a.btn{display:inline-block;text-decoration:none;text-align:center}
.topnav{padding:4px 0 0}
.topnav__link{color:var(--neil);font-weight:700;text-decoration:none}
.topnav__link:hover{text-decoration:underline}
.topnav--bottom{margin-top:40px;padding:16px 0 0;border-top:1px solid #2c2748;text-align:center}
body.page-episode .callsign{font-size:clamp(2.6rem,12vw,4.4rem)}

.avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;overflow:hidden;border-radius:50%;border:3px solid var(--dim);background:var(--bg2)}
.avatar--pop{border-color:var(--pop)}
.avatar--neil{border-color:var(--neil)}
.avatar--namio{border-color:var(--namio)}
.avatar__img{display:block;width:100%;height:100%;object-fit:cover}
.avatar__initial{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-family:var(--font-head);font-size:1.4rem;color:var(--ink)}
.avatar--pop .avatar__initial{background:var(--pop-bg)}
.avatar--neil .avatar__initial{background:var(--neil-bg)}
.avatar--namio .avatar__initial{background:var(--namio-bg)}
.avatar--line{width:44px;height:44px;margin-top:2px}
.avatar--dj{width:84px;height:84px}
.avatar--dj .avatar__initial{font-size:2rem}

.line--has-avatar{display:flex;gap:10px;align-items:flex-start}
.line--neil.line--has-avatar{flex-direction:row-reverse}
.line__body{min-width:0;flex:1}

.dial{margin:22px 0 8px;text-align:center}
.dial__wrap{max-width:560px;margin:0 auto}
.dial__svg{display:block;width:100%;height:auto}
.dial__plate{fill:#120f26;stroke:var(--amber);stroke-width:2}
.dial__tick{stroke:var(--dim);stroke-width:1.5}
.dial__tick--major{stroke:var(--amber);stroke-width:2.5}
.dial__num{fill:var(--amber);font-family:var(--font-head);font-size:13px}
.dial__needle{stroke:var(--red);stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 0 4px var(--red-glow));animation:sway 7s ease-in-out infinite}
@keyframes sway{0%,100%{transform:translateX(0)}50%{transform:translateX(3px)}}
.dial__caption{margin:8px 0 0;color:var(--amber);font-family:var(--font-head);font-size:.85rem;letter-spacing:.2em}

.block{margin:36px 0}
.block__heading{margin:0 0 14px;font-family:var(--font-head);font-size:1.15rem;letter-spacing:.14em;color:var(--amber);border-bottom:2px dashed #2c2748;padding-bottom:8px}
.djs__list,.schedule__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}
.dj{display:flex;gap:16px;align-items:center;padding:14px;border:2px solid #2c2748;border-radius:16px;background:rgba(255,255,255,.04)}
.dj:nth-child(odd){transform:rotate(-.6deg)}
.dj:nth-child(even){transform:rotate(.6deg)}
.dj--pop{border-color:var(--pop)}
.dj--neil{border-color:var(--neil)}
.dj--namio{border-color:var(--namio)}
.dj__text{min-width:0}
.dj__name{margin:0;font-size:1.25rem;font-weight:700}
.dj__role{margin:0;color:var(--amber);font-family:var(--font-head);font-size:.75rem;letter-spacing:.14em}
.dj__bio{margin:6px 0 0;overflow-wrap:anywhere}

.show{padding:16px;border:2px dashed var(--amber);border-radius:16px;background:linear-gradient(135deg,var(--bg2),#1d1236)}
.show__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px}
.show__number{margin:0;padding:2px 12px;border-radius:999px;background:var(--pop);color:var(--bg);font-family:var(--font-head);font-size:.9rem}
.show__title{margin:0;font-size:1.2rem}
.show__songs{list-style:none;margin:12px 0;padding:0;display:flex;flex-direction:column;gap:4px}
.show__song{display:flex;gap:8px}
.show__mark{color:var(--amber)}
.show__listen{margin-top:4px}
.about__text{margin:0}
.voice-note{margin:32px 0 0;color:var(--dim);font-size:.8rem}

@media (prefers-reduced-motion:reduce){.callsign.is-on-air,.dial__needle,.lamp.is-on-air .lamp__bulb{animation:none}}
@media (max-width:480px){.dj{flex-direction:column;text-align:center}.avatar--line{width:36px;height:36px}}

/* ---- パート（音声）と曲カードの並び ---- */
.part{margin:28px 0 0}
.part__heading{margin:0 0 10px;font-family:var(--font-head);font-size:1rem;letter-spacing:.1em;color:var(--pop)}
.part__player{position:sticky;top:0;z-index:5;padding:8px 0;background:var(--bg)}
.part__audio{display:block;width:100%}
.part .script{margin-top:12px}
.song-stop{margin:20px 0 8px;scroll-margin-top:16px}
.song-stop .song-card{margin-top:0;transition:box-shadow .5s ease,border-color .5s ease,background-color .5s ease}
.song-card.is-spotlight{border-width:2px;background:rgba(255,182,39,.12);box-shadow:0 0 22px 4px rgba(255,182,39,.45)}
.song-stop__actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:14px}
.song-stop__final{margin:0;color:var(--amber);text-align:center;flex-basis:100%}
/* スキ（ハート）: 見た目は /js/suki.js。ここは置き場所だけ。番組表の各回は右下（「聴く ▶」と同じ行・題名には余白を掛けない）、放送ページは最後に中央寄せ。 */
.show{position:relative}
.show .tsuk-suki{position:absolute;right:12px;bottom:14px}
/* ハートの色は窓のネオンのピンク。suki.js が後から足す suki.css（.tsuk-suki{--tsuk-suki-color:…}・押下も currentColor）に勝つよう body を付ける */
body .tsuk-suki{--tsuk-suki-color:var(--pop)}
body .tsuk-suki:hover{background:color-mix(in srgb,var(--pop) 12%,transparent)}
.suki-row{display:flex;justify-content:center;margin:32px 0 0}

/* ---- タイムスリップの確認の窓（OFF AIR のとき）---- */
.btn--slip{display:block;margin:14px auto 0;min-height:44px;padding:8px 22px;background:transparent;border:1px solid var(--amber);border-radius:10px;color:var(--ink);font-family:var(--font-body);font-size:.9rem;cursor:pointer}
.btn--slip:hover{background:rgba(255,182,39,.12)}
.btn--slip:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.timeslip{margin:var(--timeslip-top) auto auto;max-width:min(92vw,440px);padding:20px 18px;border:2px solid var(--amber);border-radius:16px;background:linear-gradient(135deg,var(--bg2),#1d1236);color:var(--ink);box-shadow:0 0 30px rgba(255,182,39,.25)}
.timeslip::backdrop{background:rgba(4,3,12,.78);animation:timeslip-fade .4s ease}
.timeslip[open]{animation:timeslip-fade .4s ease}
.timeslip__message{max-width:100%;margin:0 0 16px;text-align:left}
.timeslip__message .line__text+.line__text{margin-top:6px}
.timeslip__actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.btn--quiet{background:#2c2748;box-shadow:0 4px 0 #14112a}
@keyframes timeslip-fade{from{opacity:0}to{opacity:1}}

/* ---- 「灯りを、少し落とします」: 部屋を落として、曲だけを灯す ---- */
/* 台本の行・パート見出し・プレーヤー・見出し部分・パネルに brightness を掛ける（明るさは --lights-down-dim 1 つ）。 */
/* .song-stop（曲カードと「続きを聴く」）には掛けない = 灯ったまま。話し中の行（.is-speaking）も他の行と同じく落とす。 */
.part__heading,.part__player,.masthead,.topnav,.panel{transition:filter 2.4s ease}
body.is-lights-down .line,body.is-lights-down .part__heading,body.is-lights-down .part__player,body.is-lights-down .masthead,body.is-lights-down .topnav,body.is-lights-down .panel{filter:brightness(var(--lights-down-dim))}
/* 灯りを落としても、いま話している行には小さな灯りを残す（🌻 ポップ判断・🕵️ ニール 10/06） */
body.is-lights-down .line.is-speaking{filter:none}
/* ---- 星の夜空（星の行を含むパートの中の帯。画面全体ではない・灯りの filter が掛かる要素の子にしない）---- */
.sky{display:block;width:100%;height:var(--sky-height);margin:2px 0;border-radius:14px;background:linear-gradient(180deg,#05040e,var(--bg2))}
.star{fill:#fff8e1;opacity:0}
.sky.is-stars-lit .star{opacity:1;animation:star-on 1.4s ease backwards,star-twinkle 3.8s ease-in-out infinite;animation-delay:var(--star-delay),calc(var(--star-delay) + 1.4s)}
.star--d1{--star-delay:0s}
.star--d2{--star-delay:.5s}
.star--d3{--star-delay:1s}
.star--d4{--star-delay:1.5s}
.star--d5{--star-delay:2s}
@keyframes star-on{from{opacity:0}to{opacity:1}}
@keyframes star-twinkle{0%,100%{opacity:1}50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){.sky.is-stars-lit .star{animation:none}.timeslip[open],.timeslip::backdrop{animation:none}.line{transition:background-color .45s ease,border-color .45s ease,box-shadow .45s ease,opacity .45s ease}.part__heading,.part__player,.masthead,.topnav,.panel{transition:none}}

/* ---- 最後の札（終わりの言葉と夜番日誌・番組の最後にだけ出る）---- */
.final-card{display:flex;flex-direction:column;align-items:center;gap:14px;flex-basis:100%}
.final-card .line--neil{align-self:center;max-width:100%;text-align:left}
.final-card__log .line__text{color:var(--dim);font-size:.9rem}
