/**
 * GTGF v15.60 — Surface Contracts & Contrast Repair
 *
 * A surface owns its own foreground. Do not infer descendant text colours
 * from an outer section. This is deliberately loaded last, site-wide.
 */
:root{
  --gtgf-dark:#0a0a0a;
  --gtgf-on-dark:#fff;
  --gtgf-on-dark-muted:#c9c5be;
  --gtgf-on-dark-soft:#aaa59d;
  --gtgf-on-paper:#111;
  --gtgf-on-paper-muted:#5b5650;
}

/* -------------------------------------------------------------------------
   Dark surface contracts — whole site
   ------------------------------------------------------------------------- */
body.gtgf-v14 :is(
  .planner-form,
  .planner-wizard,
  .planner-goal-context,
  .planner-level-context,
  .planner-step-tip,
  .planner-ready-note,
  .planner-wizard__actions,
  .planner-calendar-option,
  .planner-advanced-option,
  .planner-coach-note,
  .planner-live-summary,
  .planner-week-advice,
  .planner-wizard__validation,
  .planner-athlete-state,
  .planner-triathlon-state,
  .planner-adaptive-week,
  .planner-ux-disclosure,
  .planner-auth-card:not(.planner-auth-card--orange),
  .planner-fuel-bridge,
  .nutrition-form,
  .nutrition-form__panel,
  .nutrition-training-link,
  .nutrition-training-link-login,
  .nutrition-training-link-login--inline,
  .nutrition-training-link__summary,
  .nutrition-load-strip,
  .nutrition-mode,
  .nutrition-week,
  .nutrition-sweat-result,
  .nutrition-day,
  .nutrition-day__targets > span,
  .nutrition-meal__macros > span,
  .v154-fuel-check,
  .v154-fuel-check__result,
  .event-card,
  .events-filter-layout,
  .events-filter-panel,
  .events-map-panel,
  .v145-article-hero,
  .v145-article-next,
  .gtgf-article-boundary,
  .gtgf-article-sources,
  .v154-fuel-reference,
  .v14-member-app,
  .v14-member-stage--dark,
  .v14-account-menu,
  .v14-mobile-actions,
  .gtgf-ae,
  .gtgf-ae-card,
  .gtgf-ae-v147-focus,
  .gtgf-ae-v147-signals,
  .gtgf-ae-v147-drawer,
  .gtgf-club-nav,
  .gtgf-community-overview-card.is-dark,
  .gtgf-community-dashboard-teaser,
  .gtgf-private-strava-sync.is-empty,
  .gtgf-private-lock,
  .gtgf-strava-club-bridge,
  .gtgf-strava-history__trend,
  .gtgf-completion-modal__card,
  .v142-story-teaser,
  .v14-portugal-panel,
  .v142-mini-plan,
  .v14-final-cta,
  .v1553-cockpit,
  .v1553-cockpit__card,
  .v1556-welcome-card,
  .v1550-club-privacy,
  .v1526-news-article__hero,
  .recipe-mail__form,
  .trip-v146-promise,
  .trip-v148-day,
  .trip-v148-clarity__grid article,
  .trip-v158-extra-grid article,
  .trip-v158-rules__grid article,
  .v1512-values article,
  .v1512-story-proof article
){
  color:var(--gtgf-on-dark);
}

/* Muted copy on true dark surfaces. Explicit component accents may still
   override these rules because we intentionally avoid !important here. */
body.gtgf-v14 :is(
  .planner-fuel-bridge,
  .nutrition-training-link,
  .v145-article-next,
  .gtgf-community-dashboard-teaser,
  .gtgf-private-strava-sync.is-empty,
  .gtgf-strava-club-bridge,
  .trip-v146-promise
) :is(p,small,.muted,.v14-muted){
  color:var(--gtgf-on-dark-muted);
}

/* Screenshot-verified training -> nutrition bridge. It lives inside a paper
   section, but it is a dark component and must never inherit paper colours. */
