/* Gym Vision design tokens v2.0. Generated from _source/handoff_data.py; do not edit by hand.
   Values match style-guide-v2.pdf. Rules: BRAND-RULES.md. */

@font-face{font-family:"Nunito";font-weight:800;font-style:normal;font-display:swap;src:url("./fonts/Nunito-ExtraBold.woff2") format("woff2")}
@font-face{font-family:"Nunito";font-weight:700;font-style:normal;font-display:swap;src:url("./fonts/Nunito-Bold.woff2") format("woff2")}
@font-face{font-family:"Nunito Sans";font-weight:400;font-style:normal;font-display:swap;src:url("./fonts/NunitoSans-Regular.woff2") format("woff2")}
@font-face{font-family:"Nunito Sans";font-weight:600;font-style:normal;font-display:swap;src:url("./fonts/NunitoSans-SemiBold.woff2") format("woff2")}
/* Adjust the url() paths to wherever the fonts folder is served. Preload Nunito-ExtraBold and NunitoSans-Regular. */

:root {
  /* Brand palette (style guide p6) */
  --gv-midnight: #12202B;
  --gv-lagoon: #19B5A5;
  --gv-deep-lagoon: #0B7A70;
  --gv-sun: #FFC247;
  --gv-paper: #F4F8F7;
  --gv-slate: #5B6B76;
  --gv-white: #FFFFFF;
  /* Supplementary (in the guide, outside its palette table) */
  --gv-mist: #DCE8E6;
  --gv-sun-tint: #FFF6DC;
  --gv-danger: #C23B22;
  --gv-dark-raised: #1B2F3D;
  --gv-dark-muted: #9FB4BD;
  /* Award tiers: award artwork only, never UI chrome */
  --gv-tier-bronze-ring: #B9783F;
  --gv-tier-bronze-edge: #8C5326;
  --gv-tier-bronze-light: #EDB985;
  --gv-tier-bronze-glyph: #F2C9A1;
  --gv-tier-silver-ring: #AEBCC6;
  --gv-tier-silver-edge: #74848F;
  --gv-tier-silver-light: #E6EDF1;
  --gv-tier-silver-glyph: #E6EDF1;
  --gv-tier-gold-ring: #F2B53A;
  --gv-tier-gold-edge: #B27A0A;
  --gv-tier-gold-light: #FFE08A;
  --gv-tier-gold-glyph: #FFD772;
  --gv-tier-platinum-ring: #C6D3F4;
  --gv-tier-platinum-edge: #6F86C4;
  --gv-tier-platinum-light: #F0F4FF;
  --gv-tier-platinum-glyph: #E6ECFF;
  --gv-tier-locked-ring: #D5DDE1;
  --gv-tier-locked-edge: #98A6AE;
  --gv-tier-locked-light: #EEF2F4;
  --gv-tier-locked-glyph: #8896A0;
  /* Fonts */
  --gv-font-heading: "Nunito", "Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --gv-font-body: "Nunito Sans", Inter, system-ui, -apple-system, "Segoe UI", sans-serif;
  --gv-weight-heading: 800;
  --gv-weight-subheading: 700;
  --gv-weight-body: 400;
  --gv-weight-label: 600;
  /* Type scale (px values in comments; rem at 16px root) */
  --gv-text-h1: 2.5rem; /* 40px */
  --gv-lh-h1: 1.15;
  --gv-text-h2: 1.75rem; /* 28px */
  --gv-lh-h2: 1.15;
  --gv-text-h3: 1.25rem; /* 20px */
  --gv-lh-h3: 1.15;
  --gv-text-lead: 1.25rem; /* 20px */
  --gv-lh-lead: 1.5;
  --gv-text-body: 1rem; /* 16px */
  --gv-lh-body: 1.5;
  --gv-text-body-strong: 1rem; /* 16px */
  --gv-lh-body-strong: 1.5;
  --gv-text-button: 1rem; /* 16px */
  --gv-lh-button: 1.25;
  --gv-text-caption: 0.875rem; /* 14px */
  --gv-lh-caption: 1.5;
  --gv-text-caption-strong: 0.875rem; /* 14px */
  --gv-lh-caption-strong: 1.5;
  --gv-text-h1-mobile: 2rem; /* 32px, below 768px */
  --gv-text-h2-mobile: 1.5rem; /* 24px, below 768px */
  --gv-measure: 70ch;
  --gv-letter-spacing: 0;
  /* Spacing: 4px base unit, key x 4px */
  --gv-space-0: 0;
  --gv-space-1: 0.25rem; /* 4px */
  --gv-space-2: 0.5rem; /* 8px */
  --gv-space-3: 0.75rem; /* 12px */
  --gv-space-4: 1rem; /* 16px */
  --gv-space-5: 1.25rem; /* 20px */
  --gv-space-6: 1.5rem; /* 24px */
  --gv-space-8: 2rem; /* 32px */
  --gv-space-10: 2.5rem; /* 40px */
  --gv-space-12: 3rem; /* 48px */
  --gv-space-16: 4rem; /* 64px */
  --gv-space-20: 5rem; /* 80px */
  --gv-space-24: 6rem; /* 96px */
  /* Radius */
  --gv-radius-sm: 8px;
  --gv-radius-md: 12px;
  --gv-radius-lg: 16px;
  --gv-radius-pill: 9999px;
  /* Sizing */
  --gv-touch-target-min: 44px;
  --gv-control-height: 44px;
  --gv-control-height-lg: 48px;
  --gv-header-height: 64px;
  --gv-header-logo-svg-height: 48px;
  --gv-container-max: 1200px;
  --gv-icon-sm: 16px;
  --gv-icon-md: 20px;
  --gv-icon-lg: 24px;
  --gv-icon-xl: 32px;
  --gv-award-min: 48px;
  --gv-badge-min-width: 150px;
  --gv-focus-ring-width: 2px;
  --gv-focus-ring-offset: 2px;
  /* Breakpoints (use in @media with literal px; CSS vars cannot be used in media queries)
     sm 640px, md 768px, lg 1024px, xl 1280px */
  /* Light theme (default) */
  --gv-bg-page: #F4F8F7;
  --gv-bg-surface: #FFFFFF;
  --gv-bg-subtle: #DCE8E6;
  --gv-bg-brand-dark: #12202B;
  --gv-text-primary: #12202B;
  --gv-text-secondary: #5B6B76;
  --gv-text-link: #0B7A70;
  --gv-text-on-brand-dark: #F4F8F7;
  --gv-border-subtle: #DCE8E6;
  --gv-border-strong: #5B6B76;
  --gv-action-bg: #0B7A70;
  --gv-action-fg: #FFFFFF;
  --gv-action-hover-bg: #12202B;
  --gv-action-hover-fg: #FFFFFF;
  --gv-focus-ring: #0B7A70;
  --gv-accent: #19B5A5;
  --gv-track: #DCE8E6;
  --gv-highlight-bg: #FFC247;
  --gv-highlight-fg: #12202B;
  --gv-callout-bg: #FFF6DC;
  --gv-callout-border: #FFC247;
  --gv-error-bg: #C23B22;
  --gv-error-fg: #FFFFFF;
  --gv-error-text: #C23B22;
  --gv-icon-default: #12202B;
  --gv-icon-muted: #5B6B76;
  --gv-icon-accent: #19B5A5;
  color-scheme: light;
}

