/* ==========================================================================
   Red Lerille's public website: the site stylesheet.
   A copy of the locked mock's stylesheet (reds_demos_src/REDS-P3/site/assets/site.css, v24). Do not restyle here: the Razor block partials emit the mock's
   own markup and the mock's CSS does the rest. Re-diff against the mock's file on every sync; only these lines may differ (platform-forced):
     1. The three @font-face rules below: the fonts are self-hosted (the mock loads them from Google Fonts).
     2. Left out (also dropped from the two shared selector lists that named them): the mock's review bar, "Check:" flags (mark.check, .check-block, .hide-checks), the site-map and "coming next" stub furniture
        (.sm-*, .badge, .stub-note, .changed-note) and .notice-check. They are review scaffolding, not part of the website.
        (.example-tag stays: the News page's social column marks its example cards with it.)
     3. The two table.data td a[href^="tel:"|"mailto:"] rules, which stand in for the inline style the mock puts on each phone and email link.
     4. The "synced to" line at the end.
   Accessibility floor (control-set rules that survived): 44px targets, a visible
   label above every field, AA contrast, one focus style (:focus-visible, red outline).
   ========================================================================== */

/* Fonts, self-hosted (latin subset, variable). Fraunces for headings, Source Sans 3 for text. */
@font-face{font-family:'Fraunces';font-style:normal;font-weight:500 700;font-display:swap;src:url(fonts/fraunces.woff2) format('woff2');}
@font-face{font-family:'Fraunces';font-style:italic;font-weight:500 600;font-display:swap;src:url(fonts/fraunces-italic.woff2) format('woff2');}
@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/source-sans-3.woff2) format('woff2');}

:root{
  --ink:#1A1A1A;
  --red:#C8102E;          /* 5.9:1 on white */
  --red-dark:#a80d26;
  --light:#F2EDE5;
  --muted:#55504A;        /* AA on white 7.9:1, on light 6.8:1 */
  --muted-dark:#C9C4BC;   /* AA on ink 10:1 */
  --hairline:#D8D0C3;
  --white:#FFFFFF;
  --serif:'Fraunces', Georgia, 'Times New Roman', serif;
  --sans:'Source Sans 3', -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --maxw:1240px;
  --header-offset:84px;
  --header-h:69px; /* the sticky header's real height (phone and tablet); site.js keeps it exact, and the wider header is set below */
}
@media (min-width:1100px){ :root{--header-h:73px;} }
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:0.001ms !important;animation-iteration-count:1 !important;transition-duration:0.001ms !important;scroll-behavior:auto !important;}
}
body{margin:0;font-family:var(--sans);font-size:17px;color:var(--ink);background:var(--white);line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden;}
img{max-width:100%;display:block;}
a{color:inherit;}
h1,h2,h3,h4{font-family:var(--serif);margin:0 0 0.4em;line-height:1.08;font-weight:600;text-wrap:balance;}
p{margin:0 0 1em;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px;}
:focus-visible{outline:3px solid var(--red);outline-offset:3px;}
.on-dark :focus-visible, .utility :focus-visible, footer.site :focus-visible{outline-color:var(--white);}
/* Script-focused titles and regions (tabindex="-1") announce a new screen; they are not controls, so no ring. Controls and roving rows keep theirs. */
[tabindex="-1"]:not(button):not(a):not(input):not(select):not(textarea):not(tr):focus,[tabindex="-1"]:not(button):not(a):not(input):not(select):not(textarea):not(tr):focus-visible{outline:none;}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--white);padding:12px 20px;z-index:999;}
.skip-link:focus{left:12px;top:12px;}
[id]{scroll-margin-top:var(--header-offset);}
.nw{white-space:nowrap;}

/* ---------- buttons (A's, with a 44px floor) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;font-family:var(--sans);font-weight:700;font-size:0.95rem;text-decoration:none;padding:10px 22px;border-radius:2px;border:2px solid transparent;letter-spacing:0.01em;text-align:center;cursor:pointer;line-height:1.2;}
.btn-primary{background:var(--red);color:var(--white);}
.btn-primary:hover, .btn-primary:focus-visible{background:var(--red-dark);}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink);}
.btn-ghost:hover, .btn-ghost:focus-visible{background:var(--ink);color:var(--white);}
.btn-ghost-onlight{background:transparent;color:var(--white);border-color:var(--white);}
.btn-ghost-onlight:hover, .btn-ghost-onlight:focus-visible{background:var(--white);color:var(--ink);}
.btn svg{width:18px;height:18px;flex:none;}
.text-link{display:inline-flex;align-items:center;min-height:44px;}
/* ONE link style for every inline link on the site (REDS-site-polish-2): ink, bold, red underline. A link standing on its own line is .text-link; a link inside a sentence, list or table cell takes the same look and stays inline. */
.text-link, .u-link-red, .u-link-red-b, .prose a:not(.btn), details.disclose .disclose-body a, .section-head p a, main p a:not([class]), main li a:not([class]), main td a:not([class]):not([href^="tel:"]):not([href^="mailto:"]){color:var(--ink);font-weight:700;text-decoration:underline;text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:4px;}
.text-link:hover, .text-link:focus-visible, .u-link-red:hover, .u-link-red-b:hover, .prose a:not(.btn):hover, details.disclose .disclose-body a:hover, .section-head p a:hover, main p a:not([class]):hover, main li a:not([class]):hover, main td a:not([class]):hover{color:var(--red);}
.pricing a:not(.btn), .story-closing a:not(.btn), .story-milestone a:not(.btn), .on-dark a:not(.btn){color:var(--white);text-decoration-color:var(--white);}
.pricing a:not(.btn):hover, .story-closing a:not(.btn):hover, .story-milestone a:not(.btn):hover, .on-dark a:not(.btn):hover{color:var(--white);text-decoration-thickness:3px;}
/* links sitting side by side in a text block are spaced apart, with nothing after the last one */
.prose > a.text-link:has(+ a.text-link), .info-card > a.text-link:has(+ a.text-link){margin-right:24px;}

/* ---------- utility strip (A's dark strip) ---------- */
.utility{background:var(--ink);color:var(--muted-dark);font-size:0.85rem;display:none;}
.utility .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;}
.utility-left{display:flex;gap:22px;align-items:center;}
.utility a, .utility span{display:inline-flex;align-items:center;min-height:44px;color:var(--muted-dark);text-decoration:none;}
.utility a:hover, .utility a:focus-visible{color:var(--white);text-decoration:underline;}
.utility a[aria-current="page"]{color:var(--white);}
@media (min-width:720px){ .utility{display:block;} }

/* ---------- header / nav (A's white header; the five-item menu) ---------- */
header.site{background:var(--white);border-bottom:1px solid var(--hairline);position:sticky;top:0;z-index:500;}
.nav-row{display:flex;align-items:center;justify-content:space-between;padding-top:12px;padding-bottom:12px;gap:16px;}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;min-width:0;min-height:44px;}
.brand img{height:36px;width:auto;flex:none;}
.brand-text{font-family:var(--serif);font-weight:600;font-size:1.02rem;color:var(--ink);line-height:1.15;display:none;}
.brand-text small{display:block;font-family:var(--sans);font-weight:400;font-size:0.68rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);}
nav.primary{display:none;}
nav.primary ul{list-style:none;display:flex;gap:26px;margin:0;padding:0;}
nav.primary a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:2px 2px 0;text-decoration:none;font-size:0.97rem;font-weight:600;color:var(--ink);border-bottom:2px solid transparent;white-space:nowrap;}
nav.primary a:hover, nav.primary a:focus-visible{border-bottom-color:var(--red);}
nav.primary a[aria-current]{border-bottom-color:var(--red);color:var(--red-dark);}
.nav-cta{display:flex;align-items:center;gap:10px;}
.nav-cta .btn{padding:8px 16px;font-size:0.9rem;white-space:nowrap;}
.nav-cta .btn-signin{display:none;}
.nav-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;height:44px;background:none;border:2px solid var(--ink);border-radius:2px;padding:0 12px;cursor:pointer;font:inherit;font-weight:700;font-size:0.9rem;color:var(--ink);}
.nav-toggle .bars{display:inline-flex;flex-direction:column;gap:4px;}
.nav-toggle .bars span{display:block;width:16px;height:2px;background:var(--ink);}
.nav-toggle .bars span{transition:transform .15s ease;}
.nav-toggle[aria-expanded="true"] .bars span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.nav-toggle[aria-expanded="true"] .bars span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}
.nav-toggle[aria-expanded="true"] .bars span:nth-child(2){opacity:0;}
#mobile-menu{border-top:1px solid var(--hairline);background:var(--white);max-height:calc(100svh - 70px);overflow-y:auto;}
#mobile-menu[hidden]{display:none;}
#mobile-menu .m-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px 0 8px;}
#mobile-menu ul{list-style:none;margin:0;padding:6px 0 0;}
#mobile-menu li a.m-link{display:flex;align-items:center;justify-content:space-between;min-height:52px;text-decoration:none;font-weight:600;font-size:1.08rem;border-bottom:1px solid var(--hairline);}
#mobile-menu li a.m-link[aria-current]{color:var(--red-dark);}
#mobile-menu .m-secondary{display:flex;flex-wrap:wrap;gap:0 22px;padding:10px 0 4px;}
#mobile-menu .m-secondary a{display:inline-flex;align-items:center;min-height:44px;color:var(--muted);font-weight:600;text-decoration:none;}
#mobile-menu .m-phone{display:flex;align-items:center;justify-content:center;min-height:44px;margin:8px 0 18px;color:var(--ink);font-weight:700;text-decoration:none;border:1px solid var(--hairline);}
@media (min-width:560px){ .brand-text{display:block;} }
@media (min-width:1100px){
  nav.primary{display:flex;}
  .nav-toggle, #mobile-menu{display:none !important;}
  .nav-cta .btn-signin{display:inline-flex;}
  .nav-row{padding-top:14px;padding-bottom:14px;}
  .brand img{height:40px;}
}
@media (min-width:1100px) and (max-width:1219px){
  .brand-text{display:none;}
}

/* ---------- breadcrumb + page head (inner pages: no banner image) ---------- */
.breadcrumb{background:var(--light);border-bottom:1px solid var(--hairline);}
.breadcrumb ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;font-size:0.88rem;color:var(--muted);}
.breadcrumb li{display:inline-flex;align-items:center;}
.breadcrumb li:not(:last-child)::after{content:"/";margin:0 10px;color:var(--muted);}
.breadcrumb a{display:inline-flex;align-items:center;min-height:44px;color:var(--muted);text-decoration:none;}
.breadcrumb a:hover, .breadcrumb a:focus-visible{color:var(--red-dark);text-decoration:underline;}
.breadcrumb [aria-current]{color:var(--ink);font-weight:600;}
.page-head{padding:44px 0 36px;border-bottom:1px solid var(--hairline);}
.page-head .kicker{display:block;font-size:0.82rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--red);font-weight:700;margin-bottom:12px;}
.page-head h1{font-size:clamp(2.2rem,4.6vw,3.5rem);letter-spacing:-0.01em;margin-bottom:14px;text-wrap:balance;}
.page-head .standfirst{font-size:clamp(1.12rem,1.6vw,1.3rem);color:var(--muted);max-width:52ch;margin:0;}
.page-head .head-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px;}

/* ---------- sections ---------- */
section{padding:76px 0;}
.page section{padding:60px 0;}
.page section + section{border-top:1px solid var(--hairline);}
.page section.bg-light + section, .page section + section.bg-light{border-top:none;}
.section-head{max-width:64ch;margin-bottom:36px;}
.section-head .kicker, .kicker{font-size:0.82rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--red);font-weight:700;margin-bottom:10px;display:block;}
.section-head h2{font-size:clamp(1.7rem,3.2vw,2.4rem);}
.section-head p{color:var(--muted);font-size:1.05rem;margin-bottom:0;}
.bg-light{background:var(--light);}
h2.h-sub{font-size:clamp(1.4rem,2.4vw,1.8rem);margin-bottom:14px;}
h3.h-small{font-family:var(--sans);font-size:0.86rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);font-weight:700;margin:0 0 12px;}

/* prose */
.prose{max-width:66ch;}
.prose p, .prose li{font-size:1.06rem;}
.prose p.lead{font-size:1.2rem;color:var(--ink);}
.prose ul{padding-left:1.2em;margin:0 0 1em;}
.prose li{margin-bottom:6px;}
.muted{color:var(--muted);}
.small{font-size:0.92rem;}

/* two columns: words and a picture */
.split{display:grid;grid-template-columns:1fr;gap:32px;align-items:start;}
@media (min-width:900px){
  .split{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:56px;}
  .split.flip > :first-child{order:2;}
  .split.even{grid-template-columns:1fr 1fr;}
  .split.even.three{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));}
}

/* in-content photograph (wanted), with a caption */
figure.photo{margin:0;background:var(--white);border:1px solid var(--hairline);}
figure.photo .frame{overflow:hidden;aspect-ratio:3/2;background:var(--light);}
figure.photo.tall .frame{aspect-ratio:4/5;}
figure.photo.portrait{max-width:440px;margin-inline:auto;}
figure.photo.portrait .frame{aspect-ratio:3/4;}
figure.photo#court-photo .frame{aspect-ratio:3/4;}
figure.photo#court-photo{max-width:440px;margin-inline:auto;} /* the basketball court photo is a portrait: shown whole, never cropped to a strip */
figure.photo.band .frame{aspect-ratio:1200/203;}
figure.photo img{width:100%;height:100%;object-fit:cover;}
figure.photo figcaption{padding:10px 14px;font-size:0.88rem;color:var(--muted);border-top:1px solid var(--hairline);}
figure.photo figcaption strong{font-family:var(--serif);color:var(--ink);font-weight:600;margin-right:6px;}
.photo-pair{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:40px;}
@media (min-width:640px){ .photo-pair{grid-template-columns:1fr 1fr;} }

