/* One small renderer for Radio, native Live and external companion panels. */
.ninekv-stage{position:relative;width:100%;height:100%;min-height:190px;isolation:isolate;overflow:hidden;display:grid;place-items:center;background:radial-gradient(ellipse at 35% 25%,#35265a,transparent 64%),radial-gradient(ellipse at 70% 80%,#08434f,transparent 64%),#0b0e1a;color:#e3f4ff}
.ninekv-stage[hidden]{display:none!important}
.ninekv-rings{position:absolute;inset:13%;border:1px solid #a99cfc30;border-radius:50%;box-shadow:0 0 0 27px #5f8bc50a,0 0 0 56px #679cd109,0 0 0 87px #679cd106}
.ninekv-disc{position:relative;z-index:2;width:min(45%,220px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:repeating-radial-gradient(circle,#14141d 0 3px,#292b37 4px 5px,#11131b 6px 10px);box-shadow:0 10px 45px #000a,0 0 calc(15px + var(--ninekv-beat,0)*26px) #a483ff73;will-change:transform}
.ninekv-disc::after{content:'';position:absolute;inset:0;border-radius:50%;pointer-events:none;background:conic-gradient(#fff0,#d0d2e821 35deg,#fff0 90deg,#fff0 185deg,#e5eaff16 220deg,#fff0 260deg)}
.ninekv-disc-center{height:38%;width:38%;border-radius:50%;background:linear-gradient(132deg,#c593ff,#70dfdf);box-shadow:0 0 0 5px #393052;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#1d1630;font-weight:800;gap:.12em}
.ninekv-disc-center strong{font-size:clamp(1.35rem,3vw,2.25rem);line-height:1}.ninekv-disc-center span{font-size:clamp(.38rem,.7vw,.63rem);letter-spacing:.09em}
.ninekv-bars{position:absolute;inset:7% 4%;z-index:1;display:flex;align-items:center;justify-content:space-around;gap:3px;opacity:.75;pointer-events:none}
.ninekv-bars i{width:clamp(2px,.6vw,5px);height:55%;border-radius:9px;background:linear-gradient(#ba99ff,#52e7da);box-shadow:0 0 6px #8c7aff44;transform:scaleY(var(--ninekv-bar,.08));transform-origin:center;transition:transform 55ms linear}
.ninekv-wave{position:absolute;inset:0;margin:auto;width:min(88%,680px);height:40%;z-index:2;filter:drop-shadow(0 0 3px #63dce484)}
.ninekv-stage[data-ninekv-mode=vinyl] .ninekv-wave{display:none}
.ninekv-stage[data-ninekv-mode=simple] .ninekv-disc,.ninekv-stage[data-ninekv-mode=simple] .ninekv-rings,.ninekv-stage[data-ninekv-mode=simple] .ninekv-bars{display:none}
.ninekv-stage[data-ninekv-mode=simple]::before{content:'';width:88%;height:1px;position:absolute;top:50%;left:6%;background:#6bb7d333;pointer-events:none}
.ninekv-choices{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;margin:.9rem 0}
.ninekv-choices label{display:flex;align-items:center;gap:.6rem;font-size:.85rem}
.ninekv-choices select{max-width:240px;padding:.48rem .7rem;border-radius:9px;border:1px solid #93a3d27a;color:inherit;background:var(--input-bg,var(--surface,#101624));font:inherit}
.ninekv-note{font-size:.85rem;opacity:.8;line-height:1.5;margin:.45rem 0}
.ninekv-audio-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin:.55rem 0}
.ninekv-audio-actions input[type=range]{width:125px;max-width:100%;vertical-align:middle}
.ninekv-native-surface{position:relative;isolation:isolate;width:100%;aspect-ratio:16/9;min-height:240px;border-radius:12px;overflow:hidden;background:#080a0d;margin:1rem 0}
.ninekv-native-surface [data-stream-video]{width:100%;height:100%;max-height:none;margin:0;object-fit:contain}
.ninekv-native-surface>.ninekv-stage{position:absolute;inset:0;z-index:2}
.ninekv-native-surface[data-ninekv-view=vinyl] [data-stream-video],.ninekv-native-surface[data-ninekv-view=simple] [data-stream-video]{opacity:0;pointer-events:none}
.ninekv-external-stage{height:auto;aspect-ratio:16/9;border-radius:12px;border:1px solid #7b94bd45;margin:1rem 0;max-height:420px}
.ninekv-external-shell[data-ninekv-external-mode=video] .ninekv-external-stage{display:none!important}
.ninekv-external-shell .nineklive-frame{overflow:hidden}
@media(max-width:680px){.ninekv-disc{width:min(50%,160px)}.ninekv-disc-center strong{font-size:1.4rem}.ninekv-external-stage{min-height:190px}.ninekv-native-surface{min-height:190px}}
@media(prefers-reduced-motion:reduce){.ninekv-bars i{transition:none}.ninekv-disc{will-change:auto}}


/* Patch 1654: controls travel with the player into site fullscreen. */
.ninekv-player-toolbar{position:absolute;left:0;right:0;bottom:0;z-index:12;box-sizing:border-box;padding:1.1rem .8rem .55rem;color:#f6f7ff;background:linear-gradient(transparent,#030811d9 23%,#030811ef);display:grid;gap:.35rem;font-family:inherit}
.ninekv-player-toolbar :is(button,select,input){pointer-events:auto}
.ninekv-player-toolbar button,.ninekv-player-toolbar select{border:1px solid #a0b8d568;border-radius:7px;background:#19263bcf;color:#f5f9ff;font:inherit;font-size:.77rem;padding:.33rem .55rem;min-height:30px;white-space:nowrap;cursor:pointer}
.ninekv-player-toolbar button:disabled,.ninekv-player-toolbar select:disabled{opacity:.6;cursor:default}
.ninekv-player-toolbar :is(button,select):focus-visible{outline:2px solid #8ddfea;outline-offset:2px}
.ninekv-transport,.ninekv-options,.ninekv-progress{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;min-width:0}
.ninekv-transport{font-weight:700}.ninekv-options{font-size:.7rem}
.ninekv-options label{display:inline-flex;align-items:center;gap:.32rem;font-size:.71rem}
.ninekv-options select{max-width:190px}
.ninekv-volume{display:flex;gap:.3rem;align-items:center;flex:1 1 100px}.ninekv-volume input{width:clamp(58px,9vw,110px);accent-color:#77dde0;min-width:0}.ninekv-volume output{min-width:25px;font-size:.68rem}
.ninekv-progress progress{height:4px;min-width:90px;flex:1;accent-color:#65dcd3}.ninekv-progress span{font-size:.66rem;font-variant-numeric:tabular-nums}
.ninekv-live-lag{font-size:.64rem;letter-spacing:.04em;border-radius:6px;padding:.25rem .4rem;color:#91e5c3;background:#164a444d}
.ninekv-live-lag[data-behind="1"]{color:#ffe0a2;background:#5e371b9c}
.ninekv-native-surface:fullscreen{width:100vw;height:100vh;aspect-ratio:auto;margin:0;border-radius:0}
.ninekv-native-surface>.ninekv-stage{bottom:0}
.ninekv-external-shell .ninekv-embed-toolbar{position:relative;padding:.55rem .75rem;background:#0a1323;border:1px solid #7f92b344;border-top:0;border-radius:0 0 10px 10px}
.ninekv-embed-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap;padding:.5rem .7rem;font-size:.78rem;background:#0b1728;border:1px solid #657e9e55;border-radius:10px 10px 0 0;color:#d8eefb}
.ninekv-external-shell:fullscreen{height:100dvh;width:100vw;max-width:none;background:#070d19;display:flex;flex-direction:column;padding:0;margin:0;box-sizing:border-box;overflow:auto;color:#e6f4ff}
.ninekv-external-shell:fullscreen .nineklive-frame{width:100%;flex:1 1 auto;min-height:300px;aspect-ratio:auto}
.ninekv-external-shell:fullscreen .nineklive-frame iframe{width:100%!important;height:100%!important;min-height:300px}
.ninekv-external-shell:fullscreen .ninekv-external-stage{flex:0 0 22vh;min-height:150px;max-height:22vh;margin:0;border-radius:0}
.ninekv-external-shell:fullscreen .ninekv-note{padding:0 .8rem}
.ninekv-audio-relay summary{cursor:pointer}
.ninekv-audio-relay select{margin:.7rem 0;max-width:300px}
@media(max-width:680px){.ninekv-player-toolbar{padding:.7rem .45rem .35rem;gap:.2rem}.ninekv-player-toolbar button,.ninekv-player-toolbar select{font-size:.69rem;padding:.25rem .35rem}.ninekv-options select{max-width:130px}.ninekv-player-toolbar .ninekv-options{gap:.22rem}.ninekv-volume output{display:none}.ninekv-native-surface{min-height:270px}}
@media(prefers-reduced-motion:reduce){.ninekv-player-toolbar *{transition:none!important}}

/* 1654: real-signal Simple visualizer: slow, rounded, restrained beat bars. */
.ninekv-simple-bars{display:none;position:absolute;inset:19% 10%;z-index:2;align-items:center;justify-content:space-evenly;gap:clamp(2px,.6vw,8px);pointer-events:none;opacity:.92;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.ninekv-simple-bars i{display:block;flex:1 1 0;max-width:14px;height:80%;border-radius:100px;background:linear-gradient(180deg,#a9adff 0%,#5ed9db 56%,#99adff 100%);box-shadow:0 0 9px #6ba9e44f;transform:scaleY(var(--ninekv-simple,.045));transform-origin:center;transition:transform 190ms ease-out}
.ninekv-stage[data-ninekv-mode=simple] .ninekv-simple-bars{display:flex}
.ninekv-stage[data-ninekv-mode=simple] .ninekv-wave{display:none}
@media(prefers-reduced-motion:reduce){.ninekv-simple-bars i{transition:none}}