/* Dark: follows the OS unless the page forces data-theme="light" */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --gv-bg-page: #12202B;
    --gv-bg-surface: #1B2F3D;
    --gv-bg-subtle: #1B2F3D;
    --gv-bg-brand-dark: #12202B;
    --gv-text-primary: #F4F8F7;
    --gv-text-secondary: #9FB4BD;
    --gv-text-link: #19B5A5;
    --gv-text-on-brand-dark: #F4F8F7;
    --gv-border-subtle: rgba(244,248,247,0.16);
    --gv-border-strong: #9FB4BD;
    --gv-action-bg: #19B5A5;
    --gv-action-fg: #12202B;
    --gv-action-hover-bg: #F4F8F7;
    --gv-action-hover-fg: #12202B;
    --gv-focus-ring: #19B5A5;
    --gv-accent: #19B5A5;
    --gv-track: rgba(244,248,247,0.16);
    --gv-highlight-bg: #FFC247;
    --gv-highlight-fg: #12202B;
    --gv-callout-bg: #1B2F3D;
    --gv-callout-border: #FFC247;
    --gv-error-bg: #C23B22;
    --gv-error-fg: #F4F8F7;
    --gv-error-text: #F4F8F7;
    --gv-icon-default: #F4F8F7;
    --gv-icon-muted: #9FB4BD;
    --gv-icon-accent: #19B5A5;
    color-scheme: dark;
  }
}

