:root{--claret:#7a2334;--claret2:#571624;--sky:#8fd6ef;--gold:#f2d61a;--ink:#301c22;--bg:#faf7f7;--card:#fff;--muted:#6d5b60;--win:#1e8e4e;--draw:#c99a06;--loss:#c0392b}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5}
a{color:var(--claret)}img{max-width:100%;display:block}
header.top{background:var(--claret);color:#fff;position:sticky;top:0;z-index:20;box-shadow:0 2px 8px #0003}
.bar{display:flex;align-items:center;gap:12px;padding:10px 16px;max-width:1150px;margin:auto}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-weight:800;letter-spacing:.3px}
.brand img{width:44px;height:44px}.brand small{display:block;font-weight:500;color:var(--sky);font-size:.72rem}
nav.main{margin-left:auto}nav.main ul{list-style:none;margin:0;padding:0;display:flex;gap:4px;flex-wrap:wrap}nav.main li{flex:0 0 auto}
nav.main a{color:#fff;text-decoration:none;padding:8px 10px;border-radius:8px;font-size:.92rem}
nav.main a.on,nav.main a:hover{background:#ffffff1f;color:var(--gold)}
nav.main a .tag{display:block;font-size:.58rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gold);line-height:1.25;margin-top:1px}
nav.main a.ev{display:inline-flex;flex-direction:column;align-items:flex-start;padding:5px 10px;line-height:1.05;white-space:nowrap;border:1px solid #f2d61a66;background:#f2d61a14}
.burger{display:none;margin-left:auto;background:none;border:2px solid var(--sky);color:#fff;border-radius:8px;padding:6px 10px;font-size:1rem}
@media(max-width:860px){.burger{display:block}nav.main{display:none;width:100%}nav.main.open{display:block}.bar{flex-wrap:wrap}nav.main ul{flex-direction:column}}
.stripe{height:5px;background:linear-gradient(90deg,var(--gold),var(--sky))}
main{max-width:1150px;margin:auto;padding:20px 16px 50px}
h1{font-size:clamp(1.6rem,4vw,2.4rem);margin:.2em 0 .4em;color:var(--claret)}h2{color:var(--claret);margin-top:1.6em}
.hero{background:linear-gradient(135deg,var(--claret2),var(--claret) 60%,#93374b);color:#fff;border-radius:18px;padding:28px 22px;display:grid;gap:18px;grid-template-columns:1fr;align-items:center;overflow:hidden}
.hero img.logo{width:150px;margin:auto}.hero h1{color:#fff}.hero p{color:#f7e3e6}
.hero .strap{color:var(--gold);font-weight:700;font-size:.95rem;line-height:1.45;letter-spacing:.01em;margin:-.2em 0 .9em;max-width:58ch;text-align:center;margin-left:auto;margin-right:auto}   /* the one-line "official website…" strapline under the h1, added 24 Oct 2026; centred because "main p" justifies and a short bold line then reads as gaps */
@media(min-width:760px){.hero{grid-template-columns:180px 1fr;padding:34px}}
.banner{margin:18px 0;border-radius:16px;padding:20px;background:repeating-linear-gradient(90deg,#1e7d3a 0 60px,#23913f 60px 120px);color:#fff;border:3px solid var(--gold)}
.banner h2{color:var(--gold);margin:.1em 0}.banner .btn{margin-top:8px}
.btn{display:inline-block;background:var(--gold);color:var(--claret);font-weight:800;padding:10px 16px;border-radius:10px;text-decoration:none}
.btn.alt{background:var(--sky)}
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
body[data-page="results"] .card{text-align:center}   /* the Upcoming cards at the top of Results & Fixtures, matching the front page */
body[data-page="results"] .grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}   /* auto-fit, not auto-fill: three cards were leaving an empty fourth track on the right */
body[data-page="index"] .card{text-align:center}   /* the wording on the front-page cards sits centred */
body[data-page="index"] .card p{text-align:center;max-width:none}   /* main p{} justifies paragraphs, which in a narrow card reads as gaps */
body[data-page="index"] .grid{margin-top:18px;grid-template-columns:repeat(3,minmax(0,1fr))}   /* the hero sits directly above the card row now that the old tourney banner is gone; three equal columns so the row lines up with the hero instead of auto-fill leaving an empty fourth track on the right */
@media(max-width:960px){body[data-page="index"] .grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){body[data-page="index"] .grid{grid-template-columns:1fr}}
.card{background:var(--card);border-radius:14px;padding:16px;box-shadow:0 2px 10px #57162414;border-top:4px solid var(--sky)}
.card{min-width:0}.card h3{margin:.1em 0 .4em;color:var(--claret)}.card a,.card p,.card div{overflow-wrap:anywhere;word-break:break-word}.card a[href^="mailto:"]{font-size:.84em}.muted{color:var(--muted);font-size:.9rem}
.pill{display:inline-block;font-weight:800;color:#fff;border-radius:6px;padding:1px 8px;font-size:.8rem;min-width:24px;text-align:center}
.W{background:var(--win)}.D{background:var(--draw)}.L{background:var(--loss)}.U{background:#8893a8}
.score{font-size:1.6rem;font-weight:900;color:var(--claret)}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;font-size:.93rem}
th,td{padding:9px 10px;text-align:left;border-bottom:1px solid #eee6e7;vertical-align:top}th{background:var(--claret);color:#fff;font-weight:600}
.tw{overflow-x:auto;border-radius:12px;box-shadow:0 2px 10px #57162414}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.filters button{border:2px solid var(--claret);background:#fff;color:var(--claret);border-radius:20px;padding:5px 12px;font-weight:700;cursor:pointer}.filters button.on{background:var(--claret);color:#fff}
.big{font-size:5rem;font-weight:900;color:var(--gold);line-height:1;text-shadow:2px 2px 0 var(--claret)}
.statbox{background:var(--claret);color:#fff;border-radius:16px;padding:22px;text-align:center}
.bars{display:flex;align-items:flex-end;gap:6px;height:180px;padding:10px;background:#fff;border-radius:12px}
.bars div{flex:1;background:var(--claret);border-radius:4px 4px 0 0;position:relative;min-height:2px}.bars span{position:absolute;top:-18px;left:0;right:0;text-align:center;font-size:.75rem;font-weight:700}
.bars em{position:absolute;bottom:-20px;left:-4px;right:-4px;text-align:center;font-size:.68rem;font-style:normal;color:var(--muted)}
.gal{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.gal img{aspect-ratio:1;object-fit:cover;border-radius:8px;cursor:zoom-in}
.gal video{aspect-ratio:1;object-fit:cover;border-radius:8px;background:#000;width:100%}
.lb{position:fixed;inset:0;background:#000d;display:none;align-items:center;justify-content:center;z-index:50}.lb.on{display:flex}.lb img{max-height:90vh;max-width:94vw;border-radius:8px}
.avatar{width:64px;height:64px;border-radius:50%;background:var(--claret);color:var(--gold);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:1.3rem;flex:none}
img.avatar{object-fit:cover;border:2px solid var(--gold)}
.pcard{display:flex;gap:12px;align-items:flex-start}
/* A bio is the longest text on the site and it sits in the narrowest column. Justified text at this
   measure stretched inter-word spaces to 11.8px on average with a 90px hole on one line, so card text
   stays left-aligned; the wider minmax takes the longest bio from 25 lines to 15. */
.pcard p{text-align:left;max-width:none}
/* the bio is a disclosure like Games & goals, tuned for the narrow card */
.pcard details.bio{margin:.45em 0 0;padding:8px 11px}
.pcard details.bio summary{font-size:.92rem}
body[data-page="players"] .grid{align-items:start;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
details{background:#fff;border-radius:12px;padding:10px 14px;margin:8px 0;box-shadow:0 1px 6px #57162410}summary{cursor:pointer;font-weight:700;color:var(--claret)}
.ground{display:inline-flex;align-items:center;gap:6px;font-weight:600}
footer{background:var(--claret);color:#f2dbdf;padding:24px 16px;text-align:center;font-size:.9rem}footer a{color:var(--gold)}
.note{background:#fff8d6;border-left:4px solid var(--gold);padding:10px 12px;border-radius:8px;font-size:.9rem}
.nhero{display:grid;gap:22px;grid-template-columns:1fr;align-items:center;background:linear-gradient(135deg,var(--claret2),var(--claret));color:#fff;border-radius:18px;padding:26px 22px;margin-bottom:18px}
.nhero img{width:180px;margin:auto;filter:drop-shadow(0 10px 22px #00000073)}
.nhero h1{color:#fff;margin:.15em 0 .3em}
.nhero .lead{color:#f7e3e6;max-width:52ch}
.nhero .eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;font-weight:700;color:var(--gold)}
.nhero .nwhen{color:#fff;margin:.6em 0 1em}
.nhero .btn{margin:0 8px 6px 0}
@media(min-width:820px){.nhero{grid-template-columns:200px 1fr;padding:32px}}
.statstrip{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin:20px 0}
.stat{background:var(--card);border-radius:14px;padding:14px 10px;text-align:center;box-shadow:0 2px 10px #57162414;border-top:4px solid var(--gold)}
.stat b{display:block;font-size:1.7rem;font-weight:900;color:var(--claret);line-height:1.1}
.stat span{font-size:.78rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.teamgrid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));margin-bottom:8px}
.teamcard{background:var(--card);border-radius:12px;padding:12px 14px;box-shadow:0 1px 6px #57162410;border-left:4px solid var(--claret)}
.teamcard b{display:block;color:var(--claret);font-size:.97rem;line-height:1.25}
.teamcard span{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.countrybar{display:flex;gap:18px;flex-wrap:wrap;margin:.4em 0 1em;font-size:.9rem;color:var(--muted)}
.countrybar b{color:var(--claret);font-size:1.05rem}
a.teamcard{text-decoration:none;transition:transform .12s ease,box-shadow .12s ease}
a.teamcard:hover{transform:translateY(-2px);box-shadow:0 6px 16px #57162422}
.facttable th{background:var(--claret);color:#fff;width:30%;white-space:nowrap}
.facttable tr:nth-child(even) td{background:#faf7f7}
/* Supporter strip on the tournament page. The club's light-background logo is a crest plus
   "AYUNTAMIENTO DE ROJALES" in near-black (39,37,37), so it sits on the site's white card; the
   crest-only file is the variant for a dark or tight slot. */
.supby{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--card);border-radius:16px;padding:16px 18px 18px;margin:0 auto 22px;max-width:720px;box-shadow:0 2px 12px #57162414;border-top:4px solid var(--gold);text-align:center}
.supby .suplabel{text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:700;color:var(--claret);opacity:.85}
.supby img{width:100%;max-width:300px;height:auto}
.supby p{font-size:.9rem;color:var(--muted);margin:2px 0 0;text-align:center;max-width:58ch}
@media(max-width:480px){.supby img{max-width:230px}}
/* Front page (21 Oct 2026): the same card, narrower because it carries the label and the logo
   and nothing else, and closing the page under the squad photo rather than sitting in the copy. */
.supby.home{max-width:440px;margin:26px auto 6px}

/* Trophies and awards — the cup page's silverware block */
.awintro{margin-bottom:14px}
.awards{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin:0 0 18px}
.award{background:var(--card);border-radius:12px;padding:14px 10px;text-align:center;box-shadow:0 1px 6px #57162410;border-top:4px solid var(--claret)}
.award .ai{display:block;font-size:1.75rem;line-height:1.15;margin-bottom:6px}
.award b{display:block;color:var(--claret);font-size:.95rem;line-height:1.25}
.awphotos{display:grid;gap:14px;grid-template-columns:1.6fr 1fr;align-items:start;margin:0 0 10px}
.awshot{background:var(--card);border-radius:12px;padding:10px;box-shadow:0 2px 10px #57162414;margin:0;display:flex;flex-direction:column;align-items:center;gap:8px}
.awshot img{width:100%;height:auto;border-radius:8px;cursor:zoom-in}
.awshot.tall img{width:auto;max-width:100%;max-height:360px}
.awshot figcaption{font-size:.78rem;color:var(--muted);text-align:center;line-height:1.35}
@media(max-width:760px){.awphotos{grid-template-columns:1fr}.awshot.tall img{max-height:none;width:100%}}
.postcard{display:grid;gap:18px;grid-template-columns:1fr;background:var(--card);border-radius:16px;padding:18px;box-shadow:0 2px 12px #57162414;border-top:4px solid var(--claret);margin:0 0 20px}
.postcard img{border-radius:12px;width:100%;cursor:zoom-in}
.postcard h2{margin:.15em 0 .5em;font-size:1.25rem}
.postcard p{margin:.5em 0}
.postdate{text-transform:uppercase;letter-spacing:.12em;font-size:.74rem;font-weight:700;color:var(--claret);opacity:.85}
@media(min-width:800px){.postcard{grid-template-columns:320px 1fr;align-items:start}
/* A post with no photo is the one case the two-column card has nothing to put in the 320px image
   column, so the copy would render down a narrow strip with the rest of the card empty. Such a
   card takes the full width instead; every post that carries a photo is unaffected. */
.postcard:not(:has(img)){grid-template-columns:1fr}}
/* Writing style, club choice 16 Oct 2026: headings centred, body copy justified in a ~68ch measure.
   Chosen by the club from the four options rendered into screenshots/alignment/. Measured, the narrower
   column does NOT justify better - it stretches the inter-word spaces slightly more than the full-width
   option (about +25% vs +22%) - so it was picked for the shorter line, not for tighter justification.
   `hyphens:auto` was tried and NOT applied: it only moves the average gap from +25% to +23%. */
main h1,main h2,main h3{text-align:center}
main p{text-align:justify;max-width:68ch;margin-left:auto;margin-right:auto}
/* Blocks whose heading is now centred keep their own content with it, rather than
   sitting half-centred (heading central, paragraph flush left). */
.hero,.nhero,.banner{text-align:center}

/* Tournament live table and team crests (site/nov2026.html) ---------------------------
   The standings come from the club's Google-Sheets scoring system and refresh in place;
   .crest is shared by the team cards and the table rows. Written 16 Oct 2026. */
.teamcard{display:flex;gap:12px;align-items:center}
.teamcard .crest{width:44px;height:44px;flex:none;object-fit:contain}
.crest.ini{display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:30px;height:30px;border-radius:50%;background:var(--claret);color:var(--gold);
  font-weight:900;font-size:.72rem;letter-spacing:.02em}
.livewrap{background:var(--card);border-radius:14px;overflow:hidden;margin-bottom:6px;
  box-shadow:0 2px 10px #57162414;border-top:4px solid var(--claret)}
.livebar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;
  background:var(--claret);color:#fff}
.livebar b{font-size:.95rem}
.livebar .lamp{width:10px;height:10px;border-radius:50%;background:#cbb3b9;flex:none}
.livewrap[data-state=loading] .lamp{background:var(--sky)}
.livewrap[data-state=live] .lamp{background:#7ee08a;animation:livepulse 1.6s infinite}
.livewrap[data-state=stale] .lamp{background:var(--gold)}
.livewrap[data-state=down] .lamp{background:#f0a8a8}
@keyframes livepulse{0%,100%{opacity:.45}50%{opacity:1}}
.livemeta{margin-left:auto;font-size:.76rem;color:#f2dde1}
.lmsg,.livedown{padding:26px 16px;text-align:center}
.livedown .lerr{display:block;margin-top:.35em;font-size:.82rem}
.livewrap .tw{border-radius:0;box-shadow:none}   /* the card already clips and rounds */
.livewrap .livetable{border-radius:0}             /* ...including the table's own corners,
   which otherwise round the claret header row and let the table's white show through */
.livetable{background:#fff}
.livetable th{text-align:center;font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;padding:9px 8px}
.livetable th.c-team{text-align:left}
.livetable td{text-align:center;padding:8px 8px;vertical-align:middle}
.livetable td.c-team{text-align:left}
.livetable td.c-team span{vertical-align:middle;font-weight:600;color:var(--claret)}
.livetable td.c-pos{font-weight:800;width:36px}
/* the numeric columns keep a fixed width so the team column absorbs the slack and the
   stats stay in a tidy right-hand block rather than drifting apart at 1240px */
.livetable th.c-pld,.livetable td.c-pld{width:56px}
.livetable th.c-w,.livetable td.c-w,.livetable th.c-d,.livetable td.c-d,
.livetable th.c-l,.livetable td.c-l{width:48px}
.livetable th.c-gf,.livetable td.c-gf,.livetable th.c-ga,.livetable td.c-ga{width:56px}
.livetable th.c-gd,.livetable td.c-gd,.livetable th.c-pts,.livetable td.c-pts{width:60px}
.livetable td.c-pts{font-weight:900;color:var(--claret);background:#fdf2f4}
.livetable .crest{display:inline-block;width:30px;height:30px;margin-right:9px;vertical-align:middle}
.livetable tr.host .c-pos{box-shadow:inset 4px 0 0 var(--gold)}
.livetable tr.host td{background:#fdf4f6}
.livetable tr.host td.c-pts{background:#f8e6ea}
.livetable tr.top td{background:#fffbe8}
.livetable tr.top td.c-pts{background:#fdf3cf}
.livetable tbody tr:hover td{background:#f7eef0}
.hosttag{display:inline-block;margin-left:8px;font-style:normal;font-size:.66rem;
  text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.lcap{display:none;font-size:.78rem;padding:6px 12px 12px;margin:0;text-align:center}
@media(max-width:700px){
  .livetable .c-w,.livetable .c-d,.livetable .c-l,.livetable .c-gf,.livetable .c-ga{display:none}
  .livetable th,.livetable td{padding:7px 5px}
  .livetable td.c-team{white-space:normal;word-break:break-word}
  .livetable td.c-team span{font-size:.85rem}
  .livetable .crest{width:26px;height:26px;margin-right:6px}
  .hosttag{display:none}
  .lcap{display:block}
  .livemeta{margin-left:0;width:100%;text-align:left}
}

/* ---- Players: clickable cards and the profile sheet ------------------------- */
body[data-page="players"] .grid{align-items:start;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.pgrid{gap:14px}
.pcard{display:flex;align-items:center;gap:14px;width:100%;padding:14px 16px;text-align:left;font:inherit;color:inherit;cursor:pointer;border:0;border-top:4px solid var(--sky);
  transition:transform .15s ease,box-shadow .15s ease,border-top-color .15s ease}
.pcard .avatar{width:72px;height:72px;font-size:1.5rem}
.pcard:hover,.pcard:focus-visible{transform:translateY(-2px);box-shadow:0 10px 24px #57162426;border-top-color:var(--gold);outline:none}
.pcard:focus-visible{box-shadow:0 0 0 3px #f2d61a80,0 10px 24px #57162426}
.pcard[hidden]{display:none}
.pmeta{display:flex;flex-direction:column;gap:2px;min-width:0}
.pname{font-size:1.06rem;color:var(--claret);line-height:1.2}
.prole{color:var(--muted);font-size:.86rem}
.pstats{display:flex;gap:16px;margin-top:7px;font-size:.82rem;color:var(--muted)}
.pstats b{color:var(--claret);font-size:1rem;margin-right:2px}
.pgo{margin-left:auto;color:#c9b2b8;font-size:1.5rem;line-height:1;flex:none}
.pcard:hover .pgo,.pcard:focus-visible .pgo{color:var(--claret)}
.plead{display:flex;gap:12px;flex-wrap:wrap;margin:4px 0 16px}
.pstat{background:#fff;border-radius:14px;padding:12px 20px;box-shadow:0 2px 10px #57162414;border-top:4px solid var(--sky);text-align:center;min-width:118px}
.pstat b{display:block;font-size:1.45rem;line-height:1.15;color:var(--claret)}
.pstat span{color:var(--muted);font-size:.82rem}
.pnote{margin:0 0 14px}
.pnote p{text-align:left;max-width:none;margin:.5em 0 0}
.phint{margin:0 auto 14px;text-align:center;color:var(--claret);text-transform:uppercase;letter-spacing:.05em}   /* sentence case in the markup, caps on screen */
/* profile sheet */
body.popen{overflow:hidden}
.psheetwrap{position:fixed;left:0;right:0;top:0;height:100vh;height:100dvh;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden}   /* dvh, not vh: on a phone 100vh includes the area behind the browser bars, which pushed the sheet top (and its close button) off-screen */
.psheetwrap[hidden]{display:none}
.psheetbg{position:absolute;inset:0;background:#000000b8}
.psheet{position:relative;background:#fff;border-radius:18px;width:100%;max-width:840px;max-height:100%;overflow:auto;overscroll-behavior:contain;padding:26px 30px 30px;box-shadow:0 24px 60px #0006;border-top:5px solid var(--claret)}
.psheet:focus{outline:none}
.psheet h2{color:var(--claret);margin:.1em 0 .1em;font-size:1.9rem}
.psheet p,.psheet li{text-align:left;max-width:none}
.pshead{display:flex;align-items:center;gap:18px;margin-bottom:16px;padding-right:46px}
.pshead .avatar{width:112px;height:112px;font-size:2.2rem}
.psheet .px{position:sticky;top:0;z-index:3;display:block;margin:0 -12px -40px auto;width:38px;height:38px;border-radius:50%;border:none;background:#f4eaec;color:var(--claret);font-size:1.05rem;font-weight:700;cursor:pointer}
.psheet .px:hover{background:var(--claret);color:#fff}
.pstatrow{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 16px}
.pstatrow>div{background:var(--bg);border-radius:12px;padding:10px 20px;text-align:center;min-width:96px}
.pstatrow b{display:block;font-size:1.4rem;color:var(--claret);line-height:1.15}
.pstatrow span{color:var(--muted);font-size:.78rem}
.pbio{margin:0 0 18px;color:var(--ink)}
.pcols{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:6px}
.pcols h3{margin:.2em 0 .5em;color:var(--claret);font-size:1rem}
.plist{list-style:none;margin:0;padding:0;font-size:.9rem}
.plist li{padding:5px 0;border-bottom:1px solid #f0e6e8}
.plist li:last-child{border-bottom:none}
.plist .g{color:var(--claret);white-space:nowrap}
@media(max-width:760px){.pcols{grid-template-columns:1fr}.psheet{padding:20px 18px 24px}.pshead .avatar{width:84px;height:84px}
  .psheet h2{font-size:1.5rem}.psheetwrap{padding:10px}.psheet{max-height:100%}
  .psheet .px{margin-right:-4px}}

/* ---- country flag beside a player's name ---------------------------------- */
/* A fixed box + object-fit:contain keeps every flag the same width and undistorted (Switzerland is square),
   and its declared width is what the browser uses for line breaking - an intrinsic 40px image inside a
   narrowed name box otherwise wraps onto its own line. */
.flag{display:inline-block;height:.92em;width:1.38em;object-fit:contain;vertical-align:-.12em;margin-left:.4em;
  border-radius:2px;box-shadow:0 0 0 1px #0000001f;background:#fff}
.pname{display:flex;align-items:center}
.psheet h2{display:flex;align-items:center;flex-wrap:wrap}
.psheet .flag{height:.82em;width:1.24em;margin-left:.55em}

/* ---- Match schedule (site/nov2026.html) -------------------------------------------------
   The club's day-by-day kick-off list sits under the live table in two collapsed blocks:
   120 fixtures is more page than anyone wants by default, and the three pitch columns only
   read properly three-across. Below 760px they stack, so a phone gets one column per pitch
   with no sideways scrolling. Written 18 Oct 2026. */
.sched{margin:8px 0 10px;scroll-margin-top:84px}   /* the header is sticky and 69px tall: a "#day-N" jump must not land under it */
.sched summary{display:flex;gap:6px 16px;align-items:baseline;justify-content:space-between;flex-wrap:wrap}
.sched .scount{font-size:.7rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.sched .scount i{font-style:normal}   /* "· 3 pitches": dropped on a phone so the day and its game count stay on one line at 320px */
.sched[open] summary{margin-bottom:8px}
.pitches{display:grid;gap:16px 20px;grid-template-columns:1fr;margin:6px 0 2px}
@media(min-width:760px){.pitches{grid-template-columns:repeat(3,minmax(0,1fr))}}
.pitch{min-width:0}
.pitch h3{margin:.1em 0 .5em;padding-bottom:5px;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--claret);text-align:left;border-bottom:2px solid var(--sky)}
.pitch ul{list-style:none;margin:0;padding:0;font-size:.84rem;line-height:1.35}
.pitch li{display:flex;gap:8px;padding:4px 6px;border-bottom:1px solid #f4ebed;border-radius:5px}
.pitch li:last-child{border-bottom:none}
.pitch li b{flex:none;width:42px;color:var(--claret);font-variant-numeric:tabular-nums;font-size:.82rem}
.pitch li span{min-width:0;overflow-wrap:anywhere}
.pitch li i{font-style:normal;color:var(--muted);font-size:.86em;margin:0 .12em}
.pitch li.me{background:#fdf2f4;box-shadow:inset 3px 0 0 var(--gold)}
.schedhint{margin:-2px auto 16px}   /* "Click a day to expand", reusing the Players page hint */
/* Live scores on the schedule (19 Oct 2026): the club's own Results tab publishes every fixture
   with a pair of score cells, so each played game carries its result at the end of its row.
   The lamp line states what the block is doing, the day summary counts what is finished. */
.slive{max-width:68ch;margin:2px auto 12px;font-size:.78rem;color:var(--muted);text-align:center}
.slive .lamp{display:inline-block;width:8px;height:8px;border-radius:50%;background:#cbb3b9;
  margin:0 7px 1px 0;vertical-align:middle}   /* inline, not a flex item: at 68ch the dot and the sentence cannot share a flex row, and the dot ended up alone on its own line */
.slive[data-state=loading] .lamp{background:var(--sky)}
.slive[data-state=live] .lamp{background:#7ee08a;animation:livepulse 1.6s infinite}
.slive[data-state=stale] .lamp{background:var(--gold)}
.slive[data-state=down] .lamp{background:#f0a8a8}
/* the day's own progress line sits inside the expanded day, so the collapsed summary keeps the
   one-line layout the club approved at every width */
.sday{margin:2px 0 10px;font-size:.78rem;color:var(--muted);text-align:center}
.sday:empty{display:none}
.pitch li .fs{margin-left:auto;flex:none;padding-left:8px;font-style:normal;font-weight:800;
  font-size:.8rem;color:var(--claret);font-variant-numeric:tabular-nums;white-space:nowrap}
.pitch li.inc .fs{color:var(--muted);font-weight:600}   /* a score half entered, e.g. "2–?" */
@media(max-width:480px){.pitch li .fs{padding-left:6px;font-size:.76rem;letter-spacing:-.015em}}
@media(max-width:480px){.sched .scount .pv{display:none}}
@media(max-width:360px){.sched .scount{font-size:.64rem;letter-spacing:.05em}}   /* 320px: 66px + a 216px day name still wrapped */
/* Players — the pre-September 2025 squad below the current one */
body[data-page="players"] .pgrid + h2#past{margin-top:36px}
body[data-page="players"] .ppast{margin:0 auto 14px;text-align:center;max-width:78ch}   /* centred: main p{} justifies, which in a three-line intro reads as gaps */
.pcols.one{grid-template-columns:1fr}
.pcols section[hidden]{display:none}
/* Gallery — a named squad under the photo, and in the lightbox */
.gal figure{margin:0;display:flex;flex-direction:column;gap:4px;min-width:0}
.gal figcaption{font-size:.72rem;line-height:1.25;color:var(--muted);text-align:left;overflow-wrap:anywhere}
.lb .lbin{display:flex;flex-direction:column;align-items:center;gap:10px;max-width:94vw;max-height:96vh}
.lbcap{color:#fff;font-size:.9rem;text-align:center;max-width:94vw;overflow-wrap:anywhere}
.lbcap:empty{display:none}
.lb img{max-height:calc(94vh - 48px)}   /* leave room for the squad line under the photo */
