/* Colour tokens. Fairway (the default) is the classic clubhouse look: deep green bars, white scoreboard panels and a
   yellow accent. --brand is the header and panel-title green, --gold the accent, --under and --over the leaderboard's
   red (under par) and green (level or over). Each colour theme has a light and a dark version. */
:root{--bg:#f3f1e9;--panel:#fff;--line:#e2ded1;--ink:#17261d;--mute:#5b675f;--flag:#006747;--onflag:#fff;--field:#faf9f5;--bad:#b3261e;
  --brand:#006747;--onbrand:#fff;--gold:#f2c94c;--under:#c8102e;--over:#006747;color-scheme:light}
:root:not([data-theme=light]){--bg:#08150f;--panel:#10231a;--line:#21402f;--ink:#eef3ee;--mute:#9fb4a7;--flag:#f2c94c;--onflag:#1b2a10;--field:#0b1b13;--bad:#ff9d8f;
  --brand:#00563b;--onbrand:#fff;--under:#ff6b6b;--over:#6fd19e;color-scheme:dark}
:root[data-palette=links]:not([data-theme=light]){--bg:#0c1c2b;--panel:#132a3f;--line:#24425e;--ink:#eaf2f8;--mute:#9cb3c6;--flag:#7fd1c7;--onflag:#0a2230;--field:#0a1724;--brand:#0b3a5c;--over:#7fd1c7}
:root[data-palette=links][data-theme=light]{--bg:#eef4f8;--panel:#fff;--line:#cfdbe5;--ink:#10283d;--mute:#52687b;--flag:#00707a;--onflag:#fff;--field:#f7fafc;--brand:#0b3a5c;--over:#00707a}
:root[data-palette=heather]:not([data-theme=light]){--bg:#1d1527;--panel:#2a1f38;--line:#433456;--ink:#f3eef7;--mute:#b6a8c4;--flag:#e8a8d8;--onflag:#2a1030;--field:#171020;--brand:#3d2352;--over:#c9b3e8}
:root[data-palette=heather][data-theme=light]{--bg:#f6f1f8;--panel:#fff;--line:#e0d5e6;--ink:#2a1838;--mute:#6b5a78;--flag:#8a2f7a;--onflag:#fff;--field:#fbf8fc;--brand:#3d2352;--over:#5b3a8a}
:root[data-palette=clubhouse]:not([data-theme=light]){--bg:#24120f;--panel:#341a16;--line:#523029;--ink:#f7ede4;--mute:#c4aa9c;--flag:#e2b66b;--onflag:#2a1508;--field:#1c0e0b;--brand:#5a1a14;--over:#e2b66b}
:root[data-palette=clubhouse][data-theme=light]{--bg:#f8f2ea;--panel:#fffdf9;--line:#e6d8c8;--ink:#3a1612;--mute:#7a5a50;--flag:#8c2a1e;--onflag:#fff;--field:#fdf9f4;--brand:#5a1a14;--over:#6b4a12}
:root[data-palette=slate]:not([data-theme=light]){--bg:#16181b;--panel:#202328;--line:#343941;--ink:#eef0f2;--mute:#a3a9b1;--flag:#f0a04b;--onflag:#241302;--field:#121417;--brand:#2b3037;--over:#9fb4c8}
:root[data-palette=slate][data-theme=light]{--bg:#f3f4f6;--panel:#fff;--line:#d8dce1;--ink:#1c2026;--mute:#5c636d;--flag:#b45309;--onflag:#fff;--field:#f8f9fa;--brand:#2b3037;--over:#2f4a63}

/* Base */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 Inter,system-ui,-apple-system,"Segoe UI",sans-serif;font-feature-settings:"tnum" 1,"cv11" 1;-webkit-font-smoothing:antialiased}
main{max-width:32rem;margin:0 auto;padding:1.25rem 1rem 5rem}
h1,h2,.num{font-family:"DM Serif Display",Georgia,serif;font-weight:400;letter-spacing:.005em}
h1{font-size:2.5rem;line-height:1.05;margin:1rem 0 .4rem}
h2{font-size:1.45rem;margin:0 0 .5rem;line-height:1.15}
p{margin:.25rem 0 1rem;color:var(--mute)}
b{font-weight:600}
.sub{color:var(--mute);font-size:.85rem;line-height:1.35}
.lead{color:var(--flag)}
.err{color:var(--bad);margin-top:.6rem}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.eyebrow{display:flex;align-items:center;gap:.5rem;font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}

/* Top bar: a solid clubhouse-green band with the club badge in the middle */
.topbar{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:2.75rem 1fr 2.75rem;align-items:center;
  padding:.4rem max(.75rem,calc((100vw - 32rem) / 2 + .75rem));background:var(--brand);color:var(--onbrand);box-shadow:inset 0 -3px 0 var(--gold),0 2px 12px rgba(0,0,0,.18)}
#mb{display:flex;flex-direction:column;justify-content:center;gap:5px;width:2.75rem;height:2.75rem;padding:0 .7rem;border:0;background:none}
#mb span{display:block;height:2px;border-radius:2px;background:var(--onbrand)}
.brand{justify-self:center;border:0;background:none;padding:.15rem .5rem}
.brand img{display:block;height:1.9rem;width:auto}

/* Panels: white scoreboard cards; a card's first heading becomes a green title bar */
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:1rem;margin:0 0 1.1rem;box-shadow:0 1px 2px rgba(0,0,0,.05),0 8px 24px -16px rgba(0,0,0,.35);overflow:hidden}
.card>h2:first-child{margin:-1rem -1rem 1rem;padding:.65rem 1rem .6rem;background:var(--brand);color:var(--onbrand);font-size:1.2rem;border-bottom:3px solid var(--gold)}
.card h3{margin:1.25rem 0 .5rem;font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}
#hist h2:not(:first-child){margin:1.5rem 0 .5rem}
.row2{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--line)}
.row2:last-child{border-bottom:0}
.row2>button{flex:none;padding:.45rem .85rem;border-radius:99px;border-color:color-mix(in srgb,var(--flag) 45%,var(--line));color:var(--flag);font-size:.85rem;font-weight:600}
.row2>button::after{content:" ›"}
.row2>span>button{padding:.45rem .8rem;border-radius:99px;font-size:.85rem}

/* Forms and buttons */
label{display:block;font-size:.8rem;font-weight:600;color:var(--mute);margin:.9rem 0 .3rem}
input,select{width:100%;padding:.8rem .9rem;border-radius:8px;border:1px solid var(--line);background:var(--field);color:var(--ink);font:inherit}
input:focus,select:focus{outline:none;border-color:var(--flag);box-shadow:0 0 0 3px color-mix(in srgb,var(--flag) 25%,transparent)}
label.check{display:flex;align-items:center;gap:.6rem;font-size:1rem;font-weight:500;color:var(--ink);margin-top:1rem}
label.check input{width:1.25rem;height:1.25rem;accent-color:var(--flag)}
button{font:inherit;cursor:pointer;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--ink);padding:.8rem 1rem;transition:background .15s,border-color .15s,color .15s}
button:hover{border-color:var(--flag)}
button.go{display:block;width:100%;margin-top:1.1rem;padding:.95rem 1rem;border:0;border-radius:99px;background:var(--flag);color:var(--onflag);font-weight:700;letter-spacing:.02em;box-shadow:0 6px 16px -8px color-mix(in srgb,var(--flag) 80%,transparent)}
button.go:hover{filter:brightness(1.08)}
button.ghost{border-radius:99px;font-weight:600}
button.link{border:0;background:none;color:var(--mute);padding:.4rem 0;text-decoration:underline;text-underline-offset:3px}
.tsel{width:auto;margin-top:.45rem;padding:.4rem .6rem}

/* Home hero: club badge on a mown-stripe green */
.hero{position:relative;margin:-1.25rem -1rem 1.25rem;padding:1.75rem 1.25rem 1.5rem;color:var(--onbrand);text-align:center;
  background:repeating-linear-gradient(100deg,rgba(255,255,255,.055) 0 2.25rem,transparent 2.25rem 4.5rem),linear-gradient(170deg,color-mix(in srgb,var(--brand) 85%,#fff 6%),var(--brand))}
.hero .logo{display:block;width:min(70%,15rem);height:auto;margin:0 auto .75rem;filter:drop-shadow(0 6px 14px rgba(0,0,0,.3))}
.hero p{color:color-mix(in srgb,var(--onbrand) 82%,transparent);margin:0 auto 1.1rem;max-width:20rem}
.hero-cta{display:flex;gap:.6rem;justify-content:center}
.hero-cta button{margin:0;width:auto;flex:1;max-width:12rem;padding:.8rem 1rem}
.hero .go{background:var(--gold);color:#1b2a10}
.hero .ghost{color:var(--onbrand);border-color:rgba(255,255,255,.55)}
.logo{display:block;width:min(72%,17rem);height:auto}

/* Tournament header and tabs */
.t-head{margin:.25rem 0 1rem}
.t-head h1{margin:.35rem 0 .2rem}
.t-head p{margin:0}
.pill{display:inline-flex;align-items:center;gap:.35rem;padding:.15rem .6rem;border-radius:99px;font-size:.72rem;letter-spacing:.08em;border:1px solid var(--line);color:var(--mute)}
.pill.live{color:var(--under);border-color:color-mix(in srgb,var(--under) 45%,transparent)}
.pill.live::before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:currentColor;animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{50%{opacity:.25}}
.tabs{display:flex;gap:0;margin:0 0 1.1rem;border-bottom:1px solid var(--line)}
.tabs button{flex:1;border:0;border-radius:0;background:none;padding:.8rem .5rem;color:var(--mute);font-weight:600;border-bottom:3px solid transparent;margin-bottom:-1px}
.tabs .cur{color:var(--ink);border-bottom-color:var(--gold)}
.holes{display:flex;gap:.4rem;overflow-x:auto;padding:.1rem .1rem .7rem;margin-bottom:.4rem;scrollbar-width:none}
.holes button{flex:none;padding:.5rem .9rem;border-radius:99px;white-space:nowrap;font-size:.9rem;font-weight:600;color:var(--mute)}
.holes .cur{background:var(--brand);border-color:var(--brand);color:var(--onbrand)}
/* Hole picker: little golf balls, filled once a score is in */
.holes button[data-h]{width:2.5rem;height:2.5rem;padding:0;border-radius:50%;color:var(--ink)}
.holes button[data-h].done{background:color-mix(in srgb,var(--flag) 14%,var(--panel));border-color:color-mix(in srgb,var(--flag) 45%,var(--line));color:var(--flag)}
.holes button[data-h].cur{background:var(--gold);border-color:var(--gold);color:#1b2a10;box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 35%,transparent)}

/* Scoring a hole */
.card.hole .eyebrow{margin-bottom:.15rem}
.card.hole h2{font-size:2rem;margin-bottom:.75rem}
.facts{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.facts div{padding:.55rem .6rem;text-align:center;border-left:1px solid var(--line);background:var(--field)}
.facts div:first-child{border-left:0}
.facts small{display:block;font-size:.66rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}
.facts b{font-size:1.25rem}
.step{display:flex;align-items:center;justify-content:center;gap:1.25rem;margin:1.5rem 0 .5rem}
.step button{width:3.6rem;height:3.6rem;padding:0;border-radius:50%;font-size:1.8rem;line-height:1;color:var(--flag);border-width:2px}
.ball{display:grid;place-items:center;align-content:center;width:8.5rem;height:8.5rem;border-radius:50%;background:radial-gradient(circle at 35% 28%,var(--panel),var(--field) 70%);border:2px solid var(--line);box-shadow:inset 0 -6px 14px rgba(0,0,0,.08)}
.ball .num{font-size:4.25rem;line-height:1}
.ball small{font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}

/* Leaderboard: scoreboard rows, red under par, green over */
.card.board{padding-top:0}
.lb-head{display:grid;grid-template-columns:2.4rem 1fr auto;gap:.75rem;margin:0 -1rem;padding:.55rem 1rem;background:var(--brand);color:var(--onbrand);font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;border-bottom:3px solid var(--gold)}
.row{display:grid;grid-template-columns:2.4rem 1fr auto;gap:.75rem;align-items:center;width:100%;padding:.8rem 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.row:hover{background:color-mix(in srgb,var(--flag) 5%,transparent)}
.row[aria-expanded=true]{border-bottom-color:transparent}
.row .num{font:700 1.6rem/1 Inter,system-ui,sans-serif;min-width:3rem;text-align:right}
.under{color:var(--under)!important}
.over,.even{color:var(--over)}
.pos{display:inline-grid;place-items:center;width:2rem;height:2rem;border-radius:50%;font:700 .85rem/1 Inter,system-ui,sans-serif;color:var(--ink);background:var(--field);border:1px solid var(--line)}
.pos.p1{background:linear-gradient(145deg,#f6dc7a,#c99a1c);border-color:transparent;color:#2a1d00}
.pos.p2{background:linear-gradient(145deg,#eef0f2,#a7afb8);border-color:transparent;color:#1b1f24}
.pos.p3{background:linear-gradient(145deg,#e7a36a,#a8612a);border-color:transparent;color:#2a1405}
.medal{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;margin-right:.3rem;vertical-align:.05em}
.medal.m1{background:#d9ae2f}.medal.m2{background:#b4bcc5}.medal.m3{background:#c27a3e}
.detail{padding:.25rem 0 1rem;border-bottom:1px solid var(--line)}
.pl-btn{border:0;padding:0;background:none;color:var(--ink);font-weight:600;text-align:left}
.pl-btn::after{content:" ▸";color:var(--mute);font-size:.75em}
.pl-btn[aria-expanded=true]::after{content:" ▾"}
.holes-t tr.open>*{background:color-mix(in srgb,var(--flag) 7%,transparent)}
.holes-t tr.exp>td{padding:0;text-align:left;border-bottom:2px solid var(--brand)}
/* The results table can be wider than the screen; keep the opened scorecard pinned to the visible width */
.holes-t tr.exp .detail{position:sticky;left:0;width:calc(min(32rem,100vw - 2rem) - 2rem - 2px);padding:.5rem .25rem .75rem;border:0}
.holes-t tr.exp .holes-t{font-size:.8rem}

/* Scorecards and results tables */
.scroll{overflow-x:auto;margin:.25rem 0 .75rem}
.holes-t{width:100%;border-collapse:collapse;font-size:.85rem;text-align:center}
.holes-t th,.holes-t td{padding:.4rem .2rem;border-bottom:1px solid var(--line)}
.holes-t tr:first-child th{background:var(--field);color:var(--mute);font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.holes-t th{color:var(--mute);font-weight:500}
.holes-t th:first-child{text-align:left;padding-right:.5rem}
.holes-t th.nm,.holes-t td.nm{color:var(--ink);font-weight:600;text-align:left}
.holes-t td span{display:inline-grid;place-items:center;min-width:1.6rem;height:1.6rem}
.holes-t td span.b,.key .b{border:1.5px solid var(--under);border-radius:50%;color:var(--under)}
.holes-t td span.e,.key .e{border:1.5px solid var(--under);border-radius:50%;color:var(--under);box-shadow:0 0 0 2px var(--panel),0 0 0 3.5px var(--under)}
.holes-t td span.bo,.key .bo{border:1.5px solid var(--mute);border-radius:3px}
.holes-t td span.db,.key .db{border:1.5px solid var(--mute);border-radius:3px;box-shadow:0 0 0 2px var(--panel),0 0 0 3.5px var(--mute)}
.key{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .5rem;font-size:.75rem;margin:.25rem 0 0}
.key span{display:inline-grid;place-items:center;width:1.35rem;height:1.35rem;font-size:.72rem;color:var(--ink);margin-left:.3rem}
.key span:first-child{margin-left:0}

/* Stats */
.tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem}
.tiles.t3{grid-template-columns:repeat(3,1fr)}
.tile{padding:.75rem .8rem;border:1px solid var(--line);border-radius:8px;background:var(--field);border-top:3px solid var(--brand)}
.tile small{display:block;font-size:.75rem;line-height:1.3;color:var(--mute)}
.tile small:first-child{font-size:.66rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.tile .num{font-size:2rem;line-height:1.15;margin:.1rem 0}
.chips{display:flex;flex-wrap:wrap;gap:.4rem}
.chip{padding:.25rem .7rem;border:1px solid var(--line);border-radius:99px;background:var(--field);font-weight:600;font-size:.9rem}
.teams{display:flex;align-items:center;justify-content:space-around;gap:.5rem;text-align:center}
.team small{display:block;color:var(--mute);font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.team .num{font-size:2.8rem;line-height:1.1}
.team.first .num{color:var(--flag)}
.vs{color:var(--mute);font-family:"DM Serif Display",Georgia,serif;font-style:italic}

/* Settings */
.pal{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:.5rem}
.pal button{display:flex;align-items:center;gap:.6rem;padding:.65rem .75rem;text-align:left}
.pal button[aria-checked=true]{border-color:var(--flag);box-shadow:0 0 0 1px var(--flag)}
.sw{display:inline-flex;flex:none}
.sw i{width:1rem;height:1rem;border-radius:50%;border:1px solid rgba(128,128,128,.45);margin-right:-.3rem}

/* Side menu */
#scrim{position:fixed;inset:0;z-index:10;background:rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .2s}
#scrim.open{opacity:1;pointer-events:auto}
#nav{position:fixed;top:0;bottom:0;left:0;z-index:20;width:min(84vw,19rem);padding:0 .75rem 1rem;overflow-y:auto;background:var(--panel);box-shadow:8px 0 30px rgba(0,0,0,.25);transform:translateX(-100%);visibility:hidden;transition:transform .22s ease,visibility .22s}
#nav.open{transform:none;visibility:visible}
.nav-h{display:flex;align-items:center;gap:.6rem;margin:0 -.75rem .75rem;padding:.75rem 1rem;background:var(--brand);color:var(--onbrand);border-bottom:3px solid var(--gold);font:1.35rem "DM Serif Display",Georgia,serif}
.nav-h img{height:1.6rem;width:auto}
.nav-h span{flex:1}
#mx{border:0;padding:.2rem .5rem;font-size:1.8rem;line-height:1;color:var(--onbrand);background:none}
.nav-i,.nav-g{display:flex;align-items:center;gap:.8rem;width:100%;padding:.8rem .75rem;border:0;border-radius:8px;text-align:left;font-weight:500}
.nav-i:hover,.nav-s:hover{background:var(--field)}
.nav-i svg,.nav-g svg{width:1.25rem;height:1.25rem;flex:none;fill:none;stroke:var(--flag);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-g{padding-bottom:.25rem;cursor:default;color:var(--mute);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.nav-sep{border:0;border-top:1px solid var(--line);margin:.5rem 0}
.nav-s{display:block;width:100%;padding:.55rem .75rem .55rem 2.8rem;border:0;border-radius:8px;text-align:left}
.nav-s[aria-expanded]::after{content:"▸";float:right;color:var(--mute)}
.nav-s[aria-expanded="true"]::after{content:"▾"}
.nav-y{padding:.4rem .75rem .4rem 3.8rem;font-size:.9rem;color:var(--mute)}

@media (prefers-reduced-motion:reduce){#nav,#scrim,button{transition:none}.pill.live::before{animation:none}}
