/*
 * City page v2 (template-parts/city-v2.php). Every rule is scoped under .ttgp-city.
 * Source: landing-pages repo, scripts/build_city_page.py (CSS, chip_rules). Design: wordpress/city-pages/README.md.
 */
.ttgp-city{
  /* Brand tokens: ~/brand/visual/tokens.json (TeeTimeGolfPass/brand). The block is pasted into WordPress,
     so it carries its own copy of the values; Maven's check compares them. No hex below this block. */
  --ttgp-navy:#023047; --ttgp-orange:#FA8500; --ttgp-teal:#039CBB; --ttgp-green:#3AAF56;
  --ttgp-light-blue:#D9F2FF; --ttgp-white:#FFFFFF; --ttgp-off-white:#F9F8F8; --ttgp-light-grey:#E4E3E3;
  --ttgp-grey:#D1D1D1; --ttgp-red:#D71414; --fg-2:#35596C; --cta-bg-hover:#E07700; --cta-bg-press:#C86B00;
  --navy-a90:rgba(2,48,71,.9); --navy-a60:rgba(2,48,71,.6); --navy-a20:rgba(2,48,71,.2); --navy-a12:rgba(2,48,71,.12);
  --shadow-card:0 2px 10px rgba(2,48,71,.12); --shadow-lg:0 8px 24px rgba(2,48,71,.16);
  --font-display:"League Spartan",system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  --font-ui:"Poppins",system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  --tap:48px; --maxw:1200px; --section-y:56px;
  display:block; font-family:var(--font-display); font-size:18px; line-height:1.5; color:var(--ttgp-navy);
  background:var(--ttgp-white); text-align:left; -webkit-font-smoothing:antialiased; overflow-x:clip;
}
@media (min-width:768px){ .ttgp-city{ --section-y:72px; } }
.ttgp-city *,.ttgp-city *::before,.ttgp-city *::after{ box-sizing:border-box; }
/* Base element rules: only properties no component class sets (scoped-css doc: these are (0,1,1)). */
.ttgp-city p{ margin:0; line-height:1.5; }
.ttgp-city ul,.ttgp-city ol{ margin:0; padding:0; list-style:none; }
.ttgp-city svg{ display:inline-block; fill:currentColor; flex:none; }
.ttgp-city .ttgp-city__wrap{ max-width:var(--maxw); margin:0 auto; padding:0 16px; }
@media (min-width:768px){ .ttgp-city .ttgp-city__wrap{ padding:0 24px; } }
.ttgp-city .ttgp-city__section{ padding:var(--section-y) 0; }
.ttgp-city .ttgp-city__section--fill{ background:var(--ttgp-light-blue); }
.ttgp-city .ttgp-city__section--soft{ background:var(--ttgp-off-white); }
/* Headings: every one has its own class at (0,2,0) so the theme's Elementor kit can't restyle it. */
.ttgp-city .ttgp-city__h1{ font-family:var(--font-display); font-size:40px; line-height:1.05; font-weight:900; letter-spacing:-.01em; margin:0 0 16px; color:var(--ttgp-white); }
.ttgp-city .ttgp-city__h2{ font-family:var(--font-display); font-size:30px; line-height:1.1; font-weight:900; letter-spacing:-.01em; margin:0 0 12px; color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__h3{ font-family:var(--font-display); font-size:24px; line-height:1.15; font-weight:800; margin:0; color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__h4{ font-family:var(--font-display); font-size:22px; line-height:1.15; font-weight:700; margin:0; color:var(--ttgp-navy); }
@media (min-width:768px){ .ttgp-city .ttgp-city__h1{ font-size:56px; } .ttgp-city .ttgp-city__h2{ font-size:40px; } .ttgp-city .ttgp-city__h3{ font-size:28px; } }
.ttgp-city .ttgp-city__eyebrow{ font-family:var(--font-display); font-weight:800; font-size:16px; letter-spacing:.14em; text-transform:uppercase; color:var(--ttgp-light-blue); margin:0 0 12px; }
.ttgp-city .ttgp-city__sub{ color:var(--fg-2); margin:0 0 24px; max-width:720px; }
/* Buttons: Poppins (website UI font), 8px radius, 48px tall. Orange is the primary CTA only. */
.ttgp-city .ttgp-city__btn,.ttgp-city a.ttgp-city__btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:var(--tap);
  padding:12px 24px; border-radius:8px; font-family:var(--font-ui); font-weight:600; font-size:18px; line-height:1.2; text-decoration:none; border:2px solid transparent; }
.ttgp-city .ttgp-city__btn--cta,.ttgp-city a.ttgp-city__btn--cta{ background:var(--ttgp-orange); color:var(--ttgp-white); }
.ttgp-city a.ttgp-city__btn--cta:hover{ background:var(--cta-bg-hover); color:var(--ttgp-white); }
.ttgp-city a.ttgp-city__btn--cta:active{ background:var(--cta-bg-press); }
.ttgp-city .ttgp-city__btn--outline,.ttgp-city a.ttgp-city__btn--outline{ background:var(--ttgp-white); color:var(--ttgp-navy); border-color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__textlink,.ttgp-city a.ttgp-city__textlink{ display:inline-flex; align-items:center; gap:8px; min-height:var(--tap);
  font-family:var(--font-ui); font-weight:600; font-size:18px; color:var(--ttgp-navy); text-decoration:underline; text-decoration-color:var(--ttgp-teal); text-decoration-thickness:2px; text-underline-offset:4px; }
/* Teal text on white is 3.2:1, under AA; links read navy with a teal underline, teal stays on icons. */
/* The .com/.ca theme strips outlines with !important, so ours need it too. */
.ttgp-city a:focus-visible,.ttgp-city summary:focus-visible{ outline:3px solid var(--ttgp-teal) !important; outline-offset:3px; }

/* Hero: a real partner course photo, navy wash, white type. */
.ttgp-city .ttgp-city__hero{ position:relative; color:var(--ttgp-white); background:var(--ttgp-navy); overflow:hidden; }
.ttgp-city .ttgp-city__hero-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 60%; max-width:none; }
.ttgp-city .ttgp-city__hero::after{ content:""; position:absolute; inset:0;
  background:linear-gradient(180deg,var(--navy-a60) 0%,var(--navy-a90) 70%,var(--ttgp-navy) 100%); }
@media (min-width:900px){ .ttgp-city .ttgp-city__hero::after{ background:linear-gradient(90deg,var(--ttgp-navy) 0%,var(--navy-a90) 38%,var(--navy-a20) 75%,var(--navy-a12) 100%); } }
.ttgp-city .ttgp-city__hero-in{ position:relative; z-index:1; padding-top:24px; padding-bottom:56px; }
@media (min-width:900px){ .ttgp-city .ttgp-city__hero-in{ padding-top:32px; padding-bottom:96px; min-height:600px; display:flex; flex-direction:column; } }
.ttgp-city .ttgp-city__crumbs{ display:flex; flex-wrap:wrap; align-items:center; gap:0 8px; font-size:16px; margin:0 0 24px; }
.ttgp-city .ttgp-city__crumbs a,.ttgp-city a.ttgp-city__crumb{ display:inline-flex; align-items:center; min-height:var(--tap); min-width:var(--tap); color:var(--ttgp-white); text-decoration:underline; text-underline-offset:3px; }
.ttgp-city .ttgp-city__crumbs span{ color:var(--ttgp-light-blue); }
.ttgp-city .ttgp-city__hero-copy{ max-width:620px; margin-top:auto; }
.ttgp-city .ttgp-city__lede{ font-size:20px; line-height:1.45; margin:0 0 24px; color:var(--ttgp-white); }
@media (min-width:768px){ .ttgp-city .ttgp-city__lede{ font-size:22px; } }
.ttgp-city .ttgp-city__hero-actions{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 24px; }
.ttgp-city .ttgp-city__hero .ttgp-city__textlink,.ttgp-city .ttgp-city__hero a.ttgp-city__textlink{ color:var(--ttgp-white); }
/* Hero proof: rating + guarantee, the course page's trust-badge look (icon disc, bold line, quiet line). Not links. */
.ttgp-city .ttgp-city__proof{ display:flex; flex-wrap:wrap; gap:16px 32px; margin:20px 0 0; }
@media (min-width:768px){ .ttgp-city .ttgp-city__proof{ margin-top:28px; } }
.ttgp-city .ttgp-city__proof-item{ display:flex; align-items:center; gap:12px; min-width:0; }
.ttgp-city .ttgp-city__proof-icon{ display:inline-flex; align-items:center; justify-content:center; flex:none; width:40px; height:40px; border-radius:9999px; background:var(--ttgp-light-blue); color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__proof-text{ font-family:var(--font-ui); font-size:16px; line-height:1.3; color:var(--ttgp-light-blue); }
.ttgp-city .ttgp-city__proof-text strong{ display:block; font-weight:600; color:var(--ttgp-white); }
.ttgp-city .ttgp-city__credit{ position:absolute; z-index:1; right:16px; top:8px; margin:0; font-size:16px; color:var(--ttgp-light-blue); }
@media (max-width:899px){ .ttgp-city .ttgp-city__credit{ position:static; padding-bottom:40px; margin-top:-32px; } }
@media (min-width:900px){ .ttgp-city .ttgp-city__credit{ top:auto; right:24px; bottom:56px; } }

/* Stat strip, pulled up over the hero edge like the state page's stat row. */
.ttgp-city .ttgp-city__stats{ position:relative; z-index:2; display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--ttgp-light-grey);
  border-radius:16px; overflow:hidden; box-shadow:var(--shadow-lg); margin:-24px 0 0; }
@media (min-width:768px){ .ttgp-city .ttgp-city__stats{ grid-template-columns:repeat(4,1fr); margin-top:-40px; } }
.ttgp-city .ttgp-city__stat{ background:var(--ttgp-white); padding:16px 20px; font-size:16px; color:var(--fg-2); }
.ttgp-city .ttgp-city__stat strong{ display:block; font-family:var(--font-display); font-weight:900; font-size:30px; line-height:1.1; color:var(--ttgp-navy); }

/* Where to play: area list + the site's Google course map. */
.ttgp-city .ttgp-city__where{ display:grid; gap:32px; align-items:stretch; }
@media (min-width:900px){ .ttgp-city .ttgp-city__where{ grid-template-columns:400px minmax(0,1fr); gap:48px; } }
.ttgp-city .ttgp-city__areas{ border-top:1px solid var(--ttgp-light-grey); }
.ttgp-city .ttgp-city__area-link,.ttgp-city a.ttgp-city__area-link{ display:grid; grid-template-columns:56px minmax(0,1fr) 20px; gap:16px; align-items:center;
  min-height:var(--tap); padding:12px 4px; border-bottom:1px solid var(--ttgp-light-grey); color:var(--ttgp-navy); text-decoration:none; }
.ttgp-city a.ttgp-city__area-link:hover .ttgp-city__area-name{ text-decoration:underline; text-underline-offset:3px; }
.ttgp-city .ttgp-city__area-count{ display:flex; align-items:center; justify-content:center; width:56px; height:56px; border-radius:999px;
  background:var(--ttgp-light-blue); font-family:var(--font-display); font-weight:900; font-size:24px; }
.ttgp-city .ttgp-city__area-name{ display:block; font-family:var(--font-display); font-weight:800; font-size:22px; line-height:1.2; }
.ttgp-city .ttgp-city__area-towns{ display:block; font-size:16px; color:var(--fg-2); }
.ttgp-city .ttgp-city__area-link svg{ color:var(--ttgp-teal); }
.ttgp-city .ttgp-city__gmap{ position:relative; width:100%; height:380px; border-radius:16px; overflow:hidden; background:var(--ttgp-light-blue); box-shadow:var(--shadow-card); }
/* Desktop: the map runs the full height of the left column, top with the title, bottom with the last area. */
@media (min-width:900px){ .ttgp-city .ttgp-city__gmap{ height:auto; min-height:480px; } }
.ttgp-city .ttgp-city__gmap-fallback{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; height:100%; padding:24px; text-align:center; color:var(--fg-2); font-size:16px; }
.ttgp-city .ttgp-city__gmap-fallback svg{ color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__pin{ display:flex; flex-direction:column; align-items:center; }
.ttgp-city .ttgp-city__pin img{ display:block; width:24px; height:34px; max-width:none; }
.ttgp-city .ttgp-city__pin-label{ display:none; margin:0 0 4px; padding:4px 8px; border-radius:4px; background:var(--ttgp-navy); color:var(--ttgp-white);
  font-family:var(--font-ui); font-size:16px; line-height:1.2; white-space:nowrap; box-shadow:0 2px 4px var(--navy-a20); }
.ttgp-city .ttgp-city__gmap--labels .ttgp-city__pin-label{ display:block; }
.ttgp-city .ttgp-city__iw{ max-width:240px; font-family:var(--font-display); color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__iw-name,.ttgp-city a.ttgp-city__iw-name{ display:block; font-weight:800; font-size:18px; line-height:1.2; color:var(--ttgp-navy); text-decoration:none; margin:0 0 4px; }
.ttgp-city .ttgp-city__iw-meta{ font-size:16px; color:var(--fg-2); margin:0 0 4px; }
.ttgp-city .ttgp-city__iw-link,.ttgp-city a.ttgp-city__iw-link{ display:inline-flex; align-items:center; min-height:var(--tap); font-family:var(--font-ui); font-weight:600; font-size:16px;
  color:var(--ttgp-navy); text-decoration:underline; text-decoration-color:var(--ttgp-teal); text-decoration-thickness:2px; text-underline-offset:4px; }

/* CSS-only deal filters: radios sit before the bar and the groups, so ~ can reach both. */
.ttgp-city .ttgp-city__fi{ position:absolute; opacity:0; width:1px; height:1px; pointer-events:none; }
.ttgp-city .ttgp-city__filters{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 32px; }
.ttgp-city .ttgp-city__filters-label{ width:100%; font-size:16px; color:var(--fg-2); }
.ttgp-city .ttgp-city__chip{ display:inline-flex; align-items:center; gap:8px; min-height:var(--tap); padding:8px 20px; border-radius:999px; cursor:pointer;
  font-family:var(--font-ui); font-weight:600; font-size:16px; background:var(--ttgp-white); color:var(--ttgp-navy); border:2px solid var(--ttgp-light-grey); }
.ttgp-city .ttgp-city__chip:hover{ border-color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__chip small{ font-size:16px; font-weight:400; color:var(--fg-2); }
.ttgp-city #ttgp-city-f-all:checked ~ .ttgp-city__filters label[for="ttgp-city-f-all"]{ background:var(--ttgp-navy); color:var(--ttgp-white); border-color:var(--ttgp-navy); }
.ttgp-city #ttgp-city-f-all:checked ~ .ttgp-city__filters label[for="ttgp-city-f-all"] small{ color:var(--ttgp-light-blue); }
.ttgp-city #ttgp-city-f-all:focus-visible ~ .ttgp-city__filters label[for="ttgp-city-f-all"]{ outline:3px solid var(--ttgp-teal) !important; outline-offset:3px; }
.ttgp-city #ttgp-city-f-weekday:checked ~ .ttgp-city__filters label[for="ttgp-city-f-weekday"]{ background:var(--ttgp-navy); color:var(--ttgp-white); border-color:var(--ttgp-navy); }
.ttgp-city #ttgp-city-f-weekday:checked ~ .ttgp-city__filters label[for="ttgp-city-f-weekday"] small{ color:var(--ttgp-light-blue); }
.ttgp-city #ttgp-city-f-weekday:focus-visible ~ .ttgp-city__filters label[for="ttgp-city-f-weekday"]{ outline:3px solid var(--ttgp-teal) !important; outline-offset:3px; }
.ttgp-city #ttgp-city-f-weekday:checked ~ .ttgp-city__groups .ttgp-city__item:not(.has-weekday),.ttgp-city #ttgp-city-f-weekday:checked ~ .ttgp-city__groups .ttgp-city__group:not(.has-weekday){ display:none; }
.ttgp-city #ttgp-city-f-weekday:checked ~ .ttgp-city__groups .ttgp-city__item.is-extra.has-weekday{ display:block; }.ttgp-city #ttgp-city-f-weekday:checked ~ .ttgp-city__groups .ttgp-city__showall{ display:none; }
.ttgp-city #ttgp-city-f-weekend:checked ~ .ttgp-city__filters label[for="ttgp-city-f-weekend"]{ background:var(--ttgp-navy); color:var(--ttgp-white); border-color:var(--ttgp-navy); }
.ttgp-city #ttgp-city-f-weekend:checked ~ .ttgp-city__filters label[for="ttgp-city-f-weekend"] small{ color:var(--ttgp-light-blue); }
.ttgp-city #ttgp-city-f-weekend:focus-visible ~ .ttgp-city__filters label[for="ttgp-city-f-weekend"]{ outline:3px solid var(--ttgp-teal) !important; outline-offset:3px; }
.ttgp-city #ttgp-city-f-weekend:checked ~ .ttgp-city__groups .ttgp-city__item:not(.has-weekend),.ttgp-city #ttgp-city-f-weekend:checked ~ .ttgp-city__groups .ttgp-city__group:not(.has-weekend){ display:none; }
.ttgp-city #ttgp-city-f-weekend:checked ~ .ttgp-city__groups .ttgp-city__item.is-extra.has-weekend{ display:block; }.ttgp-city #ttgp-city-f-weekend:checked ~ .ttgp-city__groups .ttgp-city__showall{ display:none; }
.ttgp-city #ttgp-city-f-senior:checked ~ .ttgp-city__filters label[for="ttgp-city-f-senior"]{ background:var(--ttgp-navy); color:var(--ttgp-white); border-color:var(--ttgp-navy); }
.ttgp-city #ttgp-city-f-senior:checked ~ .ttgp-city__filters label[for="ttgp-city-f-senior"] small{ color:var(--ttgp-light-blue); }
.ttgp-city #ttgp-city-f-senior:focus-visible ~ .ttgp-city__filters label[for="ttgp-city-f-senior"]{ outline:3px solid var(--ttgp-teal) !important; outline-offset:3px; }
.ttgp-city #ttgp-city-f-senior:checked ~ .ttgp-city__groups .ttgp-city__item:not(.has-senior),.ttgp-city #ttgp-city-f-senior:checked ~ .ttgp-city__groups .ttgp-city__group:not(.has-senior){ display:none; }
.ttgp-city #ttgp-city-f-senior:checked ~ .ttgp-city__groups .ttgp-city__item.is-extra.has-senior{ display:block; }.ttgp-city #ttgp-city-f-senior:checked ~ .ttgp-city__groups .ttgp-city__showall{ display:none; }
.ttgp-city .ttgp-city__group{ margin:0 0 48px; scroll-margin-top:96px; }
.ttgp-city .ttgp-city__group:last-child{ margin-bottom:0; }
.ttgp-city .ttgp-city__group-head{ display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 16px; margin:0 0 16px; padding:0 0 12px; border-bottom:3px solid var(--ttgp-navy); }
.ttgp-city .ttgp-city__group-towns{ font-size:16px; color:var(--fg-2); }
/* Course cards (Kelvin 2026-10-16, round-2 mockup approved as the template): 4 across on desktop with a
   3:1 photo strip, photo-left on phones. The whole card links; the corner arrow is the only "go" cue. */
.ttgp-city .ttgp-city__grid{ display:grid; gap:12px; grid-template-columns:minmax(0,1fr); }
@media (min-width:600px){ .ttgp-city .ttgp-city__grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; } }
@media (min-width:1000px){ .ttgp-city .ttgp-city__grid{ grid-template-columns:repeat(4,minmax(0,1fr)); } }
.ttgp-city .ttgp-city__item{ display:block; min-width:0; }
.ttgp-city .ttgp-city__item.is-extra{ display:none; }
.ttgp-city .ttgp-city__all-toggle:checked ~ .ttgp-city__grid .ttgp-city__item.is-extra{ display:block; }
.ttgp-city a.ttgp-city__card{ position:relative; display:flex; flex-direction:column; height:100%; background:var(--ttgp-white); border-radius:12px;
  overflow:hidden; box-shadow:var(--shadow-card); color:var(--ttgp-navy); text-decoration:none; transition:box-shadow .15s ease; }
.ttgp-city a.ttgp-city__card:hover{ box-shadow:var(--shadow-lg); }
.ttgp-city a.ttgp-city__card:hover .ttgp-city__card-name{ text-decoration:underline; text-decoration-color:var(--ttgp-teal); text-underline-offset:3px; }
.ttgp-city .ttgp-city__card-photo{ display:block; width:100%; height:auto; aspect-ratio:3/1; object-fit:cover; max-width:none; }
.ttgp-city .ttgp-city__card-nophoto{ display:flex; align-items:center; justify-content:center; background:var(--ttgp-light-blue); color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__card-body{ position:relative; display:flex; flex-direction:column; gap:6px; flex:1; padding:12px 16px 16px; }
.ttgp-city .ttgp-city__card-name{ font-family:var(--font-display); font-weight:800; font-size:19px; line-height:1.2; }
.ttgp-city .ttgp-city__town{ display:flex; align-items:center; gap:8px; font-size:16px; color:var(--fg-2); }
.ttgp-city .ttgp-city__town svg{ color:var(--ttgp-teal); }
.ttgp-city .ttgp-city__region{ align-self:flex-start; padding:1px 10px; border-radius:8px; border:2px solid var(--ttgp-navy);
  font-family:var(--font-ui); font-size:15px; font-weight:600; line-height:1.5; color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__card-foot{ display:flex; align-items:flex-end; justify-content:space-between; gap:8px; margin-top:auto; padding-top:8px; }
.ttgp-city .ttgp-city__price{ display:flex; flex-direction:column; align-items:flex-start; gap:2px; font-family:var(--font-display); font-weight:800; font-size:20px; line-height:1.15; }
.ttgp-city .ttgp-city__price small{ padding:1px 6px; border-radius:4px; font-family:var(--font-ui); font-size:12px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.ttgp-city .ttgp-city__price{ color:#b35500; } .ttgp-city .ttgp-city__price small{ background:#fdeedd; }
.ttgp-city .ttgp-city__price.is-none{ color:var(--ttgp-navy); font-family:var(--font-ui); font-size:16px; font-weight:600; }
.ttgp-city .ttgp-city__card-go{ display:flex; flex:none; align-items:center; justify-content:center; width:32px; height:32px;
  border-radius:999px; background:var(--ttgp-navy); color:var(--ttgp-white); }
@media (max-width:599px){
  .ttgp-city a.ttgp-city__card{ flex-direction:row; }
  .ttgp-city .ttgp-city__card-photo{ width:96px; aspect-ratio:auto; height:auto; min-height:96px; flex:none; }
  .ttgp-city .ttgp-city__card-body{ position:static; padding:10px 12px 12px; gap:4px; }
  .ttgp-city .ttgp-city__card-name{ font-size:18px; padding-right:0; }
  .ttgp-city .ttgp-city__price{ font-size:18px; }
}
.ttgp-city .ttgp-city__showall,.ttgp-city label.ttgp-city__showall{ display:flex; width:max-content; margin:16px auto 0; cursor:pointer; }
.ttgp-city .ttgp-city__showall svg{ transition:transform .2s ease; }
.ttgp-city .ttgp-city__showall-less{ display:none; }
.ttgp-city .ttgp-city__all-toggle:checked ~ .ttgp-city__showall .ttgp-city__showall-less{ display:inline; }
.ttgp-city .ttgp-city__all-toggle:checked ~ .ttgp-city__showall .ttgp-city__showall-more{ display:none; }
.ttgp-city .ttgp-city__all-toggle:checked ~ .ttgp-city__showall svg{ transform:rotate(180deg); }
.ttgp-city .ttgp-city__all-toggle:focus-visible ~ .ttgp-city__showall{ outline:3px solid var(--ttgp-teal) !important; outline-offset:3px; }

/* How it works + the pass: white cards on light blue, as the approved course page. */
.ttgp-city .ttgp-city__passrow{ display:grid; gap:24px; }
@media (min-width:960px){ .ttgp-city .ttgp-city__passrow{ grid-template-columns:minmax(0,1fr) 400px; align-items:start; } }
.ttgp-city .ttgp-city__panel{ background:var(--ttgp-white); border-radius:16px; box-shadow:var(--shadow-card); padding:24px; }
@media (min-width:768px){ .ttgp-city .ttgp-city__panel{ padding:32px; } }
.ttgp-city .ttgp-city__steps{ display:grid; gap:24px; margin:24px 0 0; }
.ttgp-city .ttgp-city__step{ display:grid; grid-template-columns:64px minmax(0,1fr); gap:16px; align-items:start; }
.ttgp-city .ttgp-city__step-icon{ position:relative; display:flex; align-items:center; justify-content:center; width:64px; height:64px; border-radius:999px; background:var(--ttgp-light-blue); color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__step-title{ display:block; font-family:var(--font-display); font-weight:800; font-size:22px; line-height:1.2; margin:0 0 4px; }
.ttgp-city .ttgp-city__step p{ color:var(--fg-2); }
.ttgp-city .ttgp-city__photo{ position:relative; margin:24px 0 0; border-radius:12px; overflow:hidden; }
.ttgp-city .ttgp-city__photo img{ display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; max-width:none; }
@media (min-width:768px){ .ttgp-city .ttgp-city__photo img{ aspect-ratio:3/1; } }
.ttgp-city .ttgp-city__photo figcaption{ padding:10px 16px; font-size:16px; color:var(--ttgp-white); background:var(--ttgp-navy); }
.ttgp-city .ttgp-city__pass{ display:flex; flex-direction:column; gap:12px; }
.ttgp-city .ttgp-city__pass-kicker{ font-size:16px; color:var(--fg-2); }
.ttgp-city .ttgp-city__pass-name{ font-family:var(--font-display); font-weight:900; font-size:30px; line-height:1.05; text-transform:uppercase; margin:0; color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__pass-price{ display:flex; align-items:baseline; flex-wrap:wrap; gap:8px; }
.ttgp-city .ttgp-city__pass-price strong{ font-family:var(--font-display); font-weight:900; font-size:40px; line-height:1; }
.ttgp-city .ttgp-city__pass-price span{ font-size:16px; color:var(--fg-2); }
.ttgp-city .ttgp-city__perks{ display:flex; flex-direction:column; gap:8px; margin:4px 0 8px; }
.ttgp-city .ttgp-city__perks li{ display:flex; gap:12px; align-items:flex-start; font-size:17px; line-height:1.4; }
.ttgp-city .ttgp-city__perks svg{ color:var(--ttgp-green); margin-top:3px; }
.ttgp-city .ttgp-city__pass .ttgp-city__btn{ width:100%; }
.ttgp-city .ttgp-city__pass-foot{ display:flex; flex-direction:column; gap:4px; border-top:1px solid var(--ttgp-light-grey); padding-top:12px; font-size:16px; color:var(--fg-2); }
.ttgp-city .ttgp-city__pass-foot .ttgp-city__textlink{ font-size:16px; }

/* Other public courses: expandable rows, styled like the cards (white, 12px radius, card shadow). */
/* Private clubs: a plain list, 3 columns on desktop. */
.ttgp-city .ttgp-city__priv{ display:grid; gap:8px 32px; grid-template-columns:minmax(0,1fr); }
@media (min-width:700px){ .ttgp-city .ttgp-city__priv{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (min-width:1100px){ .ttgp-city .ttgp-city__priv{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
.ttgp-city .ttgp-city__priv-group{ margin:0 0 24px; }
.ttgp-city .ttgp-city__priv-group ul{ margin:12px 0 0; border-top:1px solid var(--ttgp-light-grey); }
.ttgp-city .ttgp-city__priv-group li{ display:flex; flex-direction:column; padding:10px 0; border-bottom:1px solid var(--ttgp-light-grey); }
.ttgp-city .ttgp-city__priv-name{ font-weight:700; font-size:17px; color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__priv-meta{ font-size:16px; color:var(--fg-2); }
.ttgp-city .ttgp-city__more{ display:grid; gap:0 32px; grid-template-columns:minmax(0,1fr); align-items:start; }
@media (min-width:900px){ .ttgp-city .ttgp-city__more{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
.ttgp-city .ttgp-city__more-group{ display:flex; flex-direction:column; gap:12px; margin:0 0 32px; }
.ttgp-city .ttgp-city__more-h{ font-family:var(--font-display); font-weight:800; font-size:22px; line-height:1.2; margin:0; color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__more-h span{ font-weight:400; font-size:18px; color:var(--fg-2); }
.ttgp-city .ttgp-city__more-row{ background:var(--ttgp-white); border-radius:12px; box-shadow:var(--shadow-card); }
.ttgp-city .ttgp-city__more-sum{ display:grid; grid-template-columns:minmax(0,1fr) 16px; gap:12px; align-items:center; min-height:var(--tap);
  padding:14px 20px; cursor:pointer; list-style:none; color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__more-sum::-webkit-details-marker{ display:none; }
.ttgp-city .ttgp-city__more-sum svg{ color:var(--fg-2); transition:transform .2s ease; }
.ttgp-city .ttgp-city__more-sum .ttgp-city__town svg{ color:var(--ttgp-teal); transition:none; }
.ttgp-city details[open] > .ttgp-city__more-sum > svg{ transform:rotate(180deg); }
.ttgp-city .ttgp-city__more-main{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.ttgp-city .ttgp-city__more-name{ font-family:var(--font-display); font-weight:700; font-size:19px; line-height:1.25; }
.ttgp-city .ttgp-city__more-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px; }
.ttgp-city .ttgp-city__tag{ padding:2px 12px; border-radius:999px; background:var(--ttgp-light-blue); color:var(--ttgp-navy);
  font-family:var(--font-ui); font-weight:600; font-size:16px; line-height:1.3; }
.ttgp-city .ttgp-city__more-body{ display:flex; flex-direction:column; align-items:flex-start; gap:8px; padding:4px 20px 16px; border-top:1px solid var(--ttgp-light-grey); margin:0 20px; padding-left:0; padding-right:0; }
.ttgp-city .ttgp-city__more-blurb{ padding-top:8px; max-width:760px; }
.ttgp-city .ttgp-city__more-facts{ display:flex; gap:8px; align-items:center; font-size:16px; color:var(--fg-2); padding-top:4px; }
.ttgp-city .ttgp-city__more-facts svg{ color:var(--ttgp-teal); }
.ttgp-city .ttgp-city__more-src{ font-size:16px; color:var(--fg-2); }
.ttgp-city .ttgp-city__more-srclink,.ttgp-city a.ttgp-city__more-srclink{ display:inline-flex; align-items:center; min-height:var(--tap); color:var(--ttgp-navy); text-decoration:underline; text-decoration-color:var(--ttgp-teal); }
.ttgp-city .ttgp-city__more .ttgp-city__textlink{ font-size:16px; }
.ttgp-city .ttgp-city__more-sum:focus-visible{ outline:3px solid var(--ttgp-teal) !important; outline-offset:3px; border-radius:12px; }
.ttgp-city .ttgp-city__ask{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; margin-top:24px; padding:20px 24px;
  border-radius:16px; background:var(--ttgp-white); border:2px dashed var(--ttgp-grey); }
.ttgp-city .ttgp-city__note{ font-size:16px; color:var(--fg-2); margin-top:16px; }

/* FAQ: white rows with a chevron, as the live /golf-pass/ FAQ. */
.ttgp-city .ttgp-city__faq{ max-width:880px; margin:0; }
.ttgp-city .ttgp-city__faq details{ background:var(--ttgp-white); border:1px solid var(--ttgp-light-grey); border-radius:8px; margin:0 0 12px; }
.ttgp-city .ttgp-city__q{ cursor:pointer; min-height:var(--tap); padding:16px 20px; font-family:var(--font-display); font-weight:700; font-size:19px; line-height:1.3; list-style:none;
  display:flex; justify-content:space-between; align-items:center; gap:16px; color:var(--ttgp-navy); }
.ttgp-city .ttgp-city__q::-webkit-details-marker{ display:none; }
.ttgp-city .ttgp-city__q svg{ transition:transform .2s ease; color:var(--fg-2); }
.ttgp-city details[open] > .ttgp-city__q svg{ transform:rotate(180deg); }
.ttgp-city .ttgp-city__a{ padding:0 20px 20px; color:var(--fg-2); }
.ttgp-city .ttgp-city__vh{ position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
/* Best public picks: text cards, 2 across from tablet up. */
.ttgp-city .ttgp-city__picks{ list-style:none; margin:0; padding:0; display:grid; gap:16px; grid-template-columns:minmax(0,1fr); }
@media (min-width:768px){ .ttgp-city .ttgp-city__picks{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
.ttgp-city .ttgp-city__pick{ display:flex; flex-direction:column; gap:6px; height:100%; padding:16px 20px 18px; border-radius:12px;
  background:var(--ttgp-white); box-shadow:var(--shadow-card); border-top:4px solid var(--ttgp-teal); color:var(--ttgp-navy); text-decoration:none; }
.ttgp-city a.ttgp-city__pick:hover{ box-shadow:var(--shadow-lg); }
.ttgp-city a.ttgp-city__pick:hover .ttgp-city__card-name{ text-decoration:underline; text-decoration-color:var(--ttgp-teal); text-underline-offset:3px; }
.ttgp-city .ttgp-city__pick-for{ font-family:var(--font-ui); font-size:13px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:#027a93; }
.ttgp-city .ttgp-city__pick-why{ font-size:17px; line-height:1.5; color:var(--fg-2); }
.ttgp-city .ttgp-city__pick-note{ font-family:var(--font-ui); font-size:15px; font-weight:600; color:var(--fg-2); margin-top:auto; }
/* Most played: the partner card grid, no rank badge (Kelvin 2026-11-04). */
.ttgp-city .ttgp-city__favs{ list-style:none; margin:0; padding:0; }
/* Partner card extras: short-course tags and the course's own rate. */
.ttgp-city .ttgp-city__card-tags{ display:flex; flex-wrap:wrap; gap:6px; }
.ttgp-city .ttgp-city__card-tags .ttgp-city__tag{ font-size:14px; padding:1px 10px; }
.ttgp-city .ttgp-city__rate{ font-family:var(--font-ui); font-size:14px; color:var(--fg-2); }
@media (prefers-reduced-motion:reduce){ .ttgp-city *{ transition:none !important; } }
