/* ============================================================================
   PATTAYA.GYM — DESIGN SYSTEM 2026 (light + volt)
   ============================================================================
   Replaces the 2025 black/neon/marquee stylesheet.

   WHAT CHANGED AND WHY
   - Light canvas, dark footer panel.
   - ONE accent (volt #f4f1ec) instead of five. Volt is a FILL, never text:
     every volt surface carries near-black ink. `--accent-ink` is the AA-safe
     variant for anything volt-flavoured that has to be readable as text.
   - No glow, no neon text-shadow, no marquee, no scroll-progress bar.
   - Scales: 1.200 type ratio, 0.85rem card radius, one shadow + motion ramp.

   LEGACY VARIABLE NAMES ARE LOAD-BEARING — DO NOT RENAME
   The generated HTML carries ~8,300 inline `style=` attributes that reference
   --s-*, --surface, --line, --r-lg, --r-pill, --muted, --text, --text-2,
   --hint, --cyan, --pink, --mint, --yellow, --font-mono, --font-display,
   --max, --pad, --t-fast and --text-muted. No stylesheet rule can reach an
   inline style, so those names are kept and simply repointed at the new
   palette. Renaming one silently breaks hundreds of pages.

   FONT URLS: keep the `/fonts/<name>.woff2?v=<digits>` shape — build-v2.js
   syncCssFontVersion() rewrites that query string on every build.
   ============================================================================ */

/* ============ FONTS (self-hosted; no third-party requests) ============ */









/* ============ TOKENS ============ */
:root {
  /* ---- Palette: semantic (use these in new code) ---- */
  --brand:         #55514d;  /* fill: chips, table headers, large areas       */
  --brand-ink:     #55514d;  /* AA-safe: link text, primary button background */
  --brand-bright:  #f4f1ec;  /* on dark surfaces only                          */
  --accent:        #f4f1ec;  /* THE volt. A fill. Never a text colour.        */
  --accent-ink:    #55514d;  /* AA-safe volt-flavoured text                   */

  --canvas:        #f4f1ec;
  --sunken:        #f4f1ec;
  --ink:           #0b0b0c;
  --ink-muted:     #55514d;
  --ink-subtle:    #55514d;
  --line-strong:   #bdb8b3;

  /* S2-H1, 2026-07-29 - control boundary.
     --line (#dad5ce) is 1.22:1 against the canvas and --line-strong is 1.55:1.
     Both are fine for a decorative divider and both fail WCAG 2.2 AA 1.4.11,
     which requires 3:1 for the visual information needed to identify a control.
     Inputs, selects and outlined buttons had no other boundary, so on this
     canvas they were effectively borderless. #55514d clears 3:1 against every
     surface the site uses - canvas 3.50, sunken 3.36, white 3.73, surface-3
     3.23 - and is the lightest value that does. Dividers keep --line. */
  --line-control:  #55514d;

  /* Dark panel — footer, dark bands */
  --panel:         #0b0b0c;
  --panel-sunken:  #0b0b0c;
  --panel-line:    #0b0b0c;
  --panel-ink:     #f4f1ec;
  --panel-muted:   #55514d;
  --panel-subtle:  #55514d;

  /* Status roles — not brand colours */
  --ok:      #bdb8b3; --ok-ink:     #55514d;
  --warn:    #bdb8b3; --warn-ink:   #55514d;
  --info:    #bdb8b3; --info-ink:   #55514d;
  --danger:  #55514d; --danger-ink: #55514d;

  /* ---- Legacy names — repointed, NOT renamed (see header note) ---- */
  --bg:          #f4f1ec;
  --surface:     #ffffff;
  --surface-2:   #ffffff;
  --surface-3:   #f4f1ec;
  --card:        #ffffff;
  --line:        #dad5ce;
  --line-soft:   #f4f1ec;
  --border:      #dad5ce;

  --text:        #0b0b0c;
  --text-2:      #55514d;
  --muted:       #55514d;
  --text-muted:  #55514d;  /* was referenced on 15 pages but never declared */
  --hint:        #55514d;
  --pure-white:  #ffffff;

  /* The old five accents now all resolve into the single volt/brand family,
     which is what flattens the multi-colour look inside inline styles too. */
  --cyan:   #55514d;
  --mint:   #55514d;
  --pink:   #55514d;
  --yellow: #55514d;
  --red:    #55514d;
  --orange: #55514d;

  /* Glow tokens neutralised rather than deleted: any stylesheet or inline rule
     still referencing them now gets a flat, tasteful shadow instead of neon. */
  --glow-pink:   0 1px 2px rgba(11, 11, 12, 0.06);
  --glow-cyan:   0 1px 2px rgba(11, 11, 12, 0.06);
  --glow-yellow: 0 1px 2px rgba(11, 11, 12, 0.06);
  --glow-mint:   0 1px 2px rgba(11, 11, 12, 0.06);
  --glow-red:    0 1px 2px rgba(11, 11, 12, 0.06);

  /* ---- Faces ---- */
  --font-display: Geist, Geist, system-ui, -apple-system, sans-serif;
  --font-body:    Geist, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono:    Geist, ui-monospace, SFMono-Regular, Consolas, monospace;

  /* ---- Type scale: 1.200 minor third (network token) ---- */
  --text-2xs:  0.694rem;
  --text-xs:   0.833rem;
  --text-sm:   0.9rem;
  --text-base: 1rem;
  --text-lg:   1.2rem;
  --text-xl:   1.44rem;
  --text-2xl:  1.728rem;
  --text-3xl:  2.074rem;
  --text-4xl:  2.488rem;

  /* ---- Space ---- */
  --s-1: 4px;  --s-2: 8px;  --s-3: 12px; --s-4: 16px; --s-5: 20px;
  --s-6: 24px; --s-7: 28px; --s-8: 32px; --s-10: 40px; --s-12: 48px; --s-16: 56px; --s-20: 64px;

  /* ---- Radius ---- */
  --r-sm: 6px; --r-md: 10px; --r-lg: 14px; --r-xl: 18px; --r-pill: 999px;

  /* ---- Elevation ---- */
  --shadow-flat:   0 1px 2px rgba(11, 11, 12, 0.05);
  --shadow-soft:   0 1px 2px rgba(11, 11, 12, 0.05), 0 8px 24px rgba(11, 11, 12, 0.06);
  --shadow-raised: 0 2px 4px rgba(11, 11, 12, 0.07), 0 16px 40px rgba(11, 11, 12, 0.10);
  --shadow-card:   var(--shadow-soft);
  --panel-soft:    #0b0b0c;

  /* ---- Layout ---- */
  --max: 1120px;
  --pad: 20px;
  --nav-h: 60px;

  /* ---- Motion ---- */
  --t-fast: 120ms;
  --t-base: 220ms;
  --easing: cubic-bezier(0.16, 1, 0.3, 1);

  color-scheme: light;
  accent-color: var(--brand-ink);
}
@media (min-width: 768px) { :root { --pad: 32px; } }

/* ============ RESET ============ */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; overflow-x: clip; }
html {
  background: var(--canvas);
  -webkit-text-size-adjust: 100%;
  scroll-padding-top: calc(var(--nav-h) + 16px);
  scroll-behavior: smooth;
}
body {
  min-height: 100vh;
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink);
  background: var(--canvas);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "cv11", "ss01";
}
img, svg, video { display: block; max-width: 100%; height: auto; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; cursor: pointer; padding: 0; }
a { color: inherit; text-decoration: none; }
ul { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, p { margin: 0; }
::selection { background: var(--accent); color: var(--ink); }
[hidden] { display: none !important; }

/* ============ SKIP LINK ============ */
.skip-link {
  position: absolute; left: var(--s-4); top: -100px; z-index: 200;
  background: var(--ink); color: #fff;
  padding: 0.7rem 1.1rem; border-radius: var(--r-md);
  font-weight: 600; font-size: var(--text-sm);
  transition: top var(--t-fast) var(--easing);
}
.skip-link:focus { top: var(--s-4); }

/* ============ LAYOUT ============ */
.wrap {
  width: 100%;
  max-width: var(--max);
  margin-inline: auto;
  padding-inline: var(--pad);
}
.section { padding-block: var(--s-12); }
@media (min-width: 900px) { .section { padding-block: var(--s-16); } }
.section + .section { padding-top: 0; }

/* ============ TYPOGRAPHY ============ */
h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.15;
  color: var(--ink);
  text-wrap: balance;
}

/* Section eyebrow — small caps label, optionally numbered.
   `.num` is the leading counter; it is the one place volt appears as text-like
   colour, and it uses the AA-safe accent-ink, never raw volt. */

/* Heading highlight spans. The old palette gave every heading a different neon
   word; they now all resolve to one calm family. */

/* ============ HEADER ============
   Slim, sticky, one row, hairline bottom. The old header was a 2-row dark bar
   with a starred neon CTA; this is 60px of white with a volt pill. */
.nav {
  position: sticky; top: 0; z-index: 100;
  background: rgba(255, 255, 255, 0.9);
  -webkit-backdrop-filter: saturate(1.4) blur(10px);
  backdrop-filter: saturate(1.4) blur(10px);
  border-bottom: 1px solid var(--line);
}
.nav-row {
  width: 100%; max-width: var(--max);
  margin-inline: auto;
  padding-left: max(var(--pad), env(safe-area-inset-left));
  padding-right: max(var(--pad), env(safe-area-inset-right));
  height: var(--nav-h);
  display: flex; align-items: center; gap: var(--s-5);
}
.brand {
  display: inline-flex; align-items: center; gap: 0.5rem;
  min-height: 2.75rem;
  font-family: var(--font-display);
  font-size: 1.06rem; font-weight: 700; letter-spacing: -0.03em;
  color: var(--ink); white-space: nowrap; flex-shrink: 0;
}
/* Brand mark: volt tile with a dark ring glyph. Drawn in CSS so no extra
   request, and it survives at any size. */
.brand::before {
  content: "";
  width: 26px; height: 26px; flex-shrink: 0;
  border-radius: 8px;
  background: var(--accent);
  box-shadow: inset 0 0 0 4px var(--ink), inset 0 0 0 6px var(--accent);
}

.nav-links {
  display: none;
  align-items: center; gap: var(--s-5);
  margin-left: auto;
  font-size: var(--text-sm); font-weight: 500;
}
@media (min-width: 1040px) { .nav-links { display: flex; } }
.nav-links a {
  color: var(--ink-muted);
  padding-block: 4px;
  border-bottom: 2px solid transparent;
  transition: color var(--t-fast) var(--easing), border-color var(--t-fast) var(--easing);
  white-space: nowrap;
}
.nav-links a:hover { color: var(--ink); border-bottom-color: var(--accent); }
.nav-links a[aria-current="page"] { color: var(--ink); border-bottom-color: var(--brand-ink); }

.nav-cta {
  display: none;
  align-items: center; gap: 0.4rem;
  min-height: 2.75rem;
  background: var(--accent); color: var(--ink);
  font-size: var(--text-sm); font-weight: 700;
  padding: 0.5rem 1rem; border-radius: var(--r-pill);
  border: 1px solid rgba(11, 11, 12, 0.1);
  white-space: nowrap; flex-shrink: 0;
  transition: background-color var(--t-fast) var(--easing), transform var(--t-fast) var(--easing);
}
@media (min-width: 720px) { .nav-cta { display: inline-flex; margin-left: auto; } }
@media (min-width: 1040px) { .nav-cta { margin-left: 0; } }
.nav-cta:hover { background: var(--ink); color: var(--accent); }
.nav-cta:active { transform: translateY(1px); }

.nav-burger {
  display: inline-flex; flex-direction: column; justify-content: center; gap: 4px;
  width: 44px; height: 44px; margin-left: auto;
  border-radius: var(--r-md);
  border: 1px solid var(--line);
  align-items: center; flex-shrink: 0;
  transition: border-color var(--t-fast) var(--easing);
}
.nav-burger:hover { border-color: var(--line-strong); }
@media (min-width: 1040px) { .nav-burger { display: none; } }
@media (min-width: 720px) { .nav-burger { margin-left: var(--s-2); } }
.nav-burger-bar {
  display: block; width: 17px; height: 2px;
  background: var(--ink); border-radius: 2px;
  transition: transform var(--t-fast) var(--easing), opacity var(--t-fast) var(--easing);
}
.nav-burger[aria-expanded="true"] .nav-burger-bar:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.nav-burger[aria-expanded="true"] .nav-burger-bar:nth-child(2) { opacity: 0; }
.nav-burger[aria-expanded="true"] .nav-burger-bar:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* Mobile drawer */
.nav-mobile {
  position: sticky; top: var(--nav-h); z-index: 99;
  display: grid; gap: 2px;
  background: var(--surface);
  border-bottom: 1px solid var(--line);
  box-shadow: var(--shadow-soft);
  padding-top: var(--s-3);
  padding-right: max(var(--pad), env(safe-area-inset-right));
  padding-bottom: max(var(--s-4), env(safe-area-inset-bottom));
  padding-left: max(var(--pad), env(safe-area-inset-left));
  max-height: calc(100vh - var(--nav-h));
  max-height: calc(100dvh - var(--nav-h));
  overflow-y: auto;
}
@media (min-width: 1040px) { .nav-mobile { display: none !important; } }
.nav-mobile-link {
  padding: 0.7rem 0.25rem;
  font-size: var(--text-base); font-weight: 500;
  color: var(--ink);
  border-bottom: 1px solid var(--line-soft);
}
.nav-mobile-link[aria-current="page"] {
  padding-inline: var(--s-3);
  border-radius: var(--r-md);
  background: var(--sunken);
  color: var(--brand-ink);
  font-weight: 750;
}
.nav-mobile-link:hover { color: var(--brand-ink); }
.nav-mobile-group {
  margin-top: var(--s-3);
  padding: var(--s-2) 0.25rem 0;
  color: var(--ink-subtle);
  font: 700 var(--text-2xs)/1.2 var(--font-mono);
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.nav-mobile-group:first-child { margin-top: 0; }
body.nav-open { overflow: hidden; }

body.nav-open .privacy-consent { display: none; }

/* ============ BREADCRUMB ============ */

/* ============ HERO ============
   No marquee, no gradient wash, no oversized fluid type. */
.hero {
  padding-block: var(--s-12) var(--s-10);
  border-bottom: 1px solid var(--line);
  background:
    radial-gradient(120% 90% at 92% -20%, rgba(244, 241, 236, 0.16) 0%, rgba(244, 241, 236, 0) 60%),
    var(--canvas);
}
@media (min-width: 900px) { .hero { padding-block: var(--s-16) var(--s-12); } }

/* Homepage search block, sits directly under the h1 */

/* Inline editorial links must remain identifiable without relying on color. */

/* ============ BUTTONS ============ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem;
  min-height: 2.875rem;
  padding: 0.68rem 1rem;
  border-radius: var(--r-md);
  font-size: var(--text-sm); font-weight: 600; line-height: 1.1;
  text-align: center; white-space: nowrap;
  border: 1px solid transparent;
  transition: background-color var(--t-fast) var(--easing),
              border-color var(--t-fast) var(--easing),
              color var(--t-fast) var(--easing),
              transform var(--t-fast) var(--easing);
}
.btn:active { transform: translateY(1px); }
.btn-primary {
  background: var(--accent); color: var(--ink);
  border-color: rgba(11, 11, 12, 0.18);
  box-shadow: 0 1px 0 rgba(11, 11, 12, 0.14), 0 8px 18px rgba(85, 81, 77, 0.10);
}
.btn-primary:hover { background: var(--ink); color: #fff; border-color: var(--ink); }
.btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line-control); }
.btn-ghost:hover { border-color: var(--line-strong); background: var(--sunken); }
.btn:disabled {
  transform: none;
  border-color: var(--line);
  background: var(--sunken);
  color: var(--ink-subtle);
  box-shadow: none;
  cursor: not-allowed;
  opacity: 0.72;
}
 .home-more-toggle { font-size: var(--text-xs); }

/* Progressive disclosure of the secondary venue CTAs */

/* ============ CARD BASE ============ */
.card, .cat-venue-card,
.result-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-flat);
}

