/* Command-centre wall display. Self-contained dark palette so it reads from across a room in any theme. */
body.tvmode .appbar{display:none}
body.tvmode .work{padding:0;background:#0a0e1f}
.tvwall{--bg:#0a0e1f;--bg2:#10162d;--card:#141b38;--card2:#1a2348;--tl:#27315f;--tf:#f4f6ff;--tm:#9aa6d6;--or:#ff7a1a;--or2:#ffb347;--gold:#ffd23f;--gr:#1fe08a;--pk:#ff4d9d;--cy:#38e8ff;
  min-height:100%;color:var(--tf);background:radial-gradient(1200px 700px at 15% -10%,#2a1a4d 0,transparent 60%),radial-gradient(900px 600px at 100% 0,#4a1d12 0,transparent 55%),var(--bg);padding:14px max(14px,env(safe-area-inset-left,0px)) 40px;position:relative}
.tvwall::before{content:"";position:fixed;inset:0;background-image:radial-gradient(rgba(255,255,255,.07) 1px,transparent 1px);background-size:34px 34px;pointer-events:none;mask-image:linear-gradient(#000,transparent 70%)}
.tvin{max-width:1600px;margin:0 auto;position:relative}
.tvhd{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:18px;align-items:center;padding:14px 20px;border-radius:20px;background:linear-gradient(100deg,#ff6a00,#ff9a2e 45%,#ffc24a);color:#1c0d00;box-shadow:0 14px 50px rgba(255,122,26,.35);position:relative;overflow:hidden}
.tvhd::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translateX(-120%);animation:tvshine 5.5s ease-in-out infinite}
@keyframes tvshine{to{transform:translateX(120%)}}
.tvfaces{display:flex;align-items:center}.tvfaces img{border-radius:50%;object-fit:cover;border:3px solid #fff;display:block;background:#fff}
.tvfaces .l{width:62px;height:62px;margin-right:-14px;z-index:1}.tvfaces .c{width:82px;height:82px}
.tvttl small{display:block;letter-spacing:.2em;text-transform:uppercase;font-weight:700;font-size:12px;opacity:.85}
.tvttl h1{font:800 clamp(24px,4vw,52px)/1.02 var(--fd);margin:2px 0;text-wrap:balance;color:#1c0d00}
.tvttl .te{font:700 clamp(14px,1.7vw,21px) var(--fb)}
.tvttl .al{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}.tvttl .al span{background:rgba(255,255,255,.9);border-radius:99px;padding:2px 10px;font-weight:800;font-size:12px}
.tvclock{text-align:right}.tvclock b{display:block;font:800 clamp(22px,3vw,40px)/1 var(--fd);font-variant-numeric:tabular-nums}
.tvlive{display:inline-flex;align-items:center;gap:6px;background:#1c0d00;color:#fff;border-radius:99px;padding:3px 12px;font-weight:800;font-size:12px;letter-spacing:.1em;margin-bottom:6px}
.tvlive i{width:9px;height:9px;border-radius:50%;background:var(--gr);animation:tvping 1.6s infinite}.tvlive.off i{background:#ff5a5f;animation:none}
@keyframes tvping{0%{box-shadow:0 0 0 0 var(--gr)}70%{box-shadow:0 0 0 10px transparent}100%{box-shadow:0 0 0 0 transparent}}
.tvbtns{display:flex;gap:6px;justify-content:flex-end;margin-top:6px}.tvbtns button,.tvbtns a{background:rgba(0,0,0,.25);color:#fff;border:0;border-radius:99px;padding:4px 12px;font:700 12px var(--fb);cursor:pointer;text-decoration:none}
.tvspot{margin:12px 0;border-radius:14px;padding:10px 18px;background:linear-gradient(90deg,rgba(56,232,255,.15),rgba(255,77,157,.15));border:1px solid var(--tl);font:700 clamp(15px,1.7vw,22px) var(--fd);display:flex;gap:12px;align-items:center;min-height:52px;overflow:hidden}
.tvspot i{width:10px;height:28px;border-radius:5px;background:linear-gradient(var(--cy),var(--pk));flex:none}.tvspot span{animation:tvslide .6s both}
@keyframes tvslide{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.tvg{display:grid;gap:14px}.tvr1{grid-template-columns:minmax(0,1.1fr) minmax(0,1.4fr)}.tvr2{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);margin-top:14px}
@media(max-width:1000px){.tvr1,.tvr2,.tvhd{grid-template-columns:minmax(0,1fr)}.tvclock{text-align:left}.tvbtns{justify-content:flex-start}}
.tvc{background:linear-gradient(160deg,var(--card),var(--bg2));border:1px solid var(--tl);border-radius:18px;padding:16px 18px;min-width:0;position:relative}
.tvc h2{font:800 15px var(--fd);letter-spacing:.08em;text-transform:uppercase;color:var(--tm);margin:0 0 10px;display:flex;justify-content:space-between;gap:8px}
.tvcount{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;text-align:center}
.tvcount div{background:var(--card2);border-radius:14px;padding:12px 4px;border:1px solid var(--tl)}
.tvcount b{display:block;font:800 clamp(30px,5vw,68px)/1 var(--fd);font-variant-numeric:tabular-nums;background:linear-gradient(180deg,var(--gold),var(--or));-webkit-background-clip:text;background-clip:text;color:transparent}
.tvcount span{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--tm);font-weight:700}
.tvcount .tick{animation:tvpop .35s}@keyframes tvpop{50%{transform:scale(1.12)}}
.tvpt{margin:12px 0 0;color:var(--tm);font-size:13px}
.tvrings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media(max-width:700px){.tvrings{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tvring{text-align:center}.tvring svg{width:100%;max-width:150px;height:auto;transform:rotate(-90deg);overflow:visible}
.tvring circle{fill:none;stroke-width:12;stroke-linecap:round}.tvring .bg{stroke:var(--card2)}.tvring .fg{transition:stroke-dashoffset 1.4s cubic-bezier(.2,.7,.2,1);filter:drop-shadow(0 0 6px currentColor)}
.tvring .v{position:relative;margin-top:-92px;height:92px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.tvring .v b{font:800 clamp(20px,2.6vw,32px) var(--fd);font-variant-numeric:tabular-nums}
.tvring p{margin:6px 0 0;font-weight:700;font-size:13px}.tvring p em{display:block;font-style:normal;color:var(--tm);font-weight:500;font-size:12px}
.tvkp{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:14px}
.tvk{border-radius:16px;padding:14px 16px;border:1px solid var(--tl);background:linear-gradient(160deg,var(--card2),var(--card));position:relative;overflow:hidden}
.tvk::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--c,var(--or))}
.tvk small{display:block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--tm);font-weight:700}
.tvk b{display:block;font:800 clamp(26px,3vw,40px)/1.1 var(--fd);font-variant-numeric:tabular-nums}.tvk span{font-size:12px;color:var(--tm)}
.tvk.flash{animation:tvflash .9s}@keyframes tvflash{0%{box-shadow:0 0 0 0 var(--c)}40%{box-shadow:0 0 30px 4px var(--c)}100%{box-shadow:none}}
.tvrace{position:relative}.tvrw{position:absolute;left:0;right:0;height:30px;display:grid;grid-template-columns:76px minmax(0,1fr) 90px;gap:10px;align-items:center;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.tvrw span{font-weight:700;font-size:13px}.tvrw em{font-style:normal;text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.tvrt{height:20px;border-radius:10px;background:var(--card2);overflow:hidden}.tvrt i{display:block;height:100%;width:0;border-radius:10px;transition:width 1s cubic-bezier(.2,.7,.2,1);background:linear-gradient(90deg,var(--or),var(--gold));box-shadow:0 0 14px rgba(255,122,26,.7)}
.tvrw.top i{background:linear-gradient(90deg,var(--gr),var(--cy));box-shadow:0 0 14px rgba(31,224,138,.7)}
.tvcrown{display:inline-block;width:14px;height:14px;margin-right:4px;vertical-align:-2px}.tvhide{display:none!important}
.tvfeed{display:grid;gap:8px;min-height:340px;align-content:start}
.tvfi{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:10px;align-items:center;background:var(--card2);border-radius:12px;padding:9px 12px;animation:tvslide .55s both}
.tvfi i{width:8px;height:32px;border-radius:4px}.tvfi b{display:block;font-size:14px}.tvfi span{font-size:12px;color:var(--tm)}.tvfi time{font-size:12px;color:var(--tm);font-variant-numeric:tabular-nums}
.tvtiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.tvt{border-radius:14px;padding:10px 12px;min-height:92px;position:relative;overflow:hidden;border:1px solid var(--tl);background:var(--card2)}
.tvt .f{position:absolute;inset:auto 0 0 0;height:0;background:linear-gradient(0deg,rgba(255,122,26,.55),rgba(255,210,63,.12));transition:height 1s cubic-bezier(.2,.7,.2,1)}
.tvt *{position:relative}.tvt b{font:800 18px var(--fd)}.tvt em{font-style:normal;float:right;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums}.tvt span{display:block;font-size:11px;color:var(--tm);margin-top:2px}
.tvt.pulse{animation:tvflash .9s;--c:var(--or)}
.tvnote{color:var(--tm);font-size:12px;text-align:center;margin-top:14px}
canvas#tvfx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:50}
@media (prefers-reduced-motion:reduce){.tvwall *{animation:none!important;transition:none!important}}

/* Today page: the command-centre look inside the normal app shell */
.tdy{min-height:0;border-radius:22px;padding:14px;margin:-4px 0 0}.tdy::before{display:none}
.tdy .tvcount{text-decoration:none;color:inherit;cursor:pointer}.tdy .tvcount:hover div{border-color:var(--or)}
.tdy .tdh{font:800 15px var(--fd);letter-spacing:.08em;text-transform:uppercase;color:var(--tm);margin:18px 0 0}
.tdy .tdk{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.tdy button.tvk{text-align:left;color:var(--tf);font-family:inherit;cursor:pointer;display:block;width:100%;transition:transform .15s}
.tdy button.tvk:hover{transform:translateY(-3px);border-color:var(--c)}
.tdy button.tvk small{text-transform:none;letter-spacing:0;font-size:13px;color:var(--tf);font-weight:700}
.tdy button.tvk em{display:block;margin-top:6px;font-style:normal;font-weight:700;font-size:12px;color:var(--c)}
.tdy .chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.tdy .chp{border:1px solid var(--tl);background:var(--card2);color:var(--tm);border-radius:99px;padding:4px 12px;font:600 12px var(--fb);cursor:pointer}.tdy .chp.on{background:var(--or);border-color:var(--or);color:#1c0d00}
.tdy .heat{display:flex;flex-wrap:wrap;gap:8px}.tdy .tile{border:1px solid var(--tl);border-radius:12px;color:var(--tf);text-align:left;padding:8px 10px;cursor:pointer;font-family:inherit;min-height:70px}
.tdy .tile b{display:block}.tdy .tile span,.tdy .tile small{display:block;font-size:11px;color:#dfe4ff}
.tdy .leg{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;color:var(--tm)}.tdy .leg i{flex:1;height:8px;border-radius:4px;background:linear-gradient(90deg,rgba(255,122,26,.12),rgba(255,122,26,.75))}
.tdsvg text{fill:#9aa6d6;font-size:11px}
body.tvmode .tvin{max-width:none}

.tdy .pace{display:flex;flex-direction:column}.tdy .pstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-bottom:10px}
.tdy .pstats div{background:var(--card2);border:1px solid var(--tl);border-radius:12px;padding:8px 10px}.tdy .pstats small{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--tm);font-weight:700}
.tdy .pstats b{font:800 22px var(--fd);font-variant-numeric:tabular-nums}.tdy .ps.go{color:var(--gold)}
.tdy .pwrap{position:relative;flex:1;min-height:240px}.tdy .pwrap svg{width:100%;height:100%;min-height:240px;touch-action:pan-y;cursor:crosshair}
.tdy .ptip{position:absolute;top:0;width:168px;pointer-events:none;background:#0a0e1f;border:1px solid var(--or);border-radius:10px;padding:8px 10px;font-size:12px;line-height:1.4;box-shadow:0 8px 24px rgba(0,0,0,.5);z-index:2}

/* wall display: party palettes */
:root[data-party="tdp"] .tvwall{--bg:#1a0709;--bg2:#260c0f;--card:#2d1115;--card2:#391519;--tl:#5f2a2f;--tm:#e9b8bb;--or:#ff4650;--or2:#ffd84a;--gold:#ffe21f;
  background:radial-gradient(1200px 700px at 15% -10%,#5a1217 0,transparent 60%),radial-gradient(900px 600px at 100% 0,#4a3c06 0,transparent 55%),var(--bg)}
:root[data-party="tdp"] .tvhd{background:linear-gradient(100deg,#c1101c,#e11d2a 45%,#f5d800);color:#fff;box-shadow:0 14px 50px rgba(217,35,45,.4)}
:root[data-party="tdp"] .tvttl h1{color:#fff}:root[data-party="tdp"] .tvttl .al span{color:#9d1018}:root[data-party="tdp"] .tvlive,:root[data-party="tdp"] .tvbtns button,:root[data-party="tdp"] .tvbtns a{background:rgba(0,0,0,.35)}
:root[data-party="ysrcp"] .tvwall{--bg:#06142b;--bg2:#0a1d3d;--card:#0d2548;--card2:#12305b;--tl:#24508a;--tm:#a9c8ee;--or:#3b8ee8;--or2:#7cc0ff;--gold:#5ee08f;
  background:radial-gradient(1200px 700px at 15% -10%,#0f3d78 0,transparent 60%),radial-gradient(900px 600px at 100% 0,#0b4a2a 0,transparent 55%),var(--bg)}
:root[data-party="ysrcp"] .tvhd{background:linear-gradient(100deg,#0d4a93,#1b6cc4 55%,#17803d);color:#fff;box-shadow:0 14px 50px rgba(27,108,196,.4)}
:root[data-party="ysrcp"] .tvttl h1{color:#fff}:root[data-party="ysrcp"] .tvttl .al span{color:#0d4a93}:root[data-party="ysrcp"] .tvlive,:root[data-party="ysrcp"] .tvbtns button,:root[data-party="ysrcp"] .tvbtns a{background:rgba(0,0,0,.35)}
:root[data-party] .tvfaces .l{object-fit:contain}

/* TDP: a dark yellow-and-black wall with a yellow header and red accents */
:root[data-party="tdp"] .tvwall{--bg:#120f05;--bg2:#1b1707;--card:#221c08;--card2:#2c2409;--tl:#5e4f10;--tm:#e8d98a;--or:#f5d800;--or2:#ffe97a;--gold:#ffe21f;--pk:#ff4650;
  background:radial-gradient(1200px 700px at 15% -10%,#4d4106 0,transparent 60%),radial-gradient(900px 600px at 100% 0,#5a1217 0,transparent 55%),var(--bg)}
:root[data-party="tdp"] .tvhd{background:linear-gradient(100deg,#f5c400,#ffe21f 55%,#ffd000);color:#5c0a10;box-shadow:0 14px 50px rgba(245,196,0,.35);border-bottom:5px solid #d9232d}
:root[data-party="tdp"] .tvttl h1{color:#5c0a10}:root[data-party="tdp"] .tvttl small,:root[data-party="tdp"] .tvttl .te,:root[data-party="tdp"] .tvclock{color:#7d0d14}
:root[data-party="tdp"] .tvttl .al span{background:#d9232d;color:#fff}:root[data-party="tdp"] .tvlive,:root[data-party="tdp"] .tvbtns button,:root[data-party="tdp"] .tvbtns a{background:#5c0a10;color:#fff}
:root[data-party="tdp"] .tvcount b{background:linear-gradient(180deg,#fff7a8,#f5d800);-webkit-background-clip:text;background-clip:text}
:root[data-party="tdp"] .tvrt i,:root[data-party="tdp"] .tvt .f{background:linear-gradient(90deg,#f5d800,#ffe97a);box-shadow:0 0 14px rgba(245,216,0,.6)}
:root[data-party="tdp"] .tvt .f{background:linear-gradient(0deg,rgba(245,216,0,.5),rgba(245,216,0,.08))}
:root[data-party="tdp"] .tvspot{background:linear-gradient(90deg,rgba(245,216,0,.16),rgba(217,35,45,.18))}
:root[data-party="tdp"] .tvspot i{background:linear-gradient(#f5d800,#d9232d)}

:root[data-party="independent"] .tvwall{--bg:color-mix(in srgb,var(--p1) 14%,#05060c);--bg2:color-mix(in srgb,var(--p1) 22%,#080a14);--card:color-mix(in srgb,var(--p1) 28%,#0b0d18);--card2:color-mix(in srgb,var(--p1) 36%,#0d1020);--tl:color-mix(in srgb,var(--p1) 55%,#222);--tm:color-mix(in srgb,var(--p2) 35%,#cfd6ee);--or:var(--p3);--or2:var(--p2);--gold:var(--p2);
  background:radial-gradient(1200px 700px at 15% -10%,color-mix(in srgb,var(--p1) 60%,#000) 0,transparent 60%),radial-gradient(900px 600px at 100% 0,color-mix(in srgb,var(--p3) 35%,#000) 0,transparent 55%),var(--bg)}
:root[data-party="independent"] .tvhd{background:linear-gradient(100deg,var(--p1),color-mix(in srgb,var(--p1) 75%,var(--p2)));color:var(--p1fg);border-bottom:5px solid var(--p2);box-shadow:0 14px 50px color-mix(in srgb,var(--p1) 50%,transparent)}
:root[data-party="independent"] .tvttl h1,:root[data-party="independent"] .tvttl small,:root[data-party="independent"] .tvttl .te,:root[data-party="independent"] .tvclock{color:var(--p1fg)}
:root[data-party="independent"] .tvttl .al span{background:var(--p2);color:var(--p2fg)}:root[data-party="independent"] .tvlive,:root[data-party="independent"] .tvbtns button,:root[data-party="independent"] .tvbtns a{background:rgba(0,0,0,.35);color:#fff}
:root[data-party="independent"] .tvcount b{background:linear-gradient(180deg,color-mix(in srgb,var(--p2) 60%,#fff),var(--p2));-webkit-background-clip:text;background-clip:text}
