@font-face{font-family:Hanken Grotesk;src:url(/fonts/hanken_grotesk.ttf)format("truetype");font-weight:100 900;font-display:swap}:root{--bg:#0c0d0f;--surface:#15171a;--surface-hi:#1b1e23;--rail:#1a1d25;--border:#23262b;--text-hi:#edeef0;--text-soft:#b7bcc4;--text-mid:#8b9098;--text-dim:#6b7280;--accent:#2ba866;--warn:#e0a33a;--danger:#e5484d;--tap:64px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--bg);height:100%;color:var(--text-hi);margin:0}html{-webkit-text-size-adjust:100%}body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}input{-webkit-user-select:text;user-select:text}body{-webkit-tap-highlight-color:transparent;font:500 20px/1.35 Hanken Grotesk,system-ui,sans-serif;overflow:hidden}button{font:inherit;color:var(--text-hi);background:var(--accent);cursor:pointer;touch-action:manipulation;border:0;border-radius:14px;min-height:56px;padding:0 22px;font-weight:600}button:active{transform:scale(.98)}button:disabled{opacity:.35}button.sec{background:var(--surface-hi)}input{font:inherit;border:1px solid var(--border);background:var(--surface);width:100%;min-height:56px;color:var(--text-hi);border-radius:14px;padding:0 18px}input::placeholder{color:var(--text-dim)}input:focus{border-color:var(--text-mid);outline:none}.soft,.msg{color:var(--text-mid)}#setup,#send{max-width:720px;padding:max(6vh, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) env(safe-area-inset-bottom) max(24px, env(safe-area-inset-left));gap:18px;height:100%;margin:0 auto;display:grid;overflow-y:auto}#setup h1,#send h1{letter-spacing:-.02em;margin:0;font-size:40px;font-weight:700}#pairBox{justify-items:center;gap:12px;display:grid}#pairQr{width:min(300px,60vh);image-rendering:pixelated;border-radius:12px}#app{height:100%;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);grid-template-columns:280px 1fr;display:grid}.rail{background:var(--rail);flex-direction:column;min-height:0;padding:20px 14px 16px 18px;display:flex}.rail-head{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.brand{letter-spacing:-.02em;align-items:center;gap:10px;font-size:28px;font-weight:700;display:flex}.brand .logo{flex:none;width:44px;height:44px}#setup h1.brand .logo,#send h1.brand .logo{width:64px;height:64px}button.round{background:var(--surface-hi);border-radius:50%;place-items:center;width:52px;min-height:52px;padding:0;display:grid}.groups{flex-direction:column;gap:4px;min-height:0;display:flex;overflow-y:auto}.groups button{text-align:left;width:100%;min-height:56px;color:var(--text-soft);background:0 0;align-items:center;gap:10px;padding:0 14px 0 26px;font-weight:600;display:flex;position:relative}.groups button .count{color:var(--text-dim);margin-left:auto;font-size:16px;font-weight:500}.groups button.sub{min-height:50px;padding-left:42px;font-size:18px;font-weight:500}.groups button.on{background:var(--surface-hi);color:var(--text-hi)}.groups button.on:before{content:"";background:var(--accent);border-radius:50%;width:8px;height:8px;position:absolute;left:10px}.groups button.sub.on:before{left:26px}.browse{flex-direction:column;gap:10px;min-height:0;padding:20px 24px 0;display:flex}.msg{margin:0;font-size:16px}.msg:empty{display:none}.channels{flex:1;min-height:0;margin:0;padding:0 0 16px;list-style:none;overflow-y:auto}.channels button{width:100%;min-height:var(--tap);background:var(--surface);text-align:left;grid-template-columns:56px 1fr auto;align-items:center;gap:14px;margin-bottom:6px;padding:0 18px 0 8px;font-weight:600;display:grid}.channels .num{color:var(--text-mid);font-variant-numeric:tabular-nums;text-align:right}.channels .name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.channels small{color:var(--text-dim);font-size:16px;font-weight:500}.channels button.playing{background:var(--surface-hi);box-shadow:inset 3px 0 0 var(--accent)}.channels .star{color:var(--warn);margin-left:8px}.channels .epg{color:var(--text-mid);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:500;display:block;overflow:hidden}.epg-line{color:var(--text-soft);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:15px;overflow:hidden}.epg-line:empty{display:none}.groups button .fav,button.ctl[aria-pressed=true]{color:var(--warn)}button.thumb{filter:grayscale();opacity:.7;padding:0 16px;font-size:24px}button.thumb[aria-pressed=true]{filter:none;opacity:1;box-shadow:inset 0 0 0 2px var(--text-hi)}.channels .logo{object-fit:contain;justify-self:center;width:44px;height:28px}.channels button{grid-template-columns:56px 52px 1fr auto}#sourceList .dot{background:var(--text-dim);border-radius:50%;width:12px;height:12px}#sourceList .dot.good{background:var(--accent)}#sourceList .dot.mixed{background:var(--warn)}#sourceList .dot.poor,#sourceList .dot.marked{background:var(--danger)}#sourceList .pref{color:var(--warn);margin-left:8px}#sourceList .rating{color:var(--text-mid);margin-top:2px;font-size:15px;display:block}button.ctl[aria-pressed=true] svg{fill:currentColor}.channels button.playing small{color:var(--accent)}.now-bar{background:var(--surface-hi);border-top:1px solid var(--border);text-align:left;border-radius:0;align-items:center;gap:12px;min-height:68px;margin:0 -24px;padding:0 24px;display:flex}.now-bar #nowBarName{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.now-bar-go{color:var(--accent)}.live-dot{background:var(--accent);border-radius:50%;flex:none;width:10px;height:10px}.player{z-index:10;background:#000;position:fixed;inset:0}video{object-fit:contain;background:#000;width:100%;height:100%;display:block}.hud{pointer-events:none;flex-direction:column;justify-content:flex-end;transition:opacity .25s;display:flex;position:absolute;inset:0}.hud.hidden{opacity:0}.hud-bar{pointer-events:auto;margin:0 max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0c0d0fb8;border-radius:18px;align-items:center;gap:16px;padding:12px 14px 12px 20px;display:flex}.hud.hidden .hud-bar{pointer-events:none}.hud-info{flex:1;min-width:0}.hud-controls{flex:none;gap:8px;display:flex}.now-name{white-space:nowrap;text-overflow:ellipsis;font-size:24px;font-weight:700;overflow:hidden}.status{margin-top:2px;font-size:16px}.status:empty{display:none}.pills{color:var(--text-soft);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:15px;overflow:hidden}.pills:empty{display:none}.status.ok{color:var(--accent)}.status.warn{color:var(--warn)}.status.bad{color:var(--danger)}button.take-over{margin-top:10px}button.ctl{min-height:var(--tap);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;background:#1b1e23d9;align-items:center;gap:10px;padding:0 20px;display:inline-flex}dialog.sheet{border:1px solid var(--border);background:var(--surface);width:min(680px,92vw);max-height:88vh;color:var(--text-hi);border-radius:18px;flex-direction:column;gap:14px;padding:22px}dialog.sheet[open]{display:flex}dialog::backdrop{background:#0009}dialog h2{margin:0;font-size:26px}.sheet-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.sheet-actions{gap:8px;display:grid}button.row{background:var(--surface-hi);text-align:left;min-height:var(--tap)}button.row.danger{color:var(--danger)}.sheet-list{flex:auto;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}#sourceList button{width:100%;min-height:var(--tap);background:var(--surface-hi);text-align:left;grid-template-columns:12px 56px minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:6px;padding:10px 16px;font-weight:500;display:grid}#sourceList .q{border:1px solid var(--border);text-align:center;min-width:48px;color:var(--text-soft);border-radius:8px;justify-self:center;padding:4px 8px;font-size:15px;font-weight:700}#sourceList .src{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}#sourceList .q:empty{border-color:#0000}#sourceList .specs{color:var(--text-mid);margin-top:2px;font-size:15px;display:block}#sourceList .tag{color:var(--text-dim);margin-left:8px;font-size:15px}#sourceList .state{font-size:16px}#sourceList .state.playing{color:var(--accent)}#sourceList .state.opening{color:var(--warn)}#sourceList button.current{box-shadow:inset 3px 0 0 var(--accent)}#groupList label{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;min-height:60px;padding:0 6px;display:flex}#groupList input{width:30px;min-height:30px;accent-color:var(--accent);flex:none}@media (width<=1150px){.hud-bar{flex-wrap:wrap}.hud-info{flex:100%}.hud-controls{flex:100%;justify-content:space-between}}@media (width<=900px){button.ctl span{display:none}button.ctl{padding:0 16px}#app{grid-template-columns:210px 1fr}.rail{padding:16px 8px 12px 10px}.brand{font-size:22px}.brand .logo{width:34px;height:34px}.groups button{padding-left:22px;font-size:17px}.groups button.sub{padding-left:34px;font-size:16px}.browse{padding:14px 12px 0}.now-bar{margin:0 -12px;padding:0 12px}.channels button{grid-template-columns:40px 40px 1fr auto;gap:10px;padding-right:12px}.channels small{font-size:14px}}@media (width<=600px){#app{grid-template-rows:auto 1fr;grid-template-columns:1fr}.rail{flex-direction:row;align-items:center;gap:8px;padding:8px}.rail-head{margin:0}.brand{display:none}.groups{flex-direction:row;overflow-x:auto}.groups button{white-space:nowrap;flex:none;width:auto}}
