/* 全站网页电台（右下角播放条，可收起成圆按钮）+ /admin/radio/ 管理页 */
.radio{position:fixed;right:18px;bottom:18px;z-index:30;animation:rise .5s var(--ease) backwards}
.radio[hidden]{display:none}
.radio-bar{display:flex;align-items:center;gap:12px;width:min(360px,calc(100vw - 36px));padding:10px 8px 10px 10px;border-radius:2px}
.radio-fab{display:none;place-items:center;width:48px;height:48px;border-radius:50%;color:var(--ink-2);cursor:pointer;transition:color .15s ease,border-color .15s ease}
.radio-fab:hover{color:var(--ink);border-color:var(--btn-edge-hi)}
.radio-fab svg{width:22px;height:22px}
.radio-mini .radio-bar{display:none}
.radio-mini .radio-fab{display:grid}
.radio-on .radio-fab{color:var(--accent-link);border-color:var(--accent)}
.radio-min{flex:none;display:grid;place-items:center;width:28px;height:28px;background:none;border:0;color:var(--muted-2);cursor:pointer}
.radio-min:hover{color:var(--ink)}
.radio-min svg{width:16px;height:16px}
.radio-wait .radio-play,.radio-wait .radio-fab{animation:radio-pulse 1.4s ease-out infinite}
.radio-wait-t{font-size:14px;line-height:1.25;color:var(--hazard);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@keyframes radio-pulse{0%{box-shadow:0 0 0 0 rgba(205,65,43,.65)}100%{box-shadow:0 0 0 14px rgba(205,65,43,0)}}
body.radio-pad{padding-bottom:84px}
.radio-play{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:2px;background:var(--accent);border:1px solid var(--accent);color:var(--on-accent);cursor:pointer;transition:background-color .15s ease,box-shadow .25s ease}
.radio-play:hover{background:var(--accent-hi);border-color:var(--accent-hi);box-shadow:0 10px 24px -12px rgba(205,65,43,.85)}
.radio-play svg{width:18px;height:18px}
.radio .i-pause,.radio-on .i-play{display:none}
.radio-on .i-pause{display:block}
.radio-b{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:5px}
.radio-l{display:flex;align-items:center;gap:7px;font-size:10px}
.radio-n,.radio-err{font-size:14px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2)}
.radio-err{color:var(--accent-link)}
.radio-bad .dot{background:var(--accent);animation:none}
.radio-vol{flex:none;width:78px;accent-color:var(--accent);cursor:pointer}
@media (max-width:560px){.radio{right:10px;bottom:10px}.radio-bar{width:calc(100vw - 20px)}.radio-vol{width:64px}body.radio-pad{padding-bottom:76px}}
@media (hover:none){.radio-vol{display:none}}
@media (prefers-reduced-motion:reduce){.radio{animation:none}.radio-wait .radio-play,.radio-wait .radio-fab{animation:none;outline:2px solid var(--accent)}}

.ra-box{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:22px 24px;margin-bottom:34px}
.ra-live{display:flex;align-items:center;gap:10px;font-size:26px;color:var(--ink)}
.ra-when{font-size:12px;color:var(--muted-2)}
.ra-set{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:6px}
.ra-in{min-height:36px;padding:0 12px;background:var(--panel-sunk);border:1px solid var(--line);border-radius:2px;color:var(--ink);font:inherit;font-size:14px}
.ra-in:focus{outline:none;border-color:var(--accent)}
select.ra-in{min-width:260px}
.ra-h{font-size:22px;margin:0 0 14px;color:var(--ink-2)}
.ra-list{display:flex;flex-direction:column;gap:8px;margin-bottom:34px}
.ra-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px}
.ra-row-on{border-color:var(--accent)}
.ra-edit{display:flex;flex:1 1 560px;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.ra-sort{width:72px}
.ra-name{flex:1 1 180px;min-width:140px}
.ra-url{flex:3 1 280px;min-width:200px;font-size:12px}
.ra-acts{display:flex;flex-wrap:wrap;gap:8px}
.ra-add{margin-bottom:12px}
.ra-note{font-size:13px;line-height:1.55;color:var(--muted)}
.ra-ok{margin-bottom:18px;color:var(--live)}
.ra-bad{margin-bottom:18px;color:var(--accent-link)}
.ra-testing{border-color:var(--live);color:var(--live)}
.ra-testbad{border-color:var(--accent);color:var(--accent-link)}
.ra-del:hover{border-color:var(--accent);color:var(--accent-link)}
.ra-cat{width:128px}
.ra-count{margin:-6px 0 18px}
.ra-gh{margin:22px 0 10px;color:var(--ink-3)}
.ra-search{align-items:stretch}
.ra-chips{display:flex;flex-wrap:wrap;gap:8px}
.ra-chip{padding:6px 14px;border:1px solid var(--btn-edge);border-radius:2px;background:var(--btn-face);color:var(--ink-2);font-size:13px;transition:border-color .15s ease,color .15s ease}
.ra-chip:hover{border-color:var(--btn-edge-hi);color:var(--ink)}
.ra-chip-on{border-color:var(--accent);color:var(--accent-link)}
.ra-sform{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ra-sform .ra-in{flex:1 1 150px}
.ra-sform .ra-cc{flex:0 0 64px;text-transform:uppercase}
.ra-res{display:flex;flex-direction:column;border-top:1px solid var(--line-soft)}
.ra-rrow{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:10px 2px;border-bottom:1px solid var(--line-soft)}
.ra-rrow-off .ra-rn{color:var(--muted-2)}
.ra-rb{flex:1 1 320px;min-width:0;display:flex;flex-direction:column;gap:3px}
.ra-rn{font-size:15px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ra-rm{font-size:11px;color:var(--muted)}
.ra-rt{font-size:12px;color:var(--muted-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ra-rs{display:flex;flex-wrap:wrap;gap:6px}
.ra-badge{padding:3px 8px;border:1px solid var(--line);font-size:11px;letter-spacing:.04em;color:var(--muted)}
.ra-badge-ok{border-color:rgba(121,160,63,.6);color:var(--live)}
.ra-badge-warn{border-color:rgba(217,169,78,.55);color:#D9A94E}
.ra-badge-bad{border-color:rgba(205,65,43,.55);color:var(--accent-link)}
.ra-acts form{display:flex;gap:8px}
