/**
 * Gymnastics Plus - the site header, standalone
 * ---------------------------------------------------------------------------
 * THE ASK (JP, 2026-09-08): "bring these in to the new header", naming the four
 * public pages still carrying the old nine-link header, with his reason: "even
 * tho we currently are not naving to them i want to set them up right".
 *
 * WHY THIS FILE EXISTS, same reason as css/gp-site-footer.css. The header's
 * styling lived inside css/gp-homepage.css, which loads only for templates in
 * gp_public_surface_templates(), so the header could not be added to a page
 * without also giving that page the homepage's reset, body font and heading
 * scale. These are that header's rules and nothing else.
 *
 * EXTRACTED PROGRAMMATICALLY, not by hand. The selector set was taken from the
 * header markup's own class list (template-parts/homepage/header.php), then
 * every matching rule was pulled from gp-homepage.css with its @media context.
 * Hand-copying the footer's rules cost three separate mistakes; a machine does
 * not skip a breakpoint or invent a margin.
 *
 * THE FOUR HOMEPAGE-LOCAL ALIASES ARE RESOLVED: --black, --black-2, --gold and
 * --line are defined in gp-homepage.css's own :root and would be undefined
 * here, so each is replaced by the --gpp-* token it aliases. Everything now
 * resolves through assets/css/gp-public.css, which the module declares as a
 * dependency.
 *
 * Behaviour lives in js/gp-site-header.js: the mobile nav toggle and the
 * signed-in account menu, both lifted verbatim and both self-guarding.
 *
 * OWNERSHIP: a SHARED SEAM, like css/gp-site-footer.css. UB inherits it when it
 * unparks; changes are a coordinated slice, not a drive-by.
 *
 * Tokens only, no raw hex, no :root of its own.
 */

/* ---------------------------------------------------------------------------
 * THE HOMEPAGE'S RESET, SCOPED TO THE HEADER.
 *
 * gp-homepage.css styles this markup partly through BARE ELEMENT rules, which a
 * class-driven extraction cannot see. The first pass caught only `nav` and shipped
 * a header that LOOKED right. The orchestrator's gate, by demanding the signed-in
 * and menu-open states, surfaced three more:
 *
 *   *        margin/padding 0   the account button took the UA's 1px 6px
 *   img,svg  display:block      the chevron sat on the text baseline
 *   a        color:inherit      .acct-mobile turned gold, from gp-core's a{}
 *
 * Copied from the bare rules at the top of gp-homepage.css and scoped so they
 * cannot reach past the header into the host page, which is the whole point of a
 * component. Removing this block costs 9 of the 31 parity compares, so it is
 * carrying its weight and a control proves it.
 *
 * SPECIFICITY IS PART OF THE COPY. The homepage's reset is `*`, which has ZERO
 * specificity and therefore LOSES to every bare element rule in gp-base.css (`p`
 * keeps its margin there). Written as `header *` it becomes (0,0,1), BEATS
 * gp-base, and flattens the account menu. `:where()` contributes nothing, so
 * `:where(header) *` is (0,0,0) again: the same scope, the same losing position.
 *
 * NOTHING ELSE BELONGS IN HERE. Two more declarations were added during the gate
 * and both were WRONG, each compensating for a rig that had not loaded
 * gp-core.css on the homepage side: see the header rule below.
 * ------------------------------------------------------------------------ */
:where(header), :where(header) *, :where(header) *::before, :where(header) *::after { box-sizing: border-box; margin: 0; padding: 0; }
:where(header) img, :where(header) svg { display: block; max-width: 100%; }
:where(header) a { color: inherit; text-decoration: none; }

.btn { display:inline-flex; align-items:center; gap:8px; font-family:'Oswald', sans-serif; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; font-size:14px; padding:15px 28px; border-radius:4px; border:1px solid transparent; cursor:pointer; transition:transform .15s ease, box-shadow .15s ease, background .15s ease; }
.btn:hover { transform:translateY(-2px); }
.btn-gold { background:var(--gpp-color-cta); color:var(--gpp-color-cta-ink); }
.btn-gold:hover { background:var(--gpp-color-cta); box-shadow:0 8px 24px var(--gpp-tint-accent-35); }
header {
	position: sticky; top: 0; z-index: 50; background: var(--gpp-color-bg-invert);
	/* font-family IS pinned, and it is the only inherited value that is. On the
	   homepage the header inherits Inter from gp-homepage.css's body rule; on a
	   page that has not joined the public surface it would inherit that page's
	   font instead. Measured: Poppins against the homepage's Inter, the same
	   defect the owner caught on the legal page.
	   
	   COLOUR AND LINE-HEIGHT ARE DELIBERATELY ABSENT. Both were pinned here at
	   one point, to var(--gpp-color-text) and 1.6, and both made the SERVED page
	   worse: rgb(23,24,27) against the homepage's rgb(23,23,23), and a header
	   taller than the homepage's. Every page-template body carries `gp-app`, the
	   homepage's included, so both pages already inherit the same ink and the
	   same 1.5 from gp-core.css. The rig said otherwise only because it had not
	   loaded gp-core.css on the homepage side. Inherit; do not pin. */
	font-family: 'Inter', sans-serif;
}


/* The header's own nav bar. gp-homepage.css styles this as a BARE `nav` rule,
   which my class-driven extraction could not see; it cost a 15px height
   difference in the first parity run. SCOPED to the header on purpose: two of
   the four target pages carry their own <nav>, and a bare rule would have
   restyled it. */