/* hairline cards */
.card-grid{display:grid;grid-template-columns:1fr;gap:20px;}
@media (min-width:640px){ .card-grid{grid-template-columns:repeat(2,1fr);} }
@media (min-width:1000px){ .card-grid.three{grid-template-columns:repeat(3,1fr);} .card-grid.four{grid-template-columns:repeat(4,1fr);} }
.info-card{background:var(--white);border:1px solid var(--hairline);padding:22px 22px 20px;}
.bg-light .info-card{background:var(--white);}
.info-card h3{font-size:1.25rem;margin-bottom:8px;}
.info-card p{color:var(--muted);font-size:1rem;margin-bottom:8px;}
.info-card p:last-child{margin-bottom:0;}
.info-card p.link-row{margin:14px 0 0;}
.info-card p.link-row + p.link-row{margin-top:0;}
.info-card p.link-row:has(.btn){margin-bottom:8px;}
.info-card .meta{display:block;font-size:0.85rem;color:var(--red-dark);font-weight:700;letter-spacing:0.02em;margin-bottom:6px;}
.info-card ul{margin:0;padding-left:1.1em;color:var(--muted);}
.info-card.with-photo{padding:0;overflow:hidden;display:flex;flex-direction:column;}
.info-card.with-photo .frame{aspect-ratio:16/10;overflow:hidden;background:var(--light);}
.info-card.with-photo .frame img{width:100%;height:100%;object-fit:cover;}
.info-card.with-photo .body{padding:20px 22px 22px;flex:1;display:flex;flex-direction:column;}
.info-card.with-photo .body > a.text-link{margin-top:auto;align-self:flex-start;}
.info-card .meta{line-height:1.5;}
.info-card .meta.meta-empty{min-height:1.5em;} /* a card with no tag keeps the tag's line when its neighbours have one, so every title in the row sits level */

/* simple data tables (hours, fees, lengths) */
table.data{width:100%;border-collapse:collapse;font-size:1rem;}
table.data caption{text-align:left;font-family:var(--sans);font-size:0.86rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);font-weight:700;padding-bottom:10px;}
table.data th, table.data td{padding:12px 4px;text-align:left;border-bottom:1px solid var(--hairline);vertical-align:top;}
table.data thead th{font-size:0.8rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);font-weight:700;}
table.data tbody th{font-weight:600;}
/* A phone number or email in a table is tapped to call or write: the mock's phone-list look (red, bold, 44px tall). */
table.data td a[href^="tel:"], table.data td a[href^="mailto:"]{display:inline-flex;align-items:center;min-height:44px;margin:-12px 0;color:var(--red-dark);font-weight:700;text-decoration:none;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
table.data td a[href^="tel:"]:hover, table.data td a[href^="tel:"]:focus-visible, table.data td a[href^="mailto:"]:hover, table.data td a[href^="mailto:"]:focus-visible{text-decoration:underline;}
table.data td.num, table.data th.num{text-align:right;font-variant-numeric:tabular-nums;}
/* a content table with 3+ columns stacks into label/value rows on a phone, so no column is squeezed (site.js adds .stack and each cell's data-label) */
@media (max-width:599px){
  table.data.stack, table.data.stack tbody, table.data.stack tr, table.data.stack th, table.data.stack td{display:block;width:auto;}
  table.data.stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
  table.data.stack tr{border-bottom:1px solid var(--hairline);padding:10px 0;}
  table.data.stack th, table.data.stack td{border-bottom:0;padding:3px 0;text-align:left;}
  table.data.stack tbody th{font-size:1.05rem;padding-bottom:6px;}
  table.data.stack td[data-label]::before{content:attr(data-label);display:block;font-size:0.74rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);font-weight:700;}
  table.data.stack td{padding-bottom:8px;}
  table.data.stack td:empty{display:none;}
}
table.data tr.is-today th, table.data tr.is-today td{background:#FBF3E4;}
table.data tr.is-today th::after{content:"Today";display:inline-block;margin-left:8px;font-size:0.72rem;letter-spacing:0.08em;text-transform:uppercase;font-weight:700;color:var(--white);background:var(--red);padding:2px 7px;vertical-align:2px;}
.table-scroll{overflow-x:auto;}

/* at-a-glance numbers: A2's scoreboard, reused small */
.scoreboard{display:grid;grid-template-columns:repeat(2,1fr);grid-auto-flow:dense;border:1px solid var(--hairline);background:var(--white);}
.cell{padding:22px 18px;border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);margin:0 -1px -1px 0;min-width:0;}
.cell.span2{grid-column:span 2;}
.cell .num{display:flex;flex-wrap:wrap;align-items:baseline;font-family:var(--serif);font-size:clamp(1.7rem,5vw,2.3rem);font-weight:600;color:var(--red);line-height:1;letter-spacing:-0.01em;}
.cell .num .arrow{color:var(--muted);font-size:0.6em;margin:0 6px;font-weight:500;}
.cell .label{display:block;margin-top:10px;font-size:0.8rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);font-weight:600;}
@media (min-width:700px){ .scoreboard.cols-4{grid-template-columns:repeat(4,1fr);} .scoreboard.cols-3{grid-template-columns:repeat(3,1fr);} .scoreboard .cell.span2{grid-column:auto;} }

/* ---------- "Sign in to ..." : where every old form now goes ---------- */
.signin-action{background:var(--light);border:1px solid var(--hairline);border-left:4px solid var(--red);padding:26px 28px;display:grid;grid-template-columns:1fr;gap:18px;align-items:center;}
.signin-action h3{font-size:1.35rem;margin-bottom:6px;}
.signin-action p{color:var(--muted);margin:0 0 6px;max-width:58ch;}
.signin-action p:last-child{margin-bottom:0;}
.signin-action .fine{font-size:0.92rem;}
.signin-action .fine a{color:var(--red-dark);font-weight:600;}
.signin-action .actions{display:flex;flex-direction:column;gap:6px;align-items:flex-start;}
.signin-action .actions .note{font-size:0.85rem;color:var(--muted);}
@media (min-width:860px){ .signin-action{grid-template-columns:minmax(0,1fr) auto;gap:32px;} .signin-action .actions{align-items:flex-end;} }

/* ---------- disclosures (rules, class descriptions, FAQ-shaped content) ---------- */
details.disclose{border-bottom:1px solid var(--hairline);}
details.disclose:first-of-type{border-top:1px solid var(--hairline);}
details.disclose summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:56px;padding:10px 4px;font-family:var(--serif);font-size:1.15rem;font-weight:600;}
details.disclose summary::-webkit-details-marker{display:none;}
details.disclose summary .disclose-label{flex:1 1 auto;min-width:0;text-align:left;}
details.disclose summary::after{content:"+";font-family:var(--sans);font-size:1.5rem;font-weight:400;color:var(--red);flex:none;line-height:1;}
details.disclose[open] summary::after{content:"\2013";}
details.disclose .disclose-body{padding:0 4px 20px;color:var(--muted);max-width:70ch;}
details.disclose .disclose-body ul{padding-left:1.2em;margin:0;}
details.disclose .disclose-body li{margin-bottom:6px;}

/* ---------- hero (A2) ---------- */
.hero{background:var(--white);padding:0;}
.hero-media{margin:0;position:relative;}
.hero-media .frame{overflow:hidden;aspect-ratio:1700/1138;background:var(--light);}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:50% 78%;}
.hero-media figcaption{background:var(--light);color:var(--muted);padding:10px 24px;font-size:0.86rem;}
.hero-media figcaption strong{color:var(--ink);font-family:var(--serif);font-weight:600;margin-right:8px;}
.hero-copy{padding:32px 24px 44px;}
.hero-eyebrow{display:block;font-size:0.82rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--red);font-weight:700;margin-bottom:16px;}
.hero h1{font-size:clamp(2.3rem,3.7vw,3.5rem);font-weight:600;line-height:1.04;letter-spacing:-0.01em;margin-bottom:20px;text-wrap:balance;}
.hero h1 em{display:block;font-style:italic;color:var(--red);font-weight:600;}
.hero p.lede{font-size:1.2rem;color:var(--muted);max-width:36ch;margin-bottom:28px;}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;}
@media (min-width:961px){
  .hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;padding:0;}
  .hero-copy{order:-1;align-self:center;padding:56px 56px 56px max(24px, calc((100vw - 1240px) / 2 + 24px));}
  .hero-media{height:clamp(500px, calc(100svh - 240px), 720px);}
  .hero-media .frame{height:100%;aspect-ratio:auto;}
  .hero-media img{object-position:50% 80%;}
  .hero-media figcaption{position:absolute;right:0;bottom:0;background:var(--white);padding:12px 20px;max-width:240px;line-height:1.35;}
  .hero-media figcaption strong{display:block;margin:0 0 2px;}
}

/* ---------- founder (A2) ---------- */
.founder-grid{display:grid;grid-template-columns:1fr;gap:32px;align-items:center;}
.plate{margin:0;background:var(--white);border:1px solid var(--hairline);max-width:420px;}
.plate .frame{aspect-ratio:964/1200;overflow:hidden;}
.plate img{width:100%;height:100%;object-fit:cover;}
.plate figcaption{padding:12px 16px;font-size:0.9rem;color:var(--muted);border-top:1px solid var(--hairline);}
.plate figcaption strong{font-family:var(--serif);color:var(--ink);font-size:1.05rem;font-weight:600;margin-right:8px;}
.founder-text h2{font-size:clamp(1.9rem,3.8vw,3rem);max-width:16ch;margin-bottom:20px;text-wrap:balance;}
.founder-text p{font-size:1.15rem;color:var(--muted);max-width:56ch;}
@media (min-width:880px){ .founder-grid{grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:72px;} }

/* home scoreboard: six cells (A2) */
.scoreboard.home .cell.span2, .scoreboard.home .cell:last-child{grid-column:span 2;}
.scoreboard.home .cell{padding:26px 18px;}
.scoreboard-foot{margin:22px 0 0;color:var(--muted);font-size:1rem;max-width:64ch;}
@media (min-width:700px){
  .scoreboard.home{grid-template-columns:repeat(3,1fr);}
  .scoreboard.home .cell .num{font-size:clamp(1.5rem,3.1vw,2rem);}
  .scoreboard.home .cell.span2, .scoreboard.home .cell:last-child{grid-column:auto;}
}
@media (min-width:1000px){
  .scoreboard.home{grid-template-columns:1fr 1.9fr 1fr 1fr 1fr 1fr;overflow:hidden;}
  .scoreboard.home .cell{padding:30px 20px;}
  .scoreboard.home .cell .num{font-size:clamp(1.5rem,2.3vw,2.1rem);}
}

/* ---------- five sports: fight card (A2) ---------- */
.bouts{display:grid;gap:20px;}
.bout{background:var(--white);border:1px solid var(--hairline);overflow:hidden;}
.bout-media{position:relative;height:200px;background:var(--light);overflow:hidden;}
.bout-media.strip{height:auto;aspect-ratio:1200/203;}
.bout-media img{width:100%;height:100%;object-fit:cover;}
.bout-media.tennis img{object-position:50% 62%;}
.bout-media.boxing img{object-position:50% 58%;}
.bout-panel{padding:22px 22px 20px;display:grid;gap:10px;}
.bout-index{display:block;font-size:0.8rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--red);font-weight:700;margin-bottom:6px;}
.bout h3{font-size:1.5rem;margin-bottom:2px;}
.bout .who{font-size:0.9rem;color:var(--red-dark);font-weight:600;}
.bout p{color:var(--muted);font-size:1rem;margin:0;}
@media (min-width:900px){
  .bout-media{height:340px;}
  .bout-media.strip{height:auto;}
  .bout-panel{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) 250px;align-items:center;gap:36px;padding:24px 32px;}
}