/* ============ GRIDS ============ */
 .guide-hub-grid, .favorites-list {
  display: grid;
  gap: var(--s-4);
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
   .guide-hub-grid, .favorites-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 980px) {
   .guide-hub-grid, .favorites-list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ============ VENUE LISTING CARD ============ */
.cat-venue-card {
  display: flex; flex-direction: column;
  padding: var(--s-5);
  transition: transform var(--t-base) var(--easing),
              box-shadow var(--t-base) var(--easing),
              border-color var(--t-base) var(--easing);
}
.cat-venue-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-soft);
  border-color: var(--line-strong);
}
.cat-venue-card.is-unresolved,
.result-card.is-unresolved { border-color: color-mix(in srgb, var(--warn-ink) 34%, var(--line)); }
.cat-venue-card > p {
  font-size: var(--text-sm); line-height: 1.55;
  color: var(--ink-muted);
  margin-top: var(--s-2);
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ============ NUMBERED CARD ============ */

/* ============ INTENT ROUTER ("start here") ============ */

/* ============ CHANNEL CARDS (social / contact) ============ */
/* Platform tint: a 3px left edge, the one place brand colours differ per card */

/* ============ TRUST BAR / PILLS ============ */

/* ============ FAVOURITES ============ */
.favorite-btn {
  display: inline-flex; align-items: center; gap: 0.35rem;
  flex-shrink: 0;
  min-height: 2.75rem;
  padding: 0.58rem 0.8rem;
  border-radius: var(--r-md);
  border: 1px solid var(--line-control);
  background: var(--surface);
  font-size: var(--text-xs); font-weight: 600;
  color: var(--ink-muted);
  transition: border-color var(--t-fast) var(--easing), color var(--t-fast) var(--easing);
}
.favorite-btn:hover { border-color: var(--line-strong); color: var(--ink); }
.favorite-btn.is-saved {
  border-color: color-mix(in srgb, var(--accent) 55%, #fff);
  background: color-mix(in srgb, var(--accent) 22%, #fff);
  color: var(--accent-ink);
}
.fav-heart { line-height: 1; font-size: 0.9em; }
.fav-btn-label { white-space: nowrap; }
.favorite-list-actions { display: flex; flex-wrap: wrap; gap: var(--s-3); margin-top: var(--s-5); }
#pg-favorites-widget {
  position: fixed;
  z-index: 85;
  right: max(var(--s-5), env(safe-area-inset-right));
  bottom: calc(max(var(--s-5), env(safe-area-inset-bottom)) + 56px);
}
.pg-fw-inner {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  min-height: 2.75rem;
  padding: 0.55rem 0.8rem;
  border: 1px solid var(--panel-line);
  border-radius: var(--r-md);
  background: var(--panel);
  color: var(--panel-ink);
  box-shadow: var(--shadow-raised);
  font-size: var(--text-xs);
}
.pg-fw-inner:hover { border-color: var(--brand-bright); color: var(--brand-bright); }
.pg-fw-heart { color: var(--brand-bright); }

/* ============ PROSE / EDITORIAL BODY ============ */
.guide-price-note {
  font-size: var(--text-xs); color: var(--ink-subtle); margin-top: var(--s-2);
}

/* Server-rendered guide navigation and keyboard-scrollable data tables. */
.guide-toc-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-2);
  margin: 0;
  padding: 0;
  list-style: none;
}
.guide-toc-list a {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  min-height: 2.75rem;
  padding: .55rem .7rem;
  border: 1px solid transparent;
  border-radius: var(--r-md);
  color: var(--ink);
  font-size: var(--text-sm);
  font-weight: 650;
  line-height: 1.3;
  text-decoration: none;
}
.guide-toc-list a:hover,
.guide-toc-list a:focus-visible { border-color: var(--line-control); background: var(--surface); }
.guide-toc-list a[aria-current="location"] {
  border-color: color-mix(in srgb, var(--brand-ink) 42%, var(--line));
  background: var(--surface);
  box-shadow: inset 3px 0 0 var(--brand-ink);
}

/* ============ VENUE PAGE ============ */

/* Jump nav — injected by the inline script on venue pages with 3+ sections */
.jump-nav-pills { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.jump-nav-pills a {
  display: inline-flex; align-items: center; gap: 0.35rem;
  min-height: 2.75rem;
  background: var(--surface); border: 1px solid var(--line-control);
  border-radius: var(--r-md);
  padding: 0.5rem 0.75rem;
  font-size: var(--text-xs); font-weight: 500; color: var(--ink);
  transition: border-color var(--t-fast) var(--easing);
}
.jump-nav-pills a:hover { border-color: var(--brand-ink); color: var(--brand-ink); }
.jump-nav-pills a.is-active {
  border-color: var(--ink);
  background: var(--ink);
  color: #fff;
}
.jump-nav-pills a.is-active .n { color: var(--accent); }
.jump-nav-pills a .n { color: var(--ink-subtle); font-size: var(--text-2xs); }

/* Collapsible venue sections (mobile) */
@media (max-width: 899px) {
  .jump-nav-pills {
    flex-wrap: nowrap;
    margin-inline: calc(var(--s-4) * -1);
    padding: 2px var(--s-4) var(--s-2);
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-width: none;
  }
  .jump-nav-pills::-webkit-scrollbar { display: none; }
  .jump-nav-pills a { flex: 0 0 auto; }
}

/* Recently viewed */
.recently-viewed {
  margin-top: var(--s-10); padding-top: var(--s-6);
  border-top: 1px solid var(--line);
}
.recently-viewed-h {
  font-family: var(--font-mono); font-size: var(--text-2xs); font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--ink-subtle); margin-bottom: var(--s-3);
}
.recently-viewed-list { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.recently-viewed-item {
  font-size: var(--text-xs);
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-pill); padding: 0.3rem 0.7rem;
  color: var(--ink-muted);
}
.recently-viewed-item:hover { border-color: var(--brand-ink); color: var(--brand-ink); }

/* ============ GUIDES ============ */

/* Guide discovery: compact intent routing first, complete SSR library second. */