header nav { display: flex; align-items: center; justify-content: flex-end; padding: 18px 32px; max-width: 1180px; margin: 0 auto; }
.logo { display:flex; align-items:center; gap:8px; margin-right:auto; color:var(--gpp-color-text-invert); font-family:'Anton',sans-serif; font-size:22px; letter-spacing:0.02em; }
.logo span { color:var(--gpp-color-accent-mark); }
.logo-img { height:30px; width:auto; }
.nav-links { display:flex; gap:32px; align-items:center; margin-left:auto; }
header a, header a:hover, header a:focus { text-decoration:none !important; border-bottom:none !important; box-shadow:none !important; }
.nav-links a { color:var(--gpp-color-text-nav); font-family:'Oswald',sans-serif; font-size:18px; font-weight:800; letter-spacing:0.06em; text-transform:uppercase; transition:color .15s; display:inline-flex; align-items:center; gap:4px; }
.nav-links a:not(.btn):hover { color:var(--gpp-color-text-invert); }
.nav-links a.btn { font-family:'Oswald',sans-serif; font-size:15px; font-weight:800; letter-spacing:0.06em; color:var(--gpp-color-cta-ink); margin-left:4px; }
.nav-links a.btn:hover { color:var(--gpp-color-cta-ink); }
.nav-toggle { display:none; background:transparent; border:0; cursor:pointer; width:44px; height:44px; margin-left:12px; padding:0; flex-direction:column; align-items:center; justify-content:center; gap:5px; }
.nav-toggle span { display:block; width:22px; height:2px; background:var(--gpp-color-text-invert); border-radius:2px; transition:transform .25s ease, opacity .18s ease; }
.nav-toggle.open span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
.nav-toggle.open span:nth-child(2) { opacity:0; }
.nav-toggle.open span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }
.price-card .btn { width:100%; justify-content:center; }
@media (max-width:1024px) {
	header nav { padding: 16px 28px; }
}

@media (max-width:900px) {
	.nav-toggle { display:flex; }
	.nav-links { position:absolute; top:100%; left:0; right:0; display:none; flex-direction:column; align-items:stretch; gap:0; background:var(--gpp-color-bg-invert); border-bottom:1px solid var(--gpp-line); padding:6px 24px 22px; box-shadow:0 24px 40px rgba(0,0,0,0.45); }
	.nav-links.open { display:flex; }
	.nav-links a:not(.btn) { display:block; font-size:16px; color:var(--gpp-color-text-table); padding:15px 2px; border-bottom:1px solid var(--gpp-line); }
	.nav-links a.btn { width:100%; justify-content:center; margin:16px 0 0; font-size:15px; padding:15px 20px; }
	.app-grid .btn { display:flex; width:fit-content; margin-left:auto; margin-right:auto; }
}
@media (max-width:700px) {
	header nav { padding: 14px 22px; }
	.nav-links { padding:6px 22px 20px; }
	.logo-img { height:26px; }
}
@media (max-width:560px) {
	header nav { padding: 13px 20px; }
	.nav-links { padding:6px 20px 20px; }
}
@media (max-width:430px) {
	.btn { font-size:13.5px; padding:14px 22px; }
	.hero-ctas .btn,
  .final-cta .btn,
  .app-grid .btn { width:100%; justify-content:center; }
}
@media (hover:none) {
	.btn:hover { transform:none; box-shadow:none; }
}
.nav-links a:not(.btn),
.foot-col a { position: relative; }
.nav-links a:not(.btn)::after,
.foot-col a::after { content: ''; position: absolute; inset: -9px -6px; }
.logo-img { height: 21px; }
.logo-img { height: 21px; }
@media (max-width: 700px) {
	.logo-img { height: 18px; }
}
.acct { display: none; }
.acct-mobile { display: inline-flex; align-items: center; margin-left: auto; padding: 7px; border-radius: 50%; flex-shrink: 0; }
.acct-avatar { display: block; width: 30px; height: 30px; aspect-ratio: 1; border-radius: 50%; object-fit: cover; flex-shrink: 0; border: 2px solid var(--gpp-tint-white-20); }
.acct-avatar--fallback { display: grid; place-items: center; background: var(--gpp-color-accent); color: var(--gpp-color-bg-invert); font-family: 'Oswald', sans-serif; font-weight: 700; font-size: 13px; }
@media (min-width: 901px) {
	.acct-drawer-item { display: none !important; }
	.acct-mobile { display: none; }
	.acct { display: block; position: relative; margin-left: 4px; }
	.acct-trigger { display: flex; align-items: center; gap: 5px; height: 44px; padding: 0 2px; background: none; border: 0; cursor: pointer; border-radius: 22px; }
	.acct-trigger .acct-avatar { width: 34px; height: 34px; transition: border-color .15s ease; }
	.acct-chevron { width: 14px; height: 14px; color: var(--gpp-tint-white-70); flex-shrink: 0; transition: transform .18s ease, color .15s ease; }
	.acct-trigger[aria-expanded="true"] .acct-avatar { border-color: var(--gpp-color-accent); }
	.acct-trigger[aria-expanded="true"] .acct-chevron { transform: rotate(180deg); color: var(--gpp-color-text-invert); }
	.acct-menu { position: absolute; top: calc(100% + 10px); right: 0; min-width: 210px; padding: 8px; background: var(--gpp-color-text); border: 1px solid var(--gpp-line); border-radius: 12px; box-shadow: 0 18px 40px rgba(0,0,0,0.55); z-index: 60; }
	.acct-menu[hidden] { display: none; }
	.acct-who { padding: 8px 12px 10px; margin-bottom: 4px; border-bottom: 1px solid var(--gpp-line); font-family: 'Oswald', sans-serif; font-size: 12px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--gpp-color-text-muted-dark); }
	.acct-menu a { display: block; padding: 11px 12px; border-radius: 8px; font-family: 'Oswald', sans-serif; font-size: 14px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--gpp-color-text-invert); }
}
@media (min-width: 901px) {
	.nav-links a:not(.btn) { font-size: 14px; }
}