/* ---------- program cards (A2) ---------- */
.program-grid{display:grid;grid-template-columns:1fr;gap:20px;}
.program-card{position:relative;background:var(--white);border:1px solid var(--hairline);overflow:hidden;}
.program-card .swatch{aspect-ratio:16/10;position:relative;background:linear-gradient(135deg, var(--swatch-a,#2c2622), var(--swatch-b,#1a1a1a));overflow:hidden;}
.program-card .swatch img{width:100%;height:100%;object-fit:cover;}
.swatch.type-tile{display:flex;align-items:center;justify-content:center;text-align:center;padding:14px;}
.swatch.type-tile .type-mark{font-family:var(--serif);font-style:italic;font-weight:600;color:rgba(255,255,255,0.34);font-size:1.9rem;line-height:1.15;}
.program-card .body{padding:20px 22px 24px;}
.program-card h3{font-size:1.2rem;margin-bottom:6px;}
.program-card p{color:var(--muted);font-size:0.98rem;margin-bottom:10px;}
.program-card p:last-child{margin-bottom:0;}
.program-card .who{display:block;font-size:0.85rem;color:var(--red-dark);font-weight:600;margin-bottom:6px;}
.program-card a.card-link{position:absolute;inset:0;z-index:2;}
.program-card a.card-link:focus-visible{outline:3px solid var(--red);outline-offset:-3px;}
.program-card:hover h3{color:var(--red-dark);}
@media (min-width:640px){ .program-grid{grid-template-columns:repeat(2,1fr);} }
@media (min-width:1100px){ .program-grid.four{grid-template-columns:repeat(4,1fr);} }

/* amenities: the same card, sideways (A2) */
.amen-grid{display:grid;grid-template-columns:1fr;gap:20px;}
.amen-card{position:relative;background:var(--white);border:1px solid var(--hairline);overflow:hidden;display:grid;grid-template-columns:1fr;}
.amen-card .swatch{position:relative;aspect-ratio:16/10;background:linear-gradient(135deg, var(--swatch-a,#2c2622), var(--swatch-b,#1a1a1a));overflow:hidden;}
.amen-card .swatch img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.amen-card .body{padding:20px 22px 24px;display:flex;flex-direction:column;justify-content:center;}
.amen-card h3{font-size:1.2rem;margin-bottom:6px;}
.amen-card p{color:var(--muted);font-size:0.98rem;margin:0;}
.amen-card a.card-link{position:absolute;inset:0;z-index:2;}
.amen-card a.card-link:focus-visible{outline:3px solid var(--red);outline-offset:-3px;}
.amen-card:hover h3{color:var(--red-dark);}
@media (min-width:640px){
  .amen-card{grid-template-columns:minmax(0,5fr) minmax(0,6fr);}
  .amen-card .swatch{aspect-ratio:auto;min-height:210px;}
}
@media (min-width:1000px){ .amen-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:639px){ .swatch.type-tile{aspect-ratio:16/6 !important;min-height:0 !important;} }

/* ---------- membership: A's dark rate band ---------- */
.pricing{background:var(--ink);color:var(--white);}
.pricing .section-head{margin-bottom:0;}
.pricing .section-head h2{color:var(--white);}
.pricing .section-head p{color:var(--muted-dark);}
.pricing .section-head .kicker{color:#ee9a8a;}
.pricing-grid{display:grid;grid-template-columns:1fr;gap:32px;grid-template-areas:'head' 'table' 'foot';}
.pricing-head{grid-area:head;}
.rate-wrap{grid-area:table;}
.rate-foot{grid-area:foot;display:grid;gap:18px;justify-items:start;}
.rate-table{width:100%;border-collapse:collapse;}
.rate-table th, .rate-table td{padding:15px 4px;text-align:left;border-bottom:1px solid rgba(255,255,255,0.18);font-size:1.05rem;}
.rate-table thead th{font-family:var(--sans);font-weight:600;font-size:0.8rem;letter-spacing:0.12em;text-transform:uppercase;color:var(--muted-dark);vertical-align:bottom;}
.rate-table th[scope=row]{font-family:var(--serif);font-weight:600;color:var(--white);font-size:1.1rem;}
.rate-table td.price{font-family:var(--serif);font-size:1.45rem;color:var(--white);font-weight:600;text-align:right;font-variant-numeric:tabular-nums;}
.rate-table td.price.dim{color:var(--muted-dark);font-size:1.2rem;}
.rate-table thead th.num{text-align:right;}
.rate-table tbody tr:last-child th, .rate-table tbody tr:last-child td{border-bottom:none;}
.rate-table tfoot td, .rate-table tfoot th{font-size:0.92rem;color:var(--muted-dark);border-bottom:none;border-top:1px solid rgba(255,255,255,0.3);}
.rate-table tfoot td{text-align:right;}
.rate-note{color:var(--muted-dark);font-size:0.95rem;max-width:46ch;margin:0;}
.pricing .btn-primary:hover{background:#e3132f;}
@media (min-width:960px){
  .pricing-grid{grid-template-columns:minmax(0,5fr) minmax(0,6fr);grid-template-rows:auto 1fr;column-gap:80px;row-gap:28px;align-items:start;grid-template-areas:'head table' 'foot table';}
}
/* the same table on a white page */
.rate-table.on-white th, .rate-table.on-white td{border-bottom-color:var(--hairline);}
.rate-table.on-white thead th{color:var(--muted);}
.rate-table.on-white th[scope=row], .rate-table.on-white td.price{color:var(--ink);}
.rate-table.on-white td.price.dim{color:var(--muted);}
.rate-table.on-white tfoot td, .rate-table.on-white tfoot th{color:var(--muted);border-top-color:var(--ink);}

/* membership plan cards */
.plan-grid{display:grid;grid-template-columns:1fr;gap:20px;}
@media (min-width:800px){ .plan-grid{grid-template-columns:1fr 1fr;} }
.plan{border:1px solid var(--hairline);background:var(--white);padding:26px 26px 22px;}
.plan.featured{border:2px solid var(--ink);}
.plan .tag{display:inline-block;font-size:0.75rem;letter-spacing:0.12em;text-transform:uppercase;font-weight:700;color:var(--white);background:var(--ink);padding:3px 9px;margin-bottom:12px;}
.plan h3{font-size:1.6rem;margin-bottom:6px;}
.plan .from{font-family:var(--serif);font-size:1.15rem;color:var(--red-dark);font-weight:600;margin-bottom:12px;}
.plan p{color:var(--muted);}
.plan ul{margin:0;padding-left:1.1em;color:var(--ink);}
.plan li{margin-bottom:6px;}

/* numbered steps (how to join) */
ol.steps{list-style:none;margin:0;padding:0;display:grid;gap:18px;counter-reset:step;}
@media (min-width:900px){ ol.steps{grid-template-columns:repeat(3,1fr);gap:24px;} }
ol.steps li{counter-increment:step;border-top:3px solid var(--red);padding-top:16px;}
ol.steps li::before{content:counter(step);display:block;font-family:var(--serif);font-size:2rem;font-weight:600;color:var(--red);line-height:1;margin-bottom:8px;}
ol.steps h3{font-size:1.2rem;margin-bottom:6px;}
ol.steps p{color:var(--muted);margin:0;}

/* ---------- news (A2) ---------- */
.news-list{display:grid;grid-template-columns:1fr;gap:32px;}
.news-item{border-top:3px solid var(--red);padding-top:16px;}
.news-date{font-size:0.8rem;color:var(--muted);letter-spacing:0.06em;text-transform:uppercase;font-weight:600;margin-bottom:8px;display:block;}
.news-item h3{font-size:1.2rem;margin-bottom:8px;}
.news-item p{color:var(--muted);font-size:1rem;margin-bottom:4px;}
.news-item a{display:inline-flex;align-items:center;min-height:44px;min-width:44px;color:var(--red-dark);font-weight:700;text-decoration:none;font-size:0.95rem;}
.news-item a:hover, .news-item a:focus-visible{text-decoration:underline;}
.schedule-cta{margin-top:44px;background:var(--light);border:1px solid var(--hairline);padding:32px;display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;}
.schedule-cta h3{font-size:1.3rem;margin-bottom:6px;}
.schedule-cta p{color:var(--muted);margin-bottom:0;max-width:56ch;}
.schedule-cta .cta-actions{display:flex;gap:12px;flex-wrap:wrap;}
@media (min-width:900px){ .news-list{grid-template-columns:repeat(3,1fr);gap:28px;} }

/* ---------- join band (A2) ---------- */
.join .wrap{display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap;}
.join h2{font-size:clamp(1.7rem,3.2vw,2.4rem);}
.join p{color:var(--muted);font-size:1.08rem;max-width:56ch;margin-bottom:0;}
.join-actions{display:flex;gap:14px;flex-wrap:wrap;}

/* ---------- people (Our Team) ---------- */
.people{display:grid;grid-template-columns:1fr;gap:20px;}
@media (min-width:600px){ .people{grid-template-columns:repeat(2,1fr);} }
@media (min-width:1000px){ .people{grid-template-columns:repeat(3,1fr);} }
.person{display:grid;grid-template-columns:96px minmax(0,1fr);gap:16px;align-items:start;background:var(--white);border:1px solid var(--hairline);padding:16px;}
.person .face{width:96px;height:96px;overflow:hidden;background:var(--light);}
.person .face img{width:100%;height:100%;object-fit:cover;object-position:50% 25%;}
.person .face.mono{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2c2622,#1a1a1a);}
.person .face.mono span{font-family:var(--serif);font-style:italic;font-weight:600;font-size:1.9rem;color:rgba(255,255,255,0.55);}
.person h3{font-size:1.2rem;margin:2px 0 2px;overflow-wrap:anywhere;}
.person .role{display:block;font-weight:700;color:var(--red-dark);font-size:0.92rem;}
.person .since{display:block;font-size:0.86rem;color:var(--muted);margin-bottom:6px;}
.person p{font-size:0.95rem;color:var(--muted);margin:0;}
.person a{color:var(--red-dark);font-weight:600;}
.nw-since{white-space:nowrap;}
.person .contact a{display:inline-flex;align-items:center;min-height:44px;}
.people.compact{gap:12px;grid-template-columns:repeat(auto-fit,minmax(max(230px,calc((100% - 36px) / 4)),1fr));} /* each card is at least 230px wide and a row never holds more than 4; auto-fit lets a short list fill its column */
.people.compact .person{grid-template-columns:52px minmax(0,1fr);gap:12px;padding:12px;}
.people.compact .face{width:52px;height:52px;}
.people.compact .face.mono span{font-size:1.15rem;}
.people.compact h3{font-size:1.02rem;}
.people.compact p{font-size:0.88rem;}
.team-jump{display:flex;flex-wrap:wrap;gap:8px 10px;margin:0;padding:0;list-style:none;}
.team-jump a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--hairline);text-decoration:none;font-weight:600;background:var(--white);}
.team-jump a:hover, .team-jump a:focus-visible{border-color:var(--ink);}

/* ---------- form fields (the class schedule's filters use these; the public site has no forms) ---------- */
.field{display:grid;gap:6px;}
.field label, .field .label{font-weight:700;font-size:1rem;}
.field .req{color:var(--red-dark);margin-left:2px;}
.field .hint{font-size:0.92rem;color:var(--muted);margin:0;}
.field input, .field select, .field textarea{font:inherit;font-size:1rem;color:var(--ink);background:var(--white);border:2px solid #77706A;border-radius:2px;min-height:48px;padding:10px 12px;width:100%;}
.field textarea{min-height:150px;resize:vertical;line-height:1.5;}
.field select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px;background-repeat:no-repeat;padding-right:40px;}
.field input:focus-visible, .field select:focus-visible, .field textarea:focus-visible{outline:3px solid var(--red);outline-offset:2px;border-color:var(--ink);}
.field .w-short{max-width:14ch;} .field .w-medium{max-width:28ch;} .field .w-long{max-width:44ch;}
.field [aria-invalid="true"]{border-color:var(--red-dark);}
.field .error{display:none;align-items:flex-start;gap:8px;color:var(--red-dark);font-weight:600;font-size:0.95rem;margin:0;}
.field .error svg{width:18px;height:18px;flex:none;margin-top:2px;}
.field.has-error .error{display:flex;}

/* contact blocks */
.contact-grid{display:grid;grid-template-columns:1fr;gap:28px;}
@media (min-width:900px){ .contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;} }
.phone-list{list-style:none;margin:0;padding:0;}
.phone-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border-bottom:1px solid var(--hairline);padding:4px 0;}
.phone-list .who{font-weight:600;}
.phone-list .who small{display:block;font-weight:400;color:var(--muted);font-size:0.88rem;}
.phone-list a{display:inline-flex;align-items:center;justify-content:flex-end;min-height:44px;color:var(--red-dark);font-weight:700;text-decoration:none;font-variant-numeric:tabular-nums;}
.phone-list a:hover, .phone-list a:focus-visible{text-decoration:underline;}
.phone-list a{overflow-wrap:anywhere;text-align:right;}
.email-placeholder{display:inline-flex;align-items:center;justify-content:flex-end;min-height:44px;color:var(--muted);font-style:italic;font-weight:600;}
address.big{font-style:normal;font-family:var(--serif);font-size:1.4rem;line-height:1.35;margin-bottom:16px;}

/* ---------- footer (A2), with hours, address, phone, Our Story and sign-in ---------- */
footer.site{background:var(--ink);color:var(--muted-dark);padding:56px 0 20px;}
.footer-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px 20px;}
.footer-grid > div:last-child:nth-child(odd){grid-column:1 / -1;} /* an odd last column (Help) takes the full row on a phone instead of sitting alone beside empty space */
.footer-grid > div:last-child:nth-child(odd) ul{columns:2;column-gap:20px;}
.footer-brand, .footer-visit{grid-column:1 / -1;margin-bottom:18px;}
footer.site h2{font-family:var(--sans);color:var(--white);font-size:0.86rem;letter-spacing:0.1em;text-transform:uppercase;margin-bottom:12px;font-weight:700;}
footer.site ul{list-style:none;margin:0;padding:0;}
footer.site a{display:inline-flex;align-items:center;min-height:44px;min-width:44px;color:var(--muted-dark);text-decoration:none;font-size:0.97rem;}
footer.site a:hover, footer.site a:focus-visible{color:var(--white);text-decoration:underline;}
.footer-brand img{height:34px;width:auto;margin-bottom:14px;}
.footer-brand p{font-size:0.95rem;max-width:34ch;}
.footer-brand .f-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px;}
.f-social{margin-top:18px;}
.f-social ul{display:flex;flex-wrap:nowrap;gap:0 20px;}
footer.site .f-social a{white-space:nowrap;}
footer.site .f-social a{gap:8px;}
footer.site .f-social svg{flex:none;}
footer.site .btn-primary{color:var(--white);font-size:0.92rem;padding:10px 18px;white-space:nowrap;}
footer.site .btn-primary:hover, footer.site .btn-primary:focus-visible{background:#e3132f;text-decoration:none;}
footer.site .btn-ghost-onlight{color:var(--white);font-size:0.92rem;padding:10px 18px;}
footer.site .btn-ghost-onlight:hover, footer.site .btn-ghost-onlight:focus-visible{color:var(--ink);text-decoration:none;}
footer.site address{font-style:normal;font-size:0.97rem;line-height:1.6;}
footer.site address p{margin:0 0 6px;}
.f-hours{display:grid;grid-template-columns:auto 1fr;gap:2px 14px;font-size:0.95rem;margin:10px 0 0;}
.f-hours dt{color:var(--white);font-weight:600;white-space:nowrap;}
.f-hours dd{margin:0;font-variant-numeric:tabular-nums;}
.footer-bottom{border-top:1px solid rgba(255,255,255,0.14);margin-top:34px;padding-top:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:4px 18px;font-size:0.85rem;}
.footer-bottom nav ul{display:flex;flex-wrap:wrap;gap:0 18px;}
.footer-bottom a{font-size:0.88rem;}
@media (min-width:640px){ .footer-grid{grid-template-columns:repeat(6,1fr);gap:34px;} .footer-brand, .footer-visit{grid-column:span 3;margin-bottom:0;} .footer-grid > div:nth-child(n+3), .footer-grid > div:last-child:nth-child(odd){grid-column:span 2;} .footer-grid > div:last-child:nth-child(odd) ul{columns:auto;} }
@media (min-width:1000px){ .footer-grid{grid-template-columns:minmax(220px,1fr) minmax(212px,1.4fr) 1fr 1fr 1fr;gap:24px;} .footer-brand, .footer-visit, .footer-grid > div:nth-child(n+3), .footer-grid > div:last-child:nth-child(odd){grid-column:auto;} }

@media (max-width:600px){
  body{font-size:16.5px;}
  section, .page section{padding:48px 0;}
  .section-head{margin-bottom:28px;}
  .schedule-cta{padding:22px;}
  .join-actions .btn, .hero-actions .btn{flex:1 1 100%;}
  .page-head{padding:30px 0 26px;}
  .signin-action{padding:22px 20px;}
  .signin-action .btn{width:100%;}
  .signin-action .actions{align-items:stretch;}
  .wrap{padding:0 18px;}
}

/* ==========================================================================
   Class schedule (public, view only). Colours are the club's own, from the
   printed schedule; the tint/label pairs are the ones the working demo
   measured for AA (label on tint and on white, 5:1 or better).
   ========================================================================== */
.sched-tools{display:flex;flex-wrap:wrap;gap:14px 24px;align-items:end;justify-content:space-between;margin-bottom:18px;}
.week-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.week-nav .icon-btn{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:2px solid var(--ink);background:var(--white);cursor:pointer;color:var(--ink);border-radius:2px;}
.week-nav .icon-btn svg{width:20px;height:20px;}
.week-nav .icon-btn:disabled{border-color:#B7B0A6;color:#8a837b;cursor:not-allowed;}
.week-label{font-family:var(--serif);font-size:1.25rem;font-weight:600;min-width:13ch;padding:0 6px;}
.week-label .this-week{display:inline-block;margin-left:10px;font-family:var(--sans);font-size:0.72rem;letter-spacing:0.08em;text-transform:uppercase;font-weight:700;background:var(--red);color:var(--white);padding:2px 7px;vertical-align:4px;}
.sched-filters{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:end;}
.sched-filters .field{gap:4px;}
.sched-filters .field label{font-size:0.9rem;}
.sched-filters select{min-width:13rem;}
/* filters (several classes, studio, time of day), chips, the count, and a signed-in member's saved views */
.sched-filters{margin-bottom:14px;}
.sched-filters .flabel{font-weight:700;font-size:0.9rem;}
.tod{display:inline-flex;flex-wrap:wrap;border:2px solid #77706A;border-radius:2px;background:var(--white);}
.tod button{min-height:44px;padding:0 16px;border:0;background:transparent;font:inherit;font-size:0.95rem;font-weight:700;color:var(--ink);cursor:pointer;}
.tod button + button{border-left:1px solid var(--hairline);}
.tod button[aria-pressed="true"]{background:var(--ink);color:var(--white);}
.tod button:focus-visible{outline:3px solid var(--red);outline-offset:-3px;}
.fr{display:flex;flex-wrap:wrap;align-items:center;column-gap:8px;margin:0 0 10px;min-width:0;}
.fr:focus{outline:none;}
.scoreboard + p{margin-top:12px;}
.fr-count{font-size:0.95rem;font-weight:700;margin-right:6px;min-height:44px;display:inline-flex;align-items:center;flex-wrap:wrap;column-gap:4px;}
.fr-count em{font-style:normal;font-weight:600;color:var(--muted);}
.fr-count .fr-day{white-space:nowrap;}
.fr-count .fr-day::before{content:"\00B7";margin-right:6px;}
@media (max-width:599px){ .fr-count .fr-day{flex-basis:100%;} .fr-count .fr-day::before{display:none;} } /* on a phone the day count sits on its own line, so no separator can start one */
.fr-day{display:none;}
@media (max-width:999px){ .fr-day{display:inline;} }
.fchip{appearance:none;-webkit-appearance:none;border:0;background:none;padding:0;margin:0;min-height:44px;max-width:100%;display:inline-flex;align-items:center;cursor:pointer;font:inherit;color:inherit;}
.fchip:focus-visible, .fclear:focus-visible, .sv-apply:focus-visible, .sv-del:focus-visible{outline:none;}
.fchip-in{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 8px 0 12px;border-radius:100px;background:#FBEAEC;color:var(--red-dark);border:1px solid #E9B7C0;font-size:0.85rem;font-weight:700;overflow-wrap:anywhere;text-align:left;}
.fchip-in svg{width:14px;height:14px;flex:0 0 14px;}
.fchip:hover .fchip-in{background:#F8D9DF;}
.fchip:focus-visible .fchip-in{outline:3px solid var(--red);outline-offset:2px;}
.fclear{appearance:none;-webkit-appearance:none;border:0;background:none;min-height:44px;padding:0 8px;font:inherit;font-size:0.85rem;font-weight:700;color:var(--ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.fclear:focus-visible{outline:3px solid var(--red);outline-offset:-2px;}
.btn-secondary{background:var(--white);color:var(--ink);border-color:var(--ink);}
.btn-secondary:hover, .btn-secondary:focus-visible{background:var(--ink);color:var(--white);}
.btn-sm{min-height:44px;padding:6px 16px;font-size:0.9rem;}
.sched-empty .btn{margin-left:8px;}
.cls .meta.reason{font-style:italic;color:#4A4541;}
.sub-tag{font-size:0.78rem;font-weight:700;color:#5D4C2D;background:#F4F1ED;padding:1px 6px;border-radius:100px;white-space:nowrap;}
.class-dialog .note.is-cancel{background:#EFEDEA;}
.sv{display:flex;flex-wrap:wrap;align-items:center;gap:0 8px;margin:0 0 14px;min-width:0;}
.sv[hidden]{display:none;}
.sv-lab{font-size:0.8rem;font-weight:700;color:#57524D;margin-right:2px;}
.sv-pill{display:inline-flex;align-items:stretch;border:1px solid #D7D4CE;border-radius:100px;background:var(--white);margin:0 0 8px;max-width:100%;overflow:hidden;}
.sv-apply, .sv-del{appearance:none;-webkit-appearance:none;border:0;background:transparent;min-height:44px;font:inherit;font-size:0.85rem;font-weight:700;color:#57524D;cursor:pointer;}
.sv-apply{padding:0 8px 0 16px;overflow-wrap:anywhere;text-align:left;}
.sv-del{min-width:44px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-left:1px solid #E8E6E3;}
.sv-del svg{width:14px;height:14px;}
.sv-apply:hover, .sv-del:hover{background:var(--light);}
.sv-apply:focus-visible, .sv-del:focus-visible{outline:3px solid var(--red);outline-offset:-3px;}
.sv-save{margin:0 0 8px;}
.sv-form{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 8px;}
.sv-form input{min-height:44px;padding:0 14px;border:1px solid #8B857E;border-radius:100px;font:inherit;font-size:14.5px;color:var(--ink);background:var(--white);min-width:0;width:220px;max-width:100%;}
.sv-form input:focus-visible{outline:3px solid var(--red);outline-offset:2px;}
.sv-form input[aria-invalid="true"]{border-color:var(--red-dark);}
.sv-err{font-size:0.85rem;font-weight:700;color:var(--red-dark);}
@media (max-width:480px){ .sv-form{display:flex;width:100%;} .sv-form input{flex:1 1 100%;width:100%;} .sched-filters select{min-width:0;width:100%;} .sched-filters .field{flex:1 1 100%;} .tod{display:flex;width:100%;} .tod button{flex:1 1 auto;padding:0 8px;} }
.sched-legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:0.9rem;color:var(--muted);margin:0 0 14px;}
.sched-legend span{display:inline-flex;align-items:center;gap:6px;}
.sched-legend .dot{width:12px;height:12px;border-radius:50%;}
.daytabs{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px;}
.daytab{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:56px;border:1px solid var(--hairline);background:var(--white);font:inherit;cursor:pointer;color:var(--ink);padding:4px 0;}
.daytab .dow{font-size:0.75rem;letter-spacing:0.08em;text-transform:uppercase;font-weight:700;color:var(--muted);}
.daytab .dnum{font-family:var(--serif);font-size:1.2rem;font-weight:600;}
.daytab[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--white);}
.daytab[aria-pressed="true"] .dow{color:var(--muted-dark);}
.daytab.is-today:not([aria-pressed="true"]){border-color:var(--red);box-shadow:inset 0 -3px 0 var(--red);}
.day-list{display:block;}
.day-head{display:flex;align-items:baseline;gap:12px;margin:6px 0 10px;}
.day-head h3{font-size:1.35rem;margin:0;}
.day-head .sub{color:var(--muted);}
ol.day-rows{list-style:none;margin:0;padding:0;}
ol.day-rows > li{display:grid;grid-template-columns:76px minmax(0,1fr);gap:12px;padding:10px 0;border-top:1px solid var(--hairline);}
ol.day-rows .t{font-weight:700;font-variant-numeric:tabular-nums;padding-top:10px;font-size:0.95rem;}
ol.day-rows .cs{display:grid;gap:8px;}
.week-table-wrap{display:none;}
@media (min-width:1000px){
  .daytabs, .day-list{display:none;}
  .week-table-wrap{display:block;border:1px solid var(--hairline);}
}
table.week{width:100%;border-collapse:collapse;table-layout:fixed;}
table.week col.c-time{width:78px;}
table.week thead th{position:sticky;top:calc(var(--header-h) - 1px);background:var(--white);background-clip:padding-box;z-index:2;padding:10px 6px;border-bottom:2px solid var(--ink);text-align:left;}
table.week thead th .dow{display:block;font-size:0.74rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);font-weight:700;}
table.week thead th .dnum{font-family:var(--serif);font-size:1.2rem;font-weight:600;}
table.week thead th.is-today{box-shadow:inset 0 -4px 0 var(--red);}
table.week tbody th{font-size:0.86rem;font-weight:700;font-variant-numeric:tabular-nums;text-align:left;vertical-align:top;padding:10px 6px;border-top:1px solid var(--hairline);}
table.week td{vertical-align:top;padding:5px;border-top:1px solid var(--hairline);border-left:1px solid #EDE7DD;}
table.week td.is-today{background:#FBF6EE;}
table.week td > * + *{margin-top:5px;}
.cls{position:relative;border:1px solid color-mix(in srgb, var(--c) 45%, white);border-left:5px solid var(--c);background:var(--ct);padding:6px 8px 7px;min-width:0;}
.cls.is-outline{background:var(--white);border-color:var(--c);}
.cls button.open{all:unset;display:block;cursor:pointer;font-weight:700;font-size:0.92rem;line-height:1.25;color:var(--cl);min-height:24px;}
.cls button.open::after{content:"";position:absolute;inset:0;}
.cls button.open:focus-visible{outline:none;}
.cls:focus-within{outline:3px solid var(--red);outline-offset:2px;}
.cls .meta{display:block;font-size:0.8rem;color:var(--ink);line-height:1.35;}
.cls .meta.t{font-variant-numeric:tabular-nums;}
.cls .flag{display:inline-block;margin-top:4px;font-size:0.7rem;letter-spacing:0.06em;text-transform:uppercase;font-weight:700;padding:1px 6px;}
.cls .flag.cancel{background:#67625E;color:var(--white);}
.cls.is-cancelled{background:#EFEDEA;border-color:#C9C4BC;border-left-color:#8a837b;}
.cls.is-cancelled button.open{color:#4A4541;text-decoration:line-through;}
ol.day-rows .cls{padding:10px 12px;}
ol.day-rows .cls button.open{font-size:1.02rem;}
ol.day-rows .cls .meta{font-size:0.9rem;}
.sched-empty{padding:24px;color:var(--muted);text-align:center;}
.sched-foot{display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between;align-items:center;margin-top:14px;font-size:0.92rem;color:var(--muted);}
.sched-foot a{color:var(--red-dark);font-weight:600;}
.key-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px 20px;padding:4px 0 8px;}
.key-item{display:flex;align-items:center;gap:10px;font-size:0.95rem;}
.key-item .sw{width:22px;height:16px;background:var(--ct);border:1px solid var(--c);border-left:5px solid var(--c);flex:none;}
.key-item .sw.is-outline{background:var(--white);}

/* class list: one entry per class type (replaces 20 old class pages) */
.class-list{display:grid;grid-template-columns:1fr;gap:0 40px;}
@media (min-width:900px){ .class-list{grid-template-columns:1fr 1fr;} }
.class-list details.disclose summary{gap:12px;justify-content:flex-start;}
.class-list details.disclose summary .sw{width:14px;height:28px;background:var(--c);flex:none;}
.class-list details.disclose summary .sw.is-outline{background:var(--white);border:2px solid var(--c);}
.class-list details.disclose summary .len{margin-left:auto;font-family:var(--sans);font-size:0.88rem;font-weight:600;color:var(--muted);}
.class-list details.disclose summary::after{margin-left:8px;}
.class-list details.disclose:nth-of-type(2){border-top:1px solid var(--hairline);}
@media (max-width:899px){ .class-list details.disclose:nth-of-type(2){border-top:none;} }

/* dialog: class details */
dialog.class-dialog{border:none;padding:0;max-width:min(560px, calc(100vw - 32px));width:100%;box-shadow:0 24px 60px rgba(0,0,0,0.3);color:var(--ink);}
dialog.class-dialog::backdrop{background:rgba(26,26,26,0.55);}
.class-dialog .dlg-head{padding:22px 24px 16px;border-top:8px solid var(--c, var(--red));border-bottom:1px solid var(--hairline);}
.class-dialog .dlg-head .kicker{margin-bottom:6px;}
.class-dialog .dlg-head h2{font-size:1.7rem;margin:0;}
.class-dialog .dlg-body{padding:18px 24px 6px;}
.class-dialog dl{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;margin:0 0 14px;}
.class-dialog dt{font-weight:700;}
.class-dialog dd{margin:0;}
.class-dialog .desc{color:var(--muted);}
.class-dialog .note{background:var(--light);padding:10px 14px;font-size:0.95rem;margin-bottom:12px;}
.class-dialog .dlg-foot{display:flex;justify-content:flex-end;padding:12px 24px 22px;}

/* ==========================================================================
   Wave 2 additions. Same tokens, same look: small extensions of the
   components above, plus Our Story (History A, ported into the shell).
   ========================================================================== */

/* links inside disclosures and section intros read as links */

.info-card ul.small, .info-card ul{font-size:0.95rem;}
.info-card ul li{margin-bottom:4px;}
.info-card a.text-link{min-height:44px;}

/* a three-up program grid (Sport and Fitness overview) */
@media (min-width:1000px){ .program-grid.three{grid-template-columns:repeat(3,1fr);} }

/* FAQ: disclosures at reading width */
.faq-list{max-width:820px;}
.faq-list + .schedule-cta{max-width:820px;}

/* gallery of captioned photos */
.gallery{display:grid;grid-template-columns:1fr;gap:16px;}
@media (min-width:560px){ .gallery{grid-template-columns:repeat(2,1fr);} }
@media (min-width:1000px){ .gallery{grid-template-columns:repeat(4,1fr);} }
.gallery figure.photo .frame{aspect-ratio:4/3;}

/* league standings and fixtures (Leagues and Results) */
table.data.standings td:first-child{font-weight:700;color:var(--muted);width:2.6rem;font-variant-numeric:tabular-nums;}
table.data.standings tbody th{font-weight:600;}
table.data.standings td.pts{font-family:var(--serif);font-weight:700;font-size:1.1rem;color:var(--ink);}
table.data.standings tr.lead th, table.data.standings tr.lead td{background:#FBF3E4;}
table.data.standings tr.lead td.pts{color:var(--red-dark);}
ul.fixtures{list-style:none;margin:0 0 12px;padding:0;border-top:1px solid var(--hairline);}
ul.fixtures li{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--hairline);font-weight:600;font-size:0.97rem;}
ul.fixtures li span:last-child{text-align:right;}
ul.fixtures .vs{color:var(--muted);font-weight:400;font-family:var(--serif);font-style:italic;}

/* ---------- Our Story: the History A design, ported into the shell ---------- */
.story-lead .wrap{display:grid;grid-template-columns:1fr;gap:24px;align-items:center;}
.story-lead figure{margin:0;max-width:220px;}
.story-lead .frame{aspect-ratio:964/1200;overflow:hidden;border:1px solid var(--hairline);background:var(--white);}
.story-lead img{width:100%;height:100%;object-fit:cover;}
.story-lead figcaption{font-size:0.85rem;color:var(--muted);margin-top:10px;}
p.story-big{font-family:var(--serif);font-size:clamp(1.3rem,2.6vw,1.7rem);line-height:1.4;color:var(--ink);max-width:62ch;font-weight:500;margin:0;}
p.story-big strong{font-weight:700;color:var(--red);}
@media (min-width:900px){ .story-lead .wrap{grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:48px;} .story-lead figure{max-width:320px;} }
/* Red's two pictures, 1960 and today, side by side in the same frame */
.story-lead-pics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
.story-lead.pair figure{max-width:none;}
@media (min-width:900px){ .story-lead.pair .wrap{grid-template-columns:minmax(0,560px) minmax(0,1fr);} }

.story-decade .grid{display:grid;grid-template-columns:1fr;gap:24px;align-items:center;}
@media (min-width:900px){ .story-decade .grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;} .story-decade.flip .grid > :first-child{order:2;} }
.story-yr{display:block;font-family:var(--serif);font-size:0.95rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--red-dark);font-weight:700;margin-bottom:10px;}
.story-decade h2, .story-mosaic h2{font-size:clamp(1.5rem,2.8vw,2.1rem);}
.story-decade p, .story-mosaic .head p{color:var(--muted);font-size:1.03rem;}
.story-fig{margin:0;}
.story-fig .frame{aspect-ratio:3/2;overflow:hidden;border:1px solid var(--hairline);background:var(--light);}
.story-fig img{width:100%;height:100%;object-fit:cover;}
.story-fig figcaption{font-size:0.85rem;color:var(--muted);margin-top:10px;}
blockquote.story-quote-inline{margin:0;font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(1.3rem,2.6vw,1.9rem);line-height:1.4;color:var(--ink);border-left:3px solid var(--red);padding-left:24px;}
.story-quote-inline cite, .story-quote cite{display:block;margin-top:14px;font-family:var(--sans);font-style:normal;font-size:0.92rem;color:var(--muted);font-weight:600;}
.page section.story-quote{border-top:3px solid var(--red);padding:44px 0;}
.story-quote blockquote{margin:0;font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(1.4rem,3vw,2.1rem);line-height:1.35;max-width:62ch;color:var(--ink);}
.story-milestone{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:44px 40px;background:var(--ink);color:var(--white);min-height:220px;}
.story-milestone .tag{color:#ee9a8a;font-size:0.82rem;letter-spacing:0.12em;text-transform:uppercase;font-weight:700;margin-bottom:10px;}
.story-milestone .big-num{font-family:var(--serif);font-weight:700;font-size:clamp(2.4rem,6vw,4.4rem);line-height:1;color:var(--white);margin:0;}
.story-milestone .big-num.words{font-size:clamp(1.6rem,3.6vw,2.6rem);line-height:1.1;}
.story-milestone .cap{color:var(--muted-dark);font-size:1rem;margin:12px 0 0;max-width:46ch;}
@media (max-width:600px){ .story-milestone{padding:32px 24px;min-height:0;} }
.story-mosaic .head{max-width:70ch;margin-bottom:32px;}
.story-mosaic .grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
.story-mosaic .grid .story-fig .frame{aspect-ratio:1/1;}
.story-mosaic .grid.two .story-fig .frame{aspect-ratio:3/2;}
@media (max-width:599px){ .story-mosaic .grid.two{grid-template-columns:1fr;} }
@media (min-width:900px){ .story-mosaic .grid{grid-template-columns:repeat(4,minmax(0,1fr));} .story-mosaic .grid.two{grid-template-columns:repeat(2,minmax(0,1fr));} }
.story-closing{background:var(--ink);color:var(--white);}
.story-closing .kicker{color:#ee9a8a;}
.story-closing h2{color:var(--white);font-size:clamp(1.8rem,3.5vw,2.6rem);max-width:20ch;}
.story-closing .lede{color:var(--muted-dark);font-size:1.1rem;max-width:56ch;}
.then-now{display:grid;grid-template-columns:1fr;gap:20px;margin-top:36px;align-items:start;}
/* the 1960 portrait and today's 4:3 photo share a height: column widths in the ratio of their aspect ratios */
@media (min-width:700px){ .then-now{grid-template-columns:minmax(0,964fr) minmax(0,1600fr);} }
.then-now figure{margin:0;border:1px solid rgba(255,255,255,0.14);}
.then-now .frame{aspect-ratio:4/3;overflow:hidden;}
/* the 1960 portrait keeps its own 964:1200 frame, so the whole figure and the banner show and it matches today's photo in height */
.then-now figure:first-child .frame{aspect-ratio:964/1200;}
.then-now img{width:100%;height:100%;object-fit:cover;}
/* two landscape or square photos side by side: the columns share the width in the ratio of the shapes, so both frames are one height */
@media (min-width:700px){ .then-now.side-by-side{grid-template-columns:var(--cols);} }
.then-now.side-by-side figure:first-child .frame{aspect-ratio:var(--then-ratio);}
.then-now.side-by-side figure:last-child .frame{aspect-ratio:var(--now-ratio);}
.then-now figcaption{display:flex;justify-content:space-between;align-items:center;gap:12px;background:rgba(255,255,255,0.06);color:var(--muted-dark);padding:10px 14px;font-size:0.85rem;}
.then-now figcaption strong{font-family:var(--serif);color:var(--white);font-size:0.98rem;font-weight:600;}
.story-thanks{margin:36px 0 0;padding-top:28px;border-top:1px solid rgba(255,255,255,0.16);font-family:var(--serif);font-style:italic;font-size:1.3rem;color:var(--white);max-width:56ch;}

/* a sign-in block inside a half-width column stacks its button under the words */
.split .signin-action{grid-template-columns:1fr;gap:18px;}
.split .signin-action .actions{align-items:flex-start;}

/* ==========================================================================
   Wave 3 (after the club's 14 October notes): square tiles, today's hours
   and the club notice at the top of Home, and photo placeholders.
   ========================================================================== */

/* ---------- square tiles: a photo, a label, click to open ---------- */
.tile-grid{--cols:2;--tg:16px;list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--tg);}
/* Every tile grid (Fitness & Sports, Facility) uses the same tile size at a given width, and a short last row is centered. */
.tile-grid > li{min-width:0;flex:0 0 calc((100% - (var(--cols) - 1) * var(--tg)) / var(--cols));}
.tile{position:relative;display:flex;flex-direction:column;width:100%;aspect-ratio:1/1;background:var(--white);border:1px solid var(--hairline);color:var(--ink);text-decoration:none;overflow:hidden;}
.tile-media{position:relative;flex:1 1 0;min-height:0;overflow:hidden;background:linear-gradient(135deg,var(--swatch-a,#2c2622),var(--swatch-b,#1a1a1a));}
.tile-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .35s ease;}
.tile:hover .tile-media img{transform:scale(1.04);}
.tile-media.type-tile{display:flex;align-items:center;justify-content:center;text-align:center;padding:10px;}
.tile-media .type-mark{font-family:var(--serif);font-style:italic;font-weight:600;color:rgba(255,255,255,0.55);font-size:clamp(1.2rem,2.4vw,1.6rem);line-height:1.15;overflow-wrap:anywhere;}
.tile-label{flex:none;display:flex;align-items:center;min-height:62px;padding:8px 14px;border-top:1px solid var(--hairline);font-family:var(--serif);font-weight:600;font-size:1.08rem;line-height:1.15;}
.tile:hover .tile-label, .tile:focus-visible .tile-label{color:var(--red-dark);border-top-color:var(--red);box-shadow:inset 0 3px 0 var(--red);}
.tile:focus-visible{outline-offset:-3px;}
.tile-flag{position:absolute;top:8px;left:8px;z-index:1;max-width:calc(100% - 16px);background:var(--white);color:var(--ink);border:1px solid var(--ink);border-radius:2px;font-size:0.76rem;font-weight:700;line-height:1.2;padding:3px 8px;}
.tile-flag::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red);margin-right:6px;vertical-align:0;}
@media (min-width:640px){ .tile-grid{--cols:4;} .tile-grid.fitness.roomy{--cols:3;} }
@media (min-width:1000px){ .tile-grid{--tg:20px;} }
@media (min-width:1100px){ .tile-grid{--cols:6;} .tile-grid.fitness.roomy{--cols:4;} }
/* Fitness & Sports page only (Peyton, 2 Nov 2026): bigger tiles, 2 across on a phone, 3 on a tablet, 4 on a desktop, with taller photos. Home's tile strip is unchanged. */
.tile-grid.fitness.roomy .tile{aspect-ratio:4/5;}
@media (min-width:640px){ .tile-grid.fitness.roomy .tile-flag{top:10px;left:10px;max-width:calc(100% - 20px);font-size:0.86rem;padding:4px 9px;} .tile-grid.fitness.roomy .tile-label{min-height:72px;padding:10px 16px;font-size:1.2rem;} }
@media (min-width:1100px){ .tile-grid.fitness.roomy .tile-flag{font-size:0.95rem;padding:5px 10px;} .tile-grid.fitness.roomy .tile-label{min-height:80px;font-size:1.3rem;} }
.tile-more{margin-top:28px;display:flex;flex-wrap:wrap;gap:14px;align-items:center;}
.tile-more p{margin:0;color:var(--muted);}

/* ---------- Home: today's hours and the club notice, just under the header ---------- */
.today-strip{background:var(--white);border-bottom:1px solid var(--hairline);}
.today-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 20px;min-height:48px;}
.today-hours{margin:0;padding:8px 0;font-size:1.02rem;line-height:1.35;}
.today-hours .th-lead{font-family:var(--serif);font-weight:600;margin-right:6px;}
.today-hours .th-time{font-variant-numeric:tabular-nums;}
.today-changes{margin-top:0;margin-bottom:0;padding-bottom:8px;font-size:0.95rem;line-height:1.35;}
.today-row .text-link{font-size:0.95rem;}
.notice-bar{background:#FCE8E5;border-top:1px solid #F0C4BE;border-bottom:3px solid var(--red);}
.notice-bar[hidden]{display:none;}
.notice-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;padding-top:10px;padding-bottom:10px;}
.notice-text{flex:1 1 280px;display:flex;align-items:center;gap:12px;min-width:0;}
.notice-text svg{display:block;width:26px;height:26px;flex:none;color:var(--red);border-radius:50%;animation:notice-pulse 2.2s ease-out infinite;}
@keyframes notice-pulse{0%{box-shadow:0 0 0 0 rgba(200,16,46,.5);}70%{box-shadow:0 0 0 9px rgba(200,16,46,0);}100%{box-shadow:0 0 0 0 rgba(200,16,46,0);}}
@media (prefers-reduced-motion: reduce){.notice-text svg{animation:none;}}
.notice-text p{margin:0;font-size:1.02rem;line-height:1.4;}
.notice-text strong{color:var(--red-dark);}
.notice-close{font:inherit;font-weight:700;font-size:0.92rem;color:var(--ink);background:var(--white);border:2px solid var(--ink);border-radius:2px;min-height:44px;padding:6px 16px;cursor:pointer;}
.notice-close:hover, .notice-close:focus-visible{background:var(--ink);color:var(--white);}
.notice-close[hidden]{display:none;}
.notice-bar.is-info{background:var(--light);border-top:1px solid var(--hairline);border-bottom:3px solid var(--ink);}
.notice-bar.is-info .notice-text svg{color:var(--ink);animation:none;}
.notice-bar.is-info .notice-text strong{color:var(--ink);}
/* ---------- a photo we do not have yet: a plain, honest placeholder ---------- */
figure.photo.placeholder .frame{display:flex;align-items:center;justify-content:center;text-align:center;padding:16px;background:linear-gradient(135deg,#2c2622,#1a1a1a);}
figure.photo.placeholder .type-mark{font-family:var(--serif);font-style:italic;font-weight:600;color:rgba(255,255,255,0.6);font-size:clamp(1.3rem,3vw,1.9rem);line-height:1.2;}

/* ---------- News: where the club's latest Facebook and Instagram posts will show ---------- */
.social-grid{display:grid;grid-template-columns:1fr;gap:16px;}
@media (min-width:640px){ .social-grid{grid-template-columns:repeat(3,minmax(0,1fr));} }
.social-card{background:var(--white);border:1px solid var(--hairline);display:flex;flex-direction:column;}
.social-card .sc-media{aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;text-align:center;padding:14px;background:linear-gradient(135deg,#2c2622,#1a1a1a);}
.social-card .sc-media span{font-family:var(--serif);font-style:italic;font-weight:600;color:rgba(255,255,255,0.6);font-size:1.3rem;line-height:1.2;}
.social-card .sc-body{padding:14px 16px 16px;}
.social-card .sc-source{display:block;font-size:0.8rem;letter-spacing:0.08em;text-transform:uppercase;font-weight:700;color:var(--muted);margin-bottom:6px;}
.social-card p{margin:0 0 6px;color:var(--muted);font-size:0.98rem;}
.social-card .sc-bar{display:block;height:10px;background:var(--light);margin-bottom:8px;}
.social-card .sc-bar.short{width:60%;}
/* ---------- softer lines (adopted 2026-10-21, matches the mock's ASSET_VERSION 15) ----------
   Same square look, lighter edges: 1px borders in a dark warm grey (5.8:1 on white, above the 3:1 a control
   edge needs), 4px corners, semibold labels. These override the heavier rules above. */
.btn{border-width:1px;border-radius:4px;font-weight:600;}
.btn-ghost{border-color:#6B655E;}
.btn-ghost:hover, .btn-ghost:focus-visible{background:var(--light);color:var(--ink);border-color:var(--ink);}
.nav-toggle, .notice-close, .week-nav .icon-btn{border-width:1px;border-color:#6B655E;border-radius:4px;font-weight:600;}
.field input, .field select, .field textarea{border-width:1px;border-radius:4px;}
#mobile-menu .m-phone, .tile-flag{border-radius:4px;}
.plan.featured{border-width:1px;border-color:var(--ink);}
table.week thead th{border-bottom-width:1px;}
.nav-toggle .bars span{height:1.5px;}

/* ---------- phone header spacing (390px and under) ----------
   The 600px rule `.wrap{padding:0 18px}` also zeroes the vertical padding of the header row, the hours row and
   the notice row, so the 44px buttons touched the header edges. Put that room back, shrink the logo and the button
   insides, and widen the gaps. Every tap target stays at least 44px tall and wide. */
@media (max-width:400px){
  .nav-row{padding-top:10px;padding-bottom:10px;gap:12px;}
  .brand img{height:30px;}
  .nav-cta{gap:12px;}
  .nav-cta .btn{padding:8px 12px;}
  .nav-toggle{padding:0 11px;gap:7px;}
  .today-hours{padding:12px 0;}
  .today-row{gap:2px 16px;}
  .notice-row{padding-top:14px;padding-bottom:14px;gap:10px 16px;}
}

.photo-stack{display:grid;gap:16px;}
/* synced to mock v34 (reds_demos_src/REDS-P3/site/assets/site.css, v34; the stylesheet itself did not change after v28) */

/* ---------- page-template helpers (REDS-161) ----------
   The mock sets these as inline style="..." on its page markup. The platform allows no inline style, so each one is a class here. Not in the mock's
   stylesheet: this block is the one place site.css differs from it, besides the lines marked above. Names are u-<property>-<value>. */
.u-mt-6{margin-top:6px !important;}
.u-mt-12{margin-top:12px !important;}
.u-mt-14{margin-top:14px !important;}
.u-mt-16{margin-top:16px !important;}
.u-mt-18{margin-top:18px !important;}
.u-mt-20{margin-top:20px !important;}
.u-mt-24{margin-top:24px !important;}
.u-mt-28{margin-top:28px !important;}
.u-mt-32{margin-top:32px !important;}
.u-mb-20{margin-bottom:20px !important;}
.u-mb-22{margin-bottom:22px !important;}
.u-ml-18{margin-left:18px !important;}
.u-list-tight{padding-left:1.1em;margin:0;}
.u-maxw-460{max-width:460px;}
.u-align-center{align-items:center;}
.u-self-center{align-self:center;}
.u-bg-white{background:var(--white);}

.u-people-wide{list-style:none;margin:0;padding:0;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));}
.u-staff-card{display:grid;grid-template-columns:72px 1fr;gap:14px;align-items:center;}
.u-staff-card img{width:72px;height:72px;object-fit:cover;}
.u-staff-card h3{margin-bottom:2px;font-size:1.1rem;}
.plan .tag.muted{background:var(--muted);}
.u-block{display:block !important;}
.u-m-0{margin:0 !important;}
.u-mb-0{margin-bottom:0 !important;}
.u-mb-6{margin-bottom:6px !important;}
.u-maxw-52ch{max-width:52ch;}
.u-cta-row{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;}
.u-fig-hof{max-width:380px;margin:28px 0 0;}
.u-ar-900-1122{aspect-ratio:900/1122 !important;}
/* March 2025: the Hall of Fame card and the memorial photo side by side at one height; stacked on a phone. */
.story-quote-figs{display:flex;flex-wrap:wrap;gap:28px;align-items:flex-start;margin:28px 0 0;}
.story-quote-figs .story-fig{flex:0 0 auto;max-width:100%;}
.story-quote-figs .story-fig .frame{aspect-ratio:auto;height:480px;}
.story-quote-figs .story-fig img{width:auto;height:100%;max-width:100%;}
.story-quote-figs .story-fig figcaption{width:0;min-width:100%;}
/* March 2025: the kicker and the italic paragraph are centered over the pictures, so the words and the photos share one centered column (Peyton, 2026-11-11) */
.story-quote-centered .wrap{text-align:center;}
.story-quote-centered blockquote{margin-left:auto;margin-right:auto;}
.story-quote-centered blockquote > p.u-m-0{margin-left:auto !important;margin-right:auto !important;}
.story-quote-figs{text-align:left;}
@media (max-width:599px){ .story-quote-figs{flex-direction:column;align-items:stretch;} .story-quote-figs .story-fig{max-width:380px;} .story-quote-figs .story-fig .frame{height:auto;} .story-quote-figs .story-fig img{width:100%;height:auto;} }
.u-mt-10{margin-top:10px !important;}
.u-mt-34{margin-top:34px !important;}
.u-mb-28{margin-bottom:28px !important;}
.u-maxw-46ch{max-width:46ch;}
.u-h-card{font-size:1.25rem;margin-bottom:8px;}
.u-staff-96{display:grid;grid-template-columns:96px 1fr;gap:16px;}
.u-staff-96 img{width:96px;height:96px;object-fit:cover;object-position:50% 25%;}
.u-align-start{align-items:start;}
.u-maxw-520{max-width:520px;}
.u-maxw-56ch{max-width:56ch;}
.u-mb-4{margin-bottom:4px !important;}

.u-mb-36{margin-bottom:36px !important;}
.u-mt-36{margin-top:36px !important;}
ol.steps.u-steps-auto{grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));}

/* ---------- Bill Pay & Member Portal button, and the signed-in account menu (v35) ----------
   Signed out: one red button. Signed in: avatar + "Hi, <first name>" opens a small menu; on phones the same
   account block sits at the top of the main menu as full-width buttons. */
.nav-cta .nm-short{display:none;}
.acct{position:relative;}
.acct[hidden], .m-account[hidden], [data-acct-out][hidden]{display:none !important;}
.acct-btn{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:4px 12px 4px 6px;border:1px solid #6B655E;border-radius:4px;background:var(--white);font:600 0.9rem var(--sans);color:var(--ink);cursor:pointer;}
.acct-btn:hover{border-color:var(--ink);}
.acct-btn svg{transition:transform .15s ease;}
.acct-btn[aria-expanded="true"] svg{transform:rotate(180deg);}
.av{width:32px;height:32px;border-radius:50%;background:var(--ink);color:#fff;display:inline-flex;align-items:center;justify-content:center;font:600 13px var(--serif);flex:none;}
.acct-menu{position:absolute;right:0;top:calc(100% + 6px);width:270px;background:var(--white);border:1px solid var(--hairline);box-shadow:0 10px 30px rgba(0,0,0,.15);z-index:700;}
.acct-menu[hidden]{display:none;}
.acct-menu .who{padding:14px 16px;border-bottom:1px solid var(--hairline);font-size:.85rem;color:var(--muted);}
.acct-menu .who b{display:block;color:var(--ink);font-size:1rem;}
.acct-menu a{display:flex;justify-content:space-between;align-items:center;width:100%;box-sizing:border-box;min-height:48px;padding:0 16px;text-decoration:none;font:600 1rem var(--sans);color:var(--ink);background:none;border:0;border-bottom:1px solid var(--hairline);cursor:pointer;text-align:left;}
.acct-menu a:hover{background:var(--light);}
.acct-menu a.acct-out{border-bottom:0;color:var(--muted);}
.acct-menu a small{color:var(--red-dark);font-weight:700;font-size:.85rem;}
.acct-menu a:focus-visible{outline-offset:-3px;}
#mobile-menu .m-actions{grid-template-columns:1fr;}
#mobile-menu .m-who{display:flex;align-items:center;gap:12px;padding:16px 0 4px;}
#mobile-menu .m-who b{display:block;}
#mobile-menu .m-who small{color:var(--muted);font-size:.85rem;}
#mobile-menu .m-acts{display:grid;gap:10px;padding:8px 0;}
#mobile-menu .m-acts .btn{width:100%;box-sizing:border-box;}
@media (min-width:1100px){ .nav-cta .btn-portal{display:inline-flex;} }
@media (max-width:559px){
  .nav-cta .nm-long{display:none;}
  .nav-cta .nm-short{display:inline;}
  .acct-btn .nm, .acct-btn svg{display:none;}
  .acct-btn{padding:4px;border-radius:50%;}
}

/* The bar on a draft preview in the staff back office (Pages/Staff/Content/PagePreview): never on the public site. */
.draft-bar { position: sticky; top: 0; z-index: 50; display: flex; flex-wrap: wrap; gap: .4rem 1rem; align-items: center; padding: .6rem 1rem; background: #7a1a1a; color: #fff; font: 600 .95rem/1.3 "Source Sans 3", sans-serif; }
.draft-bar a { color: #fff; text-decoration: underline; }
.draft-bar a:first-of-type { margin-left: auto; }
.draft-bar a, .draft-width button { white-space: nowrap; }
.draft-width { display: inline-flex; gap: .25rem; }
.draft-width button { font: inherit; color: #fff; background: transparent; border: 1px solid #fff; border-radius: 6px; padding: .15rem .6rem; cursor: pointer; }
.draft-width button[aria-pressed="true"] { background: #fff; color: #7a1a1a; }
/* The draft inside the assistant's preview pane (PagePreview with embed): a summary of what changed, and the changed words marked on the page. Staff only. */
.draft-bar-embed { position: static; }
.draft-changes { background: #fff7e0; color: #3d2f00; border-bottom: 1px solid #c9a227; padding: .75rem 1rem; font: 500 .95rem/1.4 "Source Sans 3", sans-serif; }
.draft-changes h2 { font: 700 1rem/1.3 "Source Sans 3", sans-serif; margin: 0 0 .35rem; }
.draft-changes ul { margin: 0; padding-left: 1.2rem; }
.hl-chg { outline: 3px solid #b8860b; outline-offset: 3px; background: rgba(255, 214, 10, .22); position: relative; }
.hl-chg::before { content: "Changed"; position: absolute; top: -1.3em; left: 0; font: 700 .72rem/1 "Source Sans 3", sans-serif; background: #8a6508; color: #fff; padding: .2rem .45rem; border-radius: 4px; z-index: 5; }
body.hl-off .hl-chg { outline: 0; background: none; }
body.hl-off .hl-chg::before { display: none; }
body.draft-phone > header, body.draft-phone > main, body.draft-phone > footer { max-width: 390px; margin-inline: auto; box-shadow: 0 0 0 1px #c9c9c9; overflow-x: hidden; }

/* Our Story: the two click-to-play videos. Poster is self-hosted; the player loads only on press. */
.video-grid{display:grid;grid-template-columns:1fr;gap:28px;}
@media (min-width:760px){ .video-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;} }
.video-card{min-width:0;}
.video-link{display:block;position:relative;width:100%;padding:0;margin:0;border:0;background:var(--ink);border-radius:2px;overflow:hidden;cursor:pointer;color:inherit;font:inherit;text-decoration:none;aspect-ratio:16/9;}
.video-frame{display:block;width:100%;height:100%;}
.video-frame img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease;}
.video-link:hover .video-frame img{transform:scale(1.03);}
.video-play{position:absolute;left:50%;top:50%;width:76px;height:76px;margin:-38px 0 0 -38px;border-radius:50%;background:var(--red);box-shadow:0 0 0 4px rgba(255,255,255,0.9),0 6px 18px rgba(0,0,0,0.35);transition:background .2s ease;}
.video-play::after{content:"";position:absolute;left:50%;top:50%;margin:-14px 0 0 -9px;border-style:solid;border-width:14px 0 14px 24px;border-color:transparent transparent transparent var(--white);}
.video-link:hover .video-play{background:var(--red-dark);}
.video-link:focus-visible{outline:3px solid var(--red);outline-offset:3px;}
.video-link:focus-visible .video-play{background:var(--red-dark);}
.video-player{position:relative;width:100%;aspect-ratio:16/9;border-radius:2px;overflow:hidden;background:#000;}
.video-player iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.video-meta{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:14px 0 0;}
.video-meta strong{font-family:var(--serif);font-size:1.2rem;font-weight:600;}
.video-meta span{color:var(--muted);font-size:0.95rem;white-space:nowrap;}
.founder-text .text-link + .text-link{margin-left:28px;}
@media (prefers-reduced-motion: reduce){ .video-frame img{transition:none;} .video-link:hover .video-frame img{transform:none;} }

/* ---------- News: "The Front Page" (club's choice, 2026-10-30) and the news post page ----------
   Front page: a notice strip, one lead story, three supporting stories, the club's Facebook and Instagram in a
   side rail, then headlines by section, a story from the archive, and the full list. A quiet month swaps the live
   stories for the story staff pinned (assets/news.js). Post page: one shape for every post. */
.nf-front [hidden], .nf-quiet-only[hidden]{display:none!important;}
.n-ic{width:16px;height:16px;fill:currentColor;flex:none;}
.n-cat{display:block;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--red-dark);margin-bottom:6px;}
.n-when{display:block;font-size:.8rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-weight:600;margin-bottom:6px;}
.n-media{position:relative;overflow:hidden;background:var(--light);}
.n-media img{width:100%;height:100%;object-fit:cover;display:block;}
.n-media.ph{background:linear-gradient(135deg,#2c2622,#1a1a1a);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;}
.n-media.ph img{width:34%;height:auto;max-width:150px;object-fit:contain;opacity:.92;}
.n-media.ph span{font-family:var(--serif);font-style:italic;font-weight:600;color:rgba(255,255,255,.72);font-size:.95rem;}
.n-card{position:relative;background:var(--white);border:1px solid var(--hairline);}
.n-card h2 a, .n-card h3 a{color:inherit;text-decoration:none;}
.n-card h2 a::after, .n-card h3 a::after, .n-reel::after{content:"";position:absolute;inset:0;}
.n-card h2 a:focus-visible, .n-card h3 a:focus-visible{outline:none;}
.n-card:focus-within{outline:3px solid var(--red);outline-offset:3px;}
.n-card:hover h2 a, .n-card:hover h3 a{text-decoration:underline;text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:4px;}
.n-src{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--ink);}
.n-btnrow{display:flex;flex-wrap:wrap;gap:10px;}
@media (max-width:600px){ .n-btnrow .btn{flex:1 1 100%;} }
.n-reel{position:relative;display:block;aspect-ratio:9/16;overflow:hidden;background:#1a1a1a;color:#fff;text-decoration:none;}
.n-reel img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.n-reel .shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.45),rgba(0,0,0,0) 32%,rgba(0,0,0,.82));}
.n-reel .top{position:absolute;left:8px;right:8px;top:8px;display:flex;justify-content:space-between;align-items:flex-start;gap:6px;z-index:1;}
.n-reel .top .n-src{color:#fff;}
.n-reel .play{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);width:54px;height:54px;border-radius:50%;background:rgba(255,255,255,.94);color:#111;display:grid;place-items:center;z-index:1;}
.n-reel .play .n-ic{width:26px;height:26px;margin-left:3px;}
.n-reel .rcap{position:absolute;left:10px;right:10px;bottom:10px;font-size:.88rem;line-height:1.3;z-index:1;font-weight:600;}
.n-reel:focus-visible{outline:3px solid var(--red);outline-offset:3px;}
.n-reel:hover .play{background:#fff;}

.nf-notice{background:var(--light);border-bottom:1px solid var(--hairline);}
.nf-notice .nf-notice-row{display:flex;flex-wrap:wrap;gap:2px 22px;align-items:center;font-size:.95rem;padding-top:6px;padding-bottom:6px;}
.nf-notice .today-hours{margin:0;}
.nf-notice p{margin:0;}
.nf-notice a{color:var(--red-dark);font-weight:700;min-height:44px;display:inline-flex;align-items:center;}
.page section.nf-front{padding:44px 0 56px;}
.nf-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:40px;align-items:start;}
/* REDS-news-hybrid: the feed is the big left area, the stories the narrower right column (phone: feed first, then stories). With no feed the stories run full width. */
@media (min-width:1000px){ .has-feed .nf-grid{grid-template-columns:minmax(0,1fr) 380px;gap:48px;} }
.has-feed .nf-second{grid-template-columns:minmax(0,1fr);}
.has-feed .nf-lead h3{font-size:clamp(1.5rem,2.4vw,1.9rem);}
.nf-feedcol{border-top:3px solid var(--ink);padding-top:16px;min-width:0;}
.nf-feedcol h2{font-size:1.4rem;margin:0;}
.nf-feedhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-bottom:14px;}
/* REDS-social-switch: a small segmented switch at the top right of the feed card. */
.nf-tabs{display:inline-flex;border:2px solid var(--ink);border-radius:999px;overflow:hidden;background:var(--white);}
.nf-tab{font:inherit;font-weight:600;font-size:.92rem;min-height:36px;padding:0 16px;border:0;background:transparent;color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:7px;}
.nf-tab:hover{background:var(--light);}
.nf-tab[aria-selected=true]{background:var(--ink);color:#fff;}
.nf-tab:focus-visible{outline:3px solid var(--red);outline-offset:-3px;}
@media (max-width:700px){ .nf-tab{min-height:44px;padding:0 20px;} .nf-tabs{margin-left:auto;} }
/* The feed fits its content (no minimum height). On a wide screen script holds it to the stories' height and adds .is-capped, which fades the foot. */
.nf-panel[hidden]{display:none;}
.nf-feed{position:relative;width:100%;max-width:100%;min-width:0;overflow:hidden;}
.nf-feed.is-capped::after{content:"";position:absolute;left:0;right:0;bottom:0;height:72px;background:linear-gradient(to bottom,rgba(255,255,255,0),var(--white,#fff));pointer-events:none;}
.nf-feed>[class^="elfsight-app-"],.nf-feed [class*="eapps-widget"]{width:100%;}
.nf-feed iframe{width:100%;min-height:640px;border:0;}
.nf-more{margin:10px 0 0;}
.nf-more a{display:inline-flex;align-items:center;min-height:44px;font-weight:700;color:var(--red-dark);}
.nf-follow{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:28px;padding:14px 18px;border-top:3px solid var(--ink);background:var(--light);}
.nf-follow strong{font-family:var(--serif);font-size:1.25rem;margin-right:8px;}
.nf-follow .btn{display:inline-flex;align-items:center;gap:8px;}
@media (max-width:600px){ .nf-follow .btn{flex:1 1 100%;justify-content:center;} }
.nf-lead .body{padding:22px 24px 26px;}
.nf-lead h3{font-size:clamp(1.8rem,3.6vw,2.7rem);letter-spacing:-.01em;margin-bottom:12px;text-wrap:balance;}
.nf-lead .deck{font-size:1.15rem;color:var(--muted);max-width:52ch;margin-bottom:8px;}
.nf-lead .go{display:inline-flex;align-items:center;min-height:44px;font-weight:700;color:var(--red-dark);}
.nf-second{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin-top:24px;}
@media (min-width:700px){ .nf-second{grid-template-columns:repeat(3,minmax(0,1fr));} }
.nf-mini .body{padding:14px 16px 16px;}
.nf-mini h3{font-size:1.15rem;margin-bottom:6px;}
.nf-mini p{color:var(--muted);font-size:.95rem;margin:0 0 4px;}
.nf-rail{border-top:3px solid var(--ink);padding-top:16px;}
@media (min-width:1000px){ .nf-rail{border-top:0;border-left:1px solid var(--hairline);padding:0 0 0 32px;} }
.nf-rail h2{font-size:1.4rem;margin-bottom:6px;}
.nf-rail .lede{color:var(--muted);font-size:.95rem;}
.nf-soc{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;padding:14px 0;border-top:1px solid var(--hairline);position:relative;}
.nf-soc .n-media{width:96px;height:96px;}
.nf-soc .cap{font-size:.95rem;margin:4px 0;color:var(--muted);}
.nf-reels{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:8px 0 18px;}
.nf-rail h3.h-small{margin-top:20px;}
.nf-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:36px;}
@media (min-width:800px){ .nf-cols{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;} }
.nf-cols h3{font-size:1.3rem;border-top:3px solid var(--red);padding-top:12px;}
.nf-cols ul{list-style:none;margin:0;padding:0;}
.nf-cols li{border-bottom:1px solid var(--hairline);}
.nf-cols li a{display:block;padding:10px 0;text-decoration:none;font-weight:600;min-height:44px;}
.nf-cols li a:hover, .nf-cols li a:focus-visible{color:var(--red-dark);text-decoration:underline;}
.nf-cols li small{display:block;color:var(--muted);font-weight:400;font-size:.85rem;}
.nf-arch{display:grid;grid-template-columns:minmax(0,1fr);gap:36px;align-items:center;}
@media (min-width:900px){ .nf-arch{grid-template-columns:minmax(0,320px) minmax(0,1fr) minmax(0,300px);gap:48px;align-items:start;} }
.nf-arch figure{margin:0;}
.nf-arch figure.photo .frame{aspect-ratio:964/1200;}
.nf-arch .big{font-family:var(--serif);font-size:clamp(1.6rem,3vw,2.2rem);line-height:1.12;margin:0 0 12px;}
.nf-albums{list-style:none;margin:0;padding:0;display:grid;gap:12px;}
.nf-albums li{display:grid;grid-template-columns:84px minmax(0,1fr);gap:12px;align-items:center;position:relative;}
.nf-albums .n-media{width:84px;height:64px;}
.nf-albums a{font-weight:700;text-decoration:none;color:var(--ink);display:inline-flex;align-items:center;min-height:44px;}
.nf-albums a:hover, .nf-albums a:focus-visible{text-decoration:underline;}
.nf-years{display:grid;grid-template-columns:minmax(0,1fr);gap:8px 40px;}
@media (min-width:800px){ .nf-years{grid-template-columns:1fr 1fr;} }
.nf-years h3{font-size:clamp(1.4rem,2.4vw,1.8rem);margin-bottom:14px;}
.nf-years ol{list-style:none;margin:0 0 12px;padding:0;}
.nf-years li{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:12px;padding:8px 0;border-bottom:1px solid var(--hairline);font-size:.98rem;}
.nf-years li span{color:var(--muted);font-size:.88rem;}
.nf-years a{font-weight:600;min-height:28px;}
@media (max-width:480px){ .nf-years li{grid-template-columns:1fr;gap:0;} }

/* the news post page */
.p-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px;font-weight:600;}
.p-meta span{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border:1px solid var(--ink);background:var(--white);}
.page-head .kicker a{color:var(--red);text-decoration:none;display:inline-flex;align-items:center;min-height:44px;margin-top:-10px;}
.page-head .kicker a:hover, .page-head .kicker a:focus-visible{text-decoration:underline;}
.page section.p-main{padding:44px 0 56px;}
.p-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:40px;}
@media (min-width:1000px){ .p-grid{grid-template-columns:minmax(0,1fr) 340px;gap:64px;align-items:start;} .p-grid.solo{grid-template-columns:minmax(0,1fr);} }
.p-grid figure.photo{margin-bottom:28px;}
.p-grid figure.photo .frame{max-height:480px;} /* a tall photo is cropped, not stretched into a half-empty band */
.p-grid figure.photo img{object-position:50% 30%;}
.p-bare{padding-top:24px !important;padding-bottom:36px !important;}
.p-bare .p-back{margin-top:0;border-top:0;padding-top:0;}
.p-bare .prose + .p-back, .p-bare .prose ~ .p-back{margin-top:18px;border-top:1px solid var(--hairline);padding-top:18px;}
.p-grid .signin-action{margin-top:28px;}
.p-side dl{margin:0;}
.p-side dt{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-top:12px;}
.p-side dd{margin:2px 0 0;font-weight:600;}
.p-back{display:flex;flex-wrap:wrap;gap:6px 22px;margin:28px 0 0;padding-top:18px;border-top:1px solid var(--hairline);}
.rel{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;align-items:start;} /* each card is as tall as its own words, so a card with no opening line is not padded with white */
@media (min-width:700px){ .rel{grid-template-columns:repeat(3,minmax(0,1fr));} }
.rel .body{padding:14px 16px 16px;}
.rel h3{font-size:1.15rem;margin-bottom:6px;}
.rel p{color:var(--muted);font-size:.95rem;margin:0 0 4px;}
.example-tag{display:inline-block;background:var(--ink);color:var(--white);font-size:0.74rem;letter-spacing:0.1em;text-transform:uppercase;font-weight:700;padding:3px 9px;margin-bottom:8px;}

/* the News wall (REDS-news-hybrid, ported from the mock's c.html) */
.nw-bar{/* not sticky: pinned under the sticky header the chips, status row and header took about 200px and covered the first story */background:var(--white);border-bottom:1px solid var(--hairline);}
.nw-bar[hidden]{display:none;}
.nw-ctl{padding-top:12px;padding-bottom:8px;}
.nw-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-bottom:6px;}
.nw-row .lab{font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--muted);min-width:4.2rem;}
.chip{font:inherit;font-weight:600;font-size:.92rem;min-height:44px;padding:0 14px;border:2px solid var(--ink);background:var(--white);color:var(--ink);border-radius:999px;cursor:pointer;}
.chip:hover{background:var(--light);}
.chip[aria-pressed=true]{background:var(--ink);color:#fff;}
.chip:focus-visible{outline:3px solid var(--red);outline-offset:2px;}
.nw-status{font-size:.9rem;color:var(--muted);margin:0 0 4px;min-height:1.4em;}
.nw-status button{font:inherit;background:none;border:0;color:var(--red-dark);font-weight:700;text-decoration:underline;cursor:pointer;min-height:44px;padding:0 6px;}
@media (max-width:700px){ .nw-bar{position:static;} .nw-row{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin;} .nw-row .chip,.nw-row .lab{flex:none;} }
.page section.nw-sec{padding:0 0 56px;}
.nw-sec .wrap>h2{margin-top:36px;}
.nw-wall{column-count:2;column-gap:12px;margin-top:20px;}
@media (min-width:700px){ .nw-wall{column-count:3;column-gap:18px;} }
@media (min-width:1100px){ .nw-wall{column-count:4;column-gap:20px;} }
.nw-tile{break-inside:avoid;margin:0 0 12px;display:block;}
@media (min-width:700px){ .nw-tile{margin-bottom:18px;} }
.nw-tile .body{padding:12px 14px 14px;}
.nw-tile h3{font-size:1.12rem;margin-bottom:6px;}
.nw-tile p{color:var(--muted);font-size:.94rem;margin:0 0 6px;}
.nw-tile.is-off{display:none!important;}
.nw-empty{text-align:center;padding:40px 12px;color:var(--muted);}

/* "Right now" and "Coming up" (REDS-news-hybrid, ported from the mock's b.html) */
.page section.nb-sec{padding:44px 0 56px;}
.nb-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:32px;}
@media (min-width:1000px){ .nb-cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;} }
.nb-col>h3{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:1.5rem;padding:10px 14px;margin:0 0 14px;color:#fff;background:var(--red-dark);}
.nb-col.soon>h3{background:var(--ink);}
.nb-col>h3 small{font-family:var(--sans);font-size:.8rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;opacity:.95;}
.nb-col>.sub{color:var(--muted);font-size:.95rem;margin:0 0 12px;}
.nb-list{list-style:none;margin:0;padding:0;display:grid;gap:12px;}
.nb-item{display:grid;grid-template-columns:76px minmax(0,1fr);gap:14px;padding:14px;align-items:start;}
.nb-item h4{font-size:1.12rem;margin-bottom:4px;}
.nb-item h4 a{color:inherit;text-decoration:none;}
.nb-item h4 a::after{content:"";position:absolute;inset:0;}
.nb-item p{margin:0 0 4px;color:var(--muted);font-size:.96rem;}
.nb-item .over{position:relative;z-index:2;font-weight:700;color:var(--red-dark);text-decoration:none;min-height:44px;display:inline-flex;align-items:center;}
.nb-item .over:hover,.nb-item .over:focus-visible{text-decoration:underline;}
.dblock{border:2px solid var(--ink);text-align:center;padding:6px 2px;line-height:1.05;background:var(--white);}
.dblock .m{display:block;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--red-dark);}
.dblock .d{display:block;font-family:var(--serif);font-size:1.7rem;font-weight:700;}
.dblock.thru .m{font-size:.64rem;}
.dblock.thru .d{font-size:1.2rem;padding:2px 0;}
.dblock.new .d{font-size:1.15rem;padding:6px 0;}
.ladder{list-style:none;margin:0;padding:0;border-left:3px solid var(--ink);margin-left:8px;}
.ladder li{position:relative;padding:0 0 18px 20px;}
.ladder li::before{content:"";position:absolute;left:-9px;top:5px;width:15px;height:15px;border-radius:50%;background:var(--white);border:3px solid var(--ink);}
.ladder li.ev::before{background:var(--red);border-color:var(--red);}
.ladder b{display:block;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;}
.ladder a{font-weight:700;text-decoration:none;display:inline-flex;align-items:center;min-height:44px;color:var(--ink);}
.ladder a:hover,.ladder a:focus-visible{text-decoration:underline;text-decoration-color:var(--red);}
.ladder .kind{display:block;color:var(--muted);font-size:.9rem;margin-top:-8px;}
.nb-empty{border:2px dashed var(--hairline);padding:18px;color:var(--muted);background:var(--white);}
.nb-empty strong{display:block;font-family:var(--serif);color:var(--ink);font-size:1.15rem;margin-bottom:4px;}
.nb-empty a{color:var(--red-dark);font-weight:700;}

/* ==========================================================================
   REDS-site-polish-3: layout round (staging review 2026-11-06). General rules, no page patches.
   One rule for an incomplete last row in every grid: left-aligned at the same tile width.
   ========================================================================== */
/* orphans: no lone last word in body text, summaries or ledes */
main p, main li, .lede, .standfirst, .section-head p, .n-card p, figcaption{text-wrap:pretty;}
/* a phone number never breaks across lines */
a[href^="tel:"], .tel{white-space:nowrap;overflow-wrap:normal !important;}
/* the news post photo: the frame is the photo's own height (never a half-empty frame beside a narrow picture) */
.p-grid figure.photo{width:fit-content;max-width:100%;}
.p-grid figure.photo .frame{aspect-ratio:auto;max-height:none;height:auto;}
.p-grid figure.photo .frame img{width:auto;height:auto;max-width:100%;max-height:640px;display:block;}
/* a caption's title and subtitle sit on separate lines */
figure.photo figcaption strong, .plate figcaption strong{display:block;margin:0 0 2px;}
/* phone: a stacked table's caption and small-caps labels use the full width, never a narrow column */
@media (max-width:599px){
  table.data.stack caption{display:block;width:100%;}
  #mobile-menu .m-secondary{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;}
  .breadcrumb li:not(:first-child)::before{margin:0 7px;}
}
/* the menu has one portal button: the header one is always on screen */
#mobile-menu .m-actions[data-acct-out]{display:none;}
/* breadcrumb: a "/" stays with the item that follows it, never left dangling at a line end */
.breadcrumb li{white-space:normal;}
.breadcrumb li:not(:first-child)::before{content:"/";margin:0 10px;color:var(--muted);}
.breadcrumb li:not(:last-child)::after{content:none;margin:0;}
.breadcrumb li{display:inline-flex;}

/* related news cards: one height per row, bottoms level; titles wrap naturally */
.rel{align-items:stretch;}
.rel .n-card{display:flex;flex-direction:column;}
.rel .n-card .body{flex:1;}
.rel h3, .nf-mini h3, .nw-tile h3{text-wrap:pretty;}
/* scores stay on one line; PTS matches the rest of the row */
table.data td.num, table.data th.num{white-space:nowrap;}
table.data.standings td.pts{font-family:var(--sans);font-size:1rem;}
@media (max-width:599px){
  ul.fixtures li{grid-template-columns:minmax(0,1fr);gap:2px;}
  ul.fixtures li span:last-child{text-align:left;}
  ul.fixtures .vs{font-size:.9rem;}
  figure.photo.tall:not(#court-photo) .frame{aspect-ratio:4/3;}
}
/* whatever follows a table gets standard spacing (a card, a note, a link, a label) */
.table-scroll + *, table.data + *{margin-top:24px;}
.table-scroll + .prose, table.data + .prose, .table-scroll + p, table.data + p{margin-top:18px;}
/* tables of fees and hours with no stretch: a hairline card after a row group never touches it */
table.data + .info-card, .table-scroll + .info-card, .table-scroll + .card-grid, .table-scroll + .people{margin-top:28px;}
:is(.table-scroll, table.data) + ul.people{margin-top:28px !important;}
ul.people + .prose, .people + .prose{margin-top:22px;}
:is(.split, .card-grid, .people, .table-scroll, table.data, .photo-pair) + :is(.signin-action, .info-card, .cta-panel, figure, .card-grid, .prose, .text-link, p.link-row){margin-top:32px;}

/* two cards side by side are one height */
.split:has(> .info-card + .info-card){align-items:stretch;}
/* every tile grid: an incomplete last row is left-aligned at the same tile width; titles start at the same height */
.tile-grid{justify-content:flex-start;}
.tile-label{align-items:flex-start;padding-top:14px;}
.tile-more{justify-content:flex-start;}

/* half-empty desktop sections (REDS-site-polish-3) */
@media (min-width:900px){
  /* a lone card beside a long column stacks full width under it instead of floating in blank space */
  .split:has(> div > .info-card:only-child){grid-template-columns:minmax(0,1fr);}
  /* words beside a pair of photos: the words sit level with the middle of the photos */
  .split:has(> .photo-pair){align-items:center;}
  /* two pairs of photos in one split: all four sit in one row under the words, no hole beside them */
  .split:has(> .photo-pair ~ .photo-pair){grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;align-items:start;}
  .split:has(> .photo-pair ~ .photo-pair) > :first-child{grid-column:1 / -1;}
  .split:has(> .photo-pair ~ .photo-pair) > .photo-pair{display:contents;}
}
/* a photo's stray edge pixels (a green bar on one portrait) are trimmed: faces are shown a touch tighter */
.person .face{overflow:hidden;}
.person .face img{transform:scale(1.08);transform-origin:25% 100%;}
/* one table in the left column and a stack of tables in the right: the tables sit side by side instead */
@media (min-width:1100px){
  .split:has(> div:last-child > div > table.data):has(> div:last-child > div + div + p):has(> div:first-child > div > table.data){grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;align-items:start;}
  .split:has(> div:last-child > div > table.data):has(> div:last-child > div + div + p):has(> div:first-child > div > table.data) > div:last-child{display:contents;}
  .split:has(> div:last-child > div > table.data):has(> div:last-child > div + div + p):has(> div:first-child > div > table.data) > div:last-child > p{grid-column:1 / -1;}
}

/* grids that would end with one card alone: reflow or let the last card take the row */
@media (min-width:1000px){ .gallery:has(> :nth-child(9):last-child){grid-template-columns:repeat(3,1fr);} }
@media (min-width:560px) and (max-width:999px){ .gallery > :last-child:nth-child(odd){grid-column:1 / -1;width:calc(50% - 8px);justify-self:center;} }
@media (min-width:640px){ .card-grid:not(.three):not(.four) > :last-child:nth-child(odd){grid-column:1 / -1;} }
@media (min-width:1000px){ .card-grid.three > :last-child:nth-child(3n+1){grid-column:1 / -1;} }
@media (min-width:700px){
  .people:not(.compact):has(> :nth-child(4):last-child){grid-template-columns:repeat(2,minmax(0,1fr));}
  .people:not(.compact) > .person:last-child:nth-child(odd):not(:first-child){grid-column:1 / -1;}
}
.gallery + .gallery{margin-top:16px;}
/* a split with only one column of content uses the full width */
@media (min-width:900px){ .split:has(> :only-child){grid-template-columns:minmax(0,1fr);} }
/* the first block of a section never adds its own top margin on top of the section padding */
.visually-hidden:first-child + :is(.schedule-cta, .cta-panel, .info-card), .wrap > .schedule-cta:first-child{margin-top:0;}
/* a text column beside an accordion stays in view while the accordion opens and closes */
@media (min-width:900px){ .split:has(> div:last-child > details) > div:first-child{align-self:start;position:sticky;top:104px;} }
/* opened answers end at the same distance from the divider, whatever the last element is */
details.disclose .disclose-body > :last-child, details.disclose .disclose-body li:last-child{margin-bottom:0;}
details.disclose .disclose-body{padding-bottom:22px;}
/* two accordion columns: once an answer is open they stack, so no column is left with a blank band beside the taller one */
@media (min-width:900px){ .split:has(> div:first-child > details):has(> div:last-child > details):has(details[open]){grid-template-columns:minmax(0,1fr);row-gap:0;} }
/* two sections with the same background read as one: the second adds no top padding of its own */
section.bg-light + section.bg-light{padding-top:0;}
@media (max-width:899px){ .split{gap:28px;} }
/* one person in a section: a wide card, not one grid column */
.people:has(> .person:only-child){grid-template-columns:minmax(0,1fr);}
/* two tables side by side: one with a visible heading and one without. The second shows its heading too, so the rows line up and read as a pair */
.split:has(> div > .table-scroll > table.data > caption:not(.visually-hidden), > div > table.data > caption:not(.visually-hidden)) table.data > caption.visually-hidden{position:static;width:auto;height:auto;clip:auto;overflow:visible;white-space:normal;}

/* ==========================================================================
   REDS-site-polish-4: layout round 4
   ========================================================================== */
/* a hyphenated word (wrapped by site.js) never breaks at its hyphen */
.nwh{white-space:nowrap;}
/* Root cause of the early wraps and tall line gaps: .text-link is inline-flex with a 44px minimum height. Inside a sentence that makes it one unbreakable box that jumps to the next line whole and stretches its line. A link inside running text is plain inline text again; only a link standing on its own keeps the tap-size box. */
:is(p, li, dd, td, figcaption):not(.link-row) > a.text-link{display:inline;min-height:0;}
/* The Pontus Lavefalk photo has a stray green bar at its top-right edge. The trim belongs to the photo, not to one card type, so it applies wherever the photo is shown. */
:has(> img[src$="pontus-lavefalk.jpg"]){overflow:hidden;}
img[src$="pontus-lavefalk.jpg"]{transform:scale(1.08);transform-origin:25% 100%;}
/* phone: a bio card's photo sits above its words, so the words get the full width */
@media (max-width:599px){ .u-staff-96{grid-template-columns:minmax(0,1fr);gap:12px;} }
/* phone: a panoramic band photo is never a thin strip; it gets a real picture shape, cropped to fit */
@media (max-width:599px){
  figure.photo.band .frame, .bout-media.strip{aspect-ratio:16/10;}
  figure.photo.band .frame img, .bout-media.strip img{width:100%;height:100%;object-fit:cover;}
}

/* ----- News (REDS-site-polish-4) ----- */
/* the wall: a grid, one height per row (bottoms level), one column on a phone */
.nw-wall{display:grid;column-count:auto;grid-template-columns:minmax(0,1fr);gap:18px;align-items:stretch;}
@media (min-width:700px){ .nw-wall{grid-template-columns:repeat(3,minmax(0,1fr));} }
@media (min-width:1100px){ .nw-wall{grid-template-columns:repeat(4,minmax(0,1fr));} }
.nw-tile{margin:0;display:flex;flex-direction:column;}
.nw-tile .body{flex:1;}
/* a photo cropped to a frame keeps the Mr. America lettering along its bottom edge */
.n-media img[src*="MR-AMERICA"]{object-position:50% 100%;}
/* top stories beside the feed: the three small stories are short horizontal rows, so the story column is not far taller than the feed */
@media (min-width:1000px){
  .has-feed .nf-second .n-card{display:grid;grid-template-columns:150px minmax(0,1fr);align-items:stretch;}
  .has-feed .nf-second .n-card .n-media{height:100%;aspect-ratio:auto !important;min-height:100%;}
  .has-feed .nf-second .n-card .body{padding:12px 16px;}
  .has-feed .nf-second{gap:14px;}
}
/* a news post's photo sits in the middle of the column, never against the left with blank beside it */
.p-grid figure.photo{margin-inline:auto;}
/* Home "What's happening": two cards share the row, one card is a readable width, never an empty third beside them */
@media (min-width:900px){
  .news-list:has(> :last-child:nth-child(2)){grid-template-columns:repeat(2,minmax(0,1fr));}
  .news-list:has(> :only-child){grid-template-columns:minmax(0,640px);}
}

/* ----- Facility and spacing (REDS-site-polish-4) ----- */
/* a row that mixes photo cards and short text cards: each card is as tall as its own content, no empty fill under the short ones */
.card-grid:has(> .info-card.with-photo) > .info-card:not(.with-photo){align-self:start;}
/* the line under a tile grid and any block under a card/table: standard spacing, beating the u-mt-6 utility */
.tile-grid + p, .tile-grid + .small{margin-top:24px !important;}
/* an inline link ending a card keeps the card's normal line spacing */
.info-card p a.text-link, .info-card li a.text-link{min-height:0;}
/* a block of words after a list or definition list, and a lone link after a panel, are never flush against what is above */
:is(ul, ol, dl) + p{margin-top:14px;}
* + .prose:has(> a.text-link:only-child){margin-top:28px;}
/* a text block under a list or table keeps a gap even where a one-off utility asked for less */
:is(ul, ol, dl, table, .table-scroll) + p[class*="u-mt-"]{margin-top:16px !important;}
/* a split whose second column is one short line: it goes under the first instead of floating beside a table */
@media (min-width:900px){ .split:has(> div:last-child > p:only-child):not(:has(> div:last-child > p:only-child > a)){grid-template-columns:minmax(0,1fr);gap:0;row-gap:16px;} }
/* card titles fill the line and wrap naturally; balancing forced a break in the middle of "Yoga and / Pilates equipment" */
.info-card h3, .card-grid h3{text-wrap:pretty;}
/* three cards in a narrow column stack in one column (no lone full-width card on a second row); two rows of two stay two across */
.split .card-grid:has(> :nth-child(3):last-child){grid-template-columns:minmax(0,1fr);}
/* a long table beside a short card-and-accordion column: the short column sits in the middle of the height, not hanging from the top over a blank */
@media (min-width:900px){ .split:has(> div:first-child table.data):has(> div:last-child > details):not(:has(> div:first-child details)) > div:last-child{align-self:center;} }
/* a grid of six or more people ends in a left-aligned short row at the same card width, never one stretched card */
@media (min-width:700px){ .people:not(.compact):has(> :nth-child(6)) > .person:last-child:nth-child(odd){grid-column:auto;} }
/* Our Story: one measure for every body paragraph (the 2009-2016 paragraph and the memorial note were full width); the memorial portraits sit in the middle */
.head > p{max-width:36rem;}
main blockquote > p.u-m-0{max-width:36rem;}
main p.story-big{max-width:40rem;}
.story-quote-figs{justify-content:center;}
/* jump chips on a phone: a tidy grid; an odd chip out takes the whole last row */
@media (max-width:699px){
  .team-jump{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
  .team-jump a{width:100%;justify-content:center;text-align:center;}
  .team-jump li:last-child:nth-child(odd){grid-column:1 / -1;}
}
/* phone menu: the secondary links are one list, so no link is left alone in a last row */
@media (max-width:599px){ #mobile-menu .m-secondary{grid-template-columns:minmax(0,1fr);} }
@media (min-width:900px){ .split:has(> div:last-child > .prose:only-child > p:only-child){grid-template-columns:minmax(0,1fr);gap:0;row-gap:16px;} }