body.gtgf-v14 .planner-fuel-bridge{
  background:#0a0a0a !important;
  border-color:#2b2b2b !important;
  color:#fff !important;
}
body.gtgf-v14 .planner-fuel-bridge__copy .home-kicker{
  color:#ff7a2d !important;
  -webkit-text-fill-color:#ff7a2d !important;
}
body.gtgf-v14 .planner-fuel-bridge__copy h3{
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
}
body.gtgf-v14 .planner-fuel-bridge__copy p:last-child{
  color:#c9c5be !important;
  -webkit-text-fill-color:#c9c5be !important;
  opacity:1 !important;
}
body.gtgf-v14 .planner-fuel-bridge__preview{
  border-color:#353535 !important;
}
body.gtgf-v14 .planner-fuel-bridge__preview > div{
  border-color:#353535 !important;
}
body.gtgf-v14 .planner-fuel-bridge__preview span{
  color:#aaa59d !important;
  -webkit-text-fill-color:#aaa59d !important;
  opacity:1 !important;
  font-size:max(.68rem,12px) !important;
}
body.gtgf-v14 .planner-fuel-bridge__preview strong{
  color:#ff7a2d !important;
  -webkit-text-fill-color:#ff7a2d !important;
  font-size:max(.78rem,13px) !important;
}
body.gtgf-v14 .planner-fuel-bridge > .button{
  background:var(--orange,#ff5a00) !important;
  border-color:var(--orange,#ff5a00) !important;
  color:#111 !important;
  -webkit-text-fill-color:#111 !important;
}

/* -------------------------------------------------------------------------
   Dark forms: controls never inherit paper text and never become black-on-black
   ------------------------------------------------------------------------- */
body.gtgf-v14 :is(.planner-form,.nutrition-form) :is(label,legend,h2,h3,h4,strong,summary){
  color:#fff;
}
body.gtgf-v14 :is(.planner-form,.nutrition-form) :is(p,small,.planner-step__intro,.planner-field-heading small){
  color:var(--gtgf-on-dark-muted);
}
body.gtgf-v14 :is(.planner-form,.nutrition-form) :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea){
  color:#f8f7f4;
  -webkit-text-fill-color:#f8f7f4;
}
body.gtgf-v14 :is(.planner-form,.nutrition-form) :is(input,textarea)::placeholder{
  color:#aaa59d;
  opacity:1;
}
body.gtgf-v14 :is(.planner-form,.nutrition-form) select option{
  background:#111;
  color:#fff;
}

/* -------------------------------------------------------------------------
   Dark utility/card areas used outside explicitly black sections
   ------------------------------------------------------------------------- */
body.gtgf-v14 :is(
  .nutrition-training-link,
  .nutrition-training-link__summary,
  .nutrition-load-strip,
  .v154-fuel-check,
  .v154-fuel-check__result,
  .event-card,
  .gtgf-article-boundary
) :is(h2,h3,h4,strong,label,summary){
  color:#fff;
}
body.gtgf-v14 :is(
  .nutrition-training-link,
  .nutrition-load-strip,
  .event-card,
  .gtgf-article-boundary
) :is(p,small){
  color:var(--gtgf-on-dark-muted);
}

/* Preserve clear accent hierarchy in dark utility surfaces. */
body.gtgf-v14 :is(.planner-fuel-bridge,.nutrition-training-link,.event-card,.gtgf-article-boundary) :is(.eyebrow,.home-kicker){
  color:var(--orange,#ff5a00);
}

/* -------------------------------------------------------------------------
   Paper surfaces that contain dark controls. Inputs/selects remain explicit.
   ------------------------------------------------------------------------- */
body.gtgf-v14 :is(.section--paper,.section--white) :is(input,select,textarea){
  max-width:100%;
}

/* Containment for the same nested-surface problem at every breakpoint. */
body.gtgf-v14 :is(
  .planner-fuel-bridge,
  .nutrition-training-link,
  .nutrition-day,
  .event-card,
  .gtgf-community-dashboard-teaser,
  .gtgf-strava-club-bridge,
  .trip-v148-day
) :is(h1,h2,h3,h4,p,span,strong,small,label,summary,a,button){
  max-width:100%;
  overflow-wrap:break-word;
  word-break:normal;
}

@media(max-width:760px){
  body.gtgf-v14 .planner-fuel-bridge__preview{
    grid-template-columns:1fr !important;
  }
  body.gtgf-v14 .planner-fuel-bridge__preview > div{
    border-right:0 !important;
    border-bottom:1px solid #353535 !important;
  }
  body.gtgf-v14 .planner-fuel-bridge__preview > div:last-child{
    border-bottom:0 !important;
  }
}
