/* Remote-first layout, enabled only at /tv or ?tv=1. */
.tv-mode{font-size:18px}
.tv-mode aside{width:200px;padding:28px 16px}
.tv-mode main{margin-left:200px;padding:0 28px}
.tv-mode .nav{font-size:16px;padding:14px 10px}
.tv-mode button,.tv-mode select,.tv-mode input{font-size:15px}
.tv-mode :focus{outline:3px solid var(--accent);outline-offset:3px}
.tv-mode button:focus,.tv-mode summary:focus{background:#352744;color:var(--text)}
.tv-mode button.primary:focus{background:var(--accent);color:#1b1229;box-shadow:0 0 0 3px #151517,0 0 0 6px var(--accent)}
.tv-mode .event-section-heading{font-size:18px;margin-bottom:14px}
.tv-mode .tier-event-row>.event-card{flex-basis:340px;padding:16px}
.tv-mode .event-card .event-identity h3{font-size:18px}
.tv-mode .event-card .event-dates,.tv-mode .event-card .event-stages{font-size:13px}
.tv-mode .event-card .event-actions button{height:38px;font-size:14px}
.tv-mode .event-card .event-actions .favorite-button{width:38px;font-size:24px}
.tv-mode .tier-event-row{padding:6px 5px 12px;gap:18px}
.tv-mode #library-view .event-filters{grid-template-columns:130px minmax(160px,1fr) 200px 140px}
.tv-mode #event-search{font-size:15px}
.tv-mode .stage-tab{font-size:16px;padding:10px 18px}
.tv-mode .compact-match:focus{z-index:2;outline-offset:2px}
.tv-mode #match-dialog{width:min(560px,90vw);padding:24px}
.tv-mode .teams{font-size:21px}
.tv-mode .card-bottom button{font-size:16px;padding:12px 18px}
.tv-mode .card-bottom .result-actions button{font-size:14px;padding:8px 0}
.tv-mode .match-play-actions .watch-button{min-width:150px}
.tv-mode .card-bottom .muted{font-size:14px}
.tv-mode #confirm-dialog{width:520px;font-size:18px}
.tv-mode #watch-dialog:not(.mini) .player-controls button{min-width:42px;height:38px;font-size:15px}
.tv-mode #watch-dialog:not(.mini) .player-controls{padding:6px 14px}
.tv-mode #watch-dialog:not(.mini) .volume-label,.tv-mode #native-pip,.tv-mode #pip{display:none}
.tv-mode #watch-dialog:not(.mini) .seek-inline{max-width:600px}
.tv-mode .seek-bound{font-size:12px}
.tv-mode #watch-dialog:not(.mini) #seek{height:22px}
.tv-mode #watch-dialog:not(.mini) .watch-header{min-height:52px}
.tv-mode #back-player{width:40px;height:40px}
.tv-mode #player-status{font-size:13px}
.tv-mode #toast{font-size:16px;z-index:50}
@media(max-width:1000px){.tv-mode aside{width:170px}.tv-mode main{margin-left:170px;padding:0 20px}.tv-mode #library-view .event-filters{grid-template-columns:130px minmax(130px,1fr)}}

.tv-mode #fullscreen{display:none}
/* TV navigation has one focus target per tournament and no desktop sidebar. */
.tv-mode>aside{display:none!important}
.tv-mode main{margin:0;max-width:none;padding:0 40px}
.tv-mode main>header{height:64px;position:relative}
.tv-mode main>header>span{font-size:14px;letter-spacing:1px}
.tv-mode #hide-all,.tv-mode #event-filters,.tv-mode main>footer{display:none!important}
.tv-mode #tv-settings{width:44px;height:44px;padding:0;font-size:27px;border:0;background:transparent}
.tv-mode .tier-scroll-actions{display:none!important}
.tv-mode .event-section-heading{cursor:default}
.tv-mode .event-card[role=button]{cursor:pointer;min-height:170px}
.tv-mode .event-card[role=button]:focus{background:#352744;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
.tv-mode .event-actions{display:none}
.tv-mode .event-footer{justify-content:flex-start;min-height:26px}
.tv-mode .event-team-preview{width:100%}
.tv-mode .tv-favorite-mark{display:block;color:var(--accent);font-size:12px;margin-top:6px}
.tv-mode .tv-overview-favorite{margin:4px 0 20px;font-size:18px}
.tv-mode #tv-settings-dialog{width:min(480px,90vw);padding:28px}
.tv-mode #tv-settings-dialog button{display:block;text-align:left;width:100%;margin:12px 0;font-size:18px}
/* Fullscreen is the TV layout itself, so Back and our overlay remain accessible. */
.tv-mode #watch-dialog:not(.mini){position:fixed;inset:0;height:100dvh;min-height:0;overflow:hidden}
.tv-mode #watch-dialog:not(.mini) .watch-header{display:none}
.tv-mode #watch-shell{width:100%;height:100%;position:relative}
.tv-mode #media-area{height:100%;padding:0!important}
.tv-mode #video-row{height:100%;width:100%}
.tv-mode #watch-dialog:not(.mini) #video-stage{width:100%!important;height:100%;flex:1;min-height:0}
.tv-mode #watch-dialog .team-wing{display:none!important}
.tv-mode #watch-dialog:not(.mini) .player-controls{position:absolute;z-index:4;inset:auto 0 0;padding:26px 40px 20px;display:flex;flex-direction:column;align-items:stretch;gap:10px;background:linear-gradient(transparent,rgba(17,16,23,.95) 25%);opacity:1;transition:transform .18s ease,opacity .18s ease}
.tv-mode #watch-dialog .seek-inline,.tv-mode #quality,.tv-mode #player-status,.tv-mode #fullscreen-controls-edge{display:none!important}
.tv-mode #watch-dialog .control-row{display:flex;justify-content:flex-start;gap:12px}
.tv-mode #watch-dialog .control-left{display:flex;gap:14px}
.tv-mode #watch-dialog .control-right{margin-left:0}
.tv-mode #watch-dialog:not(.mini) .player-controls button{height:46px;min-width:64px;padding:8px 18px;font-size:18px}
.tv-mode #watch-dialog:not(.mini) #back-player{display:block;width:auto;font-size:17px}
.tv-mode #watch-dialog:not(.mini) #play{min-width:64px;font-size:22px}
.tv-mode .tv-player-heading{font-size:19px;font-weight:700}
.tv-mode .tv-seek-hint{font-size:13px;color:var(--muted)}
.tv-mode #watch-shell.controls-hidden .player-controls{opacity:0;transform:translateY(100%);pointer-events:none}
@media(prefers-reduced-motion:reduce){.tv-mode .player-controls{transition:none!important}}
