/*
Theme Name: Stonewall Sports Pittsburgh
Theme URI: https://stonewallsportspgh.org
Author: Stonewall Sports Pittsburgh
Description: Custom pride-forward theme for Stonewall Sports Pittsburgh — an LGBTQ+ & Ally adult sports league. Accessible, self-contained, no external assets.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: stonewall-sports
*/

/* ---------- Self-hosted fonts (no external calls) ---------- */
@font-face {
  font-family: "Anton"; src: url(fonts/anton-400.woff2) format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Archivo"; src: url(fonts/archivo-400.woff2) format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Archivo"; src: url(fonts/archivo-600.woff2) format("woff2");
  font-weight: 600; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Archivo"; src: url(fonts/archivo-700.woff2) format("woff2");
  font-weight: 700; font-style: normal; font-display: swap;
}

:root {
  --ink: #17131b;
  --ink-soft: #55505e;
  --paper: #ffffff;
  --paper-soft: #f5efe4;      /* warm cream, not cool lilac */
  --hero-bg: #151019;         /* warm near-black */
  --hero-ink: #ffffff;
  --brand: #b8266a;           /* magenta action / links (AA on white) */
  --brand-hover: #921f55;
  --brand-ink: #ff6aa8;       /* bright magenta for dark backgrounds */
  --line: #e7dfd2;            /* warm hairline */
  --radius: 8px;
  --radius-lg: 12px;
  --focus: #b8266a;
  --pride: linear-gradient(90deg,
    #613915 0%, #161616 8%,
    #5bcefa 16%, #f5a9b8 24%,
    #e40303 36%, #ff8c00 49%,
    #ffd800 62%, #008026 75%,
    #24408e 88%, #732982 100%);
  --maxw: 74rem;
  --font: "Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --font-display: "Anton", "Arial Narrow", "Archivo", sans-serif;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--ink);
  background: var(--paper);
}
img { max-width: 100%; height: auto; }
a { color: var(--brand); text-decoration-thickness: 1px; text-underline-offset: 2px; }
a:hover { color: var(--brand-hover); }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; border-radius: 3px; }

h1, h2, h3, h4 { font-family: var(--font); line-height: 1.12; letter-spacing: -0.015em; font-weight: 700; }
h1 { font-size: clamp(2rem, 5vw, 3.25rem); }
h2 { font-size: clamp(1.5rem, 3.5vw, 2.25rem); }
h3 { font-size: 1.3rem; }

/* Display headings: athletic condensed poster type */
.hero h1, .section-head h2, .entry-header h1 {
  font-family: var(--font-display); font-weight: 400;
  text-transform: uppercase; letter-spacing: .012em; line-height: .94;
}

.wrap { max-width: var(--maxw); margin-inline: auto; padding-inline: clamp(1rem, 4vw, 2rem); }

.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 999;
  background: var(--ink); color: #fff; padding: .75rem 1.25rem; border-radius: 0 0 8px 0;
}
.skip-link:focus { left: 0; }

