/* Tokens from docs/DESIGN.md: monochrome, colour only for states, no lines between blocks. */
:root{--bg:#08090D;--panel:rgba(255,255,255,.045);--card:rgba(255,255,255,.06);--button:rgba(255,255,255,.08);--chosen:rgba(255,255,255,.17);--chosen-line:rgba(255,255,255,.6);--text:#F5F5F7;--second:#AEAEB2;--quiet:#86868B;--off:#636366;--live:#30D158;--bad:#FF6961;--bad-bg:rgba(255,105,97,.13);--warn:#FFB340;--warn-bg:rgba(255,179,64,.12);--queue:#64D2FF;--work:#DA8FFF;--soon:#FFD60A;--ease:cubic-bezier(.2,.8,.2,1);--top:max(env(safe-area-inset-top),var(--tg-safe-area-inset-top,0px));--bottom:max(env(safe-area-inset-bottom),var(--tg-safe-area-inset-bottom,0px))}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:14px/1.35 -apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;overscroll-behavior:none;user-select:none;-webkit-user-select:none}
#app{height:var(--tg-viewport-stable-height,100dvh);display:flex;flex-direction:column}
button{font:inherit;color:var(--text);background:var(--button);border:0;border-radius:10px;min-height:44px;padding:8px 10px;font-weight:600;cursor:pointer;transition:background .18s var(--ease),transform .18s var(--ease),opacity .18s}
button:active{transform:scale(.97);background:var(--chosen)}
button:disabled{color:var(--off);background:rgba(255,255,255,.04);cursor:default;transform:none}
button.primary{background:#F5F5F7;color:#000}
button.primary:disabled{background:rgba(255,255,255,.04);color:var(--off)}
button.danger{background:var(--bad-bg);color:var(--bad)}
button.quiet{background:none;color:var(--second)}
button.chosen{background:var(--chosen);box-shadow:inset 0 0 0 1px var(--chosen-line)}
.top{padding:calc(10px + var(--top)) 16px 8px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.chip{background:var(--panel);border-radius:10px;padding:7px 10px;color:var(--second);font-size:13px;font-weight:600}
.chip b{color:var(--text);font-weight:600}
.spacer{flex:1}
.tabs{position:relative;display:flex;background:var(--panel);border-radius:12px;padding:3px}
.tabs button{position:relative;z-index:1;background:none;min-height:38px;padding:6px 12px;font-size:13px;color:var(--second);flex:1}
.tabs button.on{color:var(--text)}
.tabs button:active{background:none}
.tabs .plate{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);background:var(--chosen);border-radius:10px;transition:transform .22s var(--ease)}
.tabs.second .plate{transform:translateX(100%)}
.notice{margin:0 16px 8px;padding:10px 12px;border-radius:10px;font-weight:600;font-size:13px}
.notice.warn{color:var(--warn);background:var(--warn-bg)}
.notice.bad{color:var(--bad);background:var(--bad-bg)}
.board{flex:1;overflow-y:auto;padding:0 16px 12px;-webkit-overflow-scrolling:touch}
.heading{display:flex;justify-content:space-between;padding:14px 2px 6px;color:var(--second);font-size:13px;font-weight:600}
.heading span:last-child{color:var(--quiet);font-weight:400}
.card{background:var(--card);border-radius:14px;padding:12px;margin-bottom:6px;transition:background .18s var(--ease),box-shadow .18s var(--ease);cursor:pointer}
.card.open{background:rgba(255,255,255,.09);box-shadow:inset 0 0 0 1px var(--chosen-line)}
.card.live{box-shadow:inset 0 0 0 1px rgba(48,209,88,.55)}
.card.attention{box-shadow:inset 0 0 0 1px rgba(255,179,64,.55)}
.row{display:flex;align-items:center;gap:8px}
.name{flex:1;font-size:15px;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.muted{color:var(--quiet);font-size:13px;margin-top:3px}
.field{font-weight:600;font-size:13px}
.error{color:var(--bad);font-size:13px;margin-top:6px;user-select:text;-webkit-user-select:text}
.pill{border-radius:99px;padding:3px 10px;font-size:12px;font-weight:600;white-space:nowrap;flex:none}
.pill.soon{color:var(--soon);background:rgba(255,214,10,.13)}
.pill.queue{color:var(--queue);background:rgba(100,210,255,.13)}
.pill.work{color:var(--work);background:rgba(218,143,255,.13)}
.pill.live,.pill.done{color:var(--live);background:rgba(48,209,88,.13)}
.pill.bad{color:var(--bad);background:var(--bad-bg)}
.pill.warn{color:var(--warn);background:var(--warn-bg)}
.pill.muted{color:var(--quiet);background:var(--card);margin:0}
.timer{color:var(--live);font-size:24px;font-weight:700;font-variant-numeric:tabular-nums}
.dot{width:8px;height:8px;border-radius:50%;background:var(--live);animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35;transform:scale(.8)}}
.bar{height:4px;border-radius:2px;background:var(--button);margin:8px 0 6px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--live);border-radius:2px;transition:width .25s linear}
.split{display:flex;justify-content:space-between;gap:8px}
.series{padding-left:14px}
.details{margin-top:10px;display:flex;flex-direction:column;gap:8px;animation:reveal .2s var(--ease)}
@keyframes reveal{from{opacity:0;transform:translateY(-4px)}}
.details.still,.veil.still,.veil.still .sheet{animation:none}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.grid4 button{padding:6px 2px;font-size:12px}
.grid7{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.grid7 button{padding:4px 0;font-size:11px;line-height:1.25}
.pair{display:flex;gap:6px}.pair button{flex:1}.pair button.small{flex:none;min-width:64px}
.slider{padding-bottom:22px;position:relative}
.slider input{width:100%;height:32px;margin:0;appearance:none;-webkit-appearance:none;background:none;touch-action:none;display:block}
.slider input::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,#F5F5F7 var(--filled,0%),var(--button) var(--filled,0%))}
.slider input::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;margin-top:-10px;border-radius:50%;background:#F5F5F7;box-shadow:0 1px 4px rgba(0,0,0,.5)}
.slider output{position:absolute;bottom:0;transform:translateX(-50%);font-size:13px;font-weight:600;white-space:nowrap}
.dock{padding:8px 16px calc(10px + var(--bottom));display:flex;gap:6px;background:var(--bg)}
.dock button{flex:1}
.veil{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:flex-end;z-index:5;animation:fade .18s}
@keyframes fade{from{opacity:0}}
.sheet{background:#15161B;width:100%;max-height:80%;border-radius:18px 18px 0 0;padding:16px 16px calc(14px + var(--bottom));display:flex;flex-direction:column;gap:10px;animation:rise .22s var(--ease)}
@keyframes rise{from{transform:translateY(24px)}}
.sheet h2{margin:0;font-size:16px}
.lines{overflow-y:auto;flex:1;font-size:13px;display:flex;flex-direction:column;gap:6px;min-height:80px;user-select:text;-webkit-user-select:text}
.lines time{color:var(--quiet);margin-right:6px;font-variant-numeric:tabular-nums}
.lines .bad{color:var(--bad)}
.center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;color:var(--second)}
.empty{color:var(--quiet);padding:28px 2px;text-align:center}
.nav{position:relative;display:flex;margin:0 16px calc(8px + var(--bottom));background:var(--panel);border-radius:14px;padding:3px}
.nav .plate{position:absolute;top:3px;bottom:3px;left:3px;width:calc(25% - 1.5px);background:#F5F5F7;border-radius:11px;transition:transform .22s var(--ease)}
.nav button{position:relative;z-index:1;flex:1;min-width:0;background:none;padding:6px 2px;font-size:12.5px;color:var(--second)}
.nav button.on{color:#000}
.nav button:active{background:none}
.dock{padding-bottom:8px}
.dock:last-child{padding-bottom:calc(10px + var(--bottom))}
.dock.column,.top.column{flex-direction:column;align-items:stretch}
.dock.column button.primary{flex:none}
h1{margin:0;font-size:20px;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
h3{margin:0;font-size:14px;font-weight:700}
.grow{flex:1}
.copyArea{position:fixed;top:0;left:0;width:1px;height:1px;opacity:0;user-select:text;-webkit-user-select:text}
.back{min-width:36px;padding:0 6px;font-size:24px;line-height:1;flex:none}
.search{width:100%;height:44px;border:0;border-radius:10px;background:var(--card);color:var(--text);font:inherit;padding:0 12px;outline:none;user-select:text;-webkit-user-select:text;appearance:none}
.search::placeholder{color:var(--quiet)}
.subtabs{display:flex;gap:2px;background:var(--panel);border-radius:12px;padding:3px;overflow-x:auto;scrollbar-width:none;width:100%}
.subtabs::-webkit-scrollbar{display:none}
.subtabs button{background:none;min-height:38px;padding:6px 11px;font-size:13px;color:var(--second);white-space:nowrap;flex:1 0 auto}
.subtabs button.on{background:var(--chosen);color:var(--text)}
.subtabs small{color:var(--quiet);font-weight:400}
.channel{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--card);border-radius:14px;padding:10px 12px;margin-bottom:6px;font-weight:400;min-height:56px}
.channel.on{background:rgba(255,255,255,.11);box-shadow:inset 0 0 0 1px var(--chosen-line)}
.channel:disabled{background:rgba(255,255,255,.03);color:var(--off)}
.channel:disabled .pill{white-space:normal;max-width:48%;text-align:right}
.channelText{flex:1;min-width:0;display:flex;flex-direction:column}
.channelText b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.clip .channelText b{font-size:14px;white-space:normal}
.channelText small{color:var(--quiet);font-size:12px}
.tick{flex:none;width:22px;height:22px;border-radius:7px;background:var(--button)}
.channel.on .tick{background:#F5F5F7;position:relative}
.channel.on .tick::after{content:"";position:absolute;left:7px;top:3px;width:5px;height:10px;border:solid #000;border-width:0 2px 2px 0;transform:rotate(45deg)}
.links{display:flex;gap:2px}.links button{min-height:36px;padding:4px 6px;font-size:13px}
.board.withTop{padding-top:calc(4px + var(--top))}
.block{background:var(--panel);border-radius:18px;padding:14px;margin-bottom:10px;display:flex;flex-direction:column;gap:12px}
.field2{display:flex;flex-direction:column;gap:8px}
.fieldHead{display:flex;flex-direction:column;gap:1px}.fieldHead b{font-size:13px}.fieldHead small{color:var(--quiet);font-size:12px}
.chips{display:grid;gap:4px}
.chips button{padding:6px 2px;font-size:12.5px;line-height:1.25;min-width:0}
.stepper{display:inline-flex;align-items:center;gap:4px}
.stepper button{width:44px;padding:0;font-size:18px}
.stepValue{min-width:32px;text-align:center;font-weight:600;color:var(--text);font-size:14px;font-variant-numeric:tabular-nums}
.stream{background:var(--card);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.stream.all{background:rgba(255,255,255,.03)}
.stream .row b{flex:none}
.amounts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.amounts label{display:flex;flex-direction:column;gap:3px;color:var(--quiet);font-size:12px}
.amounts .stepper{justify-content:space-between}
.amounts .stepper button{width:40px}
.game{flex:1;min-width:0;height:40px;border:0;border-radius:10px;background:var(--button);color:var(--text);font:inherit;font-size:13px;padding:0 8px}
.game option{background:#15161B}
.scan{align-items:center}.scan button{min-height:36px;padding:4px 6px;font-size:13px;flex:none}
.indicator{display:inline-flex;align-items:center;gap:6px;background:var(--panel);min-height:38px;padding:6px 10px;font-size:12.5px;color:var(--quiet);flex:none}
.indicator i{width:7px;height:7px;border-radius:50%;background:var(--off)}
.indicator.on{color:var(--live);background:rgba(48,209,88,.12)}.indicator.on i{background:var(--live)}
.toggle{display:flex;align-items:center;gap:12px;text-align:left;background:var(--card);padding:10px 12px;border-radius:14px;width:100%}
.toggle span{flex:1;display:flex;flex-direction:column}.toggle small{color:var(--quiet);font-weight:400;font-size:12px}
.toggle i{flex:none;width:44px;height:26px;border-radius:13px;background:var(--button);position:relative;transition:background .18s var(--ease)}
.toggle i::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#F5F5F7;transition:transform .18s var(--ease)}
.toggle.on i{background:#F5F5F7}.toggle.on i::after{transform:translateX(18px);background:#000}
.status{padding:4px 16px 8px;color:var(--quiet);font-size:12px}.status.bad{color:var(--bad)}
.summary{color:var(--warn);background:var(--warn-bg);font-size:13px;gap:4px;white-space:pre-line}
.card.flat{cursor:default}
.notice.flat{margin:0 0 10px}
.center2{text-align:center;padding:8px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