.guide-filter-status {
  color: var(--ink-muted);
  font: 700 var(--text-2xs)/1.35 var(--font-mono);
  letter-spacing: .08em;
  text-transform: uppercase;
}
.guide-filter-empty { padding: var(--s-4); border-radius: var(--r-md); background: var(--sunken); color: var(--ink-muted); }
.guide-filter-empty a { color: var(--brand-ink); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

/* ============ FAQ ============ */

/* ============ TOOLS: SEARCH ============ */
.result-card {
  padding: var(--s-4) var(--s-5);
  transition: border-color var(--t-fast) var(--easing), box-shadow var(--t-fast) var(--easing);
}
.result-card:hover { border-color: var(--line-strong); box-shadow: var(--shadow-soft); }

/* ============ TOOLS: COMPARE ============ */

/* ============ TOOLS: PLAN ============ */

/* ============ SPORT STATS / HOMEPAGE STRIP ============ */
/* legacy stat cards (sport-stats dashboard) */

/* ============ CHANGELOG ============ */

/* ============ BACK TO TOP ============ */
.back-to-top {
  position: fixed;
  right: max(var(--s-5), env(safe-area-inset-right));
  bottom: max(var(--s-5), env(safe-area-inset-bottom));
  z-index: 90;
  width: 44px; height: 44px;
  display: grid; place-items: center;
  background: var(--surface); color: var(--ink);
  border: 1px solid var(--line-strong); border-radius: 50%;
  box-shadow: var(--shadow-soft);
  opacity: 0; pointer-events: none;
  transform: translateY(6px);
  transition: opacity var(--t-base) var(--easing), transform var(--t-base) var(--easing);
}
.back-to-top.is-visible { opacity: 1; pointer-events: auto; transform: none; }
.back-to-top:hover { background: var(--accent); border-color: rgba(11, 11, 12, 0.14); }
/* The scroll-progress bar was pure decoration on a directory. Neutralised. */
.progress-bar { display: none !important; }
/* The marquee tickers are gone; this kills any stragglers the sweep missed. */

/* ============================================================================
   FOOTER — FOOTER-SPEC-2026-V3
   ============================================================================
   Deliberately simple publication structure:
   brand block + one-line description + publisher credit + social row on the
   left, four link columns on the right, one legal bar, one small-print line.

   The publisher portrait, contact routes and socials stay together. Four
   task-based columns carry useful internal links; legal metadata gets one bar.

   Dark panel on a light site. The volt only ever appears as a fill (the mark)
   or via --brand-bright on dark, never as small text.
   ============================================================================ */
.footer {
  margin-top: var(--s-20);
  background: var(--panel);
  color: var(--panel-muted);
  border-top: 1px solid var(--panel-line);
}
.footer-wrap {
  width: 100%; max-width: var(--max);
  margin-inline: auto;
  padding: var(--s-16) var(--pad) var(--s-12);
}

/* --- Brand block --- */

/* --- Link columns --- */
.footer-nav {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-8);
  font-size: var(--text-sm);
}
@media (min-width: 640px) { .footer-nav { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.footer-col-h {
  margin-bottom: var(--s-3);
  font-family: var(--font-body);
  font-size: var(--text-2xs); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em;
  color: var(--panel-ink);
}
.footer-col ul { display: grid; gap: 0.72rem; }
.footer-col a {
  color: var(--panel-muted);
  transition: color var(--t-fast) var(--easing);
}
.footer-col a:hover { color: var(--brand-bright); }
@media (max-width: 639px) {
  .footer-col a { display: inline-flex; align-items: center; min-height: 44px; }
}

/* --- Legal bar --- */
.footer-updated-line {
  margin-top: var(--s-4);
  font-size: var(--text-xs);
  color: var(--panel-muted);
}
/* legacy wrappers kept harmless in case a page still carries them */

/* Publication accountability and public data surfaces. */

/* ============ UTILITIES (generated markup depends on every one of these) ============ */

/* ============ STATE + A11Y HELPERS ============ */
.sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.is-expanded { }
.active, .is-active { }
/* The old neon star separator. Kept as a quiet dot so any leftover markup
   does not render a bright glyph. */
.n { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }

/* ============ LIVE CARD (homepage status) ============ */

/* ============ MOTION + PRINT ============ */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .cat-venue-card:hover { transform: none; }
}

/* Source-bounded location tools — /map/ and /find-my-coach/. */
@media print {
  .nav, .nav-mobile, .footer, .back-to-top, .favorite-btn { display: none !important; }
  body { background: #fff; color: #000; font-size: 11pt; }
  .hero { border: 0; background: none; padding-block: 0 var(--s-4); }
  .section { padding-block: var(--s-4); }
  a { text-decoration: underline; }
}

/* ============ REMAINING VOCABULARY ============
   Explicit rules for the classes the generated markup carries that would
   otherwise be unstyled. Keeping them here rather than leaving them undefined
   means the next person greps this file and finds the whole vocabulary. */
.home-hero-ctas-wrap { margin-top: var(--s-6); }

/* ============================================================================
   FIXES FROM THE FIRST VISUAL PASS
   ============================================================================
   Everything below was caught by rendering the built pages rather than by
   reading the markup. Kept in one block so it is obvious what was reactive.
   ============================================================================ */

/* .brand is a flex row so the mark can sit beside the wordmark, but the
   wordmark arrives as three text nodes ("pattaya", ".", "gym") which each
   became flex items — so `gap` was spacing out the letters: "pattaya . gym".
   Space the mark with a margin instead and let the wordmark close up. */
.brand { gap: 0; }
.brand::before { margin-right: 0.55rem; }

/* Card sub-elements are emitted as <span> in several templates, so the
   margin-bottom in their rules did nothing and every card ran together on one
   line. Blocking them is what turns them back into stacked cards. */

.footer-col-h {
  display: block;
}

/* `.wrap.u-max-760` used to shrink the wrap itself to 760px. Because .wrap is
   centred, that pushed the column inward and knocked it out of alignment with
   the section headings above it. Keep the wrap full width and constrain its
   children instead, so the text still starts on the page's left margin. */

/* 22ch broke two-word venue names onto an awkward second line. */

/* Guide bylines are spans in a flex row; keep them on the baseline. */

/* ---- Second visual pass ---- */

/* Section h2s carry a top rule as a divider, suppressed on the first one.
   `:first-child` missed cases where the article starts with a comment or
   whitespace node, which drew a second rule right under the eyebrow's rule. */

/* The TL;DR block is an <ol>, so it already has decimal markers — the shared
   li::before was adding a volt dot next to every number. */

/* Brand mark: a volt tile with a dark inner rule — a ring, viewed from above.
   Previously the header and footer marks used different ring colours, so the
   header read as an outlined tile and the footer as a solid one. */
.brand::before {
  background: var(--accent);
  box-shadow: inset 0 0 0 3px var(--ink);
}

/* ============================================================================
   THIRD VISUAL PASS — tool pages, 404, mobile header
   ============================================================================
   Found by rendering /search/, /compare/, /plan-my-trip/, /favorites/, /map/,
   /find-my-coach/, /sports/ and /404.html rather than trusting the sweep.
   ============================================================================ */

/* --- SEARCH: the page's sections are direct children of <main> with no .wrap,
   so they had no horizontal padding at all and ran edge to edge. --- */

/* Bare `.accent` is a heading highlight everywhere except the footer wordmark. */

/* The markup uses `.active`, not `.is-active`. Support both rather than
   rewriting a class name that three scripts toggle. */

/* Native select/checkbox controls were completely unstyled. */

/* The search field's icon was a 🔍 emoji. Same glyph, drawn in CSS: monochrome,
   brand-colourable, and sized against the type scale. */

/* Result cards: `.result-card-tag` is a <div>, so the pill background stretched
   the full width of the card. `.result-card-main` is the <a> wrapper. */

/* --- COMPARE: four pickers in a three-column grid orphaned the fourth. --- */

/* --- UTILITY / 404 PAGES: their body is `.venue-body`, so the prose link rule
   was underlining buttons and whole cards. Component links opt out. --- */

/* --- HEADER: the CTA was hidden below 720px, so on a phone every interior page
   had no visible way to search — only the burger. It fits at 360px. --- */
.nav-cta { display: inline-flex; margin-left: auto; }
.nav-burger { margin-left: var(--s-2); }
@media (max-width: 519px) {
  .nav-cta { padding: 0.45rem 0.7rem; font-size: var(--text-xs); }
  .brand { font-size: 0.98rem; }
  .brand::before { width: 22px; height: 22px; margin-right: 0.4rem; }
}
@media (max-width: 380px) {
  .nav-row {
    gap: var(--s-2);
    padding-left: max(12px, env(safe-area-inset-left));
    padding-right: max(12px, env(safe-area-inset-right));
  }
  .nav-cta { padding-inline: 0.6rem; }
  .nav-burger { margin-left: 0; }
}
@media (max-width: 339px) {
  .nav-cta { display: none; }
  .nav-burger { margin-left: auto; }
}
@media (min-width: 1040px) { .nav-cta { margin-left: 0; } }
@media (min-width: 1040px) { .nav-burger { display: none; } }

/* ============================================================================
   FAQ CONTAINER FIX
   ============================================================================
   `.venue-faq` and `.guide-faq` are on the <section> element in the generated
   markup — NOT on the list of questions:

       <section class="section u-pt-0 venue-faq guide-faq"><div class="wrap ...">

   So grouping them with `.faq-list` and giving all three `display:grid` plus
   `max-width:68ch` shrank the entire section to 686px and pinned it flush to the
   left edge with no gutter, while every other section stayed centred. Only
   `.faq-list` is an actual list of items.
   ============================================================================ */
/* The guide shell emits a bare <section class="guide-faq"> with no .wrap, so it
   inherits the gutter from the 880px article it sits inside. Only give it the
   page gutter when it is a top-level section instead. */

/* ============================================================================
   PERMANENTLY CLOSED
   ============================================================================
   Four records in data.js carry `status: closed`. build-v2.js had no rendering
   for that field, so a closed venue page showed a green "Verified by Tim" pill
   and a live "Checking hours…" indicator, with the closure mentioned only in
   body prose — a reader scanning the top of the page would have concluded it was
   open. This is the one pill that must out-shout the rest of the trust bar.
   ============================================================================ */
/* A closed venue keeps its verified date — we did check that it is shut — but it
   should not read as an endorsement sitting beside the closure notice. */

/* A qualified record - unverified, not in Pattaya, informational, timetable
   unconfirmed - must carry that qualification in the same bar that carries the
   verification date, or the page reads as a plainly operating venue (S1-3).
   Softer than the closure notice: these are open questions, not settled facts. */

/* ============================================================================
   PRESS KIT
   ============================================================================
   Components used only by /press/. Kept in the main stylesheet rather than a
   separate file because the site ships one CSS request by design, and this is
   ~1 KB. Generated by scripts/build-press-kit.js.
   ============================================================================ */

/* The press tables live inside `.venue-body`, whose prose `th` rule paints every
   header cell dark with white text. That is right for a column header and very
   wrong for a row header — the fast-facts labels rendered as solid dark blocks
   with invisible text. Row headers opt out; column headers keep the treatment. */

/* ============================================================================
   FLAGSHIP 2027 — evidence, consent, stable interaction and accessibility
   ============================================================================ */

.privacy-consent {
  position: fixed;
  z-index: 1000;
  inset: auto max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-5);
  width: min(860px, calc(100% - 24px));
  margin-inline: auto;
  padding: var(--s-4);
  color: var(--panel-ink);
  background: rgba(11, 11, 12, .97);
  border: 1px solid var(--panel-line);
  border-radius: var(--r-xl);
  box-shadow: 0 24px 70px rgba(11, 11, 12, .32);
}
.privacy-consent-copy { display: grid; gap: 2px; min-width: 0; }
.privacy-consent-copy strong { font-family: var(--font-display); font-size: var(--text-lg); }
.privacy-consent-copy span { color: var(--panel-muted); font-size: var(--text-sm); }
.privacy-consent-copy a { color: var(--brand-bright); font-size: var(--text-xs); text-decoration: underline; text-underline-offset: 2px; }
.privacy-consent-actions { display: flex; flex-wrap: wrap; flex: 0 0 auto; gap: var(--s-2); }
.privacy-consent .btn-ghost { color: var(--panel-ink); background: transparent; border-color: #55514d; }
.privacy-consent .btn-primary { background: var(--brand-bright); color: var(--ink); }

@media (max-width: 680px) {
  .privacy-consent {
    inset: auto max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));
    align-items: stretch;
    flex-direction: column;
    gap: .65rem;
    width: min(860px, calc(100% - 16px));
    padding: .75rem;
    border-radius: 1rem;
  }
  .privacy-consent-copy { gap: 1px; }
  .privacy-consent-copy strong { font-size: 1rem; line-height: 1.15; }
  .privacy-consent-copy span { font-size: .78rem; line-height: 1.35; }
  .privacy-consent-copy a { font-size: .72rem; }
  .privacy-consent-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .privacy-consent .btn { min-height: 2.75rem; padding: .5rem .65rem; font-size: .83rem; }
  .guide-toc-list a { height: 100%; border-color: var(--line); background: color-mix(in srgb, var(--surface) 88%, transparent); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}
/* ========================================================================== */
/* PRODUCT-REDESIGN-2027-V1 — Pattaya movement, decision-first experience      */
/* ========================================================================== */

body.product-redesign-2027 {
  --canvas: #f4f1ec;
  --sunken: #dad5ce;
  --ink: #0b0b0c;
  --ink-muted: #55514d;
  --ink-subtle: #55514d;
  --line: #bdb8b3;
  --line-soft: #dad5ce;
  --line-strong: #55514d;
  --surface: #ffffff;
  --surface-2: #ffffff;
  --surface-3: #dad5ce;
  --card: #ffffff;
  --brand: #55514d;
  --brand-ink: #55514d;
  --brand-bright: #dad5ce;
  --accent: #dad5ce;
  --accent-ink: #55514d;
  --panel: #0b0b0c;
  --panel-sunken: #0b0b0c;
  --panel-line: #55514d;
  --panel-ink: #ffffff;
  --panel-muted: #bdb8b3;
  --panel-subtle: #bdb8b3;
  --pg-coral: #55514d;
  --pg-sun: #dad5ce;
  --pg-pool: #bdb8b3;
  --pg-leaf: #55514d;
  --pg-night: #0b0b0c;
  --font-body: Geist, system-ui, -apple-system, sans-serif;
  --font-display: Geist, system-ui, -apple-system, sans-serif;
  --font-mono: Geist, system-ui, -apple-system, sans-serif;
  --max: 1240px;
  background: var(--canvas);
  color: var(--ink);
}

body.product-redesign-2027 .wrap { max-width: 1240px; }

body.product-redesign-2027 .section { padding-block: clamp(3.25rem, 7vw, 6rem); }
body.product-redesign-2027 .section + .section { padding-top: 0; }
body.product-redesign-2027 .btn { min-height: 46px; border-radius: 999px; padding-inline: 1.15rem; }
body.product-redesign-2027 .btn-primary { background: var(--brand-ink); color: #fff; border-color: var(--brand-ink); }
body.product-redesign-2027 .btn-primary:hover { background: #55514d; border-color: #55514d; }

body.product-redesign-2027 .btn-ghost { background: transparent; color: var(--ink); border-color: #55514d; }

/* Header */
body.product-redesign-2027 .nav {
  position: sticky;
  top: 0;
  z-index: 100;
  height: 68px;
  background: rgba(255, 255, 255, 0.94);
  border-bottom: 1px solid rgba(11, 11, 12, 0.12);
  box-shadow: none;
  backdrop-filter: blur(14px);
}
body.product-redesign-2027 .nav-row {
  max-width: 1240px;
  height: 68px;
  padding-inline: clamp(1rem, 3vw, 2rem);
  gap: clamp(1rem, 2.4vw, 2.2rem);
}
body.product-redesign-2027 .brand {
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 1.28rem;
  font-weight: 700;
  letter-spacing: -0.055em;
  white-space: nowrap;
}
body.product-redesign-2027 .nav-links { margin-inline: auto; gap: clamp(0.8rem, 2vw, 1.65rem); }
body.product-redesign-2027 .nav-links a {
  color: #55514d;
  font-size: 0.88rem;
  font-weight: 650;
}
body.product-redesign-2027 .nav-links a:hover { color: var(--brand-ink); }
body.product-redesign-2027 .nav-cta {
  min-height: 42px;
  padding: 0.65rem 1.05rem;
  border: 0;
  border-radius: 999px;
  background: var(--pg-sun);
  color: #0b0b0c;
  font-weight: 750;
  box-shadow: none;
}
body.product-redesign-2027 .nav-burger { width: 46px; height: 46px; border: 1px solid #55514d; border-radius: 50%; }
body.product-redesign-2027 .nav-mobile {
  position: fixed;
  inset: 68px 0 auto 0;
  max-height: calc(100dvh - 68px);
  overflow: auto;
  padding: 1.25rem 1rem max(1.5rem, env(safe-area-inset-bottom));
  background: #ffffff;
  border-bottom: 1px solid var(--line);
  box-shadow: 0 24px 50px rgba(11, 11, 12, 0.18);
}
body.product-redesign-2027 .nav-mobile-group { color: var(--brand-ink); }
body.product-redesign-2027 .nav-mobile-link { min-height: 46px; padding-block: 0.68rem; }

/* Home: one emotional visual, then fast decisions */

/* Search and discovery */

/* Directory/listing pages */

/* Venue details: practical first, evidence quieter */

/* Editorial guides */

/* About */

/* Source-bounded map: choices first, coordinate surface on demand */

/* Compact trust footer */
body.product-redesign-2027 .footer { margin-top: 0; padding: clamp(2.8rem, 6vw, 4.5rem) 0 max(1.2rem, env(safe-area-inset-bottom)); background: #0b0b0c; color: #f4f1ec; }
body.product-redesign-2027 .footer-wrap { max-width: 1240px; padding-inline: clamp(1rem, 4vw, 2rem); }
body.product-redesign-2027 .footer-nav { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 1.5rem; }
body.product-redesign-2027 .footer-col-h { margin: 0 0 .7rem; color: #dad5ce; font-size: .67rem; letter-spacing: .15em; }
body.product-redesign-2027 .footer-col ul { display: grid; gap: .18rem; }
body.product-redesign-2027 .footer-col a { display: flex; min-height: 38px; align-items: center; color: #dad5ce; font-size: .79rem; }

body.product-redesign-2027 .footer-updated-line { color: #bdb8b3; font-size: .68rem; line-height: 1.55; }
body.product-redesign-2027 .footer-updated-line { margin-top: .6rem; }

@media (min-width: 768px) {
  body.product-redesign-2027 .footer { padding: 1.5rem 0 .75rem; }
  body.product-redesign-2027 .footer-wrap { padding-block: 0; }
  body.product-redesign-2027 .footer-updated-line { margin-top: .35rem; }
}

/* Small, consent-first—not the first product screen */
body.product-redesign-2027 .privacy-consent {
  position: fixed;
  z-index: 300;
  right: 1rem;
  bottom: max(1rem, env(safe-area-inset-bottom));
  left: 1rem;
  display: flex;
  width: min(880px, calc(100% - 2rem));
  min-height: 72px;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-inline: auto;
  padding: .8rem .9rem .8rem 1rem;
  border: 1px solid #55514d;
  border-radius: 16px;
  background: #0b0b0c;
  color: #fff;
  box-shadow: 0 20px 55px rgba(11, 11, 12, .28);
}
body.product-redesign-2027 .privacy-consent-copy { display: flex; min-width: 0; flex: 1 1 auto; align-items: baseline; gap: .55rem; }
body.product-redesign-2027 .privacy-consent-copy strong { flex: 0 0 auto; color: #fff; font-size: .78rem; }
body.product-redesign-2027 .privacy-consent-copy span { color: #dad5ce; font-size: .72rem; line-height: 1.4; }
body.product-redesign-2027 .privacy-consent-copy a { flex: 0 0 auto; color: #dad5ce; font-size: .7rem; text-decoration: underline; }
body.product-redesign-2027 .privacy-consent-actions { display: flex; flex: 0 0 auto; gap: .45rem; }
body.product-redesign-2027 .privacy-consent .btn { min-height: 42px; padding-inline: .85rem; font-size: .72rem; }
body.product-redesign-2027 .privacy-consent .btn-ghost { border-color: #55514d; color: #fff; }
body.product-redesign-2027 .privacy-consent .btn-primary { background: #dad5ce; border-color: #dad5ce; color: #0b0b0c; }

@media (max-width: 1050px) {
  body.product-redesign-2027 .nav-links { display: none; }
  body.product-redesign-2027 .nav-row { justify-content: space-between; }
  body.product-redesign-2027 .nav-cta { margin-left: auto; }
  body.product-redesign-2027 .nav-burger { display: inline-flex; }
}

@media (max-width: 767px) {
  body.product-redesign-2027 .nav { height: 62px; }
  body.product-redesign-2027 .nav-row { height: 62px; padding-inline: .9rem; }
  body.product-redesign-2027 .brand { font-size: 1.12rem; }
  body.product-redesign-2027 .nav-cta { min-height: 40px; padding-inline: .8rem; font-size: .74rem; }
  body.product-redesign-2027 .nav-burger { width: 44px; height: 44px; }
  body.product-redesign-2027 .nav-mobile { inset-block-start: 62px; max-height: calc(100dvh - 62px); }

  body.product-redesign-2027 .footer { padding: .75rem 0 max(.5rem, env(safe-area-inset-bottom)); }
  body.product-redesign-2027 .footer-wrap { padding-block: 0; }
  body.product-redesign-2027 .footer-nav { grid-template-columns: repeat(3, minmax(0,1fr)); gap: .55rem; }
  body.product-redesign-2027 .footer-col-h { margin-bottom: .35rem; font-size: .59rem; }
  body.product-redesign-2027 .footer-col ul { gap: 0; }
  body.product-redesign-2027 .footer-col a { min-height: 28px; font-size: .66rem; line-height: 1.2; }
  body.product-redesign-2027 .footer-col:last-child { grid-column: auto; }
  body.product-redesign-2027 .footer-col:last-child ul { grid-template-columns: 1fr; }
  body.product-redesign-2027 .footer-updated-line { margin-top: .25rem; }

  body.product-redesign-2027 .privacy-consent { display: grid; grid-template-columns: minmax(0,1fr) auto; min-height: 60px; align-items: center; gap: .45rem; padding: .45rem .5rem .45rem .7rem; border-radius: 13px; }
  body.product-redesign-2027 .privacy-consent-copy { display: grid; grid-template-columns: auto auto; justify-content: start; gap: .1rem .45rem; }
  body.product-redesign-2027 .privacy-consent-copy strong { font-size: .72rem; }
  body.product-redesign-2027 .privacy-consent-copy span { display: none; }
  body.product-redesign-2027 .privacy-consent-copy a { margin: 0; align-self: center; }
  body.product-redesign-2027 .privacy-consent-actions { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: .3rem; }
  body.product-redesign-2027 .privacy-consent .btn { min-width: 64px; min-height: 44px; padding-inline: .55rem; }
}

@media (max-width: 380px) {
  body.product-redesign-2027 .nav-cta { display: none; }
  body.product-redesign-2027 .privacy-consent { right: .55rem; bottom: max(.55rem, env(safe-area-inset-bottom)); left: .55rem; width: calc(100% - 1.1rem); }
  body.product-redesign-2027 .privacy-consent-copy span { display: none; }
}
/* REFERENCE-REBUILD:START */
/* Visitor interface. Components own layout, typography and interaction states. */
:root,body.reference-rebuild{--brand:#0b0b0c;--brand-ink:#0b0b0c;--brand-bright:#f4f1ec;--accent:#0b0b0c;--accent-ink:#0b0b0c;--canvas:#f4f1ec;--surface:#fff;--surface-2:#f4f1ec;--surface-3:#f4f1ec;--sunken:#f4f1ec;--ink:#0b0b0c;--ink-muted:#55514d;--ink-subtle:#55514d;--text:#0b0b0c;--text-2:#55514d;--muted:#55514d;--hint:#55514d;--text-muted:#55514d;--line:#dad5ce;--line-strong:#bdb8b3;--line-control:#bdb8b3;--pink:#0b0b0c;--cyan:#0b0b0c;--mint:#0b0b0c;--yellow:#dad5ce;--font-body:Geist,Arial,sans-serif;--font-display:Geist,Arial,sans-serif;--font-mono:Geist,Arial,sans-serif;--max:1240px;--r-lg:16px;--r-pill:10px}
body.reference-rebuild{background:var(--canvas);color:var(--ink);font-family:Geist,Arial,sans-serif;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}
body.reference-rebuild *,body.reference-rebuild *:before,body.reference-rebuild *:after{box-sizing:border-box}
body.reference-rebuild h1,body.reference-rebuild h2,body.reference-rebuild h3{font-family:Geist,Arial,sans-serif;color:var(--ink);letter-spacing:-.035em;line-height:1.2}
body.reference-rebuild :focus-visible{outline:3px solid #0b0b0c;outline-offset:4px}
body.reference-rebuild button,body.reference-rebuild input,body.reference-rebuild select,body.reference-rebuild textarea{font:inherit}
body.reference-rebuild button{cursor:pointer}body.reference-rebuild button:disabled{cursor:default;opacity:.55}
body.reference-rebuild .wrap{width:100%;max-width:1240px;margin-inline:auto;padding-inline:28px}
body.reference-rebuild .section{padding-block:48px}
body.reference-rebuild .nav{background:#fff;border-bottom:1px solid var(--line);height:auto;min-height:76px;box-shadow:none;backdrop-filter:none}
body.reference-rebuild .nav-row{max-width:1240px;padding:0 28px;min-height:76px;gap:28px}
body.reference-rebuild .brand{font-size:24px;letter-spacing:-1px;font-weight:750;gap:10px;color:var(--ink);white-space:nowrap}
body.reference-rebuild .brand:before{display:none}body.reference-rebuild .brand img{width:33px;height:33px;object-fit:contain}
body.reference-rebuild .nav-links{gap:22px;margin-left:auto}body.reference-rebuild .nav-links a{font-size:14px;font-weight:600;color:#0b0b0c;padding:14px 0}
body.reference-rebuild .nav-links a:hover{color:var(--brand)}body.reference-rebuild .nav-cta{background:#f4f1ec;color:#0b0b0c;border:1px solid #dad5ce;border-radius:10px;min-height:44px;font-size:14px;padding:10px 16px}
body.reference-rebuild .nav-burger{border:1px solid var(--line);background:#fff;border-radius:10px;width:44px;height:44px}body.reference-rebuild .nav-mobile{background:#fff;top:76px}body.reference-rebuild .nav-mobile-link{font-size:18px;min-height:48px}
body.reference-rebuild .btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:46px;padding:11px 18px;border:1px solid var(--line-strong);border-radius:10px;background:#fff;color:var(--ink);font-size:14px;font-weight:650;line-height:1.45;text-decoration:none;box-shadow:none;white-space:normal}
body.reference-rebuild .btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}
body.reference-rebuild .btn-ghost{background:#fff;color:var(--ink);border-color:var(--line-strong)}
body.reference-rebuild .btn-primary:hover{background:#0b0b0c;color:#fff}body.reference-rebuild .btn-ghost:hover{background:#f4f1ec;color:#0b0b0c}
/* Home: a useful finder is the visual focus; no generic gym photography. */
/* Shared venue card. Never inherit the old cv illustration and fixed column grid. */
body.reference-rebuild .pg-place-card{display:flex;flex-direction:column;position:relative;min-width:0;height:auto;min-height:0;padding:0;margin:0;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:none;overflow:hidden;transform:none;grid-template-columns:none;gap:0}
body.reference-rebuild .pg-place-card:hover{transform:none;box-shadow:0 8px 28px #0b0b0c08;border-color:#bdb8b3}
body.reference-rebuild .favorite-btn{position:static;display:inline-flex;align-items:center;justify-content:center;gap:8px;flex-shrink:0;width:auto;min-width:44px;min-height:44px;height:auto;margin:0;padding:10px 14px;line-height:1.4;font-size:14px;font-weight:600;background:#fff;color:#55514d;border:1px solid #dad5ce;border-radius:10px;box-shadow:none;white-space:nowrap}
body.reference-rebuild .favorite-btn .fav-heart{font-family:Arial,sans-serif;line-height:1;font-size:22px}body.reference-rebuild .favorite-btn .fav-btn-label{font:inherit}
body.reference-rebuild .result-card .favorite-btn{width:44px;height:44px;min-width:44px;padding:0;background:#f4f1ec;border:1px solid #dad5ce;border-radius:50%}
body.reference-rebuild .result-card .favorite-btn .fav-btn-label{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.reference-rebuild .favorite-btn:hover{background:#f4f1ec;color:var(--brand);border-color:#bdb8b3}body.reference-rebuild .favorite-btn.is-saved,body.reference-rebuild .favorite-btn[aria-pressed=true]{background:#f4f1ec;border-color:#bdb8b3;color:#0b0b0c}
.result-card-photo{margin:0;display:block}.result-card-photo img{display:block;aspect-ratio:16/9;object-fit:cover;width:100%;height:auto}.result-card-photo figcaption{padding:9px 16px;font-size:12px;color:#55514d;background:#f4f1ec}.result-card-photo figcaption a{color:var(--brand)}
/* Directory headers and guide links keep contrast independent of sport colours. */body.reference-rebuild .hero .btn{font-size:14px}
/* Venue pages bring price and practical facts ahead of long editorial copy. */body.reference-rebuild .jump-nav-pills a{font-size:14px;padding:10px 14px;border-radius:8px;background:#fff;color:var(--brand);min-height:44px}
/* Search results use a full-width title; save never steals a text column. */body.reference-rebuild .result-card{display:flex;flex-direction:column;grid-template-columns:none;gap:0;min-height:0;height:auto;min-width:0;padding:0;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:none;overflow:hidden;transform:none}
body.reference-rebuild #pg-compare-tray{position:fixed;display:flex;align-items:center;justify-content:space-between;gap:12px;left:50%;bottom:24px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);padding:8px;background:#0b0b0c;color:#fff;border:1px solid #55514d;border-radius:12px;z-index:76;box-shadow:0 4px 28px #0b0b0c30}body.reference-rebuild #pg-compare-tray a{color:#fff;min-height:44px}#pg-compare-tray button{min-height:44px;color:#fff;border:1px solid #55514d;background:transparent}
.pg-toast{position:fixed;top:88px;left:50%;transform:translateX(-50%);z-index:110;max-width:calc(100% - 32px);width:max-content;padding:14px 18px;border:1px solid #55514d;border-radius:10px;background:#0b0b0c;color:#fff;font-size:14px;line-height:1.5;box-shadow:0 4px 18px #0b0b0c26;pointer-events:none;opacity:0;transition:opacity .16s ease}.pg-toast.show{opacity:1}
@media(max-width:767px){body.reference-rebuild #pg-compare-tray{width:auto;transform:none;bottom:calc(78px + env(safe-area-inset-bottom))!important}.pg-toast{top:80px}}
/* Publishing surfaces and consent. */
body.reference-rebuild .footer{background:#0b0b0c;color:#fff;padding:52px 0 28px;border-radius:0;margin:0;border:0}body.reference-rebuild .footer-wrap{max-width:1240px;padding-inline:28px}body.reference-rebuild .footer-nav a{font-size:14px;line-height:1.8;color:#dad5ce}body.reference-rebuild .footer-col-h{font-size:13px!important;color:#fff;letter-spacing:.04em}.footer-updated-line{font-size:12px;color:#bdb8b3}
body.reference-rebuild #privacy-consent{background:#0b0b0c;border:1px solid #55514d;border-radius:12px;color:#fff;padding:16px;gap:20px}#privacy-consent .privacy-consent-copy strong,#privacy-consent .privacy-consent-copy span{color:#fff;font-size:13px}#privacy-consent a{color:#dad5ce}#privacy-consent button{min-height:44px;font-size:13px}body.reference-rebuild #privacy-consent .btn-primary{background:#f4f1ec;color:#0b0b0c;border-color:#f4f1ec}body.reference-rebuild #privacy-consent .btn-ghost{background:transparent;color:#fff;border-color:#bdb8b3}
.rg-mobile-dock{display:none}
@media(max-width:1100px){.nav-row{gap:18px!important}body.reference-rebuild .nav-links{gap:16px}body.reference-rebuild .nav-links a{font-size:13px}body.reference-rebuild .nav-cta{display:none}}
@media(max-width:767px){
 body.reference-rebuild{font-size:16px;padding-bottom:66px}body.reference-rebuild .wrap{padding-inline:20px}body.reference-rebuild .section{padding-block:32px}body.reference-rebuild .nav,body.reference-rebuild .nav-row{min-height:68px}body.reference-rebuild .nav-row{padding-inline:20px}body.reference-rebuild .brand{font-size:22px}body.reference-rebuild .brand img{width:30px;height:30px}body.reference-rebuild .nav-links{display:none}body.reference-rebuild .nav-burger{display:flex;margin-left:auto}body.reference-rebuild .nav-mobile{top:68px;max-height:calc(100dvh - 68px);overflow:auto;padding-bottom:80px}
 body.reference-rebuild .pg-place-card{grid-template-columns:none;display:flex}body.reference-rebuild .result-card{display:flex;grid-template-columns:none}
 body.reference-rebuild:has(.search-filter-drawer[data-open=true]){overflow:hidden}
 .rg-mobile-dock{position:fixed;bottom:0;left:0;right:0;z-index:65;display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border-top:1px solid #dad5ce;min-height:64px;padding-bottom:env(safe-area-inset-bottom)}.rg-mobile-dock a{display:flex;align-items:center;justify-content:center;min-height:64px;color:#0b0b0c;font-size:13px;font-weight:600;text-decoration:none}.rg-mobile-dock a:hover{color:var(--brand);background:#f4f1ec}body.reference-rebuild #pg-favorites-widget{display:none}body.reference-rebuild #pg-compare-tray{bottom:calc(78px + env(safe-area-inset-bottom))!important;left:12px;right:12px;max-width:calc(100% - 24px);font-size:13px}body.reference-rebuild #privacy-consent{bottom:77px!important;left:12px;right:12px;width:auto;max-width:none;transform:none;max-height:45dvh;overflow:auto}.back-to-top{bottom:80px!important}
 body.reference-rebuild .footer{padding-block:40px 28px}body.reference-rebuild .footer-wrap{padding-inline:20px}.footer-nav{margin-top:32px;gap:20px}
}
@media(prefers-reduced-motion:reduce){body.reference-rebuild *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

body.reference-rebuild .favorite-list-actions{padding:16px 22px;border-top:1px solid var(--line);margin:0;gap:8px;flex-wrap:wrap}body.reference-rebuild .favorite-list-card .cv-head{margin:0;padding:0}.favorite-list-card .pg-place-area{margin-top:10px;margin-bottom:20px}.favorite-list-card .pg-place-content .record-status{margin-bottom:16px}

/* Remaining guide cards share the same readable sizing while their evidence markup stays stable. */
body.reference-rebuild .cat-venue-card:not(.pg-place-card){display:flex;flex-direction:column;gap:0;min-width:0;padding:24px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:none;grid-template-columns:none}
body.reference-rebuild .cat-venue-card:not(.pg-place-card)>p{display:block;overflow:visible;max-height:none;-webkit-line-clamp:unset;font-size:15px;line-height:1.8;margin:0 0 18px;padding:0;color:#55514d}
body.reference-rebuild #pg-favorites-widget{display:none}
@media(min-width:768px) and (max-width:1050px){body.reference-rebuild .nav-links{display:none}body.reference-rebuild .nav-burger{display:flex;margin-left:auto}body.reference-rebuild .nav-cta{display:inline-flex}body.reference-rebuild .nav-mobile{top:76px}}

/* All retained public templates use the same calm header surface. */
body.reference-rebuild .hero:not(.pg-venue-hero){background:#f4f1ec!important;background-image:none!important;border:1px solid #dad5ce;border-radius:16px;min-height:0;padding:38px!important;color:var(--ink)!important}
body.reference-rebuild .hero:not(.pg-venue-hero):before,body.reference-rebuild .hero:not(.pg-venue-hero):after{display:none!important}
body.reference-rebuild .hero:not(.pg-venue-hero) h1{color:var(--ink)!important}
body.reference-rebuild .hero:not(.pg-venue-hero) h1 span{color:var(--brand)!important}
body.reference-rebuild .hero:not(.pg-venue-hero) .btn-primary{background:var(--brand)!important;border-color:var(--brand)!important;color:#fff!important}
body.reference-rebuild .hero:not(.pg-venue-hero) .btn-ghost{background:#fff!important;border-color:var(--line-strong)!important;color:var(--ink)!important}
@media(max-width:767px){body.reference-rebuild .hero:not(.pg-venue-hero){padding:26px 24px!important}}

/* Keep the native search clear control unobstructed. */

/* Retained publishing templates: readable text on the shared light hero. */

@media(min-width:768px) and (max-width:1050px){body.reference-rebuild .nav-mobile{max-height:calc(100dvh - 76px);overflow-y:auto}}

/* A local training publication: an identified place, then distinct training choices. */

/* Search is a working directory: place, price and actions precede background. */
body.reference-rebuild .result-card{border-radius:12px;background:#fff;box-shadow:none;align-self:start}

/* A place introduction and a distinct, compact visit panel. */

/* Comparison component. No dependency on legacy card or table class names. */
body .pg-compare-card-actions{display:flex;justify-self:end;gap:14px;margin:0;padding:0}
body .pg-compare-card-actions button{min-height:44px}

/* Planner: three starting choices, optional preferences and a useful shortlist. */

/* Google-served maps: the iframe is created only after visitor activation. */

/* Pattaya Gym / September 2026. Shared design language and editorial layouts. */
body.flagship-2026{--brand:#0b0b0c;--brand-ink:#0b0b0c;--brand-bright:#f4f1ec;--accent:#0b0b0c;--accent-ink:#0b0b0c;--canvas:#f4f1ec;--surface:#fff;--surface-2:#f4f1ec;--surface-3:#dad5ce;--sunken:#f4f1ec;--ink:#0b0b0c;--ink-muted:#55514d;--ink-subtle:#55514d;--text:#0b0b0c;--text-2:#55514d;--muted:#55514d;--hint:#55514d;--text-muted:#55514d;--line:#dad5ce;--line-strong:#bdb8b3;--line-control:#55514d;--pink:#0b0b0c;--cyan:#0b0b0c;--mint:#0b0b0c;--yellow:#dad5ce;--font-display:Geist,Geist,Arial,sans-serif;--font-mono:Geist,Arial,sans-serif;background:var(--canvas);color:var(--ink);line-height:1.7}
body.flagship-2026 :is(h1,h2,h3){font-family:var(--font-display);font-weight:600;color:var(--ink);letter-spacing:-.045em;text-wrap:balance}
body.flagship-2026 :focus-visible{outline:3px solid #55514d;outline-offset:4px}
body.flagship-2026 ::selection{background:#dad5ce;color:#0b0b0c}
body.flagship-2026 :is(.wrap,.nav-row,.footer-wrap){max-width:1304px;padding-inline:32px}
body.flagship-2026 .nav{background:#f4f1ecf5;border-bottom:1px solid #dad5ce;backdrop-filter:blur(16px)}
body.flagship-2026 .nav-row{min-height:88px;gap:28px}
body.flagship-2026 .brand{font-family:var(--font-display);font-size:27px;letter-spacing:-1.3px;gap:9px}
body.flagship-2026 .brand img{width:42px;height:42px}
body.flagship-2026 .nav-links{gap:25px}
body.flagship-2026 .nav-links a{font-size:14px;color:#0b0b0c;font-weight:550}
body.flagship-2026 .nav-links a[aria-current=page]{color:#0b0b0c;border-bottom:2px solid #0b0b0c}
body.flagship-2026 .nav-cta{background:#0b0b0c;color:#fff;border:1px solid #0b0b0c;border-radius:100px;padding:12px 20px;min-height:46px;font-size:13px}
body.flagship-2026 .nav-burger{border-radius:50%;background:transparent;border-color:#bdb8b3}
body.flagship-2026 .nav-mobile{top:88px;background:#f4f1ec}
body.flagship-2026 :is(.btn){border-radius:100px;min-height:48px;padding:12px 21px;font-size:14px;font-weight:600;transition:background-color .18s,border-color .18s,box-shadow .18s}
body.flagship-2026 :is(.btn-primary){background:#0b0b0c;border-color:#0b0b0c;color:#fff}
body.flagship-2026 :is(.btn-ghost){background:#fff;border-color:#bdb8b3;color:#0b0b0c}
body.flagship-2026 :is(.btn-primary):hover{background:#55514d;border-color:#55514d;color:#fff}
body.flagship-2026 :is(.btn-ghost):hover{background:#f4f1ec;border-color:#55514d;color:#0b0b0c}
body.flagship-2026 .favorite-btn{color:#0b0b0c;background:#fff;border:1px solid #dad5ce;border-radius:100px;min-height:44px;box-shadow:none}
body.flagship-2026 .favorite-btn:is(.is-saved,[aria-pressed=true]){color:#0b0b0c;background:#dad5ce;border-color:#dad5ce}
body.flagship-2026 .favorite-btn .fav-heart{font-size:23px}
/* Category and editorial families keep their full content and anchors. */
body.flagship-2026 .hero:not(.pg-venue-hero){background:#dad5ce!important;background-image:none!important;border-color:#dad5ce;border-radius:26px;padding:50px!important;margin-block:24px}
body.flagship-2026 .hero:not(.pg-venue-hero) h1{font-family:var(--font-display);font-weight:600;font-size:clamp(38px,4.5vw,62px)!important;line-height:1.08!important;letter-spacing:-.055em}
body.flagship-2026 .hero:not(.pg-venue-hero) h1 span{color:#0b0b0c!important}
body.flagship-2026 .hero:not(.pg-venue-hero) .btn-primary{background:#0b0b0c!important;border-color:#0b0b0c!important}
body.flagship-2026 .section{padding-block:48px}
body.flagship-2026 :is(.guide-hub-grid){gap:24px}
body.flagship-2026 .pg-place-card,body.flagship-2026 .cat-venue-card:not(.pg-place-card){border-radius:23px;border-color:#dad5ce;box-shadow:none;background:white}
body.flagship-2026 .pg-place-card:hover{border-color:#bdb8b3;box-shadow:0 12px 32px #0b0b0c09}
body.flagship-2026 .jump-nav-pills a{color:#0b0b0c;border-radius:100px}
/* Venue introduction: identifiable place, a distinct visit panel, readable detail. */
/* Footer is a calm end to the publication, with the same navigation and identity. */
body.flagship-2026 .footer{background:#dad5ce;border-top:1px solid #dad5ce;color:#0b0b0c;padding-block:64px 32px}
body.flagship-2026 .footer-col-h{font-family:Geist,Arial,sans-serif;font-size:13px;font-weight:650;color:#0b0b0c}
body.flagship-2026 .footer-col a{font-size:14px;color:#55514d;padding-block:8px}
body.flagship-2026 :is(.footer-updated-line){color:#55514d;border-color:#dad5ce}
@media(min-width:768px) and (max-width:1100px){body.flagship-2026 .nav-links{display:none}body.flagship-2026 .nav-burger{display:flex;margin-left:auto}body.flagship-2026 .nav-cta{display:inline-flex}}
@media(max-width:767px){
 body.flagship-2026{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
 body.flagship-2026 :is(.wrap,.nav-row,.footer-wrap){padding-inline:20px}
 body.flagship-2026 .nav,body.flagship-2026 .nav-row{min-height:72px}
 body.flagship-2026 .brand{font-size:24px;letter-spacing:-1px;gap:7px}
 body.flagship-2026 .brand img{width:36px;height:36px}
 body.flagship-2026 .nav-links,body.flagship-2026 .nav-cta{display:none}
 body.flagship-2026 .nav-mobile{top:72px;max-height:calc(100dvh - 72px);padding-bottom:100px}
 body.flagship-2026 .nav-mobile-link{font-family:var(--font-display);font-size:22px;color:#0b0b0c}
 body.flagship-2026 .hero:not(.pg-venue-hero){padding:28px 24px!important;border-radius:22px;margin-block:20px}
 body.flagship-2026 .hero:not(.pg-venue-hero) h1{font-size:38px!important;line-height:1.1!important}
 body.flagship-2026 .section{padding-block:34px}
 body.flagship-2026 .footer{padding-block:42px 28px}
 body.flagship-2026 .footer-nav{gap:24px}
 body.flagship-2026 .footer-col a{font-size:13px}
 body.flagship-2026 .rg-mobile-dock{min-height:72px;background:#f4f1ecf7;border-color:#dad5ce;backdrop-filter:blur(16px);padding-top:4px}
 body.flagship-2026 .rg-mobile-dock a{min-height:68px;flex-direction:column;gap:4px;color:#55514d;font-size:10px;font-weight:600;line-height:1.3;padding-block:8px}
 body.flagship-2026 .rg-mobile-dock svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
 body.flagship-2026 .rg-mobile-dock a[aria-current=page]{color:#0b0b0c;background:#dad5ce}
 body.flagship-2026 .rg-mobile-dock a:hover{color:#0b0b0c;background:#dad5ce}
 body.flagship-2026:has(#pg-compare-tray:not([hidden])){padding-bottom:calc(158px + env(safe-area-inset-bottom))}
 body.flagship-2026:has(#pg-compare-tray:not([hidden])) .back-to-top{bottom:calc(154px + env(safe-area-inset-bottom))!important}
 body.flagship-2026:has(#privacy-consent) :is(#pg-compare-tray,.back-to-top){visibility:hidden}
}
@media(prefers-reduced-motion:reduce){body.flagship-2026 *{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

/* September 2026 tool surfaces. Append after the existing component styles.
   Presentation only: runtime visibility, native form controls and URL state remain owned by each tool. */
body.flagship-2026 {
  --ft-forest:#0b0b0c;
  --ft-ink:#0b0b0c;
  --ft-canvas:#f4f1ec;
  --ft-white:#fff;
  --ft-line:#dad5ce;
  --ft-control:#55514d;
  --ft-muted:#55514d;
  --ft-lime:#dad5ce;
  --ft-soft:#f4f1ec;
  --ft-heading:Geist,Geist,Arial,sans-serif;
}

/* Search: one clear search surface above a calm two-column directory. */
/* Flatten this non-semantic wrapper so the unchanged source markup can put
   background, hours and access above the price, with all actions in the footer. */

/* Save/Remove labels stay in the accessibility tree when the control is icon-only. */

/* Compare: selected venues, a clear product selector and an uninterrupted facts table. */

/* Planner: the three starting choices form a single useful object. */

/* Saved places are a useful card collection even when a record is unavailable. */
body.flagship-2026:has(#favorites-section) #main>.hero {max-width:1176px;margin:32px auto;background:var(--ft-soft)!important;border:1px solid var(--ft-line);border-radius:24px;padding:32px!important;box-shadow:none}
body.flagship-2026:has(#favorites-section) #main>.hero h1 {font:700 48px/1.08 var(--ft-heading);letter-spacing:-.035em;color:var(--ft-ink)!important;margin-bottom:16px}
body.flagship-2026:has(#favorites-section) #main>.hero h1 span {color:var(--ft-forest)!important}
body.flagship-2026 #favorites-list {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
body.flagship-2026 #favorites-empty {max-width:none;margin:0;padding:36px;border:1px solid var(--ft-line);border-radius:24px;background:var(--ft-white);color:var(--ft-ink)}
body.flagship-2026 #favorites-empty h2 {font-size:30px;line-height:1.25}
body.flagship-2026 #favorites-empty p {max-width:700px;font-size:16px;line-height:1.7;color:var(--ft-muted)}

/* Map filters, property cards and the opt-in Google map use the same control language. */

/* Route-local button overrides also cover empty, load-more and error states. */
body.flagship-2026:has(#favorites-section) #main>.hero .btn {min-height:48px;padding:11px 20px;border-radius:999px;background:var(--ft-white)!important;border-color:var(--ft-control)!important;color:var(--ft-forest)!important;font:600 15px/1.5 Geist,Arial,sans-serif;box-shadow:none}
body.flagship-2026:has(#favorites-section) #main>.hero .btn-primary {background:var(--ft-forest)!important;border-color:var(--ft-forest)!important;color:var(--ft-white)!important}
body.flagship-2026:has(#favorites-section) #main>.hero .btn:hover:not(:disabled) {background:var(--ft-soft)!important;color:var(--ft-forest)!important}

@media(max-width:1100px) {
  body.flagship-2026 #favorites-list {grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:1000px) {
  body.flagship-2026:has(#favorites-section) #main>.hero {margin-inline:32px}
}
@media(max-width:767px) {
  body.flagship-2026:has(#favorites-section) #main>.hero {margin:24px 20px;padding:24px!important;border-radius:22px}
  body.flagship-2026:has(#favorites-section) #main>.hero h1 {font-size:36px}
  body.flagship-2026 #favorites-list {grid-template-columns:1fr;gap:20px}
  body.flagship-2026 #favorites-empty {padding:28px 22px}
  body.flagship-2026 #favorites-empty h2 {font-size:26px}
}
@media(max-width:540px) {
  body.flagship-2026 .pg-compare-card-actions {justify-self:end;gap:12px}
  body.flagship-2026 .pg-compare-card-actions .pg-compare-link-button {min-height:44px;padding:6px 0;font-size:13px}
}

/* Venue layout: useful introduction, genuine media and a concise visit decision. */
body.flagship-2026 .pg-video-stage{position:relative;min-height:320px;flex:1;display:flex;background:#0b0b0c;aspect-ratio:16/9}
body.flagship-2026 .pg-video-stage>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
body.flagship-2026 .pg-video-stage:after{content:'';position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#0b0b0ce8);pointer-events:none}
body.flagship-2026 .pg-video-stage iframe{width:100%;height:100%;position:absolute;inset:0;border:0;background:#0b0b0c;z-index:3}
body.flagship-2026 .pg-video-play{position:absolute;z-index:2;inset:0;display:flex;align-items:flex-end;gap:14px;padding:26px;color:#fff;background:none;border:0;text-decoration:none;text-align:left;font:600 19px Geist,Arial,sans-serif;cursor:pointer}
body.flagship-2026 .pg-video-play small{display:block;margin-top:7px;font-size:12px;font-weight:450;color:#fff}
@media(max-width:1000px){
 body.flagship-2026 .pg-video-stage{min-height:290px}
}
@media(max-width:760px){
 body.flagship-2026 .pg-video-stage{min-height:205px;aspect-ratio:16/10}
 body.flagship-2026 .pg-video-play{padding:19px;font-size:16px;gap:11px}
 body.flagship-2026 .pg-video-play small{font-size:11px}
}

/* Practical venue information: facts stay in the page; presentation groups the decisions. */
/* Pricing remains one exact product per row. Quantity, conditions and dated sources travel together. */
/* Helpful decisions share a rail, rather than interrupting the factual description. */
/* External resources are labelled as destinations. A map loads only on demand. */
/* Source and background material remain in native, keyboard-accessible disclosures. */

/* Venue continuation and the evidence-preserving fallback for entries without a practical profile. */

/* Fallback records use the same quiet reading width for practical details and their existing article. */

/* Publication design: retain Circuit PG, forest green, lime and local fonts. */
body.publication{--publication-ink:#0b0b0c;--publication-paper:#f4f1ec;--publication-line:#dad5ce;color:var(--publication-ink);background:var(--publication-paper)}
.publication .pg-icon{width:20px;height:20px;display:inline-block;vertical-align:middle;flex:none}.publication a{ text-underline-offset:4px}.publication :focus-visible{outline:3px solid #55514d;outline-offset:4px}.publication :target{scroll-margin-top:110px}.publication h1,.publication h2,.publication h3{font-family:Geist,Geist,sans-serif;letter-spacing:-.045em}.publication p{line-height:1.65}.publication .favorite-btn{border-radius:5px;min-width:48px;min-height:44px;display:inline-flex;gap:8px;align-items:center;justify-content:center}.publication .favorite-btn[aria-pressed=true]{background:#dad5ce;color:#0b0b0c}.publication .favorite-btn[aria-pressed=true] .pg-icon{fill:currentColor}.publication .fav-heart{font-size:0;display:inline-flex}.publication .fav-heart:before{display:none!important}.publication .fav-heart .pg-icon{font-size:16px}
/* One venue template, no photographic placeholders and no duplicate article. */
/* Existing live tool controllers remain the single interaction implementation. */
.publication .result-card{border-radius:5px!important;box-shadow:none!important;border-color:#bdb8b3!important;overflow:hidden}.publication .result-card:before{display:none!important}.publication .result-card-photo img{aspect-ratio:16/9;object-fit:cover}.publication .result-card-photo{margin:0!important}.publication .result-card-photo a{display:block}.publication .footer{border-top:1px solid #dad5ce}.publication .back-to-top{font-size:0}.publication .back-to-top .pg-icon{font-size:16px}
@media(min-width:1000px){.publication .result-card{display:flex!important;flex-direction:column!important}.publication .result-card-photo{order:0}}
@media(prefers-reduced-motion:reduce){.publication *{scroll-behavior:auto!important;transition:none!important}}
.publication .favorite-card{border-radius:5px!important;box-shadow:none!important}.publication .pg-compare-card-actions{display:flex;flex-wrap:wrap;gap:10px}.publication .pg-compare-link-button{min-height:44px}.publication .pg-compare-tray{bottom:85px}@media(min-width:761px){.publication .pg-compare-tray{bottom:15px}}

.publication button{font-family:Geist,sans-serif}

.publication .favorite-list-card{border-radius:6px!important;box-shadow:none!important}
/* Focused refinement: same identity, less introductory overhead. */.publication .favorite-list-card{padding-top:18px}.publication .favorite-list-card p{margin-block:10px}.publication .pg-compare-tray{position:static!important;transform:none!important;width:auto!important;max-width:1240px;margin:20px auto 90px!important}.publication .result-card{padding:18px!important;gap:8px!important}.publication .pg-compare-card-actions{gap:12px}
@media(max-width:760px){.publication .result-card{padding:15px!important}.publication .pg-compare-card-actions{grid-column:1/-1;gap:18px}.publication .pg-compare-card-actions button{padding:6px 0;min-height:44px}.publication .pg-compare-tray{margin:16px 20px 88px!important}}.publication .favorite-list-card{min-height:0!important}.publication .favorite-list-card .cat-venue-desc{display:none}

/* Shared map layout is self-contained, including outside legacy venue bodies. */
/* Corpus venue rollout: shared shell, compact onward journeys, no photo requirement. */
body.publication .publication-compact-card{min-height:0!important;border-radius:5px!important;display:flex!important;flex-direction:column!important;background:#fff!important;padding:0!important}
/* Compact discovery rows: the same facts, fewer stacked decorative bands. */


/* Shared map layout is self-contained, including outside legacy venue bodies. */

/* Canonical sports layout primitives. */
body.sports-layout{--vc-ink:#0b0b0c;--vc-muted:#55514d;--vc-line:#dad5ce;--vc-accent:#55514d;--vc-paper:#fff;--ink:#0b0b0c;--paper:#fff;--brand:#0b0b0c;--accent:#55514d;background:#fff!important;color:var(--vc-ink)!important;font-family:Geist,Arial,sans-serif!important;font-size:16px;line-height:1.6}
.sports-layout *{box-sizing:border-box}.sports-layout h1,.sports-layout h2,.sports-layout h3{font-family:Geist,Arial,sans-serif!important;color:var(--vc-ink)!important;font-style:normal!important;letter-spacing:-.045em;line-height:1.12}
.sports-layout p{color:inherit}.sports-layout a{color:inherit}.sports-layout a:hover{color:var(--vc-accent)}.sports-layout :focus-visible{outline:3px solid #55514d!important;outline-offset:5px!important}.sports-layout svg{flex:none}.sports-layout .pg-icon{width:22px!important;height:22px!important;vertical-align:middle}.sports-layout [id]{scroll-margin-top:100px}.sports-layout [hidden]{display:none!important}
.sports-layout .nav{background:rgba(255, 255, 255, .98)!important;border-bottom:1px solid var(--vc-line)!important;box-shadow:none!important;backdrop-filter:none!important}.sports-layout .nav-row{max-width:1320px!important;height:82px!important;padding:0 36px!important;gap:30px}.sports-layout .brand{gap:10px!important}.sports-layout .brand img{filter:grayscale(1) brightness(.35)}.sports-layout .nav-links{gap:24px!important}.sports-layout .nav-links a{font-family:Geist,Arial,sans-serif!important;font-size:13px!important;font-weight:600!important;color:#0b0b0c!important}.sports-layout .nav-cta{border-radius:3px!important;background:#0b0b0c!important;color:white!important;font-family:Geist,Arial,sans-serif!important;font-size:13px!important;padding:12px 20px!important}.sports-layout .nav-burger{border-radius:3px!important;color:#0b0b0c!important}.sports-layout .nav-mobile{background:#fff!important}.sports-layout .nav-mobile-link,.sports-layout .nav-mobile-group{color:#0b0b0c!important}.sports-layout .rg-mobile-dock{background:#fff!important;border-top:1px solid #dad5ce!important}.sports-layout .rg-mobile-dock a{color:#0b0b0c!important}.sports-layout .back-to-top{background:white!important;color:#0b0b0c!important;border:1px solid #dad5ce!important;box-shadow:none!important}.sports-layout .favorite-btn{color:#0b0b0c!important;border:1px solid #bdb8b3!important;background:white!important;border-radius:3px!important;min-width:44px;min-height:44px}.sports-layout .favorite-btn[aria-pressed=true]{background:#0b0b0c!important;color:white!important}
/* Home: one photograph, one clear search, small practical rows. */
/* Venue: identity and practical facts first; no fake photo block. */.sports-layout details{border-radius:0!important;box-shadow:none!important}.sports-layout summary{min-height:48px;cursor:pointer;padding:14px 0!important;font-size:14px!important;line-height:1.55!important;color:#0b0b0c!important}.sports-layout .publication-compact-card{padding:20px 0!important;background:none!important;border:0!important;border-top:1px solid #dad5ce!important;border-radius:0!important;box-shadow:none!important}.sports-layout .publication-compact-card h3{font-size:20px!important}.sports-layout #recently-viewed-mount{margin:28px 0}
/* Article: readable text, an answer at the top, contents in the margin. */
/* Shared finish: no repeated pale boxes or ornamental colour bands. */
.sports-layout .footer{background:#f4f1ec!important;border-top:1px solid #dad5ce!important;color:#0b0b0c!important;margin-top:30px!important;padding:40px 0!important}.sports-layout .footer-wrap{max-width:1248px!important;padding:0!important}.sports-layout .footer a,.sports-layout .footer h2,.sports-layout .footer p,.sports-layout .footer span{color:#55514d!important}.sports-layout .footer-nav h2{font-size:12px!important;text-transform:uppercase;letter-spacing:.08em}.sports-layout .progress-bar{background:#55514d!important}
@media(max-width:1100px){.sports-layout .nav-links{gap:14px!important}.sports-layout .nav-row{gap:16px!important}}
@media(max-width:760px){.sports-layout{padding-bottom:76px!important}.sports-layout .nav-row{height:64px!important;padding:0 20px!important}.sports-layout .brand img{width:29px!important;height:29px!important}.sports-layout .publication-compact-card{margin-bottom:20px!important}.sports-layout .footer{padding:30px 20px!important;margin-top:12px!important}.sports-layout .footer-wrap{width:100%!important}.sports-layout .footer-nav{gap:20px!important}.sports-layout .footer h2{font-size:13px!important}.sports-layout .footer a{font-size:12px}.sports-layout .rg-mobile-dock{height:62px!important}.sports-layout .back-to-top{bottom:78px!important}}
@media(prefers-reduced-motion:reduce){.sports-layout *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* Refinements after inspecting the actual rendered pages. */
html:has(body.sports-layout){background:#fff!important}
.sports-layout .brand svg{filter:grayscale(1) brightness(.35)}
/* Visible control boundaries on white exceed 3:1. */
.sports-layout .favorite-btn,.sports-layout .nav-burger{border-color:#55514d!important}
/* Focused refinement: directory first, regional feature second. */
/* Scope beats the legacy search bundle, which carries high-specificity overrides. */


body.sports-design.publication.reference-rebuild{--sp-dark:#0b0b0c;--sp-ink:#0b0b0c;--sp-paper:#f4f1ec;--sp-acid:#bdb8b3;--sp-line:#dad5ce;--brand:#0b0b0c;--ink:#0b0b0c;--muted:#55514d;--bg:#f4f1ec;--surface:#f4f1ec;--lime:#bdb8b3;--vc-line:#dad5ce;background:#f4f1ec!important;color:#0b0b0c!important;font-family:Geist,Arial,sans-serif!important}
body.sports-design.publication.reference-rebuild h1,body.sports-design.publication.reference-rebuild h2,body.sports-design.publication.reference-rebuild h3{font-family:BarlowSport,Impact,sans-serif!important;font-weight:700!important;letter-spacing:.005em!important}
body.sports-design.publication.reference-rebuild h2{font-size:36px!important;line-height:1.08!important}body.sports-design.publication.reference-rebuild h3{font-size:28px!important;line-height:1.12!important}
body.sports-design.publication.reference-rebuild a{color:inherit}body.sports-design.publication.reference-rebuild :focus-visible{outline:3px solid #55514d!important;outline-offset:4px!important}body.sports-design.publication.reference-rebuild svg.pg-icon{width:20px;height:20px}
body.sports-design.publication.reference-rebuild header.nav{background:#0b0b0c!important;color:#f4f1ec!important;border-bottom:1px solid #55514d!important;backdrop-filter:none!important}
body.sports-design.publication.reference-rebuild .nav-row{max-width:1280px;min-height:80px!important}body.sports-design.publication.reference-rebuild .brand img{filter:brightness(0) invert(1)!important}
body.sports-design.publication.reference-rebuild .nav-links a{color:#f4f1ec!important;font-size:13px!important}body.sports-design.publication.reference-rebuild .nav-cta{background:#bdb8b3!important;color:#0b0b0c!important;border:0!important;border-radius:4px!important;font-size:13px!important}body.sports-design.publication.reference-rebuild .nav-burger{color:#fff!important;border:1px solid #55514d!important;border-radius:4px!important;background:none!important}body.sports-design.publication.reference-rebuild .nav-burger-bar{background:#f4f1ec!important}
body.sports-design.publication.reference-rebuild #nav-mobile{background:#0b0b0c!important;color:#fff!important}body.sports-design.publication.reference-rebuild #nav-mobile a{color:#fff!important}
body.sports-design.publication.reference-rebuild .footer{background:#0b0b0c!important;color:#dad5ce!important;border:0!important;margin-top:0!important}body.sports-design.publication.reference-rebuild .footer p,body.sports-design.publication.reference-rebuild .footer a,body.sports-design.publication.reference-rebuild .footer h2,body.sports-design.publication.reference-rebuild .footer small{color:#dad5ce!important}body.sports-design.publication.reference-rebuild .footer h2{font:600 12px/1.5 Geist,sans-serif!important}body.sports-design.publication.reference-rebuild .footer .brand img{filter:brightness(0) invert(1)!important}
body.sports-design.publication.reference-rebuild .pg-compare-tray{background:#bdb8b3!important;color:#0b0b0c!important}body.sports-design.publication.reference-rebuild .pg-compare-tray a,body.sports-design.publication.reference-rebuild .pg-compare-tray button{color:#0b0b0c!important}
body.sports-design.publication.reference-rebuild .sp-home{max-width:none!important;padding:0!important;margin:0!important}
/* Venue identity is a single composition, followed by a warm reading surface. */body.sports-design.publication.reference-rebuild .publication-compact-card{background:#dad5ce!important;padding:18px!important;border:0!important;border-radius:6px!important}body.sports-design.publication.reference-rebuild .publication-compact-card h3{font-size:26px!important}
/* Reading: contextual cover, options together, one continuous article. */
/* Compact discovery and shared shortlist states. */body.sports-design.publication.reference-rebuild .fav-card{background:#ffffff!important;border:1px solid #bdb8b3!important;border-radius:6px!important}
@media(max-width:760px){
body.sports-design.publication.reference-rebuild .nav-row{min-height:68px!important}body.sports-design.publication.reference-rebuild .brand img{width:30px!important;height:30px!important}body.sports-design.publication.reference-rebuild .publication-compact-card{padding:18px!important}
}
@media(prefers-reduced-motion:reduce){body.sports-design.publication.reference-rebuild *,body.sports-design.publication.reference-rebuild *::before,body.sports-design.publication.reference-rebuild *::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
body.sports-design.publication.reference-rebuild .pg-compare-link-button{color:#0b0b0c!important;min-height:38px!important}
body.sports-design.publication.reference-rebuild .favorite-list-card{background:#ffffff!important;border:1px solid #bdb8b3!important;border-radius:6px!important;overflow:hidden}
body.sports-design.publication.reference-rebuild .favorite-list-card .result-card-photo figcaption{background:#dad5ce!important;color:#55514d!important;font-size:11px!important}
body.sports-design.publication.reference-rebuild .favorite-list-card .pg-place-name{font:700 30px/1.1 BarlowSport,sans-serif!important}
body.sports-design.publication.reference-rebuild .favorite-list-card .btn-primary{background:#bdb8b3!important;color:#0b0b0c!important;border-color:#bdb8b3!important}
body.sports-design.publication.reference-rebuild .favorite-list-card .btn{border-radius:4px!important}
@media(max-width:760px){body.sports-design.publication.reference-rebuild .favorite-list-card .result-card-photo img{max-height:170px!important;object-fit:cover!important}}
body.sports-design.publication.reference-rebuild .pg-compare-tray a{background:#0b0b0c!important;color:#f4f1ec!important;border-radius:4px!important}
body.sports-design.publication.reference-rebuild .pg-compare-tray button{background:transparent!important;color:#0b0b0c!important;border-color:#55514d!important;border-radius:4px!important}
body.sports-design.publication.reference-rebuild .nav :focus-visible,body.sports-design.publication.reference-rebuild .footer :focus-visible{outline-color:#bdb8b3!important}
body.sports-design.publication.reference-rebuild #nav-mobile a[aria-current=page]{background:#bdb8b3!important;color:#0b0b0c!important;border-radius:4px!important}
body.sports-design.publication.reference-rebuild #nav-mobile .nav-mobile-group{color:#bdb8b3!important;font:600 11px/1.5 Geist,sans-serif!important;letter-spacing:.1em!important}
body.sports-design.publication.reference-rebuild #nav-mobile .nav-mobile-link{font-size:17px!important;min-height:44px!important;padding:11px 12px!important;border-color:#55514d!important}
body.sports-design.publication.reference-rebuild .favorite-list-card .pg-place-description{font-size:14px!important;line-height:1.65!important}
body.sports-design.publication.reference-rebuild #recently-viewed-mount h2,body.sports-design.publication.reference-rebuild #recently-viewed-mount h3{font:600 12px/1.5 Geist,sans-serif!important;letter-spacing:.06em!important}

/* Family-specific composition. Shared behavior and factual data remain separate. */
body.sports-design.publication.reference-rebuild{--paper:#f4f1ec;--lime:#bdb8b3;scroll-padding-bottom:120px}
body.sports-design.publication.reference-rebuild [id]{scroll-margin-top:110px;scroll-margin-bottom:150px}
body.sports-design.publication.reference-rebuild .hero{padding:28px 0!important;background:#dad5ce!important;color:#0b0b0c!important;text-align:left!important}
body.sports-design.publication.reference-rebuild .hero h1{font-size:clamp(38px,5vw,64px)!important;line-height:1.04!important;color:#0b0b0c!important;max-width:950px!important}
body.sports-design.publication.reference-rebuild .publication-compact-card,body.sports-design.publication.reference-rebuild .cat-venue-card{background:#ffffff!important;border:1px solid #bdb8b3!important;border-left:3px solid #bdb8b3!important;border-radius:5px!important;box-shadow:none!important;padding:22px!important}
body.sports-design.publication.reference-rebuild .btn,body.sports-design.publication.reference-rebuild button,body.sports-design.publication.reference-rebuild select,body.sports-design.publication.reference-rebuild input,body.sports-design.publication.reference-rebuild textarea{border-radius:4px!important}
body.sports-design.publication.reference-rebuild select,body.sports-design.publication.reference-rebuild input,body.sports-design.publication.reference-rebuild textarea{background:#ffffff;color:#0b0b0c;min-height:44px;font-size:16px}
body.sports-design.publication.reference-rebuild .btn-primary{background:#bdb8b3!important;color:#0b0b0c!important;border:1px solid #55514d!important;box-shadow:none!important}
body.sports-design.publication.reference-rebuild .btn-ghost{background:transparent!important;color:#0b0b0c!important;border:1px solid #55514d!important;box-shadow:none!important}
body.sports-design.publication.reference-rebuild .footer{margin-top:40px!important}
body.sports-design.publication.reference-rebuild .nav{position:sticky!important;top:0}
body.sports-design.publication.reference-rebuild .rg-mobile-dock{padding-bottom:env(safe-area-inset-bottom);height:auto!important;min-height:62px}
body.sports-design.publication.reference-rebuild .pg-compare-tray{bottom:calc(74px + env(safe-area-inset-bottom))!important;max-width:calc(100vw - 24px)!important}
body.sports-design.publication.reference-rebuild .pg-toast{top:auto!important;bottom:calc(145px + env(safe-area-inset-bottom))!important;height:auto;max-width:calc(100vw - 24px)!important;white-space:normal!important;background:#0b0b0c;border-radius:4px}
body.sports-design.publication.reference-rebuild .back-to-top{bottom:calc(150px + env(safe-area-inset-bottom))!important}
body.sports-design.publication.reference-rebuild .nav-mobile{max-height:calc(100dvh - 80px)!important;overflow:auto!important;padding-bottom:120px!important}
body.sports-design.publication.reference-rebuild :focus-visible{scroll-margin-top:120px;scroll-margin-bottom:180px}
@media(max-width:760px){body.sports-design.publication.reference-rebuild{padding-bottom:100px!important}body.sports-design.publication.reference-rebuild .nav{position:relative!important}body.sports-design.publication.reference-rebuild .hero{padding:20px 0!important}body.sports-design.publication.reference-rebuild .hero h1{font-size:38px!important}body.sports-design.publication.reference-rebuild .cat-venue-card{padding:18px!important}body.sports-design.publication.reference-rebuild .rg-mobile-dock a{min-height:48px!important;font-size:12px!important}body.sports-design.publication.reference-rebuild .footer{margin-top:24px!important}}
@media(max-width:360px){body.sports-design.publication.reference-rebuild .rg-mobile-dock{position:static!important;display:grid!important}body.sports-design.publication.reference-rebuild .pg-compare-tray{position:static!important;margin:12px!important}body.sports-design.publication.reference-rebuild .back-to-top{display:none!important}}
@media(max-height:500px){body.sports-design.publication.reference-rebuild .rg-mobile-dock,body.sports-design.publication.reference-rebuild .pg-compare-tray{position:static!important}body.sports-design.publication.reference-rebuild .nav{position:relative!important}}
body.sports-design.publication.reference-rebuild .rg-mobile-dock{background:#0b0b0c!important;color:#f4f1ec!important;border-color:#55514d!important}body.sports-design.publication.reference-rebuild .rg-mobile-dock a,body.sports-design.publication.reference-rebuild .rg-mobile-dock svg{color:#f4f1ec!important}body.sports-design.publication.reference-rebuild .rg-mobile-dock a[aria-current=page],body.sports-design.publication.reference-rebuild .rg-mobile-dock a[aria-current=page] svg{background:#bdb8b3!important;color:#0b0b0c!important}
html{--pg-dock-height:74px;scroll-padding-top:110px;scroll-padding-bottom:180px}
body.sports-design:has(main :focus-visible) .rg-mobile-dock,body.sports-design:has(main :focus-visible) .pg-compare-tray{position:static!important;margin-top:16px!important}
body.sports-design:has(main :focus-visible) .back-to-top{display:none!important}
@media(max-width:760px){body.sports-design.publication.reference-rebuild .back-to-top{position:static!important;inset:auto!important;margin:16px auto!important;display:flex!important;transform:none!important}}
body.sports-design.publication.reference-rebuild .nav-row{height:auto!important;min-height:80px;flex-wrap:wrap;row-gap:12px;padding-top:12px!important;padding-bottom:12px!important}
body.sports-design.publication.reference-rebuild .nav-links{flex-wrap:wrap;min-width:0}
body.sports-design.publication.reference-rebuild .brand{min-width:0!important}
body.sports-design.publication.reference-rebuild .pg-compare-tray{bottom:calc(var(--pg-dock-height,74px) + 12px)!important}
@media(max-width:760px){body.sports-design.publication.reference-rebuild .nav-row{flex-wrap:nowrap!important;padding:12px 20px!important}body.sports-design.publication.reference-rebuild .brand{flex:1 1 auto!important}body.sports-design.publication.reference-rebuild .nav-burger{flex:0 0 44px!important;margin-left:auto!important}body.sports-design.publication.reference-rebuild .rg-mobile-dock a{padding:8px 4px!important;min-width:0!important}body.sports-design.publication.reference-rebuild .rg-mobile-dock span{white-space:normal!important;overflow-wrap:anywhere;max-width:100%;line-height:1.3!important}body.sports-design.publication.reference-rebuild{padding-bottom:calc(var(--pg-dock-height,90px) + 80px)!important}html{scroll-padding-bottom:calc(var(--pg-dock-height,90px) + 100px)}}
@media(max-width:760px){body.sports-design.publication.reference-rebuild .rg-mobile-dock{display:flex!important;flex-wrap:wrap!important}body.sports-design.publication.reference-rebuild .rg-mobile-dock a{flex:1 1 auto!important;min-width:max-content!important}body.sports-design.publication.reference-rebuild .rg-mobile-dock span{white-space:nowrap!important;overflow-wrap:normal}}

/* Shared supporting components: neutral surfaces, primary citron, status colours retained. */
/* The guide hub starts with the task, not three introductions. */
/* One padding layer in discovery cards; retain all records and access qualifications. */
body.sports-design.publication.reference-rebuild .pg-place-card{padding:16px!important;min-height:0!important;gap:10px!important}body.sports-design.publication.reference-rebuild .pg-place-card :is(p,h3){margin:0!important}/* Keep the full name and save control in separate, in-flow columns. */
@media(max-width:760px){body.sports-design.publication.reference-rebuild .pg-place-card{padding:14px!important}}

/* Canonical product presentation: shared typography, finder and place components. */
/* The finder begins with a decision, not an undifferentiated inventory. */
/* A place, its admission and the journey sit together. */

/* One canonical card across discovery, directories, related venues and saved places. */
body.sports-design.publication.reference-rebuild #main .pd-result{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:14px!important;padding:24px 0!important;margin:0!important;border:0!important;border-bottom:1px solid var(--line)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;color:var(--ink)!important;min-width:0;overflow:visible!important}
body.sports-design.publication.reference-rebuild #main .pd-result>*{min-width:0}
body.sports-design.publication.reference-rebuild #main .pd-result-title{display:block;margin:0;padding:0}
body.sports-design.publication.reference-rebuild #main .pd-result h3{font-size:1.5rem!important;line-height:1.25!important;text-wrap:initial!important;overflow-wrap:anywhere}
body.sports-design.publication.reference-rebuild #main .pd-result h3 a{text-decoration:none}
body.sports-design.publication.reference-rebuild #main .pd-result h3 a:hover{text-decoration:underline}
body.sports-design.publication.reference-rebuild #main .pd-result-location{font-size:.8125rem;line-height:1.5;color:var(--muted);margin-top:6px}
body.sports-design.publication.reference-rebuild #main .pd-result-body{display:flex;flex-wrap:wrap;align-items:start;gap:14px 30px}
body.sports-design.publication.reference-rebuild #main .pd-status{width:fit-content;background:#dad5ce;color:#0b0b0c;padding:4px 8px;font-weight:700;font-size:.8125rem;line-height:1.5;margin-bottom:8px}
body.sports-design.publication.reference-rebuild #main .pd-result-price{display:flex;flex:0 1 16rem;flex-direction:column;gap:3px;min-width:0}
body.sports-design.publication.reference-rebuild #main .pd-product{font-size:.8125rem;line-height:1.5;font-weight:600;color:var(--muted)}
body.sports-design.publication.reference-rebuild #main .pd-result-price>strong{font-size:1.75rem;line-height:1.3;font-weight:750;letter-spacing:-.025em}
body.sports-design.publication.reference-rebuild #main .pd-result-price>strong small{font-size:.875rem;font-weight:450;letter-spacing:0}
body.sports-design.publication.reference-rebuild #main .pd-result-price>small{font-size:.75rem;color:var(--muted);line-height:1.5}
body.sports-design.publication.reference-rebuild #main .pd-result-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;margin:0;font-size:.875rem}
body.sports-design.publication.reference-rebuild #main a.pd-place-link{padding:11px 16px;min-height:44px;font-size:.875rem;background:var(--ink);color:var(--paper);border-color:var(--ink);white-space:normal}
body.sports-design.publication.reference-rebuild #main .pd-save{position:static!important;inset:auto!important;width:auto!important;flex:0 0 auto!important;max-width:none!important;height:auto!important;min-width:44px!important;min-height:44px!important;display:inline-flex!important;align-items:center;justify-content:center;gap:7px!important;padding:9px 12px!important;border:1px solid #55514d!important;border-radius:3px!important;background:transparent!important;color:var(--ink)!important;box-shadow:none!important;margin:0!important;font-size:.875rem!important;line-height:1.4!important}
body.sports-design.publication.reference-rebuild #main .pd-save .fav-btn-label{position:static!important;width:auto!important;height:auto!important;clip-path:none!important;overflow:visible!important}
body.sports-design.publication.reference-rebuild #main .pd-save[aria-pressed="true"]{background:var(--acid)!important}
body.sports-design.publication.reference-rebuild #main .pd-feature{padding:22px!important;border:1px solid var(--line)!important;border-radius:4px!important;background:#f4f1ec!important;align-content:start}
body.sports-design.publication.reference-rebuild #main .pd-feature .pd-result-body{display:block}
body.sports-design.publication.reference-rebuild #main .pd-feature .pd-result-price{margin-top:14px}
body.sports-design.publication.reference-rebuild #main .pd-feature .pd-result-actions{align-self:end}
@media(min-width:761px){
 body.sports-design.publication.reference-rebuild #main .pd-result.no-photo .pd-result-body{align-items:center}
}
@media(max-width:760px){
 body.sports-design.publication.reference-rebuild #main .pd-result{gap:12px!important;padding:20px 0!important}
 body.sports-design.publication.reference-rebuild #main .pd-result h3{font-size:1.375rem!important}
 body.sports-design.publication.reference-rebuild #main .pd-result-body{display:block}
 body.sports-design.publication.reference-rebuild #main .pd-result-price{margin-top:12px}
 body.sports-design.publication.reference-rebuild #main .pd-result-actions{gap:6px 14px}
 body.sports-design.publication.reference-rebuild #main .pd-feature .pd-result-price{margin-top:12px}
}

body.sports-design.publication.reference-rebuild #main .pd-result{--ink:#0b0b0c;--paper:#f4f1ec;--muted:#55514d;--line:#bdb8b3;--acid:#bdb8b3;font-family:Geist,Arial,sans-serif;container-type:inline-size}
body.sports-design.publication.reference-rebuild #main .pd-result :is(p,h3,figure){margin:0!important}
body.sports-design.publication.reference-rebuild #main .pd-result h3{font-family:Geist,Arial,sans-serif!important;font-weight:700!important;text-transform:none!important;letter-spacing:-.025em!important}
body.sports-design.publication.reference-rebuild #main .pd-result svg{width:20px;height:20px;flex:none}
body.sports-design.publication.reference-rebuild #main .pd-result.is-unresolved{border-left:3px solid #55514d!important;padding-left:18px!important}
body.sports-design.publication.reference-rebuild #main :is(#favorites-list){display:grid!important;grid-template-columns:1fr!important;gap:0!important}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-actions{justify-content:flex-start!important}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-place-link{display:inline-flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--ink);border-radius:3px;text-decoration:none;font-weight:650;line-height:1.4}
body.sports-design.publication.reference-rebuild #main .pd-result [aria-pressed=true]{font-weight:650}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-save:disabled{cursor:default;opacity:.65}
@media(max-width:760px){body.sports-design.publication.reference-rebuild #main .pd-result.no-photo{padding:18px 0!important}body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-price{padding:0!important}}

/* Canonical venue variants extend the accepted photographic product composition. */
/* Shared user-requested map never depends on a retired parent layout. */
/* Keep admission tables independent of the legacy generic price-table skin. */

/* Long taxonomy lists reuse the accepted discovery card without compressing copy. */
/* Card layout rules later in the bundle use !important (including the desktop
   photo grid). Keep the runtime's native hidden state above both variants. */
body.sports-design #main .pd-directory-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-block:1px solid var(--directory-line);margin:14px 0;font-size:.875rem}
body.sports-design #main .pd-directory-pager span{text-align:center}
body.sports-design #main .pd-directory-empty{padding:24px 0}
body.sports-design #main .pd-directory-empty h3{font-size:1.5rem}
@media(max-width:350px){body.sports-design #main .pd-directory-pager{gap:8px;flex-wrap:wrap}body.sports-design #main .pd-directory-pager span{order:-1;flex-basis:100%;text-align:left}}
body.sports-design.publication.reference-rebuild #main section:has(>.wrap>.pd-directory-sports){padding-bottom:12px!important}

/* Canonical guides: one reader system, with a decision table where appropriate. */

/* Day-pass guide: compact decisions first, comfortable supporting reading. */

/* Native guide controls remain usable in the same document without JS. */
/* Isolate the accepted comparison from legacy prose-table minimum widths. */

/* Ordinary comparison guides retain table relationships while placing each
   complete entry, including its conditions, in one mobile reading sequence. */

/* Pattaya Gym publication system: neutral surfaces, readable type, and no app dock. */
html{scroll-padding-bottom:0!important}
body.sports-design.publication.reference-rebuild{
  --sp-dark:#0b0b0c;--sp-ink:#0b0b0c;--sp-paper:#f4f1ec;--sp-acid:#55514d;
  --sp-accent-on-light:#55514d;--sp-accent-on-dark:#bdb8b3;
  --brand:#0b0b0c;--brand-ink:#0b0b0c;--ink:#0b0b0c;--text:#0b0b0c;
  --accent:#55514d;--accent-ink:#55514d;--canvas:#f4f1ec;--bg:#f4f1ec;
  --surface:#ffffff;--paper:#f4f1ec;--lime:#55514d;--vc-line:#dad5ce;
  --yellow:#55514d;background:#f4f1ec!important;color:#0b0b0c!important;
  padding-bottom:0!important;scroll-padding-bottom:0!important
}
body.sports-design.publication.reference-rebuild :is(h1,h2,h3){
  font-family:Geist,Arial,sans-serif!important;font-weight:750!important;
  letter-spacing:-.035em!important;text-transform:none!important
}
body.sports-design.publication.reference-rebuild #main :is(h1,h2,h3){
  font-family:Geist,Arial,sans-serif!important;font-weight:750!important;
  letter-spacing:-.035em!important;text-transform:none!important
}
body.sports-design.publication.reference-rebuild :is(button,input,select,textarea,summary){
  font-family:Geist,Arial,sans-serif!important
}
body.sports-design.publication.reference-rebuild :is(a,button,input,select,summary):focus-visible{
  outline:3px solid #55514d!important;outline-offset:3px!important
}
body.sports-design.publication.reference-rebuild :is(.nav,.footer) :is(a,button,input,select,summary):focus-visible{
  outline-color:var(--sp-accent-on-dark)!important
}
body.sports-design.publication.reference-rebuild .skip-link{color:#ffffff!important}
body.sports-design.publication.reference-rebuild .skip-link:focus-visible{
  outline-color:var(--sp-accent-on-dark)!important
}
body.sports-design.publication.reference-rebuild .rg-mobile-dock{display:none!important}
body.sports-design.publication.reference-rebuild .pg-compare-tray{position:static!important;margin:16px auto!important}
body.sports-design.publication.reference-rebuild header.nav,
body.sports-design.publication.reference-rebuild #nav-mobile,
body.sports-design.publication.reference-rebuild .footer{background:#0b0b0c!important}
body.sports-design.publication.reference-rebuild .nav-row{min-height:76px!important}
body.sports-design.publication.reference-rebuild .nav-links a{
  color:#f4f1ec!important;font:650 13px/1.35 Geist,Arial,sans-serif!important
}
body.sports-design.publication.reference-rebuild .nav-links a:hover,
body.sports-design.publication.reference-rebuild #nav-mobile a:hover{color:#bdb8b3!important}

/* Home: venue content follows the short search and sport choices. */

@media(max-width:760px){
  body.sports-design.publication.reference-rebuild .nav-row{min-height:72px!important;padding:10px 18px!important}
}

/* Search, indexes and supporting pages use the same quiet publication surfaces. */
body.sports-design.publication.reference-rebuild .btn-primary{
  background:#0b0b0c!important;color:#ffffff!important;border:1px solid #0b0b0c!important
}

/* Homepage composition only. Search and sport routes follow the introduction on narrow screens. */

/* Shared result cards: one venue distinction, a dated product only when published. */
body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-body{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,14rem);gap:.4rem 1.4rem;align-items:start
}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-body:not(:has(.pd-result-price)){
  grid-template-columns:minmax(0,1fr)
}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-status{
  grid-column:1/-1;margin:0 0 .2rem!important
}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-distinction{
  color:var(--ink);font-size:.9375rem;line-height:1.55;max-width:68ch;overflow-wrap:anywhere
}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-price{
  width:100%;margin:0;gap:.2rem;padding-left:1rem;border-left:1px solid var(--line)
}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-price>strong{
  font-size:1.35rem;line-height:1.3
}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-actions{
  margin-top:.1rem
}
body.sports-design.publication.reference-rebuild #main .pd-result .pd-place-link{
  min-height:44px;padding:.45rem 0;background:transparent;color:var(--ink);border:0;
  border-bottom:1px solid currentColor;border-radius:0;font-weight:700
}
body.sports-design.publication.reference-rebuild #main .pd-result.favorite-list-card .pd-save{
  min-height:44px;white-space:normal
}

/* Practical facts and source context stay in the venue opening without tool clutter. */
@media(max-width:760px){
  body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-body{
    display:block
  }
  body.sports-design.publication.reference-rebuild #main .pd-result .pd-result-price{
    margin-top:.75rem;padding-left:0;padding-top:.55rem;border-left:0;border-top:1px solid var(--line)
  }
}

/* Training Index: one publication surface across the generated site. */





:root{--ti-paper:#f4f1ec;--ti-ink:#0b0b0c;--ti-muted:#55514d;--ti-accent:#55514d;--ti-link:#55514d;--ti-line:#dad5ce;--ti-warm:#dad5ce;--ti-deep:#0b0b0c;--ti-width:1220px;--ti-prose:68ch}
html{scroll-behavior:smooth}
body.ti-publication{margin:0;background:var(--ti-paper)!important;color:var(--ti-ink)!important;font-family:Geist,Arial,sans-serif!important;font-size:16px;line-height:1.6;overflow-x:clip}
body.ti-publication *,body.ti-publication *::before,body.ti-publication *::after{box-sizing:border-box}
body.ti-publication :is(h1,h2,h3){font-family:Geist,Geist,Geist,sans-serif;letter-spacing:-.045em;text-wrap:balance;color:var(--ti-ink)}
body.ti-publication.sports-design.publication.reference-rebuild{--sp-dark:var(--ti-deep);--sp-ink:var(--ti-ink);--sp-paper:var(--ti-paper);--sp-acid:var(--ti-accent);--sp-line:var(--ti-line);--brand:var(--ti-ink);--ink:var(--ti-ink);--muted:var(--ti-muted);--bg:var(--ti-paper);--surface:var(--ti-paper);--lime:var(--ti-accent);--vc-line:var(--ti-line);background:var(--ti-paper)!important;color:var(--ti-ink)!important;padding-bottom:0!important}
body.ti-publication.sports-design.publication.reference-rebuild #main :is(h1,h2,h3),body.ti-publication.sports-design.publication.reference-rebuild :is(h1,h2,h3){font-family:Geist,Geist,Geist,sans-serif!important;font-weight:700!important;letter-spacing:-.045em!important;color:var(--ti-ink)!important}
body.ti-publication :is(p,li,figcaption,summary,input,select,button){font-family:Geist,Arial,sans-serif}
body.ti-publication a{color:var(--ti-link);text-underline-offset:.19em}
body.ti-publication a:hover{text-decoration-thickness:2px}
body.ti-publication :is(a,button,input,select,textarea,summary):focus-visible{outline:3px solid var(--ti-accent)!important;outline-offset:3px!important}
body.ti-publication :is(button,input,select){font-size:inherit}
body.ti-publication :is(button,a){-webkit-tap-highlight-color:transparent}
body.ti-publication .back-to-top{background:var(--ti-deep)!important;color:var(--ti-paper)!important;border:1px solid var(--ti-paper)!important}
body.ti-publication [hidden]{display:none!important}

/* Shared masthead and footer. Their generated markup is identical on all routes. */
body.ti-publication header.nav{position:relative!important;z-index:40!important;background:var(--ti-paper)!important;color:var(--ti-ink)!important;border:0!important;border-bottom:1px solid var(--ti-ink)!important;box-shadow:none!important}
body.ti-publication .nav-row{width:min(calc(100% - 64px),var(--ti-width))!important;min-height:90px!important;margin:auto!important;padding:14px 0!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:2rem!important}
body.ti-publication .brand{display:flex!important;align-items:center!important;min-width:0!important;margin:0!important;color:var(--ti-ink)!important;text-decoration:none!important}
body.ti-publication .nav-links{display:flex!important;align-items:center!important;flex-wrap:wrap!important;gap:clamp(.6rem,1.55vw,1.55rem)!important;margin:0!important}
body.ti-publication .nav-links a{display:inline-flex!important;align-items:center!important;min-height:44px!important;padding:4px 0!important;color:var(--ti-ink)!important;font:700 .83rem/1.25 Geist,Arial,sans-serif!important;text-decoration:none!important;border:0!important;background:transparent!important}
body.ti-publication .nav-links a:hover,body.ti-publication .nav-links a[aria-current=page]{color:var(--ti-link)!important;text-decoration:underline!important;text-underline-offset:6px!important}
body.ti-publication .nav-burger{display:none!important;width:44px!important;height:44px!important;border:1px solid var(--ti-ink)!important;border-radius:0!important;background:transparent!important;color:var(--ti-ink)!important;box-shadow:none!important}
body.ti-publication .nav-burger-bar{background:var(--ti-ink)!important}
body.ti-publication .nav-mobile:not([hidden]){display:none}
body.ti-publication .footer{background:var(--ti-deep)!important;color:#f4f1ec!important;border:0!important;padding:0!important;margin:0!important}
body.ti-publication .footer-wrap{width:min(calc(100% - 64px),var(--ti-width))!important;max-width:none!important;margin:auto!important;padding:clamp(3rem,6vw,5rem) 0 1.2rem!important}
body.ti-publication .footer :is(a,h2,p,span,time){color:inherit}
body.ti-publication .footer a{text-decoration:none!important}
body.ti-publication .footer a:hover{text-decoration:underline!important;text-underline-offset:4px!important}
body.ti-publication .footer-nav{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:1.5rem!important}
body.ti-publication .footer-col-h{margin:0 0 1rem!important;font:700 .72rem/1.4 Geist,Arial,sans-serif!important;letter-spacing:.13em!important;text-transform:uppercase!important;color:#bdb8b3!important}
body.ti-publication .footer-col ul{margin:0!important;padding:0!important;list-style:none!important}
body.ti-publication .footer-col li{margin:0!important;padding:.23rem 0!important;line-height:1.35!important}
body.ti-publication .footer-col a{font-size:.88rem!important;color:#dad5ce!important}
/* The former chrome layer used a four-class dark-header selector. The shared
   light masthead intentionally wins that exact cascade on every route. */
body.ti-publication.sports-design.publication.reference-rebuild header.nav{background:var(--ti-paper)!important;color:var(--ti-ink)!important;border-bottom:1px solid var(--ti-ink)!important;position:relative!important}
body.ti-publication.sports-design.publication.reference-rebuild .nav-links a{color:var(--ti-ink)!important;font:700 .83rem/1.25 Geist,Arial,sans-serif!important}
body.ti-publication.sports-design.publication.reference-rebuild .nav-links a:hover{color:var(--ti-link)!important}
body.ti-publication.sports-design.publication.reference-rebuild #nav-mobile{background:var(--ti-paper)!important;color:var(--ti-ink)!important}
body.ti-publication.sports-design.publication.reference-rebuild #nav-mobile :is(a,span){color:var(--ti-ink)!important}
body.ti-publication.sports-design.publication.reference-rebuild .nav-burger{color:var(--ti-ink)!important;border-color:var(--ti-ink)!important;border-radius:0!important;background:transparent!important}
body.ti-publication.sports-design.publication.reference-rebuild .nav-burger-bar{background:var(--ti-ink)!important}
body.ti-publication.sports-design.publication.reference-rebuild .footer{background:var(--ti-deep)!important;color:var(--ti-paper)!important}
body.ti-publication.sports-design.publication.reference-rebuild .footer .footer-col-h{color:#bdb8b3!important}
body.ti-publication.sports-design.publication.reference-rebuild :is(.nav,#nav-mobile) :is(a,button):focus-visible{outline-color:var(--ti-accent)!important}
@media(max-width:760px){body.ti-publication.sports-design.publication.reference-rebuild .back-to-top{position:fixed!important;inset:auto 16px 16px auto!important;margin:0!important;transform:translateY(6px)!important}body.ti-publication.sports-design.publication.reference-rebuild .back-to-top.is-visible{transform:none!important}}

/* Homepage: find, browse and see real places before promotional copy. */
body.ti-publication .ti-home{background:var(--ti-paper)!important;color:var(--ti-ink)!important;max-width:none!important;padding:0!important;margin:0!important}
body.ti-publication .ti-home :is(.ti-publication){width:min(calc(100% - 64px),var(--ti-width))!important;margin-inline:auto!important}
body.ti-publication .ti-publication h2{margin:0!important;font:700 clamp(2.1rem,3.75vw,3.7rem)/1.08 Geist,Geist,sans-serif!important;letter-spacing:-.055em!important}
body.ti-publication .ti-publication{display:grid!important;grid-template-columns:1fr 1fr!important;gap:3rem!important;padding:clamp(3rem,5vw,5rem) 0!important}
body.ti-publication .ti-publication p:not(.ti-kicker){max-width:50ch!important;margin:0 0 1.2rem!important;color:var(--ti-muted)!important;font-size:1.04rem!important;line-height:1.62!important}
body.ti-publication .ti-publication>div:last-child>div{display:flex!important;flex-wrap:wrap!important;gap:.5rem 1.25rem!important;font-weight:700!important}

/* Search and reusable result cards. */

/* Category and area pages keep their route facts and functional directory. */

/* Map and coach discovery are utilities but remain part of the publication. */

@media(max-width:950px){
 body.ti-publication .nav-links{display:none!important}
 body.ti-publication .nav-burger{display:flex!important;flex-direction:column!important;justify-content:center!important;align-items:center!important;gap:4px!important}
 body.ti-publication .nav-mobile:not([hidden]){display:block!important;background:var(--ti-paper)!important;color:var(--ti-ink)!important;border-bottom:1px solid var(--ti-ink)!important;padding:1rem 32px 1.5rem!important}
 body.ti-publication .nav-mobile-group{display:block!important;margin:1rem 0 .35rem!important;color:var(--ti-link)!important;font:700 .7rem/1.3 Geist,sans-serif!important;letter-spacing:.1em!important;text-transform:uppercase!important}
 body.ti-publication .nav-mobile-link{display:block!important;padding:.62rem 0!important;border-bottom:1px solid var(--ti-line)!important;color:var(--ti-ink)!important;font-weight:700!important;text-decoration:none!important}
}
@media(max-width:700px){
 body.ti-publication .nav-row{width:calc(100% - 36px)!important;min-height:76px!important}
 body.ti-publication .footer-wrap{width:calc(100% - 36px)!important}
 body.ti-publication .footer-nav{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:1.8rem!important}
 body.ti-publication .ti-home :is(.ti-publication){width:calc(100% - 36px)!important}
 body.ti-publication .ti-publication h2{font-size:2.35rem!important}
 body.ti-publication .ti-publication{grid-template-columns:1fr!important;gap:1.3rem!important;padding:2.5rem 0!important}
}

/* One place card: the complete decision text stays together, with a photograph
   as supporting evidence. Unpictured places never reserve a media column. */
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result{display:flex!important;flex-direction:column!important;align-items:stretch!important;align-self:start!important;gap:0!important;min-height:0!important;height:auto!important;margin:0!important;padding:0!important;border:1px solid var(--ti-line)!important;border-top:2px solid var(--ti-ink)!important;border-radius:0!important;background:#fff!important;box-shadow:none!important;overflow:hidden!important;container-type:normal!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result.no-photo{border:0!important;border-top:2px solid var(--ti-ink)!important;background:transparent!important;overflow:visible!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result.is-unresolved{border-left:3px solid var(--ti-accent)!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result-copy{display:flex!important;flex-direction:column!important;min-width:0!important;min-height:0!important;padding:1rem!important;gap:0!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result.no-photo .pd-result-copy{padding:1rem .15rem!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result-title{display:block!important;margin:0!important;padding:0!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result h3{margin:0!important;font:700 clamp(1.24rem,1.8vw,1.6rem)/1.13 Geist,Geist,sans-serif!important;letter-spacing:-.035em!important;overflow-wrap:anywhere!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result-location{margin:.23rem 0 0!important;color:var(--ti-muted)!important;font-size:.79rem!important;line-height:1.35!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result-body{display:block!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;flex:none!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result-distinction{display:block!important;margin:.62rem 0 0!important;padding:0!important;color:var(--ti-ink)!important;font-size:.9rem!important;line-height:1.45!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-status{display:inline-block!important;width:auto!important;margin:.65rem 0 0!important;padding:.25rem .45rem!important;background:#dad5ce!important;color:#55514d!important;font-size:.72rem!important;line-height:1.3!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result-price{display:block!important;width:100%!important;min-width:0!important;flex:none!important;margin:.7rem 0 0!important;padding:.62rem 0 0!important;border-top:1px solid var(--ti-line)!important;background:none!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-price-primary{display:flex!important;flex-wrap:wrap!important;align-items:baseline!important;gap:.15rem .55rem!important;margin:0!important;padding:0!important;color:var(--ti-ink)!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-price-primary strong{display:inline!important;margin:0!important;color:var(--ti-ink)!important;font:700 1.2rem/1.25 Geist,Geist,sans-serif!important;letter-spacing:-.025em!important;white-space:nowrap!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-price-primary strong small{font:600 .79rem/1.25 Geist,sans-serif!important;letter-spacing:0!important;white-space:nowrap!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-product{display:inline!important;color:var(--ti-ink)!important;font:600 .77rem/1.35 Geist,sans-serif!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result-price>small{display:block!important;margin-top:.25rem!important;color:var(--ti-muted)!important;font-size:.71rem!important;line-height:1.38!important}
body.ti-publication.sports-design.publication.reference-rebuild #main .pd-result-actions{display:flex!important;align-items:flex-start!important;justify-content:flex-start!important;min-height:0!important;margin:.68rem 0 0!important;padding:0!important;gap:.5rem!important;flex:none!important}
body.ti-publication.sports-design.publication.reference-rebuild #main a.pd-place-link{display:inline-flex!important;min-height:36px!important;align-items:center!important;margin:0!important;padding:0!important;border:0!important;border-bottom:1px solid var(--ti-ink)!important;border-radius:0!important;background:transparent!important;color:var(--ti-ink)!important;font:700 .79rem/1.25 Geist,sans-serif!important;text-decoration:none!important;box-shadow:none!important}
body.ti-publication.sports-design.publication.reference-rebuild #main a.pd-place-link:hover{color:var(--ti-link)!important;border-color:var(--ti-link)!important}

/* Search opens directly on usable results. Its complete native directory and
   filter controls stay available when the browser enhancement cannot load. */

/* Place-first taxonomy pages. Keep the introduction, one filter group and
   actual results in a single reading sequence across category and area routes. */

/* Training Index venue profile. Load after the earlier venue layers. */
/* The retired global heading rule carries !important and three body classes. */

/* Training Index · guide system. Appended after the retired guide layers. */

/* Retired ranked-guide selectors have extra specificity and once made these
   two essential lines nearly white against the new chalk cover. */

/* The earlier dark-cover shortcut colour is too pale on this paper cover. */

/* Guide index: a searchable catalogue, not another article cover. */

/* Training Index / publication and utility pages. This file is appended to
   the shared stylesheet by the final build; all rules are scoped to support
   routes so ordinary directory and article pages keep their own templates. */

/* The people and their genuine portrait are the opening, not a second panel
   after an abstract masthead. */

/* A usable contact route without a six-card social dashboard. */

/* The human index stays dense and useful. Legacy tools get one quiet line. */

/* Downloads and evidence remain open and readable, without tile-heavy chrome. */

/* Press writer owns figures and assets; this supplies the publication rhythm. */

/* The data index has its own generator and inline CSS. More specific rules
   align that independent rendering path without changing its byte contract. */

/* Historical changelog keeps its entries, with current publication chrome. */

/* REFERENCE-REBUILD:END */
