*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--c-bg: #f4f7f3;--c-card: #ffffff;--c-card-tint: #eaf2ec;--c-fg: #13201a;--c-muted: #47574e;--c-border: #dbe5dc;--c-rule: #c9d7cb;--c-accent: #0b6b43;--c-accent-hover: #085639;--c-accent-fg: #ffffff;--c-live: #cf2032;--c-live-bg: #fceaec;--c-finished: #4f6470;--c-finished-bg: #eef2f4;--c-soon: #8a5a00;--c-soon-bg: #fbf0d4;--c-soon-border: #f0ac1b;--radius: 18px;--radius-sm: 12px;--max-w: 680px;--touch: 56px}@media (prefers-color-scheme: dark){:root{--c-bg: #0e1612;--c-card: #17231d;--c-card-tint: #1d2b24;--c-fg: #e9f2eb;--c-muted: #a6bab0;--c-border: #2b3a32;--c-rule: #38483f;--c-accent: #34d399;--c-accent-hover: #5fe0ae;--c-accent-fg: #052619;--c-live: #ff7a85;--c-live-bg: #3a1c1f;--c-finished: #a7bcc6;--c-finished-bg: #1e2a30;--c-soon: #f3c558;--c-soon-bg: #33280f;--c-soon-border: #f3c558}}html{font-family:system-ui,-apple-system,sans-serif;font-size:17px;line-height:1.65;-webkit-text-size-adjust:100%}body{background:var(--c-bg);color:var(--c-fg);padding:0 18px 64px;max-width:var(--max-w);margin:0 auto}a,a:visited{color:var(--c-accent)}a:focus-visible,.lang-toggle a:focus-visible{outline:4px solid var(--c-accent);outline-offset:3px}header{padding:30px 0 18px;border-bottom:4px solid var(--c-rule);margin-bottom:8px}header .brand{display:flex;align-items:center}.frontrow-logo{display:flex;align-items:center;gap:10px}.frontrow-logo .logo-mark{width:48px;height:48px;flex-shrink:0}.frontrow-logo .logo-wordmark{font-size:1.85rem;font-weight:800;letter-spacing:-.5px;line-height:1;color:var(--c-accent);margin:0}header .intro{font-size:1.05rem;color:var(--c-fg);margin-top:14px;max-width:38ch;line-height:1.5}header .meta{font-size:1.05rem;color:var(--c-muted);margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}header .meta .today{font-weight:700;color:var(--c-fg)}.date-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:16px 0;padding:10px;background:var(--c-card);border:1px solid var(--c-border);border-radius:var(--radius-sm)}.date-nav-arrow{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border-radius:var(--radius-sm);border:2px solid var(--c-border);font-size:1.3rem;font-weight:800;text-decoration:none;color:var(--c-fg);flex-shrink:0}.date-nav-arrow:visited{color:var(--c-fg)}.date-nav-arrow:hover{border-color:var(--c-accent);color:var(--c-accent)}.date-input{flex:1 1 150px;min-height:44px;padding:0 12px;border-radius:var(--radius-sm);border:2px solid var(--c-border);background:var(--c-bg);color:var(--c-fg);font-size:1rem;font-family:inherit}.date-nav-go{min-height:44px;padding:0 18px;border-radius:var(--radius-sm);border:none;background:var(--c-accent);color:var(--c-accent-fg);font-weight:800;font-size:.95rem;cursor:pointer;flex-shrink:0}.date-nav-go:hover{background:var(--c-accent-hover)}.date-nav-today{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:var(--radius-sm);background:var(--c-card-tint);color:var(--c-accent);font-weight:700;font-size:.9rem;text-decoration:none;white-space:nowrap}.date-nav-today:visited{color:var(--c-accent)}.lang-toggle{display:inline-flex;gap:6px;align-items:center}.lang-toggle a{display:inline-flex;align-items:center;justify-content:center;min-width:52px;min-height:48px;padding:0 12px;border-radius:var(--radius-sm);font-size:1rem;font-weight:800;text-decoration:none;color:var(--c-muted);border:2px solid var(--c-border)}.lang-toggle a.active{color:var(--c-fg);background:var(--c-card-tint);border-color:var(--c-accent)}.time-group{margin-bottom:28px}.time-group>h2{font-size:1.35rem;font-weight:800;letter-spacing:-.2px;margin-bottom:14px;padding-bottom:8px;border-bottom:3px solid var(--c-rule)}.sport-section{margin-bottom:32px}.sport-section h3{font-size:1.4rem;font-weight:800;letter-spacing:-.3px;color:var(--c-fg);margin-bottom:16px;display:flex;align-items:center;gap:12px}.sport-section h3 .sport-emoji{font-size:1.9rem;line-height:1}.match-card{background:var(--c-card);border:1px solid var(--c-border);border-left:8px solid var(--c-border);border-radius:var(--radius);padding:22px 22px 24px;margin-bottom:18px;box-shadow:0 2px 8px #5037140f}.match-card.is-live{border-left-color:var(--c-live)}.match-card.is-finished{border-left-color:var(--c-accent)}.match-card.is-soon{border-left-color:var(--c-soon-border)}.match-card .competition{font-size:1rem;font-weight:600;color:var(--c-muted);margin-bottom:6px}.match-card .teams{font-size:1.5rem;font-weight:800;line-height:1.25;margin-bottom:16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.match-card .team-name{display:inline-flex;align-items:center;gap:8px}.match-card .team-crest{width:40px;height:40px;border-radius:4px;object-fit:contain;flex-shrink:0;background:var(--c-card-tint);min-width:40px}.match-card .vs{color:var(--c-muted);font-weight:600;font-size:1.1rem;padding:0 2px}.match-card .status-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}.match-card .kickoff{font-size:2.3rem;font-weight:800;line-height:1;letter-spacing:-.5px}.match-card .kickoff .eat-label{display:block;font-size:.75rem;font-weight:700;letter-spacing:.5px;color:var(--c-muted);margin-top:4px}.match-card .score{font-size:2.4rem;font-weight:800;line-height:1;white-space:nowrap}.match-card .score .min{font-size:1rem;font-weight:800;color:var(--c-live);margin-left:8px;animation:live-blink 1.4s ease-in-out infinite}@keyframes live-blink{0%,to{opacity:1}50%{opacity:.3}}.live-blink{animation:live-blink 1.4s ease-in-out infinite}.match-card .scorers-row{display:flex;justify-content:space-between;gap:8px;font-size:.82rem;color:var(--c-muted);margin:-10px 0 14px}.match-card .scorers-home{text-align:left}.match-card .scorers-away{text-align:right}.match-card .scorer{display:block;line-height:1.6}.stream-row{margin-top:10px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.btn-stream{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;min-height:44px;background:transparent;color:var(--c-live);border:2px solid var(--c-live);border-radius:var(--radius-sm);font-size:1rem;font-weight:700;text-decoration:none;white-space:nowrap}.btn-stream:hover{background:var(--c-live-bg)}.btn-stream-disabled{font-family:inherit;color:var(--c-muted);border-color:var(--c-border);background:var(--c-card-tint);cursor:not-allowed}.btn-stream-disabled:hover{background:var(--c-card-tint)}.badge{display:inline-flex;align-items:center;gap:8px;font-size:1.05rem;font-weight:800;padding:8px 16px;border-radius:999px;line-height:1.1}.badge svg{width:18px;height:18px;flex-shrink:0}.badge-live{background:var(--c-live-bg);color:var(--c-live)}.badge-finished{background:var(--c-finished-bg);color:var(--c-finished)}.badge-soon{background:var(--c-soon-bg);color:var(--c-soon)}.empty{padding:48px 24px;text-align:center;color:var(--c-muted);font-size:1.15rem;font-weight:600;background:var(--c-card);border:2px dashed var(--c-border);border-radius:var(--radius)}.sport-empty{padding:16px 22px;color:var(--c-muted);font-size:1.02rem;background:var(--c-card-tint);border:1px dashed var(--c-border);border-radius:var(--radius)}.sport-tabs{position:relative}.tab-radio{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.tab-bar{display:flex;flex-wrap:wrap;gap:6px;padding:12px 0 10px;margin-bottom:24px;position:sticky;top:0;z-index:10;background:var(--c-bg);border-bottom:2px solid var(--c-rule)}.tab-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;border:2px solid var(--c-border);background:var(--c-card);color:var(--c-muted);font-size:.88rem;font-weight:700;white-space:nowrap;cursor:pointer;user-select:none;min-height:40px}.tab-btn:hover{border-color:var(--c-accent);color:var(--c-fg)}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;border-radius:999px;background:var(--c-border);color:var(--c-muted);font-size:.75rem;font-weight:800}#sport-football:checked~.tab-bar label[for=sport-football],#sport-nba:checked~.tab-bar label[for=sport-nba],#sport-tennis:checked~.tab-bar label[for=sport-tennis],#sport-f1:checked~.tab-bar label[for=sport-f1],#sport-wwe:checked~.tab-bar label[for=sport-wwe],#sport-other:checked~.tab-bar label[for=sport-other],#sport-channels:checked~.tab-bar label[for=sport-channels]{border-color:var(--c-accent);background:var(--c-accent);color:var(--c-accent-fg)}#sport-football:checked~.tab-bar label[for=sport-football] .tab-count,#sport-nba:checked~.tab-bar label[for=sport-nba] .tab-count,#sport-tennis:checked~.tab-bar label[for=sport-tennis] .tab-count,#sport-f1:checked~.tab-bar label[for=sport-f1] .tab-count,#sport-wwe:checked~.tab-bar label[for=sport-wwe] .tab-count,#sport-other:checked~.tab-bar label[for=sport-other] .tab-count,#sport-channels:checked~.tab-bar label[for=sport-channels] .tab-count{background:#ffffff4d;color:var(--c-accent-fg)}.tab-panel{display:none}#sport-football:checked~#panel-football,#sport-nba:checked~#panel-nba,#sport-tennis:checked~#panel-tennis,#sport-f1:checked~#panel-f1,#sport-wwe:checked~#panel-wwe,#sport-other:checked~#panel-other,#sport-channels:checked~#panel-channels{display:block}.category-tag{display:inline-block;margin-left:8px;padding:2px 10px;border-radius:999px;background:var(--c-card-tint);color:var(--c-muted);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.3px;vertical-align:middle}.approx-note{font-size:.8rem;color:var(--c-muted);margin-top:-8px;margin-bottom:4px;font-style:italic}.momentum-bar{position:relative;height:20px;margin:0 0 14px}.momentum-track{position:absolute;top:50%;left:0;right:0;height:3px;transform:translateY(-50%);background:var(--c-rule);border-radius:2px}.momentum-tick{position:absolute;top:50%;width:10px;height:10px;border-radius:50%;transform:translate(-50%,-50%);border:2px solid var(--c-card)}.momentum-home{background:var(--c-accent)}.momentum-away{background:var(--c-soon-border)}.competition-block{margin-bottom:28px}.competition-block>h3{font-size:1.25rem;font-weight:800;margin-bottom:12px}.competition-tabs{display:flex;flex-direction:column;gap:8px}.competition-extra{background:var(--c-card);border:2px solid var(--c-border);border-radius:var(--radius-sm);padding:0 16px}.competition-extra[open]{border-color:var(--c-accent)}.competition-extra>summary{cursor:pointer;padding:14px 0;font-weight:800;font-size:1.02rem;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--c-muted)}.competition-extra[open]>summary{color:var(--c-accent)}.competition-extra>summary::-webkit-details-marker{display:none}.competition-extra>summary:after{content:"▾";font-size:.9rem;color:var(--c-muted);transition:transform .15s ease}.competition-extra[open]>summary:after{transform:rotate(180deg);color:var(--c-accent)}.competition-extra>:not(summary){padding-bottom:16px}.competition-overview .match-card:last-child{margin-bottom:0}.league-table{background:var(--c-card-tint);border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:12px}.league-table h4{font-size:.95rem;font-weight:800;margin-bottom:8px;color:var(--c-muted)}.table-scroll{overflow-x:auto}.league-table table{width:100%;border-collapse:collapse;font-size:.9rem}.league-table th,.league-table td{padding:8px 6px;text-align:center;white-space:nowrap}.league-table thead th{color:var(--c-muted);font-weight:700;border-bottom:2px solid var(--c-rule)}.league-table .col-rank{width:28px;color:var(--c-muted)}.league-table .col-team{text-align:left;font-weight:700;display:flex;align-items:center;gap:8px}.league-table .col-team img{width:20px;height:20px;object-fit:contain}.league-table .col-pts{font-weight:800}.league-table tbody tr:not(:last-child){border-bottom:1px solid var(--c-rule)}.group-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}.knockout-bracket{position:relative;display:flex;gap:46px;overflow-x:auto;padding:8px 6px 14px;cursor:grab;user-select:none}.knockout-bracket.is-dragging{cursor:grabbing}.bracket-lines{position:absolute;top:0;left:0;pointer-events:none;z-index:0}.bracket-line{fill:none;stroke:var(--c-rule);stroke-width:2px}.bracket-round{position:relative;z-index:1;min-width:230px;flex-shrink:0;display:flex;flex-direction:column}.bracket-round h4{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--c-accent-fg);background:var(--c-accent);text-align:center;padding:6px 10px;border-radius:999px;margin-bottom:16px}.bracket-round-matches{display:flex;flex-direction:column;justify-content:flex-start;gap:16px}.bracket-match{position:relative;background:var(--c-card);border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:4px 12px;box-shadow:0 1px 4px #5037140f}.bracket-team{display:flex;align-items:center;gap:10px;font-size:.94rem;font-weight:700;padding:8px 0;color:var(--c-muted)}.bracket-team:first-child{border-bottom:1px dashed var(--c-rule)}.bracket-team img{width:24px;height:24px;object-fit:contain;border-radius:3px;flex-shrink:0}.bracket-team-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bracket-score{font-weight:800;min-width:18px;text-align:right;color:var(--c-muted)}.bracket-team.is-winner{color:var(--c-fg)}.bracket-team.is-winner .bracket-score{color:var(--c-accent)}.bracket-team.is-winner .bracket-team-name:after{content:" ✓";color:var(--c-accent);font-weight:800}.bracket-time{font-size:.78rem;color:var(--c-muted);margin:8px 0 0;text-align:center}.bracket-time-live{color:var(--c-live);font-weight:800}.bracket-tbd{padding:20px 0;text-align:center;color:var(--c-muted);font-size:.85rem;font-style:italic}.wc-bracket-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.wc-bracket-nav button{font-family:inherit;cursor:pointer;padding:8px 14px;min-height:40px;border-radius:999px;border:2px solid var(--c-border);background:var(--c-card);color:var(--c-muted);font-size:.85rem;font-weight:700;white-space:nowrap}.wc-bracket-nav button:hover{border-color:var(--c-accent);color:var(--c-accent)}.wc-bracket{position:relative;overflow-x:auto;padding:8px 6px 14px;cursor:grab;user-select:none}.wc-bracket.is-dragging{cursor:grabbing}.wc-bracket-inner{display:flex;align-items:center;gap:34px;width:max-content}.wc-final-column{min-width:210px;align-self:stretch;justify-content:center;gap:20px}.wc-final-match{border:2px solid var(--c-accent);box-shadow:0 2px 10px #0b6b4326}.wc-third-place{margin-top:8px}.wc-third-place h5{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--c-muted);text-align:center;margin-bottom:8px}.wc-third-place .bracket-match{opacity:.85}.stats-panel h4{font-size:.95rem;font-weight:800;margin-bottom:10px;color:var(--c-muted)}.stats-empty{color:var(--c-muted);font-size:.9rem}.scorer-list{list-style:none;counter-reset:scorer}.scorer-list li{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--c-rule);font-size:.92rem}.scorer-list li:last-child{border-bottom:none}.scorer-name{font-weight:700;flex:1}.scorer-team{color:var(--c-muted);font-size:.85rem}.scorer-goals{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:999px;background:var(--c-accent);color:var(--c-accent-fg);font-weight:800;font-size:.8rem}.channel-group{margin-bottom:18px}.channel-group h3{font-size:1rem;font-weight:800;color:var(--c-muted);margin-bottom:8px}.channel-list{list-style:none;display:flex;flex-wrap:wrap;gap:8px}.channel-list a{display:inline-flex;align-items:center;min-height:40px;padding:8px 16px;border-radius:999px;border:2px solid var(--c-border);background:var(--c-card);font-weight:700;font-size:.9rem;text-decoration:none;color:var(--c-fg)}.channel-list a:visited{color:var(--c-fg)}.channel-list a:hover{border-color:var(--c-accent);color:var(--c-accent)}.panel-time-group{margin-bottom:24px}.panel-time-group>h2{font-size:1.1rem;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--c-muted);margin-bottom:12px;padding-bottom:6px;border-bottom:2px solid var(--c-rule)}footer{margin-top:56px;padding-top:24px;border-top:4px solid var(--c-rule);font-size:1rem;line-height:1.6;color:var(--c-muted)}@media (max-width: 380px){html{font-size:16px}.match-card{padding:18px 16px 20px}.match-card .status-row{gap:10px}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
