:root{
  /* Palette inspirée de l'identité actuelle Squash du Marais. */
  --navy:#18334f;--navy-2:#10283e;--lime:#d8df32;--lime-soft:#eef1a2;
  --ink:#17202a;--muted:#6d7884;--surface:#f3f5f4;--card:#fff;--line:#dde3e1;
  --danger:#a83b37;--shadow:0 18px 45px rgba(16,40,62,.09);--radius:24px;
}
*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--surface)}body{margin:0}a{color:inherit;text-decoration:none}.site-header{min-height:88px;padding:16px clamp(20px,4vw,64px);display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.site-header nav{display:flex;gap:28px;font-weight:700;color:var(--navy)}.brand{display:inline-flex;align-items:center;gap:12px}.brand-mark{width:48px;height:48px;background:var(--navy);color:var(--lime);display:grid;place-items:center;border-radius:12px;font-size:25px;font-weight:900;font-style:italic}.brand-copy{display:flex;flex-direction:column;line-height:.9}.brand-copy strong{color:var(--lime);font-size:20px;letter-spacing:-.04em}.brand-copy small{color:var(--navy);font-size:13px;font-weight:900;letter-spacing:.08em}.page-shell{max-width:1320px;margin:auto;padding:48px clamp(18px,4vw,56px) 80px}.site-footer{padding:32px;text-align:center;color:var(--muted)}.hero{background:linear-gradient(135deg,var(--navy-2),var(--navy));color:#fff;border-radius:32px;padding:clamp(36px,7vw,84px);display:flex;align-items:end;justify-content:space-between;gap:24px;box-shadow:var(--shadow);position:relative;overflow:hidden}.hero:after{content:"";position:absolute;width:420px;height:420px;border:90px solid rgba(216,223,50,.12);border-radius:50%;right:-120px;top:-210px}.hero h1,.page-title h1{font-size:clamp(42px,7vw,84px);line-height:.9;letter-spacing:-.055em;margin:10px 0}.hero-season{font-size:24px;color:var(--lime);font-weight:900}.eyebrow{text-transform:uppercase;letter-spacing:.17em;font-size:12px;font-weight:900;color:var(--lime)}.button{background:var(--lime);color:var(--navy-2);border:0;border-radius:999px;padding:14px 22px;font:inherit;font-weight:900;cursor:pointer}.button-light{background:#fff;position:relative;z-index:1}.grid.two{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:0 10px 30px rgba(16,40,62,.04)}.section-heading{display:flex;align-items:center;justify-content:space-between}.section-heading h2,.card h2{color:var(--navy);margin:0 0 20px}.fixture-list{display:grid;gap:4px}.fixture{display:block;padding:16px 6px;border-bottom:1px solid var(--line)}.fixture:last-child{border-bottom:0}.fixture>div{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center}.fixture>div>*:last-child{text-align:right}.fixture small{display:block;color:var(--muted);margin-top:7px}.score,.match-score,.pill{background:var(--navy);color:#fff;border-radius:999px;padding:6px 12px;font-weight:900}.page-title{margin-bottom:36px}.page-title p{color:var(--muted);font-size:18px}.muted{color:var(--muted);font-weight:400}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:15px 12px;border-bottom:1px solid var(--line);text-align:center}th:nth-child(2),td:nth-child(2){text-align:left}th{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.rank{font-weight:900;color:var(--navy)}.standing-points{font-weight:900;color:var(--navy);font-size:18px}.standings-card{margin-bottom:24px}.archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.archive-card span{color:var(--lime);font-weight:900}.archive-card small{color:var(--muted)}.match-hero{text-align:center;background:var(--navy);color:white;border-radius:32px;padding:48px 26px;margin-bottom:24px}.match-hero p{color:#d9e2e8}.team-vs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px}.team-vs h1{font-size:clamp(28px,5vw,58px);margin:20px 0}.big-score{font-size:clamp(50px,9vw,100px);font-weight:1000;color:var(--lime);white-space:nowrap}.big-score span{color:#fff}.match-list{display:grid;gap:18px}.match-card header,.score-match-header{display:flex;justify-content:space-between;align-items:center}.games{display:grid;margin-top:12px}.games>div{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line)}.score-form{display:grid;gap:20px}.score-grid{display:grid;gap:8px}.score-grid-head,.score-row{display:grid;grid-template-columns:70px 1fr 1fr;gap:10px;align-items:center;text-align:center}.score-grid-head{font-size:13px;color:var(--muted)}.score-row input{width:100%;min-height:58px;border:2px solid var(--line);border-radius:14px;text-align:center;font-size:24px;font-weight:900;color:var(--navy);background:#fff}.score-row input:focus{outline:3px solid rgba(216,223,50,.35);border-color:var(--lime)}.sticky-save{position:sticky;bottom:18px;display:flex;justify-content:center}.sticky-save .button{box-shadow:0 10px 30px rgba(16,40,62,.25);font-size:17px;padding:17px 28px}.messages{display:grid;gap:8px;margin-bottom:20px}.message{padding:13px 16px;border-radius:14px;background:#eaf3e7}.message.error{background:#fae5e3;color:var(--danger)}.narrow{max-width:520px;margin:50px auto}.form-stack input{width:100%;padding:12px;border:1px solid var(--line);border-radius:10px}
/* Affichage Yodeck : conçu d'abord pour 2160x3840, mais fluide en 9:16. */
.tv-body{background:var(--navy-2);overflow:hidden}.tv-screen{width:100vw;min-height:100vh;aspect-ratio:9/16;background:linear-gradient(180deg,#f7f8f6 0%,#eef1ee 100%);padding:4.2vh 5.5vw 3vh;display:flex;flex-direction:column;gap:2.6vh}.tv-header{display:flex;justify-content:space-between;align-items:center;border-bottom:.35vh solid var(--lime);padding-bottom:2vh}.brand-tv .brand-mark{width:8.5vh;height:8.5vh;border-radius:1.6vh;font-size:4.4vh}.brand-tv .brand-copy strong{font-size:3.4vh}.brand-tv .brand-copy small{font-size:2vh}.tv-header>div:last-child{text-align:right;display:flex;flex-direction:column;color:var(--navy)}.tv-header>div:last-child span{font-size:2.2vh;font-weight:800;letter-spacing:.12em}.tv-header>div:last-child strong{font-size:4vh;color:var(--lime)}.tv-panel{background:#fff;border-radius:2.5vh;padding:2.8vh 3vw;box-shadow:0 1.2vh 3vh rgba(16,40,62,.06)}.tv-ranking{flex:1.4}.tv-panel-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:2vh;color:var(--navy)}.tv-panel-title span{font-size:4vh;font-weight:1000;letter-spacing:-.04em}.tv-panel-title small{font-size:1.8vh;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.tv-standing{display:grid;grid-template-columns:5vh 1fr auto;gap:2vw;align-items:center;padding:1.35vh 0;border-bottom:.12vh solid var(--line);font-size:2.6vh}.tv-standing:last-child{border-bottom:0}.tv-rank{width:4.3vh;height:4.3vh;border-radius:50%;display:grid;place-items:center;background:var(--navy);color:var(--lime);font-weight:1000}.tv-standing>span:last-child{font-weight:1000;color:var(--navy)}.tv-fixture{display:grid;grid-template-columns:1fr auto 1fr;gap:2vw;align-items:center;text-align:center;font-size:2.7vh;padding:1.5vh 0}.tv-fixture strong:first-child{text-align:right}.tv-fixture strong:last-child{text-align:left}.tv-fixture span{font-size:3.5vh;font-weight:1000;color:var(--navy);background:var(--lime);padding:.5vh 1.6vw;border-radius:999px}.tv-upcoming-row{padding:1.2vh 0;border-bottom:.12vh solid var(--line)}.tv-upcoming-row>div{display:grid;grid-template-columns:1fr auto 1fr;gap:1.3vw;font-size:2.4vh}.tv-upcoming-row>div strong:last-child{text-align:right}.tv-upcoming-row small{display:block;text-align:center;color:var(--muted);font-size:1.7vh;margin-top:.5vh}.tv-footer{text-align:center;margin-top:auto;color:var(--navy);font-size:1.8vh;font-weight:900;letter-spacing:.1em}
@media(max-width:800px){.site-header{align-items:flex-start}.site-header nav{gap:10px;flex-direction:column;font-size:13px}.page-shell{padding-top:28px}.grid.two{grid-template-columns:1fr}.hero{align-items:flex-start;flex-direction:column}.team-vs{grid-template-columns:1fr}.big-score{order:-1}.score-grid-head,.score-row{grid-template-columns:48px 1fr 1fr}.card{padding:20px}}

/* Forms and navigation */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.nav-button{background:none;border:0;color:inherit;font:inherit;cursor:pointer;padding:0}
.club-logo{max-width:130px;max-height:64px;object-fit:contain}
.players,.filters{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:24px;align-items:end}
.players label{flex:1;min-width:180px}.players input,.filters input,.filters select{display:block;width:100%;padding:10px;border:1px solid var(--line);border-radius:8px}
.pagination{display:flex;justify-content:center;gap:24px;padding:24px}.audit-history{margin-top:32px}.audit-history details{padding:12px 0;border-bottom:1px solid var(--line)}
.errorlist{color:var(--danger);font-size:14px}.page-title .eyebrow,.archive-card>span{color:var(--navy)}
/* One TV page at a time, with bounded row counts and a fixed URL managed by Yodeck. */
.tv-paged{height:100dvh;min-height:0;aspect-ratio:auto;gap:2vh;padding:3vh 5vw 2vh}
.tv-paged .tv-header{flex:0 0 8vh;min-width:0;gap:2vw}.tv-paged .brand{font-size:2.6vw;min-width:0}.tv-paged .brand-mark{width:5vh;height:5vh;font-size:3vh;flex-shrink:0}.tv-paged .club-logo{max-width:15vw;max-height:6vh}
.tv-paged .tv-panel{flex:1;min-height:0;padding:2.5vh 3vw}.tv-paged .tv-panel-title{height:5vh;margin-bottom:1vh}.tv-paged .tv-panel-title span{font-size:3.4vh}.tv-paged .tv-panel-title small{font-size:1.6vh}
.tv-paged .tv-standing{height:7.3vh;padding:.6vh 0;font-size:2.7vw;grid-template-columns:4vh minmax(0,1fr) auto}.tv-paged .tv-standing strong{overflow-wrap:anywhere}.tv-paged .tv-rank{width:3.6vh;height:3.6vh}
.tv-paged .tv-entry{height:10vh;border-bottom:1px solid var(--line);display:flex;flex-direction:column;justify-content:center}.tv-paged .tv-fixture{font-size:2.7vw;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);padding:.3vh 0}.tv-paged .tv-fixture strong{overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tv-paged .tv-fixture span{font-size:3.6vw}.tv-paged .tv-entry small{display:block;text-align:center;font-size:1.7vw;overflow-wrap:anywhere}.tv-paged .tv-footer{flex:0 0 2.5vh;font-size:1.6vh}
.tv-url{overflow-wrap:anywhere;color:var(--muted)}

.match-options{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:20px}.match-options label{flex:1;min-width:200px}.match-options select,.match-options input{display:block;width:100%;padding:10px;border:1px solid var(--line);border-radius:8px}
