/* =============================================================================
   BaselineLifestyle — Canonical Header CSS (single-file)
   Purpose:
   - Banner (system chooser) + Hero header + Tabs
   - Header typography + header layout containment
   - Safe fallbacks if other CSS files fail to load
   Notes:
   - Colours come from per-page CSS variables (e.g. --accent, --border, --muted, --hero-bg).
   - This file intentionally avoids setting global colour themes.
   ============================================================================= */

/* --------------------------
   Tokens + safe fallbacks
   -------------------------- */
:root{
  /* Banner height */
  --homebar-h: 56px;

  /* Shared geometry (override per page if needed) */
  --bl-maxw: var(--bl-page-max-width, 1500px);
  --bl-gutter: var(--bl-page-gutter, 24px);
  --bl-gutter-lg: var(--bl-page-gutter-lg, 64px);

  /* Header paddings */
  --bl-hero-pad-y: 16px;
  --bl-hero-pad-x: 12px;

  /* Typography fallbacks (pages can supply --font / --font-soft) */
  --bl-font-sans: var(--font, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial);
  --bl-font-soft: var(--font-soft, ui-serif, Georgia, Cambria, "Times New Roman", Times, serif);

  /* Default text scales (pages can override) */
  --bl-title: 30px;
  /* Subtitle matches baseline body text scale (prevents “too small” headers). */
  --bl-subtitle: 18px;

  /* Default surfaces (pages can override) */
  --hero-bg: var(--hero-bg, transparent);
}

/* Ensure the banner does not get hidden behind fixed backgrounds */
.bl-homebar,
.hero{ isolation:isolate; }

/* Banner uses fixed positioning.
   We scroll inside .bl-scroll so the scrollbar starts *below* the banner (no underlay). */
html, body{ height:100%; }
body{
  padding-top: 0 !important;
  overflow: hidden;
}

.bl-scroll{
  position: fixed;
  top: calc(var(--homebar-h) + env(safe-area-inset-top, 0px));
  left: 0;
  right: 0;
  bottom: 0;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  padding-bottom: env(safe-area-inset-bottom, 0px);
  background: var(--page-bg, transparent);
  background-size: 100% 100%;
  background-attachment: fixed;
}

/* --------------------------
   Banner (home bar)
   -------------------------- */
.bl-homebar{
  height: var(--homebar-h);
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 9999;

  display:flex;
  align-items:center;
  justify-content:center;

  padding: 10px 14px;

  background: var(--homebar-bg, var(--accent));
  background-image: var(--homebar-bg, var(--accent));
  background-repeat: no-repeat;
  background-size: 100% 100%;
  border-bottom: 1px solid var(--homebar-border, rgba(0,0,0,.10));

  -webkit-backdrop-filter: none;
  backdrop-filter: none;

  font-family: var(--bl-font-sans);
  font-size: 16px;
  line-height: 1;
}

.bl-homebar-inner{
  width: min(var(--bl-maxw), calc(100% - var(--bl-gutter)));
  margin-left:auto;
  margin-right:auto;

  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap: wrap;
  gap: 12px;

  /* JS will keep the center nav visually centered by matching this spacer */
  --homebar-right-width: 0px;
}

/* When site navigation is collapsed into a dropdown, keep the banner on one
   clean row: Pages dropdown left, Beats/Account right. */
html.bl-pages-dd-ready .bl-homebar-inner{
  flex-wrap: nowrap;
}

/* --------------------------
   Top navigation (sitewide)
   Visible links: Home + 3 systems
   -------------------------- */
.bl-topnav{
  /* Keep site navigation visible immediately so the banner does not appear blank
     while JS upgrades it into the Pages dropdown. */
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap: 10px;

  flex: 1 1 100%;
  min-width: 0;

  flex-wrap: wrap;

  order: 2;

  padding: 2px;
  max-width: 100%;
  overflow-x: visible;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;

  scrollbar-width: none; /* Firefox */
}

html.bl-pages-dd-ready .bl-topnav{ display:none !important; }

