/* Montserrat (SIL Open Font License 1.1), latin subset, same font as the Programme Foot app */
@font-face{font-family:"Montserrat";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/montserrat-regular.woff2) format("woff2")}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:500 600;font-display:swap;src:url(/fonts/montserrat-semibold.woff2) format("woff2")}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:700 800;font-display:swap;src:url(/fonts/montserrat-bold.woff2) format("woff2")}
/* Refonte 2026, ported from the programmefoot.pages.dev prototype */
:root{--hero-bg:linear-gradient(160deg,#2c3033,#181A1B 70%);--bg:#eef0f3;--card:#ffffff;--card-2:#f6f7f9;--ink:#111418;--muted:#687080;--line:#e7e9ed;--accent:#181A1B;--accent-ink:#ffffff;--accent-soft:#eefbd3;--cta:#BCFF00;--cta-ink:#181A1B;--live:#e5383b;--pink:#b0326f;--pink-soft:#fbe7f0;--bar:#181A1B;--bar-2:#25282A;--bar-ink:#ffffff;--bar-muted:rgb(255 255 255/.78);--foot:#181A1B;--focus:#181A1B;--r:12px;--font:"Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;color-scheme:light}
@media(prefers-color-scheme:dark){
  :root{--bg:#0d0e10;--card:#191b1e;--card-2:#212428;--ink:#eceef1;--muted:#9aa2ad;--line:#2a2d32;--accent:#BCFF00;--accent-ink:#181A1B;--accent-soft:#263212;--live:#ff5a5d;--pink:#f08cbd;--pink-soft:#3a2230;--bar:#181A1B;--bar-2:#25282A;--foot:#131415;--focus:#BCFF00;color-scheme:dark}
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 var(--font)}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
img{max-width:100%}
h1,h2,h3{line-height:1.2;margin:0}
small{color:var(--muted)}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.skip{position:absolute;left:-999px}
.skip:focus{left:8px;top:8px;background:var(--card);padding:8px 12px;z-index:10}
.bar{background:var(--bar);color:var(--bar-ink);position:sticky;top:0;z-index:8}
.bar-in{max-width:1240px;margin:0 auto;height:56px;padding:0 16px;display:flex;align-items:center;gap:20px}
.logo{display:flex;align-items:center;flex:none}
/* One-line wordmark: the letters are the lower two thirds of the image (corner bracket above), so the image is
   raised by 15% of its height to put the letters' centre on the menu's centre line */
.logo img{height:24px;width:auto;display:block;position:relative;top:-4px}
@media(max-width:720px){.logo img{height:20px;top:-3px}}
.nav{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;height:100%;align-items:stretch}
.nav::-webkit-scrollbar{display:none}
.nav a{display:flex;align-items:center;padding:0 12px;white-space:nowrap;color:var(--bar-muted);font-weight:500;font-size:13.5px;border-bottom:3px solid transparent}
.nav a:hover{color:var(--bar-ink)}
.nav a[aria-current=page]{color:var(--bar-ink);border-bottom-color:var(--cta)}
.dates{background:var(--bar-2);border-top:1px solid rgb(255 255 255/6%)}
.dates-in{max-width:1240px;margin:0 auto;padding:0 12px;display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
.dates-in::-webkit-scrollbar{display:none}
.dates a{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:58px;padding:6px 8px;color:var(--bar-muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;border-radius:8px;margin:6px 0}
.dates a b{color:var(--bar-ink);font-size:14px;letter-spacing:0}
.dates a:hover{background:rgb(255 255 255/6%)}
.dates a[aria-current=page]{background:var(--cta);color:var(--cta-ink)}
.dates a[aria-current=page] b{color:var(--cta-ink)}
@media(max-width:720px){
  .bar{position:static}
  .bar-in{height:auto;flex-wrap:wrap;gap:0;padding:0}
  .logo{padding:12px 16px 4px}
  .nav{width:100%;height:42px;padding:0 6px}
  .dates{position:sticky;top:0;z-index:8}
}
.shell{max-width:1240px;margin:0 auto;padding:16px;display:grid;grid-template-columns:220px minmax(0,1fr)300px;gap:16px;align-items:start}
.side-l,.side-r{position:sticky;top:124px;display:grid;gap:16px}
.feed{min-width:0;display:grid;gap:14px;align-content:start}
@media(max-width:1180px){
  .shell{grid-template-columns:minmax(0,1fr)300px}
  .side-l{display:none}
}
@media(max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr);padding:10px;gap:10px}
  .side-r{position:static}
  .side-r .hide-m{display:none}
}
.card{background:var(--card);border-radius:var(--r);overflow:hidden}
.card-h{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line)}
.card-h h2,.card-h h3{font-size:14px;font-weight:500}
.card-h img{width:20px;height:20px;object-fit:contain;flex:none}
.card-h .ctry{color:var(--muted);font-weight:500;font-size:12px}
.card-h .more{margin-left:auto;color:var(--muted);font-size:12px;font-weight:500;white-space:nowrap}
.card-h .more:hover{color:var(--accent)}
.card-b{padding:12px 14px}
.side-list{list-style:none;margin:0;padding:6px 0}
.side-list a{display:flex;align-items:center;gap:10px;padding:7px 14px;font-weight:500;font-size:13px}
.side-list a:hover{background:var(--card-2)}
.side-list img{width:20px;height:20px;object-fit:contain;flex:none}
.side-list .n{margin-left:auto;color:var(--muted);font-weight:500;font-size:12px}
.head{background:var(--card);border-radius:var(--r);padding:16px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.head h1{font-size:20px;font-weight:500;letter-spacing:-.01em}
.head .sub{color:var(--muted);font-size:13px;margin:4px 0 0}
.head>div{flex:1 1 240px;min-width:0}
.head-logo{width:56px;height:56px;object-fit:contain;flex:none}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:4px;padding:0;margin:0 0 4px;font-size:12px;color:var(--muted)}
.crumbs li+li::before{content:"›";margin-right:4px}
.crumbs a:hover{color:var(--accent)}
.tabs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs a,.chip{flex:none;font:inherit;font-size:12.5px;font-weight:500;padding:6px 12px;border-radius:999px;background:var(--card);color:var(--ink);border:1px solid var(--line);cursor:pointer;white-space:nowrap}
.tabs a:hover{border-color:var(--accent)}
.chip[aria-pressed=true]{background:var(--cta);color:var(--cta-ink);border-color:var(--cta)}
.filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.sel select{font:inherit;font-size:12.5px;font-weight:500;padding:6px 10px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink);max-width:100%}
.fav{margin-left:auto;font:inherit;font-weight:500;font-size:13px;cursor:pointer;border:0;color:var(--cta-ink);background:var(--cta);border-radius:999px;padding:8px 14px}
.fav[aria-pressed=true]{background:var(--card-2);color:var(--ink)}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.tags a{font-size:12px;font-weight:500;padding:3px 9px;border-radius:6px;background:var(--card-2);color:var(--muted)}
.tags a:hover{color:var(--accent)}
.day{display:grid;gap:10px}
.day-h{font-size:12.5px;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:4px 4px 0;display:flex;gap:8px;align-items:baseline}
.day-h a:hover{color:var(--accent)}
.day-h small{text-transform:none;letter-spacing:0;font-weight:500}
.list{list-style:none;margin:0;padding:0}
.m{display:grid;grid-template-columns:46px minmax(0,1fr)auto;align-items:center;gap:10px;padding:11px 14px;border-top:1px solid var(--line);position:relative;min-height:46px}
.list>.m:first-child{border-top:0}
.m:hover{background:var(--card-2)}
.m.is-fav{box-shadow:inset 3px 0 0 var(--accent);background:var(--accent-soft)}
.m.is-past,.m.is-over{opacity:.62}
.m[hidden],.comp-card[hidden],.day[hidden],.more[hidden]{display:none}
.m-link{color:inherit;text-decoration:none}
.m-link::after{content:"";position:absolute;inset:0;z-index:0}
.m-time{font-variant-numeric:tabular-nums;font-weight:500;font-size:14px;display:flex;flex-direction:column;line-height:1.2}
.m-time small{font-size:10.5px;font-weight:500}
.m-state{color:var(--live);font-size:10px;font-weight:500;text-transform:uppercase}
.m-teams{display:grid;grid-template-columns:minmax(0,1fr)auto minmax(0,1fr);align-items:center;gap:8px;font-weight:500;font-size:14px;min-width:0}
.t{display:flex;align-items:center;gap:7px;min-width:0}
.t-h{justify-content:flex-end;text-align:right}
.t img{width:18px;height:18px;object-fit:contain;flex:none}
.t .n-l,.t .n-s{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.t .n-s{display:none}
.vs{color:var(--muted);font-weight:400}
.sc{font-variant-numeric:tabular-nums;background:var(--card-2);border-radius:6px;padding:1px 6px}
.m-desc{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-ch{position:relative;z-index:1;display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;padding:5px 8px;border-radius:8px;background:var(--card-2);white-space:nowrap;max-width:150px;justify-self:end}
.m-ch span{overflow:hidden;text-overflow:ellipsis}
.m-ch img{height:16px;width:auto;max-width:34px;object-fit:contain;flex:none}
.m-ch small{color:var(--muted);font-weight:500}
.m-ch:hover{background:var(--accent-soft)}
.ch{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;padding:3px 8px;border-radius:6px;background:var(--card-2);white-space:nowrap;max-width:170px}
.ch span{overflow:hidden;text-overflow:ellipsis}
.ch img{height:14px;width:auto;max-width:40px;object-fit:contain}
.b{display:inline-block;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;border-radius:4px;background:var(--card-2);color:var(--muted)}
.b-free{background:var(--accent-soft);color:var(--accent)}
.b-f{background:var(--pink-soft);color:var(--pink)}
@media(max-width:560px){
  .m{grid-template-columns:40px minmax(0,1fr)auto;gap:8px;padding:11px 10px}
  .m-teams{font-size:13.5px;gap:6px}
  .t{gap:5px}
  .t img{width:16px;height:16px}
  .t .n-l{display:none}
  .t .n-s{display:inline}
  .m-ch{max-width:104px;padding:5px 6px;font-size:11.5px}
  .m-ch img{max-width:26px;height:14px}
}
.more{display:grid}
.more>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;background:var(--card);border-radius:var(--r);padding:12px 14px;font-weight:500}
.more>summary::-webkit-details-marker{display:none}
.more>summary small{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.more>summary::after{content:"▾";color:var(--muted);margin-left:auto}
.more[open]>summary::after{content:"▴"}
.more-in{display:grid;gap:10px;margin-top:10px}
.head-c{padding:12px 16px}
.head-c h1{font-size:18px}
.menu{display:none}
@media(max-width:720px){
  .bar-in{flex-wrap:nowrap;height:50px;padding:0 6px 0 0}
  .logo{padding:0 14px}
  .bar-in>.nav{display:none}
  .menu{display:block;margin-left:auto;position:relative}
  .menu>summary{list-style:none;cursor:pointer;width:44px;height:44px;display:grid;place-items:center}
  .menu>summary::-webkit-details-marker{display:none}
  .menu>summary span,.menu>summary span::before,.menu>summary span::after{display:block;width:20px;height:2px;background:var(--bar-ink);border-radius:2px;position:relative;content:""}
  .menu>summary span::before{position:absolute;top:-6px}
  .menu>summary span::after{position:absolute;top:6px}
  .menu nav{position:absolute;right:6px;top:46px;background:var(--bar-2);border-radius:12px;padding:6px;display:grid;min-width:210px;box-shadow:0 10px 30px rgb(0 0 0/.35);z-index:20}
  .menu nav a{padding:10px 12px;color:var(--bar-ink);font-weight:500;border-radius:8px}
  .menu nav a:hover{background:rgb(255 255 255/6%)}
  .filters .sel{display:none}
  .head-c .sub{font-size:12.5px}
  .feed>.tabs{display:none}
}
.empty{background:var(--card);border-radius:var(--r);padding:18px;color:var(--muted);margin:0}
.hero{background:var(--hero-bg);color:#f3f4f6;border-radius:var(--r);padding:14px 16px 20px}
.hero .crumbs ol{color:#9ca3af}
.hero-top{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#c4c9d1;flex-wrap:wrap;margin-top:4px}
.hero-top img{width:18px;height:18px;object-fit:contain}
.hero-top a{color:#f3f4f6;font-weight:500}
.hero h1{font-size:14px;font-weight:500;color:#c4c9d1;margin:14px 0 0;text-align:center}
.duel{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin-top:14px}
.duel-t{display:flex;flex-direction:column;align-items:center;gap:8px;font-weight:500;font-size:15px;text-align:center;color:#f3f4f6}
.duel-t img{width:64px;height:64px;object-fit:contain}
.duel-mid{display:flex;flex-direction:column;align-items:center;gap:0}
.duel-big{font-size:30px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1.05}
.duel-st{font-size:12px;color:#c4c9d1;text-align:center}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}
.tile{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:var(--card-2)}
.tile img{height:26px;width:auto;max-width:56px;object-fit:contain}
.tile b{display:block;font-size:14px}
.tile small{font-size:11.5px}
.answer-text{margin:0 0 12px;font-size:14.5px}
.cal,.aff{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}
.btn{display:inline-flex;align-items:center;gap:6px;font-weight:500;font-size:13px;padding:8px 14px;border-radius:999px;background:var(--cta);color:var(--cta-ink)}
/* Hover = light veil, not a filter: a filter makes the button the containing block of its stretched ::after
   (whole tile / odds row clickable), the hover area shrinks to the button and the hover flickers */
.btn:hover{box-shadow:inset 0 0 0 999px rgb(0 0 0/.07)}
.btn-2{background:var(--card-2);color:var(--ink)}
.btn-aff{background:var(--ink);color:var(--card)}
.aff small{font-size:11px}
.facts{display:grid;grid-template-columns:max-content 1fr;gap:8px 16px;margin:0}
.facts dt{color:var(--muted)}
.facts dd{margin:0;font-weight:500}
.facts a:hover{color:var(--accent)}
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.odds table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.odds th,.odds td{padding:9px 8px;border-top:1px solid var(--line);text-align:center}
.odds thead th{border-top:0;font-size:11.5px;color:var(--muted);font-weight:500}
.odds tbody th{text-align:left;font-weight:500;white-space:nowrap}
.odds tbody th img{height:20px;width:auto;vertical-align:middle;margin-right:8px}
.odds td{font-weight:500}
.odds td.o span{display:inline-block;min-width:52px;padding:5px 0;border-radius:6px;background:var(--card-2)}
.btn-bet{--bet:#25282A;background:var(--bet);color:#fff;white-space:nowrap;font-size:11.5px;padding:6px 10px}
.anj{font-size:11.5px;color:var(--muted);margin:10px 0 0}
.anj strong{display:inline-block;border:1px solid;border-radius:4px;padding:0 4px;margin-right:4px}
@media(max-width:560px){
  .odds tbody th span{display:none}
  .odds th,.odds td{padding:8px 4px}
}
.prose{font-size:14.5px;line-height:1.6}
.prose h2{font-size:16px;margin:18px 0 6px}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:14.5px;margin:14px 0 4px}
.prose p,.prose ul{margin:0 0 10px}
.prose ul{padding-left:18px}
.prose a{color:var(--accent);font-weight:500}
.prose table{width:100%;border-collapse:collapse;margin:6px 0 12px;font-size:13.5px}
.prose th,.prose td{text-align:left;padding:7px 8px;border-top:1px solid var(--line)}
.prose thead th{border-top:0;color:var(--muted);font-size:12px}
.faq details{border-top:1px solid var(--line);padding:11px 0}
.faq details:first-of-type{border-top:0;padding-top:0}
.faq summary{font-weight:500;cursor:pointer;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";float:right;color:var(--muted);font-weight:400}
.faq details[open] summary::after{content:"–"}
.faq details p{margin:6px 0 0;color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:4px 0 12px}
.stat{background:var(--card-2);border-radius:10px;padding:10px 12px}
.stat b{display:block;font-size:20px;font-weight:500;font-variant-numeric:tabular-nums}
.stat small{font-size:11.5px}
.form{display:inline-flex;gap:3px;vertical-align:middle}
.form i{width:20px;height:20px;border-radius:5px;display:inline-grid;place-items:center;font-style:normal;font-size:11px;font-weight:500;color:#fff}
.form .w{background:#2fa84f}
.form .d{background:#9aa2ad}
.form .l{background:#e5383b}
.grid{list-style:none;padding:6px;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:2px}
.grid a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-weight:500;font-size:13px}
.grid a:hover{background:var(--card-2)}
.grid img{width:22px;height:22px;object-fit:contain;flex:none}
.grid small{margin-left:auto}
.search input{font:inherit;width:100%;padding:10px 14px;border-radius:10px;border:1px solid var(--line);background:var(--card-2);color:var(--ink)}
.feat{display:block;padding:14px}
.feat-comp{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);font-weight:500}
.feat-comp img{width:16px;height:16px;object-fit:contain}
.feat-duel{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin:12px 0;text-align:center;font-weight:500;font-size:13px}
.feat-duel img{width:40px;height:40px;object-fit:contain;display:block;margin:0 auto 6px}
.feat-duel b{font-size:20px;font-variant-numeric:tabular-nums}
.feat-ch{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.app-box{padding:14px;display:grid;gap:8px}
.app-box[hidden]{display:none}
.app-box p{margin:0;color:var(--muted);font-size:13px}
.app-box .btns{display:flex;gap:8px;flex-wrap:wrap}
.favs-list{list-style:none;padding:8px;margin:0;display:flex;flex-wrap:wrap;gap:6px}
.favs-list a{font-weight:500;font-size:12.5px;padding:5px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}
.foot{background:var(--foot);color:var(--bar-muted);margin-top:24px;font-size:13px}
.foot-in{max-width:1240px;margin:0 auto;padding:28px 16px 20px}
.foot-about{max-width:860px;line-height:1.6}
.foot-about h2{color:var(--bar-ink);font-size:15px;margin:0 0 8px}
.foot-about p{margin:0 0 10px}
.foot-about a{color:var(--bar-ink);font-weight:500}
.foot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:20px;margin-top:22px;padding-top:20px;border-top:1px solid rgb(255 255 255/8%)}
.foot h3{color:var(--bar-ink);font-size:12px;text-transform:uppercase;letter-spacing:.06em;margin:0 0 10px}
.foot ul{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.foot a:hover{color:var(--bar-ink)}
.foot-legal{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:22px;padding-top:16px;border-top:1px solid rgb(255 255 255/8%);font-size:12px}
@media(prefers-reduced-motion:no-preference){
  html{scroll-behavior:smooth}
}
.feed,.day,.more,.more-in,.side-l,.side-r{grid-template-columns:minmax(0,1fr)}
@media(max-width:560px){
  .m-ch{max-width:118px;gap:5px}
  .m-ch small{display:none}
  .head-c{padding:10px 14px}
  .head-c h1{font-size:16px}
  .head-c .sub{display:none}
  .day-h{font-size:12px}
}
.m{grid-template-columns:50px minmax(0,1fr)150px}
.m-ch{justify-self:stretch;justify-content:flex-start;max-width:none}
.m-teams{grid-template-columns:minmax(0,1fr)40px minmax(0,1fr)}
.vs,.sc{justify-self:center;text-align:center}
@media(max-width:560px){
  .m{grid-template-columns:40px minmax(0,1fr)100px}
  .m-ch{max-width:none}
  .m-teams{grid-template-columns:minmax(0,1fr)34px minmax(0,1fr)}
}
@media(max-width:560px){
  .m-teams{display:flex;justify-content:flex-start;gap:6px}
  .m-teams .t{flex:initial;justify-content:flex-start;min-width:0}
  .m-teams .t img{display:none}
  .m-teams .vs,.m-teams .sc{flex:none}
}

/* ---- Symfony port additions ---- */
.sc{white-space:nowrap;font-weight:500}
.m-teams{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
@media(max-width:560px){.m-teams{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}}
.feed-list{display:grid;gap:14px}
.m-state{display:block}

/* Legacy page bodies (competition, team, channel, lists, match, static pages) until each is ported */
.main-content,.block-programtv{display:grid;gap:14px;min-width:0}
.main-content>h1,.block-programtv>h1{background:var(--card);border-radius:var(--r);padding:16px;font-size:20px;font-weight:500}
.main-content>p,.main-content>.text,.block-programtv>p,.main-content>ul,.main-content>.line{background:var(--card);border-radius:var(--r);padding:14px 16px;margin:0;font-size:14.5px;line-height:1.6}
.main-content>h2{font-size:15px;font-weight:500;margin:6px 4px -4px;padding:0;background:none}
.main-content>ul{padding-left:34px}
.main-content a:not(.m-link):not(.m-ch):not(.more):not(.btn):not(.b):not(.tile-link){color:var(--accent);font-weight:500}
.main-content .card-h a,.main-content .t a{color:inherit}
.main-content table{width:100%;border-collapse:collapse;background:var(--card);border-radius:var(--r);overflow:hidden;font-size:13.5px}
.main-content th,.main-content td{padding:8px 10px;border-top:1px solid var(--line);text-align:left;vertical-align:middle}
.main-content img{max-height:60px;width:auto}
.main-content .grid img,.main-content .head-logo{max-height:none}
.txtcenter{text-align:center}
.hide-smartphone{}
@media(max-width:560px){.hide-smartphone{display:none!important}}
@media(min-width:561px){.hide-desktop{display:none!important}}
.btn-small,.btn-large{display:inline-flex;font-weight:500;font-size:13px;padding:8px 14px;border-radius:999px;background:var(--ink);color:var(--card);border:0;cursor:pointer}
.anj-notice{font-size:11px;line-height:1.4;color:var(--muted);margin:6px 0;text-align:center}
.channel-name{display:block;font-size:12px;line-height:1.3}
.channels-list{list-style:none;padding:6px!important;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:2px;background:var(--card);border-radius:var(--r)}
.channels-list a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-weight:500;font-size:13px;color:var(--ink)!important}
.channels-list a:hover{background:var(--card-2)}
.channels-list img{width:22px!important;height:22px;object-fit:contain;flex:none}
.hero a{color:inherit!important}
.tiles .aff{margin-top:0}
.odds .card-b{padding-top:0}
.b-live{background:var(--live);color:#fff;margin-left:6px;vertical-align:middle}
.anj-band{background:var(--card);border-top:1px solid var(--line);margin-top:24px}
.anj-band-in{max-width:1240px;margin:0 auto;padding:14px 16px;display:flex;gap:12px;align-items:center;font-size:12.5px;color:var(--muted)}
.anj-band-in p{margin:0}
.anj-band-in a{color:var(--ink);font-weight:500;text-decoration:underline}
.anj-band-in strong{flex:none;border:2px solid var(--ink);color:var(--ink);border-radius:50%;width:38px;height:38px;display:grid;place-items:center;font-size:13px}
.anj-band+.foot{margin-top:0}
.favs-empty p{margin:0 0 10px;color:var(--ink)}
.favs-empty .favs-list{padding:0}
.empty[hidden]{display:none}

/* Montserrat is wider than the system font: keep team names readable on phones */
@media(max-width:560px){.m-teams{font-size:13px;letter-spacing:-.01em}}
/* Odds on phones: bookmaker logo on two lines on the left, 1/N/2 then the bonus button on the right */
@media(max-width:560px){
  .odds thead tr,.odds tbody tr{display:grid;grid-template-columns:64px repeat(3,minmax(0,1fr));column-gap:6px;align-items:center;padding:0 8px}
  .odds thead th:first-child{visibility:hidden}
  .odds thead th:last-child{display:none}
  .odds tbody tr{border-top:1px solid var(--line)}
  .odds tbody th,.odds tbody td{border-top:0}
  .odds tbody th{grid-row:1/3;grid-column:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0}
  .odds tbody th img{width:56px;height:auto;max-height:48px;margin:0;object-fit:contain}
  .odds tbody th .b-live{margin:0}
  .odds tbody td.o{grid-row:1;padding:10px 0 6px}
  .odds tbody td:last-child{grid-column:2/-1;grid-row:2;padding:0 0 10px}
  .odds .btn-bet{display:flex;width:100%;justify-content:center;white-space:normal;font-size:12.5px;padding:8px 10px}
  .odds td.o span{min-width:0;width:100%}
}


/* Where-to-watch tiles: channel logo on a white square spanning two lines, subscribe button under the name */
.tiles{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.tile{display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;align-items:center}
.tile-logo{width:56px;height:56px;background:#fff;border-radius:10px;display:grid;place-items:center;box-shadow:inset 0 0 0 1px var(--line)}
.tile .tile-logo img{width:44px;height:44px;max-width:none;object-fit:contain}
.tile-txt{display:grid;gap:2px;min-width:0}
.tile-txt .btn{margin-top:6px;justify-content:center;width:100%}
.card-h .ad-tag{margin-left:auto}
/* Betting warning, arrêté du 11 juillet 2023: yellow banner at the bottom of the ad, black capitals */
.anj{display:block;background:#ffe600;color:#000;text-transform:uppercase;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:700;padding:10px 14px;line-height:1.3;font-size:12px;text-decoration:none}
.anj span{display:block}
.anj-2{font-size:10.5px;margin-top:3px}
/* Bookmaker cell: logo on a white square (readable in dark mode too) + name on wide screens */
.odds tbody th{display:flex;align-items:center;gap:10px}
.bk-logo{flex:none;width:44px;height:44px;background:#fff;border-radius:10px;display:grid;place-items:center;box-shadow:inset 0 0 0 1px var(--line)}
.odds tbody th .bk-logo img{width:34px;height:34px;max-height:none;margin:0;object-fit:contain;vertical-align:middle}
.bk-name{font-size:13.5px}
.odds em.b-live{font-style:normal}
@media(max-width:560px){
  .odds tbody th .bk-logo{display:grid;width:56px;height:56px}
  .odds tbody th .bk-logo img{width:44px;height:44px}
  .odds tbody th .bk-name{display:none}
}
/* Channel tiles follow the bookmaker rows: white logo square, grey body, white call-to-action */
.tile{background:var(--card-2)}
/* Whole tile / odds row clickable: the call-to-action (or the channel link) is stretched over its box */
.tile-txt .btn-aff{background:var(--cta);color:var(--cta-ink)}
.tile:hover .btn-aff,.tile-txt .btn-aff:hover{box-shadow:inset 0 0 0 999px rgb(0 0 0/.1)}
.tile,.odds tbody tr{position:relative}
.tile-txt .btn-aff::after,.tile-link::after,.odds .btn-bet::after{content:"";position:absolute;inset:0;border-radius:0}
.tile-txt b a:not(.tile-link){position:relative;z-index:1}
.tile{cursor:pointer;transition:box-shadow .15s}
.tile:hover{box-shadow:inset 0 0 0 1px var(--accent)}
.odds tbody tr{cursor:pointer}
.odds tbody tr:hover{background:var(--card-2)}
.card-h .ad-tag{white-space:nowrap;align-self:flex-start;margin-top:2px}
a.ad-tag{text-decoration:none}
a.ad-tag:hover{color:var(--ink)}

/* Add to calendar */
.cal-card .cal{margin:0}
.cal-label{font-weight:500;font-size:13px;margin-right:auto}
@media(max-width:560px){.cal-label{width:100%}.cal .btn{flex:1;justify-content:center}}
/* "Où regarder le match": answer sentence, channel tiles, then the calendar under a divider */
.watch .answer-text a{color:inherit!important}
.watch .answer-text a:hover{color:var(--accent)!important}
.watch .cal{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.facts dd a{color:var(--accent)}
.hero-comp{display:inline-flex;align-items:center;gap:8px}
/* Side lists: secondary "also worth following" links, kept for SEO between two rounds */
.side-sub{margin:0;padding:8px 14px 2px;border-top:1px solid var(--line);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.side-more a{font-weight:500;color:var(--muted);font-size:12.5px;padding-top:5px;padding-bottom:5px}
.side-more img{opacity:.75}
/* Selects: own chevron with room on the right (the native arrow sat on the rounded edge) */
.sel select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:6px 32px 6px 12px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23889' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:10px 6px;cursor:pointer}
/* "Aussi à suivre" folded by default (links stay in the HTML) */
.side-more-wrap>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px;padding:9px 14px}
.side-more-wrap>summary::-webkit-details-marker{display:none}
.side-more-wrap>summary span{font-weight:500;letter-spacing:0}
.side-more-wrap>summary::after{content:"▾";margin-left:auto;font-size:12px}
.side-more-wrap[open]>summary::after{content:"▴"}
.side-more-wrap>summary:hover{color:var(--ink)}
/* Left column scrolls with the page (no sticky) */
.side-l{position:static}

/* One weight everywhere (500), including browser-bold elements; the ANJ banner keeps the legal bold */
h1,h2,h3,h4,b,strong,th,summary{font-weight:500}
.anj,.anj span{font-weight:700}
/* Channel tiles inside legacy page bodies keep their colours */
.main-content .tile-txt b a{color:var(--ink)!important}

/* Web app install dialog */
.menu nav .menu-app{padding:10px 12px;color:var(--bar-ink);font:inherit;font-weight:500;text-align:left;background:none;border:0;border-top:1px solid rgb(255 255 255/8%);margin-top:4px;cursor:pointer}
.app-box button.btn{border:0;cursor:pointer;font-family:inherit}
.pf-dialog{width:min(420px,calc(100% - 32px));border:0;border-radius:16px;padding:20px;background:var(--card);color:var(--ink);box-shadow:0 20px 60px rgb(0 0 0/.35)}
.pf-dialog::backdrop{background:rgb(10 12 14/.55)}
.pf-dialog form{position:absolute;top:8px;right:8px;margin:0}
.pf-dialog-x{width:36px;height:36px;border:0;border-radius:999px;background:var(--card-2);color:var(--ink);font-size:22px;line-height:1;cursor:pointer}
.pf-dialog-h{display:flex;gap:14px;align-items:center;padding-right:36px;margin-bottom:16px}
.pf-dialog-h img{border-radius:12px;flex:none}
.pf-dialog-h h2{font-size:16px;margin:0 0 4px}
.pf-dialog-h p{margin:0;color:var(--muted);font-size:13px}
.pf-dialog .btn{width:100%;justify-content:center;padding:12px 14px;font-size:14px;border:0;cursor:pointer;font-family:inherit}
.pf-dialog [hidden]{display:none}
.pf-steps{margin:0;padding-left:20px;font-size:14px}
ol.pf-steps{display:grid;gap:10px}
.pf-steps svg{vertical-align:-3px}

/* Match page: form and head-to-head */
.history h3{font-size:14px;margin:0 0 10px}
.history-intro p{margin:0 0 4px}
.history h3:not(:first-child){margin-top:18px}
.form-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.form-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 12px}
.form-team{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.form-list small{grid-column:1/-1;font-size:12px}
.form{display:inline-flex;gap:4px}
.form i{font-style:normal;font-weight:500;font-size:12px;width:24px;height:24px;border-radius:6px;display:grid;place-items:center;color:#fff}
.form .w{background:#2e9e44}
.form .d{background:#8a919c}
.form .l{background:#d6453d}
.h2h-sum{margin:0 0 8px;font-size:13.5px;color:var(--muted)}
.h2h-sum strong{color:var(--ink);font-weight:500}
.h2h{list-style:none;margin:0;padding:0}
.h2h li{display:grid;grid-template-columns:92px minmax(0,1fr);gap:2px 10px;align-items:center;padding:8px 0;border-top:1px solid var(--line);font-size:13.5px}
.h2h time{color:var(--muted);font-size:12.5px;font-variant-numeric:tabular-nums}
.h2h-m{display:flex;align-items:center;gap:8px;min-width:0;color:inherit}
.h2h-m span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.h2h-m .win{font-weight:500}
.h2h-m b{font-weight:500;font-variant-numeric:tabular-nums;background:var(--card-2);padding:2px 7px;border-radius:6px;flex:none}
.h2h small{grid-column:2;font-size:11.5px}

/* Betting bonus card */
.bonus-list{list-style:none;margin:0;padding:0}
.bonus-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 14px;border-top:1px solid var(--line);color:inherit}
.bonus-list li:first-child .bonus-row{border-top:0}
.bonus-row:hover{background:var(--card-2)}
.bonus-row .bk-logo{width:40px;height:40px}
.bonus-row .bk-logo img{width:30px;height:30px;object-fit:contain}
.bonus-row .bk-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bonus-row .btn-bet{max-width:130px;overflow:hidden;text-overflow:ellipsis}
.bonus .anj{margin:0}

/* Season guides (competition and channel pages) */
.guide h3{font-size:14px;margin:18px 0 8px}
.guide p{margin:0 0 8px;line-height:1.55}
.guide ul:not(.guide-stats){margin:0 0 8px;padding-left:18px;line-height:1.6}
.guide .sub{color:var(--muted);font-size:12.5px}
.guide a{color:var(--accent);font-weight:500}
.guide-stats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.guide-stats li{background:var(--card-2);border-radius:10px;padding:10px 12px;font-size:12.5px;color:var(--muted);line-height:1.3}
.guide-stats b{display:block;font-size:22px;font-weight:500;color:var(--ink)}
.guide-teams{list-style:none;margin:0;padding:12px 14px;display:flex;flex-wrap:wrap;gap:6px}
.guide-teams a{display:inline-block;padding:5px 10px;border-radius:999px;background:var(--card-2);font-size:13px}
.guide-teams a:hover{background:var(--accent-soft)}

/* Widget (iframe on partner sites) */
body.widget{background:var(--bg);margin:0;padding:0 8px 8px}
.widget-bar{display:flex;align-items:center;gap:10px;background:var(--bar);color:var(--bar-ink);margin:0 -8px 8px;padding:8px 12px;font-weight:500;font-size:13px}
.widget-logo img{display:block;height:16px;width:auto;top:-2px}
.widget-main .day-h{margin-top:10px}
.widget-foot{text-align:center;font-size:12px;color:var(--muted);padding:8px 0 0}
.widget-foot p{margin:0}
.widget-foot a{color:var(--accent);font-weight:500}

/* Listings: one-line rows with a compact channel pill (small logo + short name), as on programmefoot.pages.dev.
   The per-team score spans only serve the two-line rows of the side column. */
.t .t-sc{display:none}
/* "+1" (other broadcasters, listed on the match page): small badge kept on every screen, the name shrinks first */
.m-ch small{display:inline-block;flex:none;margin-left:auto;font-size:10.5px;line-height:1.4;padding:0 5px;border-radius:999px;background:var(--card);color:var(--muted)}
@media(max-width:560px){.m-ch small{display:inline-block}}
/* "Prochains matchs à la télé" card of the side column (Block/_nextMatches.html.twig): narrow column, so the
   two-line rows of phones on every screen, crest then short name, channel logo only */
.side-next .m{grid-template-columns:44px minmax(0,1fr) auto;gap:8px;padding:9px 12px}
.side-next .m-time{font-size:13px}
.side-next .m .m-teams{display:grid;grid-template-columns:minmax(0,1fr);row-gap:5px;justify-items:stretch;font-size:13px}
.side-next .m .m-teams .t{justify-content:flex-start;text-align:left;gap:7px}
.side-next .m .m-teams .t img{display:block;order:-1;width:16px;height:16px}
.side-next .m .m-teams .t .n-l{display:none}
.side-next .m .m-teams .t .n-s{display:inline}
.side-next .m .m-teams .vs,.side-next .m .m-teams .sc{display:none}
.side-next .m .t .t-sc{display:inline;margin-left:auto;padding-left:6px;font-variant-numeric:tabular-nums}
.side-next .m-ch{padding:5px 6px}
.side-next .m-ch img~span{display:none}
.side-next .m-ch small{margin-left:0}
.side-next .card-h h2 a{color:inherit;text-decoration:none}
/* Dark mode: channel logos are drawn for light backgrounds (Disney+, beIN...), so they sit on a small white chip */
@media(prefers-color-scheme:dark){
  .m-ch img{background:#fff;border-radius:4px;padding:2px 3px;box-sizing:content-box}
}
/* Live rows: an "En cours" #BCFF00 badge replaces the kick-off time (green text on white would be 1.2:1) */
.m.is-live .m-time time,.m.is-live .m-time small{display:none}
.m.is-live .m-state{justify-self:start;align-self:center;background:var(--cta);color:var(--cta-ink);font-size:9.5px;line-height:1.15;font-weight:600;letter-spacing:.02em;text-align:center;padding:3px 5px;border-radius:6px}
.m.is-live .m-time{align-items:flex-start}
.duel-st.m-state{color:var(--cta)}
/* Light mode: #BCFF00 cannot be a text colour on white (1.2:1), so accents are ink and the links in running text
   are underlined in #BCFF00; dark mode keeps #BCFF00 text */
@media(prefers-color-scheme:light){
  .prose a,.facts dd a,.guide a,.widget-foot a,.watch .answer-text a{text-decoration:underline;text-decoration-color:var(--cta);text-decoration-thickness:2px;text-underline-offset:3px}
  .prose a:hover,.facts dd a:hover,.guide a:hover,.widget-foot a:hover,.watch .answer-text a:hover{text-decoration-thickness:4px}
  .crumbs a:hover,.day-h a:hover,.card-h .more:hover,.tags a:hover{text-decoration:underline;text-decoration-color:var(--cta);text-decoration-thickness:3px;text-underline-offset:3px}
  .m.is-fav{box-shadow:inset 3px 0 0 var(--cta)}
}
