/* The live page: the player markup is built by live.js (ported verbatim), so
   these class names are its contract. Restyled to the tokens; the weave stays. */
.stations{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.station{padding-bottom:16px}
.station>h3{margin-bottom:12px}
.station .cam-slot{margin:0 -22px}
.station .mgrid{grid-template-columns:1.05fr .95fr;margin-top:16px}
.station .blueprint{margin-top:14px}
.station .job{margin-top:14px}
.page-live .hero.short .wrap{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(30px,5vw,80px);align-items:center}
.hero-tools{display:grid;gap:18px;justify-items:end}
.hero-tools .clk{font-size:2.6rem}
.radio{background:var(--surface);border:1px solid var(--line);padding:12px 14px;display:grid;gap:8px;justify-items:start;min-width:220px}
.radio .k{font-family:var(--f-inst);font-size:.66rem;color:rgb(156 246 221 / .5);letter-spacing:.06em;text-transform:uppercase}
.radio .music-btn{border:0;padding:0;background:none}
.stream-box{position:relative;background:#0a0c0b;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);aspect-ratio:16/9}
.stream-box video{width:100%;height:100%;object-fit:contain;display:block;background:#000}
.stream-overlay{display:none;position:absolute;left:0;right:0;top:0;padding:14px 16px;background:linear-gradient(180deg,rgb(0 0 0 / .6),transparent);z-index:3}
.stream-box.live .stream-overlay{display:block}
.overlay-top{display:flex;align-items:center;gap:9px}
.overlay-dot{width:9px;height:9px;border-radius:50%;background:var(--live);box-shadow:0 0 6px var(--live),0 0 14px var(--live);animation:pulse 1.4s ease-in-out infinite;flex-shrink:0}
.overlay-printer{font-family:var(--f-head);font-weight:500;font-size:1.2rem;color:#fff}
.overlay-live{font-family:var(--f-inst);font-size:.7rem;letter-spacing:.14em;color:#f0b9a3}
.offline-msg{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--ink-2);text-align:center;padding:22px;z-index:2}
.offline-msg .name{font-family:var(--f-head);font-size:1.6rem;color:var(--ink-1);margin-bottom:6px}
.offline-msg p{margin:0;font-size:.95rem;max-width:34ch}
.stream-box.live .offline-msg{display:none}
.wm{position:absolute;right:14px;bottom:12px;display:flex;align-items:center;gap:6px;z-index:3}
.wm svg{width:26px;height:26px;filter:drop-shadow(0 1px 3px rgb(0 0 0 / .6))}
.wm span{font-family:var(--f-mark);font-weight:800;font-size:12px;color:#fff;text-shadow:0 1px 3px rgb(0 0 0 / .7)}
.weave{position:absolute;inset:0;width:100%;height:100%;z-index:1}
.stream-box.live .weave{display:none}
.weave .lnode{animation:lv-glint 8s ease-in-out infinite}
.weave .lsheen{transform:translateX(-60%);animation:lv-travel 11s linear infinite;mix-blend-mode:screen}
.music-btn{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);color:var(--ink-2);padding:8px 14px;cursor:pointer;font:inherit;font-size:.9rem}
.music-btn:hover{color:var(--ink-1)}
.music-btn[hidden]{display:none}
.music-btn svg{width:20px;height:20px}
.idle-veil{position:fixed;inset:0;background:rgb(0 0 0 / .6);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}
.idle-card{background:var(--paper);color:var(--paper-ink);max-width:440px;padding:30px 32px;text-align:center;box-shadow:0 18px 50px rgb(0 0 0 / .45);line-height:1.55}
.idle-card h2{font-family:var(--f-head);font-weight:500;font-size:1.6rem;color:var(--green-deep);margin:0 0 12px}
.idle-card p{margin:0 0 22px;font-size:.95rem}
.idle-btn{font:500 1rem var(--f-text);background:var(--amber);color:#1a140b;border:0;padding:12px 28px;cursor:pointer}
.idle-btn:hover{background:var(--amber-text)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
@keyframes lv-glint{0%,100%{opacity:.15}46%{opacity:.15}52%{opacity:.5}58%{opacity:.15}}
@keyframes lv-travel{0%{transform:translateX(-60%)}100%{transform:translateX(160%)}}
@media (prefers-reduced-motion:reduce){.weave .lnode,.weave .lsheen{animation:none}.weave .lsheen{opacity:.35}.overlay-dot{animation:none}}
@media (max-width:980px){.stations,.page-live .hero.short .wrap{grid-template-columns:1fr}.hero-tools{justify-items:start}}