/* Pages dropdown */
.bl-pages-dd{
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
}
.bl-pages-btn{
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bl-pages-menu{
  position: absolute;
  left: 0;
  top: calc(100% + 10px);
  z-index: 13000;
  width: min(380px, calc(100vw - 28px));
  background: var(--card, #f4d06f);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  border: 1px solid var(--border, rgba(0,0,0,.18));
  border-radius: 16px;
  box-shadow: 0 12px 28px rgba(0,0,0,.22);
  padding: 8px;
}
.bl-pages-link{
  display:flex;
  align-items:center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  text-decoration: none;
  color: var(--ink, #1b0b09);
  font-weight: 900;
  letter-spacing: .01em;
}
.bl-pages-link:hover{ background: rgba(255,255,255,.10); }
.bl-pages-link[aria-current="page"]{ background: rgba(255,255,255,.08); }

/* In left-aligned mode we don't need the centering spacer */
.bl-homebar-spacer{ display:none; }

.bl-homebar-right{ order: 1; margin-left:auto; }

.bl-homebar-spacer{
  flex: 0 0 auto;
  width: var(--homebar-right-width);
  height: 1px;
}

.bl-homebar-right{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap: 10px;
  flex: 0 0 auto;
}

.bl-mini-btn{
  appearance:none;
  background: var(--showall-bg, rgba(255,255,255,.18));
  border: 1px solid var(--showall-border, rgba(0,0,0,.18));
  color: var(--ink, #1b0b09);
  border-radius: 999px;
  padding: 10px 12px;
  font: inherit;
  font-weight: 900;
  letter-spacing: .02em;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
}
.bl-mini-btn:hover{ filter: brightness(1.03); }
.bl-mini-btn:active{ transform: translateY(1px); }

.bl-flyout{
  position: fixed;
  top: 62px;
  right: 14px;
  z-index: 12000;
  width: min(440px, calc(100vw - 24px));
}
.bl-flyout[hidden]{ display:none !important; }
.bl-topnav::-webkit-scrollbar{ display:none; }

.bl-topnav a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap: 8px;

  padding: 10px 12px;
  border-radius: 14px;

  border: 1px solid var(--showall-border, rgba(0,0,0,.18));
  background: var(--showall-bg, rgba(255,255,255,.18));

  font-family: var(--bl-font-sans);
  font-weight: 900;
  letter-spacing: .02em;
  text-decoration:none;

  color: var(--ink, #1b0b09);
  white-space: nowrap;
}

.bl-topnav a:hover{
  background: var(--accent-soft, rgba(0,0,0,.06));
}

.bl-topnav a[aria-current="page"]{
  background: var(--accent-soft, rgba(0,0,0,.08));
  border-color: var(--border-2, rgba(0,0,0,.22));
  color: var(--ink, #111);
}


/* --------------------------
   Hero header (in-flow)
   -------------------------- */
.hero{
  position:relative;
  z-index: 50;

  background: var(--header-gradient, var(--hero-bg));
  background-image: var(--header-gradient, var(--hero-bg));
  background-repeat: no-repeat;
  background-size: 100% 100%;
  border-bottom: 1px solid var(--border, rgba(0,0,0,.10));

  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: 0 14px 30px -28px rgba(35,23,19,0.35);
}

.hero-inner{
  width: min(var(--bl-maxw), calc(100% - var(--bl-gutter)));
  margin-left:auto;
  margin-right:auto;

  padding: var(--bl-hero-pad-y) var(--bl-hero-pad-x);

  display:flex;
  align-items:center;
  gap: 16px;
  flex-wrap: wrap;
}

/* Header typography (scoped to header classes) */
.title{
  font-family: var(--bl-font-soft);
  font-size: var(--bl-title);
  font-weight: 700;
  letter-spacing: .2px;
  line-height: 1.15;
  margin: 0;
}
.subtitle{
  font-family: var(--bl-font-sans);
  font-size: var(--bl-subtitle);
  line-height: 1.35;
  color: var(--muted, rgba(0,0,0,.65));
  margin: 0;
}

/* --------------------------
   Tabs row geometry
   -------------------------- */
.tabs{
  width: min(var(--bl-maxw), calc(100% - var(--bl-gutter)));
  margin: 10px auto 0;
  padding: 0 var(--bl-hero-pad-x) 12px;

  background: transparent;
  border-bottom: 1px solid var(--border, rgba(0,0,0,.10));

  display:flex;
  gap: 8px;
  overflow: auto;
}

/* Dominant header-tab geometry: page files may colour tabs, but header tabs
   keep one mobile shape and never wrap their labels. */
.hero .tabs{
  flex-wrap: nowrap;
  align-items: center;
  scrollbar-width: none;
}
.hero .tabs::-webkit-scrollbar{ display:none; }
.hero .tabs .tab{
  flex: 0 0 auto;
  white-space: nowrap;
  line-height: 1;
  max-width: none;
}

/* Compact header mode (optional hook) */
.hero.compact .hero-inner{ padding: 10px 20px; gap: 10px; }
.hero.compact .title{ font-size: 24px; }
.hero.compact .subtitle,
.hero.compact .care-line{ display:none; }
.hero.compact .tabs{ padding-bottom: 8px; }
.hero.compact .tab{ padding: 9px 14px; font-size: 16px; }

/* Desktop geometry */
@media (min-width: 900px){
  :root{ --bl-gutter: var(--bl-gutter-lg); }
  .hero-inner{ padding: 24px 20px; }
  .tabs{ padding-left: 20px; padding-right: 20px; }
}

/* --------------------------
   System chooser (banner dropdown)
   If pages also define these, this acts as a safe fallback.
   -------------------------- */
.bl-system-wrap{ position: relative; display:flex; align-items:center; }

.bl-system-toggle{
  all: unset;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid var(--showall-border, rgba(0,0,0,.18));
  background: var(--showall-bg, rgba(255,255,255,.18));
  font-weight: 900;
  letter-spacing: 0.02em;
  color: var(--ink, #1b0b09);
  position: relative;
  z-index: 10001;
}

.bl-system-toggle .caret{
  font-weight: 900;
  opacity: .9;
  transform: translateY(-1px);
}

.bl-system-toggle:focus-visible{
  outline: none;
  box-shadow: 0 0 0 4px rgba(0,0,0,.18), 0 14px 30px -26px rgba(35,23,19,.28);
}

.bl-system-menu{
  z-index: 10000;
  position:absolute;
  top: calc(100% + 10px);
  left: 50%;
  transform: translateX(-50%);

  min-width: 260px;
  max-width: min(92vw, 380px);

  border-radius: 16px;
  padding: 10px;

  border: 1px solid var(--showall-border, rgba(0,0,0,.14));
  background: var(--showall-bg, rgba(255,255,255,.92));

  backdrop-filter: blur(10px) saturate(140%);
  box-shadow: 0 22px 56px -38px rgba(0,0,0,.55);

  color: var(--ink, #111);
}

.bl-system-menu a{
  display:block;
  padding: 10px 12px;
  border-radius: 12px;

  font-weight: 820;
  color: var(--ink, #111);
  text-decoration: none;
}

.bl-system-menu a:hover{
  background: var(--accent-soft, rgba(0,0,0,.06));
}

.bl-system-menu .small{
  display:block;
  font-size: 16px;
  font-weight: 650;
  color: var(--muted, rgba(0,0,0,.65));
  margin-top: 3px;
}

.bl-system-menu .divider{
  height: 1px;
  margin: 10px 6px;
  background: var(--border, rgba(0,0,0,.10));
  pointer-events: none;
}

/* --------------------------------------------------------------------------
   Shared banner / flyout gradient visuals are owned by baseline-sitewide.css.
   Keep this file focused on banner, hero, and tab geometry.
   -------------------------------------------------------------------------- */
html:not(.bl-pages-dd-ready) .bl-topnav{
  display:flex !important;
}
/* 20260606_banner_game_tabs_authority
   Dominant banner/dropdown geometry:
   - one coherent homebar button height sitewide;
   - page-title dropdown gets the maximum usable mobile width;
   - text clips only at the right edge, never by shifting off-screen;
   - page files own colour, this canonical file owns banner shape. */
.bl-homebar{
  height:var(--homebar-h)!important;
  min-height:var(--homebar-h)!important;
  padding:8px clamp(6px,2vw,14px)!important;
  overflow:hidden!important;
}
.bl-homebar-inner{
  width:min(var(--bl-maxw), calc(100% - clamp(8px,2.5vw,24px)))!important;
  max-width:100%!important;
  display:flex!important;
  align-items:center!important;
  flex-wrap:nowrap!important;
  gap:clamp(6px,2vw,12px)!important;
  overflow:hidden!important;
}
html.bl-pages-dd-ready .bl-homebar-inner{
  flex-wrap:nowrap!important;
}
.bl-pages-dd{
  flex:1 1 auto!important;
  min-width:0!important;
  max-width:100%!important;
  overflow:hidden!important;
}
.bl-mini-btn{
  min-height:38px!important;
  height:38px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0 12px!important;
  line-height:1!important;
  box-sizing:border-box!important;
}
.bl-pages-btn{
  justify-content:flex-start!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.bl-homebar-right{
  flex:0 0 auto!important;
  min-width:max-content!important;
  gap:clamp(6px,1.8vw,10px)!important;
}
.bl-homebar-right .bl-mini-btn{
  width:42px!important;
  min-width:42px!important;
  padding-left:0!important;
  padding-right:0!important;
}
@media (max-width:520px){
  .bl-homebar{
    padding-left:6px!important;
    padding-right:6px!important;
  }
  .bl-homebar-inner{
    width:calc(100% - 8px)!important;
    gap:6px!important;
  }
  .bl-pages-btn{
    padding-left:10px!important;
    padding-right:10px!important;
  }
  .bl-pages-menu{
    left:0!important;
    width:min(380px, calc(100vw - 12px))!important;
  }
}


/* 20260606_mobile_banner_trackcoin_controls
   Dominant banner dropdown function rule:
   the page-title button may clip its own text, but the dropdown container/menu
   must not be clipped by the fixed banner. */
.bl-homebar,
.bl-homebar-inner,
.bl-pages-dd{
  overflow:visible!important;
}
.bl-pages-menu[hidden]{
  display:none!important;
}
.bl-pages-menu{
  z-index:15000!important;
}
.bl-pages-btn{
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}


/* 20260606_mobile_banner_trackcoin_controls
   Final dominant banner button rule:
   Desktop keeps full themed Binaural / Login / Account pill labels.
   Mobile keeps the right-side controls compact so the page dropdown does not crush or overlap. */
@media (min-width:821px){
  .bl-homebar-right .bl-mini-btn,
  #bl-beats-toggle,
  #bl-auth-toggle{
    width:auto!important;
    min-width:0!important;
    height:38px!important;
    min-height:38px!important;
    padding:0 14px!important;
    border-radius:999px!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    gap:8px!important;
    overflow:visible!important;
  }
  #bl-beats-toggle .bl-btn-label,
  #bl-auth-toggle .bl-btn-label{
    position:static!important;
    width:auto!important;
    height:auto!important;
    overflow:visible!important;
    clip:auto!important;
    clip-path:none!important;
    white-space:nowrap!important;
  }
}
@media (max-width:820px){
  .bl-homebar,
  .bl-homebar-inner,
  .bl-pages-dd{
    overflow:visible!important;
  }
  .bl-homebar-right .bl-mini-btn,
  #bl-beats-toggle,
  #bl-auth-toggle{
    width:42px!important;
    min-width:42px!important;
    height:42px!important;
    min-height:42px!important;
    padding:0!important;
    border-radius:999px!important;
    overflow:hidden!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
  }
  #bl-beats-toggle .bl-btn-label,
  #bl-auth-toggle .bl-btn-label{
    position:absolute!important;
    width:1px!important;
    height:1px!important;
    overflow:hidden!important;
    clip:rect(0 0 0 0)!important;
    clip-path:inset(50%)!important;
    white-space:nowrap!important;
  }
  .bl-pages-btn{
    max-width:100%!important;
  }
}


/* 20260606_games_flyout_audio_authority
   Final homebar height authority:
   --homebar-h must never collapse to 0 after mobile game mode hides/reveals the banner. */
:root{
  --homebar-h-min:56px;
}
.bl-homebar{
  height:max(var(--homebar-h-min), var(--homebar-h, 56px))!important;
  min-height:max(var(--homebar-h-min), var(--homebar-h, 56px))!important;
}
.bl-scroll{
  top:calc(max(var(--homebar-h-min), var(--homebar-h, 56px)) + env(safe-area-inset-top, 0px))!important;
}

/* 20260607_exact_wording_banner_fit
   Keep the exact page title wording inside the banner pill.
   Do NOT shorten "Baseline Natural Skincare"; fix the pill geometry instead. */
.bl-pages-dd{
  flex:1 1 auto!important;
  min-width:0!important;
  max-width:100%!important;
  overflow:visible!important;
}
.bl-pages-btn{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:clip!important;
}
@media (max-width:520px){
  html[data-app="skin"] .bl-pages-btn,
  body[data-app="skin"] .bl-pages-btn{
    font-size:clamp(13px, 3.75vw, 16px)!important;
    letter-spacing:0!important;
    padding-left:10px!important;
    padding-right:10px!important;
  }
}
@media (max-width:360px){
  html[data-app="skin"] .bl-pages-btn,
  body[data-app="skin"] .bl-pages-btn{
    font-size:12.5px!important;
    padding-left:8px!important;
    padding-right:8px!important;
  }
}



/* 20260607_content_sized_banner_dropdown
   The page-title dropdown should hold its wording with breathing room, not stretch
   into a long empty bar across the banner. It can still shrink on very narrow
   screens, but desktop/tablet keeps a content-sized pill. */
.bl-pages-dd{
  flex:0 1 auto!important;
  width:auto!important;
  min-width:0!important;
  max-width:100%!important;
  overflow:visible!important;
}
.bl-pages-btn{
  width:auto!important;
  min-width:0!important;
  max-width:min(100%, 34rem)!important;
  padding-left:14px!important;
  padding-right:14px!important;
  justify-content:flex-start!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:clip!important;
}
.bl-homebar-right{
  margin-left:auto!important;
}
@media (max-width:520px){
  .bl-pages-dd{
    flex:1 1 auto!important;
    max-width:100%!important;
  }
  .bl-pages-btn{
    width:100%!important;
    max-width:100%!important;
    padding-left:10px!important;
    padding-right:10px!important;
  }
}
