:root{
  --bg:#07060d; --panel:#110e1d; --line:#2a2142;
  --violet:#8a2be2; --violet-soft:rgba(138,43,226,.35); --green:#00ff00;
  --text:#ece8ff; --muted:#9a91b8; --err:#ff4d6d;
  --r:14px;
  font-family:'Rajdhani',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  color:var(--text); color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;margin:0;background:var(--bg)}
body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--green);outline-offset:2px}

.app{display:flex;flex-direction:column;width:100%;max-width:480px;margin:0 auto;
  height:100vh;height:100dvh;overflow:hidden;
  background:radial-gradient(120% 60% at 50% 0,rgba(138,43,226,.22),transparent 70%),var(--bg)}

/* header */
.top{display:flex;align-items:center;justify-content:space-between;padding:calc(10px + env(safe-area-inset-top)) 16px 10px}
.logo{margin:0;font-family:'Orbitron',sans-serif;font-weight:800;font-size:20px;letter-spacing:.12em;
  text-shadow:0 0 12px var(--violet),0 0 2px #fff}
.logo span{color:var(--violet);text-shadow:0 0 14px var(--violet)}
.live{font-family:'Orbitron',sans-serif;font-size:11px;font-weight:800;letter-spacing:.14em;padding:4px 8px;border-radius:6px;
  color:var(--bg);background:var(--green);box-shadow:0 0 12px var(--green)}
.live.is-off{background:var(--line);color:var(--muted);box-shadow:none}

/* player */
.player{position:relative;flex:0 0 auto;aspect-ratio:16/9;margin:0 12px;border-radius:var(--r);overflow:hidden;
  background:#000;border:1px solid var(--violet-soft);box-shadow:0 0 24px var(--violet-soft)}
.player video{display:block;width:100%;height:100%;object-fit:cover}
.player__stub{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  background:linear-gradient(160deg,#160c2b,#05040a)}
.player__stub[hidden]{display:none}
.stub__grid{position:absolute;inset:0;opacity:.35;
  background-image:linear-gradient(var(--violet-soft) 1px,transparent 1px),linear-gradient(90deg,var(--violet-soft) 1px,transparent 1px);
  background-size:24px 24px;animation:scan 4s linear infinite}
.stub__title{position:relative;margin:0;font-family:'Orbitron',sans-serif;font-weight:800;font-size:clamp(13px,4vw,16px);letter-spacing:.14em;
  color:var(--violet);text-shadow:0 0 12px var(--violet);animation:flicker 2.4s infinite}
.stub__sub{position:relative;margin:0;color:var(--muted);font-size:13px;font-weight:600}
.player__sound{position:absolute;right:8px;bottom:8px;width:40px;height:40px;border:0;border-radius:20px;
  background:rgba(7,6,13,.7);font-size:18px;cursor:pointer}
@keyframes scan{to{background-position:0 24px}}
@keyframes flicker{0%,92%,100%{opacity:1}94%{opacity:.4}96%{opacity:.9}}

/* stats */
.stats{padding:14px 12px 0;display:flex;flex-direction:column;gap:10px}
.label{margin:0;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.timer{text-align:center}
.timer__digits{margin-top:2px;font-family:'Orbitron',sans-serif;font-weight:800;font-size:clamp(36px,12vw,52px);line-height:1.1;
  font-variant-numeric:tabular-nums;color:var(--green);text-shadow:0 0 18px rgba(0,255,0,.55)}
.timer.is-low .timer__digits{animation:pulse 1s infinite}
.timer.is-over .timer__digits{color:var(--muted);text-shadow:none}
@keyframes pulse{50%{opacity:.55}}
.cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.card{min-width:0;padding:10px 12px;border-radius:var(--r);background:var(--panel);border:1px solid var(--line)}
.value{margin:2px 0 0;font-family:'Orbitron',sans-serif;font-weight:800;font-size:clamp(16px,5vw,20px);color:var(--green);
  text-shadow:0 0 10px rgba(0,255,0,.4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.value--owner{font-family:'Rajdhani',sans-serif;font-size:clamp(17px,5vw,20px);color:var(--text);text-shadow:0 0 10px var(--violet-soft)}

/* chat */
.feed{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px;padding:12px 12px 0}
.feed__list{flex:1;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto;display:flex;flex-direction:column;gap:6px;
  -webkit-overflow-scrolling:touch;mask-image:linear-gradient(transparent,#000 16px)}
.feed__list li{padding:8px 10px;border-radius:10px;background:var(--panel);border-left:2px solid var(--violet);font-size:15px;line-height:1.3}
.feed__list b{color:var(--violet);margin-right:6px}
.feed__empty{color:var(--muted);border-left-color:var(--line)!important}

/* button */
.dock{padding:10px 12px calc(12px + env(safe-area-inset-bottom))}
.status{margin:0 0 8px;min-height:18px;text-align:center;font-size:14px;font-weight:600;color:var(--muted)}
.status.is-err{color:var(--err)}
.status.is-ok{color:var(--green)}
.status:empty{display:none}
.btn{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:60px;border:0;border-radius:var(--r);
  background:linear-gradient(135deg,#a14bff,var(--violet));color:#fff;cursor:pointer;
  box-shadow:0 0 22px var(--violet-soft),inset 0 0 0 1px rgba(255,255,255,.15);transition:transform .1s,filter .15s}
.btn span{font-family:'Orbitron',sans-serif;font-weight:800;font-size:17px;letter-spacing:.1em;text-transform:uppercase}
.btn small{font-size:14px;font-weight:600;opacity:.85}
.btn:hover{filter:brightness(1.1)}
.btn:active{transform:scale(.98)}
.btn:disabled{background:var(--panel);color:var(--muted);box-shadow:inset 0 0 0 1px var(--line);cursor:default;transform:none;filter:none}

@media (max-height:640px){.feed{display:none}.player{margin-inline:auto;width:min(100% - 24px,(100dvh - 330px) * 16 / 9)}}
@media (min-width:481px){.app{margin-block:16px;height:min(844px,calc(100dvh - 32px));border-radius:24px;border:1px solid var(--line)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