/* Forced themes (a data-theme attribute on <html> or any container) */
[data-theme="dark"] {
  --gv-bg-page: #12202B;
  --gv-bg-surface: #1B2F3D;
  --gv-bg-subtle: #1B2F3D;
  --gv-bg-brand-dark: #12202B;
  --gv-text-primary: #F4F8F7;
  --gv-text-secondary: #9FB4BD;
  --gv-text-link: #19B5A5;
  --gv-text-on-brand-dark: #F4F8F7;
  --gv-border-subtle: rgba(244,248,247,0.16);
  --gv-border-strong: #9FB4BD;
  --gv-action-bg: #19B5A5;
  --gv-action-fg: #12202B;
  --gv-action-hover-bg: #F4F8F7;
  --gv-action-hover-fg: #12202B;
  --gv-focus-ring: #19B5A5;
  --gv-accent: #19B5A5;
  --gv-track: rgba(244,248,247,0.16);
  --gv-highlight-bg: #FFC247;
  --gv-highlight-fg: #12202B;
  --gv-callout-bg: #1B2F3D;
  --gv-callout-border: #FFC247;
  --gv-error-bg: #C23B22;
  --gv-error-fg: #F4F8F7;
  --gv-error-text: #F4F8F7;
  --gv-icon-default: #F4F8F7;
  --gv-icon-muted: #9FB4BD;
  --gv-icon-accent: #19B5A5;
  color-scheme: dark;
}
[data-theme="light"] {
  --gv-bg-page: #F4F8F7;
  --gv-bg-surface: #FFFFFF;
  --gv-bg-subtle: #DCE8E6;
  --gv-bg-brand-dark: #12202B;
  --gv-text-primary: #12202B;
  --gv-text-secondary: #5B6B76;
  --gv-text-link: #0B7A70;
  --gv-text-on-brand-dark: #F4F8F7;
  --gv-border-subtle: #DCE8E6;
  --gv-border-strong: #5B6B76;
  --gv-action-bg: #0B7A70;
  --gv-action-fg: #FFFFFF;
  --gv-action-hover-bg: #12202B;
  --gv-action-hover-fg: #FFFFFF;
  --gv-focus-ring: #0B7A70;
  --gv-accent: #19B5A5;
  --gv-track: #DCE8E6;
  --gv-highlight-bg: #FFC247;
  --gv-highlight-fg: #12202B;
  --gv-callout-bg: #FFF6DC;
  --gv-callout-border: #FFC247;
  --gv-error-bg: #C23B22;
  --gv-error-fg: #FFFFFF;
  --gv-error-text: #C23B22;
  --gv-icon-default: #12202B;
  --gv-icon-muted: #5B6B76;
  --gv-icon-accent: #19B5A5;
  color-scheme: light;
}

/* Base: the minimum every page must include */
html { font-size: 100%; -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--gv-bg-page); color: var(--gv-text-primary);
  font-family: var(--gv-font-body); font-weight: 400; font-size: var(--gv-text-body); line-height: var(--gv-lh-body);
  font-synthesis: none; letter-spacing: 0; }
h1,h2,h3 { font-family: var(--gv-font-heading); font-weight: 800; line-height: 1.15; letter-spacing: 0; margin: 0; color: var(--gv-text-primary); }
h1 { font-size: var(--gv-text-h1-mobile); } h2 { font-size: var(--gv-text-h2-mobile); } h3 { font-size: var(--gv-text-h3); }
@media (min-width: 768px) { h1 { font-size: var(--gv-text-h1); } h2 { font-size: var(--gv-text-h2); } }
p, li { max-width: var(--gv-measure); }
a { color: var(--gv-text-link); text-decoration: underline; text-underline-offset: 0.2em; font-weight: 600; }
:focus-visible { outline: var(--gv-focus-ring-width) solid var(--gv-focus-ring); outline-offset: var(--gv-focus-ring-offset); }
.gv-icon { width: var(--gv-icon-lg); height: var(--gv-icon-lg); color: var(--gv-icon-default); --gv-accent: var(--gv-icon-accent); flex: none; }