/* ---------- Pride identity bar ---------- */
.pride-bar { height: 6px; background: var(--pride); }
.trans-bar {
  height: 4px;
  background: linear-gradient(90deg,
    #5bcefa 0%, #5bcefa 20%,
    #f5a9b8 20%, #f5a9b8 40%,
    #ffffff 40%, #ffffff 60%,
    #f5a9b8 60%, #f5a9b8 80%,
    #5bcefa 80%, #5bcefa 100%);
}

/* ---------- Sticky top stack (registration bar + pride bar + header) ---------- */
.site-topbar {
  position: sticky;
  top: 0;
  z-index: 60;
}

/* ---------- Registration bar ---------- */
.registration-bar {
  background: var(--ink);
  color: #fff;
}
.registration-bar__inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 1rem;
  padding-block: .55rem;
  font-size: .92rem;
}
.registration-bar__cta {
  grid-column: 2;
  display: flex; align-items: center; justify-content: center; gap: .8rem;
  flex-wrap: wrap;
}
.registration-bar__label { opacity: .9; }
.registration-bar__button {
  display: inline-block;
  background: var(--brand);
  color: #fff; text-decoration: none;
  font-weight: 700; font-size: .8rem; letter-spacing: .04em; text-transform: uppercase;
  padding: .4rem 1.1rem; border-radius: 4px;
  white-space: nowrap;
}
.registration-bar__button:hover { color: #fff; background: var(--brand-hover); }

.registration-bar__orglink {
  display: flex; align-items: center; gap: .5rem;
  color: rgba(255, 255, 255, .68);
  text-decoration: none;
  font-size: .78rem;
  font-weight: 600;
  white-space: nowrap;
  opacity: .85;
  transition: opacity .15s ease, color .15s ease;
}
.registration-bar__orglink:hover { opacity: 1; color: #fff; }
.registration-bar__orglink img {
  width: 22px; height: 22px; border-radius: 999px;
  object-fit: cover;
  box-shadow: 0 0 0 1.5px rgba(255, 255, 255, .3);
}
.registration-bar__orglink--right {
  grid-column: 3;
  justify-self: end;
}

@media (max-width: 780px) {
  .registration-bar__orglink span { display: none; }
  .registration-bar__orglink { gap: 0; }
}
@media (max-width: 520px) {
  .registration-bar__orglink { display: none; }
  .registration-bar__inner { grid-template-columns: 1fr; }
}

/* ---------- Header / nav ---------- */
.site-header {
  background: var(--hero-bg);
  color: var(--hero-ink);
  position: relative;
  z-index: 50;
}
.site-header .wrap {
  display: flex; align-items: center; gap: 1.25rem; flex-wrap: nowrap;
  padding-block: .9rem;
}
/* Homepage: hero already shows the big logo, so hide the header brand there. */
body.home .site-brand { display: none; }
body.home .site-header .wrap { justify-content: flex-end; }
body.home .hero { padding-top: clamp(.5rem, 1.5vw, 1rem); }
.site-brand { display: flex; align-items: center; gap: .8rem; text-decoration: none; color: inherit; }
.site-brand__mark {
  flex: none; width: 60px; height: 60px; border-radius: 50%;
  background: #fff; display: flex; align-items: center; justify-content: center;
  padding: .3rem; box-sizing: border-box; overflow: hidden;
  box-shadow: 0 2px 10px rgba(0,0,0,.3), 0 0 0 2px rgba(255,255,255,.14);
}
.site-brand__mark img { width: 100%; height: 100%; object-fit: contain; }
.site-brand__text { display: flex; flex-direction: column; }
.site-brand .site-title {
  font-family: var(--font-display); font-weight: 400;
  font-size: 1.55rem; letter-spacing: .01em; line-height: 1; text-transform: uppercase;
}
.site-brand .site-title .grad {
  background: none; -webkit-background-clip: initial; background-clip: initial;
  -webkit-text-fill-color: var(--brand-ink); color: var(--brand-ink);
}
.site-brand .site-tagline { font-size: .78rem; opacity: .82; letter-spacing: .02em; }

.nav-toggle {
  margin-left: auto;
  display: none;
  background: transparent; color: inherit;
  border: 2px solid rgba(255,255,255,.4); border-radius: 10px;
  padding: .5rem .8rem; font: inherit; font-weight: 700; cursor: pointer;
}

.site-nav { margin-left: auto; }
.site-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: nowrap; gap: .1rem; }
.site-nav a {
  display: block; padding: .6rem .6rem; border-radius: 10px;
  color: inherit; text-decoration: none; font-weight: 600; font-size: .95rem;
  white-space: nowrap;
}
.site-nav a:hover { background: rgba(255,255,255,.12); color: #fff; }
.site-nav li { position: relative; }

.site-nav .sub-menu {
  display: none;
  position: absolute; top: 100%; left: 0; min-width: 15rem;
  flex-direction: column; gap: 0;
  background: #fff; color: var(--ink);
  border-radius: 12px; padding: .4rem;
  box-shadow: 0 12px 34px rgba(20, 12, 40, .25);
  border-top: 4px solid transparent;
  border-image: var(--pride) 1;
}
.site-nav .sub-menu .sub-menu { top: 0; left: 100%; }
.site-nav li.open > .sub-menu { display: flex; }
.site-nav .sub-menu a { color: var(--ink); font-weight: 500; }
.site-nav .sub-menu a:hover { background: var(--paper-soft); color: var(--brand-hover); }

.submenu-toggle {
  background: transparent; border: 0; color: inherit; cursor: pointer;
  padding: .35rem; margin-left: -.35rem; border-radius: 8px; line-height: 0;
}
.submenu-toggle svg { transition: transform .15s ease; }
.submenu-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
.site-nav > ul > li { display: flex; align-items: center; }
.site-nav .sub-menu li { display: flex; align-items: center; }
.site-nav .sub-menu li > a { flex: 1; }

@media (max-width: 900px) {
  .nav-toggle { display: block; }
  .site-brand__mark { width: 42px; height: 42px; }
  .site-nav { display: none; width: 100%; margin: 0; }
  .site-nav.open { display: block; }
  .site-nav ul { flex-direction: column; gap: 0; padding-block: .5rem; }
  .site-nav .sub-menu, .site-nav .sub-menu .sub-menu {
    position: static; box-shadow: none; background: rgba(255,255,255,.06);
    color: inherit; border: 0; border-left: 3px solid rgba(255,255,255,.25);
    margin-left: .9rem; border-radius: 0;
  }
  .site-nav .sub-menu a { color: inherit; }
  .site-nav .sub-menu a:hover { background: rgba(255,255,255,.1); color: #fff; }
}

/* ---------- Hero ---------- */
.hero {
  background: var(--hero-bg);
  color: var(--hero-ink);
  padding-block: clamp(3.5rem, 9vw, 7rem);
  position: relative; overflow: hidden;
}
/* Photo-backed hero: cover image + left-weighted scrim for legibility */
.hero--image {
  background-size: cover; background-position: center;
  min-height: min(78vh, 46rem); display: flex; align-items: center;
}
.hero--image::before {
  content: ""; position: absolute; inset: 0; z-index: 0;
  background:
    linear-gradient(90deg, rgba(21,16,25,.94) 0%, rgba(21,16,25,.82) 42%, rgba(21,16,25,.42) 72%, rgba(21,16,25,.28) 100%),
    linear-gradient(0deg, rgba(21,16,25,.55) 0%, rgba(21,16,25,0) 40%);
}
.hero--image .wrap { width: 100%; }
.hero .wrap { position: relative; z-index: 1; }
/* Hero rotation: stacked slides behind the scrim; JS toggles .is-active */
.hero-slides { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.hero-slide {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  opacity: 0; transition: opacity 1s ease;
}
.hero-slide.is-active { opacity: 1; }
.hero--rotate::before { z-index: 1; }
.hero--rotate .wrap { z-index: 2; }
@media (prefers-reduced-motion: reduce) { .hero-slide { transition: none; } }
.hero::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 6px;
  z-index: 2; background: var(--pride);
}
.hero-logo {
  display: block; height: clamp(130px, 15vw, 210px); width: auto;
  margin: 0 0 1.4rem; animation: sw-rise .5s .02s both;
}
@media (prefers-reduced-motion: reduce) { .hero-logo { animation: none; } }
.hero .kicker {
  display: inline-flex; align-items: center; gap: .7rem;
  font-family: var(--font); font-weight: 700; font-size: .8rem;
  letter-spacing: .22em; text-transform: uppercase;
  background: none; padding: 0; margin-bottom: 1.4rem; color: #fff; opacity: .9;
}
.hero .kicker::before {
  content: ""; width: 2.4rem; height: 2px; background: var(--brand-ink);
}
.hero h1 {
  margin: 0 0 1.1rem; max-width: 15ch;
  font-size: clamp(2.7rem, 7.5vw, 5.25rem);
}
.hero h1 .grad {
  background: none; -webkit-background-clip: initial; background-clip: initial;
  -webkit-text-fill-color: currentColor; color: #fff;
}
.hero h1::after {
  content: ""; display: block; width: 6.5rem; height: .55rem; margin-top: 1.3rem;
  background: var(--pride); border-radius: 2px;
}
.hero p { max-width: 52ch; font-size: 1.15rem; opacity: .9; margin: 0 0 1.9rem; }
.btn-row { display: flex; gap: .8rem; flex-wrap: wrap; }
.btn {
  display: inline-block; padding: .85rem 1.6rem; border-radius: 4px;
  font-family: var(--font); font-weight: 700; text-decoration: none;
  font-size: .92rem; letter-spacing: .04em; text-transform: uppercase;
  border: 2px solid transparent;
  transition: transform .12s ease, background-color .15s ease, color .15s ease, border-color .15s ease;
}
.btn:hover { transform: translateY(-2px); }
.btn-primary { background: var(--brand); color: #fff; }
.btn-primary:hover { background: #fff; color: var(--ink); }
.btn-ghost { border-color: rgba(255,255,255,.55); color: #fff; }
.btn-ghost:hover { border-color: #fff; background: #fff; color: var(--ink); }

/* One orchestrated page-load: hero elements rise in sequence */
@keyframes sw-rise { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
.hero .kicker { animation: sw-rise .5s .04s both; }
.hero h1 { animation: sw-rise .6s .12s both; }
.hero p { animation: sw-rise .6s .22s both; }
.hero .btn-row { animation: sw-rise .6s .32s both; }

/* ---------- Sections / cards ---------- */
.section { padding-block: clamp(2.75rem, 7vw, 5rem); }
.section-alt { background: var(--paper-soft); }
.section-head { max-width: 46rem; margin-bottom: 2rem; }
.section-head h2 { margin: 0 0 .5rem; }
.section-head h2::after {
  content: ""; display: block; width: 4.5rem; height: 5px; border-radius: 3px;
  background: var(--pride); margin-top: .9rem;
}
.section-head p { color: var(--ink-soft); margin: 0; }

.card-grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); }
.card {
  background: #fff; border: 1.5px solid var(--line); border-radius: var(--radius);
  padding: 1.5rem 1.4rem 2.25rem; position: relative; overflow: hidden;
  display: flex; flex-direction: column; gap: .45rem;
  transition: transform .15s ease, border-color .15s ease;
}
.card::after {
  content: "\2192"; position: absolute; right: 1.25rem; bottom: 1.05rem;
  font-weight: 700; font-size: 1.15rem; color: var(--brand);
  opacity: 0; transform: translateX(-6px); transition: opacity .15s ease, transform .15s ease;
}
.card:hover { transform: translateY(-3px); border-color: var(--brand); }
.card:hover::after { opacity: 1; transform: translateX(0); }
.card h3 { margin: .2rem 0 0; font-weight: 700; letter-spacing: -0.01em; }
.card h3 a { color: var(--ink); text-decoration: none; }
.card h3 a:hover { color: var(--brand); }
.card h3 a::after { content: ""; position: absolute; inset: 0; }
.card .meta { font-size: .72rem; color: var(--brand); text-transform: uppercase; letter-spacing: .14em; font-weight: 700; }
.card p { margin: 0; color: var(--ink-soft); font-size: .97rem; }

/* ---------- Sponsor showcase ---------- */
.sponsor-tier { margin-bottom: 2.75rem; }
.sponsor-tier__header {
  display: flex; align-items: baseline; gap: .75rem; flex-wrap: wrap;
  padding: .7rem 1.1rem; border-radius: var(--radius);
  margin-bottom: 1.1rem;
  font-weight: 800; text-transform: uppercase; letter-spacing: .06em;
}
.sponsor-tier__header .sponsor-tier__count {
  font-weight: 600; text-transform: none; letter-spacing: normal;
  font-size: .85rem; opacity: .75;
}
.sponsor-tier--platinum .sponsor-tier__header { background: #d9d9d9; color: #111; }
.sponsor-tier--gold .sponsor-tier__header { background: #ffde59; color: #111; }
.sponsor-tier--silver .sponsor-tier__header { background: #e5e1ef; color: #111; }
.sponsor-tier--bronze .sponsor-tier__header { background: #ffbd59; color: #111; }
.sponsor-tier__desc { color: var(--ink-soft); margin: -.5rem 0 1.25rem; max-width: 46rem; }

.sponsor-grid {
  display: grid; gap: 1.1rem;
  grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
}
.sponsor-card {
  display: flex; flex-direction: column; align-items: center; gap: .75rem;
  background: #fff; border: 1.5px solid var(--line); border-radius: var(--radius);
  padding: 1.25rem 1rem; text-align: center; text-decoration: none; color: inherit;
  transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.sponsor-card:hover {
  transform: translateY(-3px); border-color: var(--brand); color: inherit;
}
.sponsor-card__logo {
  width: 100%; height: 5.5rem; display: flex; align-items: center; justify-content: center;
}
.sponsor-card__logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.sponsor-card__name {
  font-weight: 700; font-size: .92rem; line-height: 1.3;
}

.sponsor-cta {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 1rem; background: var(--paper-soft, #f5efe4);
  border-radius: var(--radius); padding: 1.5rem 1.75rem; margin: 2.5rem 0;
}
.sponsor-cta p { margin: 0; max-width: 40rem; }
.sponsor-cta .btn { flex: none; }

.venue-partners__grid {
  display: grid; gap: 1.25rem;
  grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
}
.venue-partner {
  display: flex; align-items: center; gap: 1rem;
  background: #fff; border: 1.5px solid var(--line); border-radius: var(--radius);
  padding: 1.1rem 1.25rem;
}
.venue-partner__logo {
  flex: none; width: 4rem; height: 4rem; display: flex; align-items: center; justify-content: center;
}
.venue-partner__logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.venue-partner__meta .venue-partner__role {
  display: block; font-size: .72rem; text-transform: uppercase; letter-spacing: .1em;
  color: var(--brand); font-weight: 700; margin-bottom: .2rem;
}
.venue-partner__name { font-weight: 700; }

/* ---------- Leadership team (grid of people cards) ---------- */
.leadership-intro { max-width: 46rem; margin: 0 0 2.5rem; font-size: 1.02rem; color: var(--ink-soft); }
.leadership-section { padding-block: clamp(1.75rem, 4vw, 3rem); }
.leadership-section + .leadership-section { border-top: 1px solid var(--line); }
.leadership-section > h2 { margin: 0 0 .35rem; font-family: var(--font-display); font-weight: 400; text-transform: uppercase; letter-spacing: .012em; }
.leadership-section .leadership-blurb { color: var(--ink-soft); margin: 0 0 1.6rem; max-width: 46rem; font-size: .96rem; }
.leadership-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); }
.leader-card {
	background: #fff; border: 1.5px solid var(--line); border-radius: var(--radius);
	padding: 1.2rem 1.15rem 1.05rem;
	display: flex; flex-direction: column; align-items: flex-start; gap: .1rem;
	transition: transform .15s ease, border-color .15s ease;
}
.leader-card:hover { transform: translateY(-2px); border-color: var(--brand); }
.leader-avatar {
	width: 2.8rem; height: 2.8rem; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	background: var(--paper-soft); color: var(--brand);
	font-family: var(--font-display); font-weight: 400; font-size: 1rem; letter-spacing: .02em;
	margin-bottom: .55rem;
}
.leader-name { margin: 0; font-size: 1rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.005em; }
.leader-role { margin: .1rem 0 0; font-size: .82rem; color: var(--ink-soft); line-height: 1.35; }
.leader-pronouns { margin: .25rem 0 0; font-size: .74rem; color: var(--ink-soft); font-style: italic; letter-spacing: .01em; }
.leader-card--vacant { background: transparent; border-style: dashed; }
.leader-card--vacant .leader-avatar { background: transparent; border: 1.5px dashed var(--line); color: var(--ink-soft); }
.leader-card--vacant .leader-name { color: var(--ink-soft); font-style: italic; }
.leader-card--vacant .leader-apply { margin: .4rem 0 0; }
.leader-card--vacant .leader-apply a { color: var(--brand); text-decoration: none; font-weight: 700; font-size: .78rem; letter-spacing: .04em; text-transform: uppercase; }
.leader-card--vacant .leader-apply a:hover { color: var(--brand-hover); }
.leadership-join { margin-top: 2.75rem; padding: 1.75rem; background: var(--paper-soft); border-radius: var(--radius); }
.leadership-join h2 { margin-top: 0; }
.leadership-orgchart { padding-block: clamp(1.75rem, 4vw, 3rem); }
.leadership-orgchart > h2 { margin: 0 0 .35rem; font-family: var(--font-display); font-weight: 400; text-transform: uppercase; letter-spacing: .012em; }
/* Ghost buttons default to white-on-dark for hero use — scope a light-bg variant
 * for content sections where the background is paper/white. */
.leadership-section .btn-ghost,
.leadership-join .btn-ghost,
.leadership-orgchart .btn-ghost,
.entry-content .btn-ghost {
	border-color: var(--ink);
	color: var(--ink);
}
.leadership-section .btn-ghost:hover,
.leadership-join .btn-ghost:hover,
.leadership-orgchart .btn-ghost:hover,
.entry-content .btn-ghost:hover {
	background: var(--ink);
	color: #fff;
}
.orgchart-embed,
.pdf-embed { position: relative; width: 100%; aspect-ratio: 16 / 9; max-height: 85vh; min-height: 460px; margin: 1rem 0; background: var(--paper-soft); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.orgchart-embed object,
.pdf-embed--live > object { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.orgchart-embed > p,
.pdf-embed--live > object + p,
.pdf-embed--live > p { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 1.5rem; text-align: center; margin: 0; }
.orgchart-download,
.pdf-download,
.pdf-actions { margin: .75rem 0 0; }
.pdf-actions .btn + .btn { margin-left: .5rem; }
@media (max-width: 30rem) {
	.orgchart-embed,
	.pdf-embed { aspect-ratio: auto; height: 70vh; }
}

/* ---------- Community photo band ---------- */
.photo-grid {
  display: grid; gap: .75rem;
  grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
  grid-auto-rows: 11rem; grid-auto-flow: dense;
}
.photo-grid .shot {
  margin: 0; position: relative; overflow: hidden;
  border-radius: var(--radius); background: var(--paper-soft);
}
.photo-grid .shot.wide { grid-column: span 2; }
.photo-grid .shot.tall { grid-row: span 2; }
.photo-grid .shot img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .4s ease;
}
.photo-grid .shot .shot-link { display: block; width: 100%; height: 100%; cursor: zoom-in; }
.photo-grid .shot .shot-cta { display: block; width: 100%; height: 100%; cursor: pointer; color: inherit; text-decoration: none; }
.photo-grid .shot .shot-caption {
  position: absolute; left: 0; right: 0; bottom: 0; margin: 0;
  padding: 1.1rem .95rem .65rem;
  color: #fff; font-family: var(--font); font-weight: 700;
  font-size: .92rem; line-height: 1.25; letter-spacing: -0.005em;
  background: linear-gradient(0deg, rgba(0,0,0,.78) 0%, rgba(0,0,0,.28) 65%, rgba(0,0,0,0) 100%);
  pointer-events: none;
}
.photo-grid .shot:hover img { transform: scale(1.05); }
@media (max-width: 30rem) { .photo-grid .shot.wide { grid-column: span 1; } }

/* ---------- Lightbox (click to enlarge) ---------- */
.sw-lightbox {
  position: fixed; inset: 0; z-index: 9999; display: flex;
  align-items: center; justify-content: center;
  background: rgba(15, 10, 35, .92); padding: 4vmin; cursor: zoom-out;
}
.sw-lightbox[hidden] { display: none; }
.sw-lightbox img {
  max-width: 100%; max-height: 100%; border-radius: 8px;
  box-shadow: 0 12px 48px rgba(0, 0, 0, .55); cursor: default;
}
.sw-lightbox__close {
  position: absolute; top: .75rem; right: 1.25rem; background: none;
  border: 0; color: #fff; font-size: 2.75rem; line-height: 1; cursor: pointer;
}
.entry-featured .shot-link { display: block; cursor: zoom-in; }

/* ---------- Featured image hero (pages & posts) ---------- */
.entry-featured {
  margin: 0 0 1.75rem; border-radius: var(--radius); overflow: hidden;
  background: var(--paper-soft); line-height: 0;
}
.entry-featured img {
  width: 100%; height: auto; display: block;
  max-height: 26rem; object-fit: cover;
}

/* Pride signup uses a square promo graphic; show the full image (no crop). */
.page-id-1729 .entry-featured img {
  max-height: none;
  object-fit: contain;
}

/* ---------- Content / entries ---------- */
.entry-header { padding-top: clamp(2rem, 5vw, 3.5rem); }
.entry-header h1 { margin: 0 0 .6rem; }
.entry-header h1::after {
  content: ""; display: block; width: 4.5rem; height: 5px; border-radius: 3px;
  background: var(--pride); margin-top: .8rem;
}
.entry-meta { color: var(--ink-soft); font-size: .9rem; margin-bottom: 1rem; }
.entry-content { padding-bottom: clamp(2.5rem, 6vw, 4rem); max-width: 48rem; }
.entry-content > * { max-width: 100%; }
.entry-content img { border-radius: 10px; }
.entry-content blockquote {
  margin: 1.5rem 0; padding: .5rem 1.25rem; border-left: 5px solid; border-image: var(--pride) 1;
  color: var(--ink-soft); font-style: italic;
}
.entry-content table { border-collapse: collapse; width: 100%; }
.entry-content th, .entry-content td { border: 1px solid var(--line); padding: .5rem .75rem; }
.alignwide, .alignfull { max-width: none; }
.wp-block-button__link { border-radius: 4px; }

.page-list { padding-block: 2rem 3rem; }
article.hentry + article.hentry { margin-top: 2rem; }

/* pagination */
.nav-links { display: flex; gap: .5rem; flex-wrap: wrap; padding-block: 1.5rem 3rem; }
.nav-links .page-numbers {
  padding: .45rem .9rem; border: 1px solid var(--line); border-radius: 8px; text-decoration: none;
}
.nav-links .page-numbers.current { background: var(--brand); border-color: var(--brand); color: #fff; }

/* search form */
.search-form { display: flex; gap: .5rem; max-width: 28rem; }
.search-form input[type="search"] {
  flex: 1; padding: .65rem .9rem; border: 1.5px solid var(--line); border-radius: 10px; font: inherit;
}
.search-form button {
  padding: .65rem 1.2rem; border: 0; border-radius: 10px; font: inherit; font-weight: 700;
  background: var(--brand); color: #fff; cursor: pointer;
}
.search-form button:hover { background: var(--brand-hover); }

/* ---------- Gravity Forms: match site input/button language ---------- */
.gform_wrapper {
  font-family: var(--font);
  color: var(--ink);
  max-width: 40rem;
}
.gform_wrapper .gform_fields { gap: 1.25rem; }
.gform_wrapper .gfield { margin-bottom: 1.1rem; }
.gform_wrapper .gfield_label,
.gform_wrapper legend.gfield_label {
  font-weight: 700; font-size: .95rem; color: var(--ink); margin-bottom: .4rem;
}
.gform_wrapper .gfield_required { color: var(--brand); }
.gform_wrapper input[type="text"],
.gform_wrapper input[type="email"],
.gform_wrapper input[type="tel"],
.gform_wrapper input[type="url"],
.gform_wrapper input[type="number"],
.gform_wrapper input[type="password"],
.gform_wrapper select,
.gform_wrapper textarea {
  width: 100%; font: inherit; font-size: 1rem; color: var(--ink);
  padding: .65rem .9rem; border: 1.5px solid var(--line);
  border-radius: var(--radius); background: #fff;
  box-sizing: border-box;
}
.gform_wrapper textarea { min-height: 8rem; }
.gform_wrapper input:focus,
.gform_wrapper select:focus,
.gform_wrapper textarea:focus {
  outline: none; border-color: var(--brand);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand) 20%, transparent);
}
.gform_wrapper .ginput_container_name span,
.gform_wrapper .ginput_complex .ginput_full,
.gform_wrapper .ginput_complex .ginput_left,
.gform_wrapper .ginput_complex .ginput_right {
  margin-bottom: 0;
}
.gform_wrapper .gform_footer,
.gform_wrapper .gform_page_footer {
  margin-top: 1.5rem; padding: 0;
}
.gform_wrapper .gform_button,
.gform_wrapper input.gform_button {
  display: inline-block; font: inherit; font-weight: 700; font-size: .95rem;
  color: #fff; background: var(--brand); border: 0; border-radius: 999px;
  padding: .75rem 1.75rem; cursor: pointer; transition: background-color .15s ease;
}
.gform_wrapper .gform_button:hover { background: var(--brand-hover); }
.gform_wrapper .validation_error,
.gform_wrapper .gfield_validation_message {
  color: #b3261e; font-weight: 600; font-size: .9rem;
}
.gform_wrapper .gform_validation_container { display: none !important; }
.gform_confirmation_message {
  background: var(--paper-soft, #f7f5fb); border-radius: var(--radius);
  padding: 1.25rem 1.5rem; font-weight: 600;
}

/* ---------- Footer ---------- */
.site-footer { background: var(--hero-bg); color: rgba(255,255,255,.85); margin-top: 2rem; }
.site-footer .wrap { padding-block: 2.5rem 2rem; display: grid; gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); }
.site-footer h2 { font-size: 1.05rem; color: #fff; margin: 0 0 .75rem; }
.footer-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .2rem 1.2rem; }
.footer-nav .sub-menu { display: contents; }
.footer-nav a { color: rgba(255,255,255,.85); text-decoration: none; font-size: .95rem; }
.footer-nav a:hover { color: #fff; text-decoration: underline; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,.15); }
.footer-bottom .wrap { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding-block: 1.1rem; font-size: .85rem; }
.footer-bottom a { color: inherit; }


/* Nav CTA (e.g. Donate): filled block that stands out from plain nav links */
.site-nav > ul > li.nav-cta > a {
  background: var(--brand);
  color: #fff;
  border-radius: 4px;
  font-weight: 700;
  padding-inline: 1.1rem;
}
.site-nav > ul > li.nav-cta > a:hover { background: var(--brand-hover); color: #fff; }

/* Footer search: adapt the shared form to the dark footer */
.footer-search .search-form { max-width: 100%; }
.footer-search .search-form input[type="search"] {
  background: rgba(255, 255, 255, .08);
  border-color: rgba(255, 255, 255, .25);
  color: #fff;
}
.footer-search .search-form input[type="search"]::placeholder { color: rgba(255, 255, 255, .55); }

@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
  html { scroll-behavior: auto; }
}

.screen-reader-text {
  clip: rect(1px,1px,1px,1px); clip-path: inset(50%); position: absolute !important;
  width: 1px; height: 1px; overflow: hidden; word-wrap: normal !important;
}

/* ─────────── Sport page (page-sport.php) ─────────── */
.hero--sport .sport-reg-status {
  display: inline-block; margin: 0 0 1.1rem; padding: .35rem .75rem;
  font-size: .8rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; border-radius: 999px;
  background: rgba(255,255,255,.12); color: #fff;
}
.hero--sport .sport-reg-status--open { background: rgba(0, 173, 100, .35); }
.hero--sport .sport-reg-status--opens_soon { background: rgba(255, 189, 89, .35); color: #fff8ea; }
.hero--sport .sport-reg-status--closed { background: rgba(255,255,255,.10); color: rgba(255,255,255,.65); }

.sport-page { padding-block: clamp(1.5rem, 4vw, 3rem); }
.sport-page > .wrap > section { margin: 0 0 clamp(2rem, 4vw, 3rem); }
.sport-page h2 {
  font-family: var(--font-display); font-weight: 400;
  text-transform: uppercase; letter-spacing: .012em;
  font-size: clamp(1.4rem, 3vw, 2rem); margin: 0 0 .8rem;
}

.sport-facts dl {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .75rem; margin: 0;
}
.sport-fact {
  background: var(--paper-soft); border: 1px solid var(--line);
  border-radius: var(--radius); padding: .9rem 1rem;
}
.sport-fact dt { font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft); }
.sport-fact dd { margin: .25rem 0 0; font-size: 1.05rem; color: var(--ink); }

.sport-location p { margin: 0 0 .4rem; }
.sport-location-name { font-weight: 700; }
.sport-location-address { color: var(--ink-soft); }

.sport-rules .pdf-embed { max-height: 70vh; min-height: 420px; aspect-ratio: 8.5/11; }

.sport-lead-cta {
  background: var(--paper-soft); border: 1px solid var(--line);
  border-radius: var(--radius); padding: clamp(1.25rem, 3vw, 2rem);
}
.sport-lead-cta p { max-width: 60ch; }

/* Contact form: editorial, matches the rest of the site */
.sport-contact form { max-width: 540px; }
.sport-contact label { display: block; font-size: .8rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; margin: 0 0 .3rem; color: var(--ink-soft); }
.sport-contact input[type="text"], .sport-contact input[type="email"], .sport-contact textarea {
  width: 100%; padding: .7rem .9rem; font: inherit;
  border: 1px solid var(--line); border-radius: 8px; background: #fff;
}
.sport-contact input:focus, .sport-contact textarea:focus {
  outline: 2px solid var(--brand); outline-offset: 2px; border-color: var(--brand);
}
.sport-contact .sport-hp { position: absolute; left: -9999px; visibility: hidden; }
.sport-contact-notice {
  padding: .8rem 1rem; border-radius: 8px; border: 1px solid;
  font-weight: 700;
}
.sport-contact-notice--ok  { background: #ecfdf3; border-color: #74c69d; color: #0f5132; }
.sport-contact-notice--err { background: #fef1f1; border-color: #f0a5a5; color: #7a1f1f; }

/* Sport commissioner vacancy callout — matches join-our-leadership styling */
.sport-vacancy {
  background: linear-gradient(180deg, rgba(194,38,106,.06) 0%, transparent 100%);
  border: 1.5px dashed var(--brand);
  border-radius: var(--radius);
  padding: clamp(1.25rem, 3vw, 2rem);
}
.sport-vacancy h2 { color: var(--brand); }
.sport-vacancy p { max-width: 60ch; }

/* About page — Mission/Vision panels + tidy button rows */
.about-panels {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1rem;
  margin: 1rem 0 2rem;
}
.about-panel {
  background: var(--paper-soft);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 1.25rem 1.35rem;
}
.about-panel h3 {
  margin: 0 0 .5rem;
  font-size: .78rem; font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--brand);
}
.about-panel p { margin: 0; }

.entry-content .btn + .btn { margin-left: .5rem; }

/* PDF card fallback — used when a PDF is cross-origin and can't be embedded
   inline (X-Frame-Options: SAMEORIGIN or a redirecting URL). Keeps the same
   visual frame as .pdf-embed but shows a big Open PDF button instead. */
.pdf-embed--card {
  aspect-ratio: auto; min-height: 240px; height: auto;
  display: flex; align-items: center; justify-content: center;
  padding: clamp(1.5rem, 4vw, 3rem);
  text-align: center;
}
.pdf-card-inner { display: flex; flex-direction: column; align-items: center; gap: .9rem; max-width: 32rem; }
.pdf-card-icon { color: var(--brand); line-height: 0; }
.pdf-card-title { margin: 0; font-weight: 700; font-size: 1.1rem; color: var(--ink); }
