.admin-nav_header__CzXI_ {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: var(--nav-bar-height);
  z-index: 100;
  background: var(--c-cream);
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s, box-shadow 0.2s;
}

.admin-nav_headerScrolled__2DgHm {
  border-bottom-color: var(--c-border);
  box-shadow: var(--shadow);
}

.admin-nav_nav__q08OX {
  display: flex;
  align-items: center;
  height: 100%;
  padding: 0 var(--page-gutter);
  max-width: var(--max-width-wide);
  margin: 0 auto;
  gap: 24px;
}

.admin-nav_logo__lw3U0 {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.admin-nav_logoImage__9lRLA {
  width: 32px;
  height: 32px;
  object-fit: contain;
  flex-shrink: 0;
}

.admin-nav_logoNari__CxX5R {
  font-family: var(--font-heading);
  font-size: 20px;
  font-weight: 500;
  color: var(--c-light-head);
  letter-spacing: -0.03em;
}

.admin-nav_logoBadge__Dxsvq {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 500;
  color: var(--c-cream);
  background: var(--c-navy);
  padding: 2px 8px;
  border-radius: 4px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.admin-nav_links__NqMRW {
  display: flex;
  align-items: center;
  gap: 2px;
  list-style: none;
  flex: 1 1;
  overflow-x: auto;
  scrollbar-width: none;
}

.admin-nav_links__NqMRW::-webkit-scrollbar {
  display: none;
}

.admin-nav_link__JIcr_ {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 400;
  color: var(--c-light-body);
  padding: 6px 10px;
  border-radius: 6px;
  border-bottom: 2px solid transparent;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
  white-space: nowrap;
}

.admin-nav_link__JIcr_:hover {
  background: var(--c-green-faint);
  color: var(--c-light-head);
}

.admin-nav_linkActive__UKUkP {
  color: var(--c-green-dark);
  font-weight: 500;
  border-bottom-color: var(--c-green-dark);
}

/* ── Identity pill ── */
.admin-nav_identity__Mzurv {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 32px;
  padding: 0 12px;
  border: 1px dashed var(--c-border);
  border-radius: 6px;
  background: transparent;
  font-family: var(--font-body);
  font-size: 12px;
  color: var(--c-light-body);
  white-space: nowrap;
  flex-shrink: 0;
}

.admin-nav_identityLabel__7don7 {
  color: var(--c-light-mute, var(--c-light-body));
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.admin-nav_identityName__cT9Md {
  font-weight: 500;
  color: var(--c-light-head);
  max-width: 180px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ── Avatar button ── */
.admin-nav_avatar__VnAdF {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--c-green-faint);
  color: var(--c-green-dark);
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  cursor: pointer;
  flex-shrink: 0;
  transition: box-shadow 0.15s;
}

.admin-nav_avatar__VnAdF:hover {
  box-shadow: 0 0 0 2px var(--c-green-faint);
}

/* ── Account dropdown ── */
.admin-nav_accountWrap__AV62X {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
}

.admin-nav_dropdown__LZvGr {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  background: var(--c-cream-light);
  border: 1px solid var(--c-border);
  border-radius: 10px;
  box-shadow: var(--shadow-hov);
  padding: 8px 0;
  min-width: 200px;
  z-index: 200;
  animation: admin-nav_nari-fadeUp__UrF8W 0.15s ease both;
}

.admin-nav_dropdownEmail__FkoXu {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 300;
  color: var(--c-light-mute);
  padding: 6px 16px 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.admin-nav_dropdownSep__B2Fj_ {
  height: 1px;
  background: var(--c-border);
  margin: 4px 0;
}

.admin-nav_dropdownItem__LbJEq {
  display: block;
  width: 100%;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  color: var(--c-light-body);
  padding: 8px 16px;
  background: none;
  border: none;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.admin-nav_dropdownItem__LbJEq:hover,
.admin-nav_dropdownItem__LbJEq[data-highlighted] {
  background: var(--c-green-faint);
  color: var(--c-light-head);
  outline: none;
}

/* ── Hamburger toggle (hidden on desktop) ── */
.admin-nav_menuToggle__0YhAw {
  display: none;
  background: none;
  border: none;
  padding: 8px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.admin-nav_hamburger__ryJJZ {
  display: block;
  width: 20px;
  height: 2px;
  background: var(--c-light-head);
  border-radius: 1px;
  position: relative;
  transition: background 0.2s;
}

.admin-nav_hamburger__ryJJZ::before,
.admin-nav_hamburger__ryJJZ::after {
  content: "";
  display: block;
  width: 20px;
  height: 2px;
  background: var(--c-light-head);
  border-radius: 1px;
  position: absolute;
  left: 0;
  transition: transform 0.2s, top 0.2s;
}

.admin-nav_hamburger__ryJJZ::before { top: -6px; }
.admin-nav_hamburger__ryJJZ::after  { top: 6px; }

.admin-nav_hamburgerOpen__fYZSr { background: transparent; }
.admin-nav_hamburgerOpen__fYZSr::before { top: 0; transform: rotate(45deg); }
.admin-nav_hamburgerOpen__fYZSr::after  { top: 0; transform: rotate(-45deg); }

/* ── Mobile menu panel ── */
.admin-nav_mobileMenu__dMX1G {
  display: none;
}

@media (max-width: 640px) {
  .admin-nav_links__NqMRW    { display: none; }
  .admin-nav_avatar__VnAdF   { display: none; }
  .admin-nav_identity__Mzurv { display: none; }

  .admin-nav_menuToggle__0YhAw {
    display: block;
    margin-left: auto;
  }

  .admin-nav_mobileMenu__dMX1G {
    display: flex;
    flex-direction: column;
    gap: 8px;
    position: absolute;
    top: var(--nav-height);
    left: 0;
    right: 0;
    background: var(--c-cream);
    border-bottom: 1px solid var(--c-border);
    box-shadow: var(--shadow);
    padding: 16px var(--page-gutter) 20px;
    animation: admin-nav_nari-fadeUp__UrF8W 0.2s ease both;
  }

  .admin-nav_mobileLinks__NOzxW {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }

  .admin-nav_mobileLink__iAniy {
    display: block;
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 400;
    color: var(--c-light-body);
    padding: 10px 12px;
    border-radius: 8px;
    transition: background 0.15s, color 0.15s;
  }

  .admin-nav_mobileLink__iAniy:hover {
    background: var(--c-green-faint);
    color: var(--c-light-head);
  }

  .admin-nav_mobileLinkActive__v4kr5 {
    color: var(--c-green-dark);
    font-weight: 500;
  }

  .admin-nav_mobileCta__cHC8h {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 8px;
    padding-top: 12px;
    border-top: 1px solid var(--c-border);
  }

  .admin-nav_mobileNavBtn__Lb1FG {
    display: block;
    text-align: center;
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 400;
    color: var(--c-light-head);
    padding: 10px 16px;
    border: 1px solid var(--c-border-mid);
    border-radius: 9px;
    transition: background 0.15s;
  }

  .admin-nav_mobileNavBtn__Lb1FG:hover {
    background: var(--c-cream-dark);
  }

  .admin-nav_mobileSignOutBtn__Xa_Hx {
    display: block;
    width: 100%;
    text-align: center;
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 400;
    color: var(--c-light-mute);
    padding: 10px 16px;
    background: none;
    border: 1px solid var(--c-border);
    border-radius: 9px;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
  }

  .admin-nav_mobileSignOutBtn__Xa_Hx:hover {
    background: var(--c-cream-dark);
    color: var(--c-light-head);
  }
}

.blocked-screen_overlay__Rl9Vz {
  position: fixed;
  inset: 0;
  background: var(--c-cream-light);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--page-gutter);
  z-index: 200;
}

.blocked-screen_card__aqLP5 {
  width: 100%;
  max-width: 420px;
  background: #fff;
  border: 1px solid var(--c-border);
  border-radius: 16px;
  padding: 40px 32px;
  box-shadow: var(--shadow);
  text-align: center;
}

.blocked-screen_iconWrapper__kNkOQ {
  font-size: 40px;
  margin-bottom: 16px;
  opacity: 0.8;
}

.blocked-screen_title__gNv_c {
  font-family: var(--font-heading);
  font-size: 22px;
  font-weight: 500;
  color: var(--c-light-head);
  letter-spacing: -0.02em;
  margin-bottom: 10px;
}

.blocked-screen_body__87mtc {
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 300;
  color: var(--c-light-mute);
  line-height: 1.65;
  margin-bottom: 12px;
}

.blocked-screen_email__wTNyg {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--c-light-mute);
  background: var(--c-cream-dark);
  border-radius: 6px;
  padding: 4px 10px;
  display: inline-block;
  margin-bottom: 24px;
}

.blocked-screen_contactBtn__OTx0N {
  display: block;
  width: 100%;
  padding: 12px 16px;
  background: var(--c-navy);
  color: var(--c-cream);
  border-radius: 9px;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 500;
  text-align: center;
  transition: background 0.15s;
  margin-bottom: 10px;
}

.blocked-screen_contactBtn__OTx0N:hover {
  background: #1a2a3a;
}

.blocked-screen_signOutBtn__a4Pk7 {
  background: none;
  border: none;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 300;
  color: var(--c-light-mute);
  cursor: pointer;
  padding: 6px 0;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.blocked-screen_signOutBtn__a4Pk7:hover {
  color: var(--c-light-body);
}

.access-denied_overlay__RIePr {
  position: fixed;
  inset: 0;
  background: var(--c-cream-light);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--page-gutter);
  z-index: 200;
}

.access-denied_card__EQjJf {
  width: 100%;
  max-width: 420px;
  background: #fff;
  border: 1px solid var(--c-border);
  border-radius: 16px;
  padding: 40px 32px;
  box-shadow: var(--shadow);
  text-align: center;
}

.access-denied_iconWrapper__jgpsY {
  font-size: 40px;
  margin-bottom: 16px;
  opacity: 0.8;
}

.access-denied_title__UFace {
  font-family: var(--font-heading);
  font-size: 22px;
  font-weight: 500;
  color: var(--c-light-head);
  letter-spacing: -0.02em;
  margin-bottom: 10px;
}

.access-denied_body__woXtm {
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 300;
  color: var(--c-light-mute);
  line-height: 1.65;
  margin-bottom: 24px;
}

.access-denied_backBtn__7rLET {
  display: block;
  width: 100%;
  padding: 12px 16px;
  background: var(--c-navy);
  color: var(--c-cream);
  border-radius: 9px;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 500;
  text-align: center;
  transition: background 0.15s;
  margin-bottom: 10px;
}

.access-denied_backBtn__7rLET:hover {
  background: #1a2a3a;
}

.access-denied_signOutBtn___LUx1 {
  background: none;
  border: none;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 300;
  color: var(--c-light-mute);
  cursor: pointer;
  padding: 6px 0;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.access-denied_signOutBtn___LUx1:hover {
  color: var(--c-light-body);
}

.coach-picker_trigger__1lEY5 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 32px;
  padding: 0 12px;
  border: 1px dashed var(--c-border);
  border-radius: 6px;
  background: transparent;
  cursor: pointer;
  font-family: var(--font-body);
  font-size: 12px;
  color: var(--c-light-body);
  white-space: nowrap;
}

.coach-picker_trigger__1lEY5:hover {
  background: var(--c-cream-2, rgba(0, 0, 0, 0.03));
}

.coach-picker_viewingAs__faVYg {
  color: var(--c-light-mute, var(--c-light-body));
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.coach-picker_name__JvT6d {
  font-weight: 500;
  color: var(--c-light-head);
  max-width: 180px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.coach-picker_chevron__5inG5 {
  font-size: 10px;
  opacity: 0.6;
}

.coach-picker_content__iupif {
  background: var(--c-cream);
  border: 1px solid var(--c-border);
  border-radius: 8px;
  padding: 6px;
  box-shadow: var(--shadow);
  min-width: 260px;
  max-height: 360px;
  overflow-y: auto;
  z-index: 200;
}

.coach-picker_item__HiNXT {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 10px;
  border-radius: 6px;
  cursor: pointer;
  outline: none;
  font-family: var(--font-body);
}

.coach-picker_item__HiNXT:hover,
.coach-picker_item__HiNXT[data-highlighted] {
  background: var(--c-cream-2, rgba(0, 0, 0, 0.04));
}

.coach-picker_itemLabel__J3Hys {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 500;
  color: var(--c-light-head);
}

.coach-picker_itemEmail__dZP5z {
  font-size: 11px;
  color: var(--c-light-mute, var(--c-light-body));
}

.coach-picker_tag__dV6a8 {
  font-size: 10px;
  font-weight: 500;
  padding: 1px 6px;
  border-radius: 4px;
  background: var(--c-green-dark);
  color: var(--c-cream);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.coach-picker_sep__AD0EB {
  height: 1px;
  background: var(--c-border);
  margin: 6px 0;
}

.coach-nav_header__duRvh {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: var(--nav-bar-height);
  z-index: 100;
  background: var(--c-cream);
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s, box-shadow 0.2s;
}

.coach-nav_headerScrolled__P1Lrg {
  border-bottom-color: var(--c-border);
  box-shadow: var(--shadow);
}

.coach-nav_nav__ivsQr {
  display: flex;
  align-items: center;
  height: 100%;
  padding: 0 var(--page-gutter);
  max-width: var(--max-width-wide);
  margin: 0 auto;
  gap: 24px;
}

.coach-nav_logo__inPu5 {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.coach-nav_logoImage__TGzlG {
  width: 32px;
  height: 32px;
  object-fit: contain;
  flex-shrink: 0;
}

.coach-nav_logoNari__7_MUK {
  font-family: var(--font-heading);
  font-size: 20px;
  font-weight: 500;
  color: var(--c-light-head);
  letter-spacing: -0.03em;
}

.coach-nav_logoBadge__sr1yp {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 500;
  color: var(--c-cream);
  background: var(--c-green-dark);
  padding: 2px 8px;
  border-radius: 4px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.coach-nav_links__KA3KS {
  display: flex;
  align-items: center;
  gap: 2px;
  list-style: none;
  flex: 1 1;
  overflow-x: auto;
  scrollbar-width: none;
}

.coach-nav_links__KA3KS::-webkit-scrollbar {
  display: none;
}

.coach-nav_link___4BPp {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 400;
  color: var(--c-light-body);
  padding: 6px 10px;
  border-radius: 6px;
  border-bottom: 2px solid transparent;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
  white-space: nowrap;
}

.coach-nav_link___4BPp:hover {
  background: var(--c-green-faint);
  color: var(--c-light-head);
}

.coach-nav_linkActive__uQUtS {
  color: var(--c-green-dark);
  font-weight: 500;
  border-bottom-color: var(--c-green-dark);
}

/* ── Avatar button ── */
.coach-nav_avatar__GWxas {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--c-green-faint);
  color: var(--c-green-dark);
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  cursor: pointer;
  flex-shrink: 0;
  transition: box-shadow 0.15s;
}

.coach-nav_avatar__GWxas:hover {
  box-shadow: 0 0 0 2px var(--c-green-faint);
}

/* ── Account dropdown ── */
.coach-nav_accountWrap__8NHPX {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
}

.coach-nav_dropdown__DCFTF {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  background: var(--c-cream-light);
  border: 1px solid var(--c-border);
  border-radius: 10px;
  box-shadow: var(--shadow-hov);
  padding: 8px 0;
  min-width: 200px;
  z-index: 200;
  animation: coach-nav_nari-fadeUp__NSxqb 0.15s ease both;
}

.coach-nav_dropdownEmail___Gid5 {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 300;
  color: var(--c-light-mute);
  padding: 6px 16px 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.coach-nav_dropdownSep___DyRg {
  height: 1px;
  background: var(--c-border);
  margin: 4px 0;
}

.coach-nav_dropdownItem__zGeG7 {
  display: block;
  width: 100%;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  color: var(--c-light-body);
  padding: 8px 16px;
  background: none;
  border: none;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.coach-nav_dropdownItem__zGeG7:hover,
.coach-nav_dropdownItem__zGeG7[data-highlighted] {
  background: var(--c-green-faint);
  color: var(--c-light-head);
  outline: none;
}

/* ── Hamburger toggle (hidden on desktop) ── */
.coach-nav_menuToggle__nyHhT {
  display: none;
  background: none;
  border: none;
  padding: 8px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.coach-nav_hamburger__G0SJA {
  display: block;
  width: 20px;
  height: 2px;
  background: var(--c-light-head);
  border-radius: 1px;
  position: relative;
  transition: background 0.2s;
}

.coach-nav_hamburger__G0SJA::before,
.coach-nav_hamburger__G0SJA::after {
  content: "";
  display: block;
  width: 20px;
  height: 2px;
  background: var(--c-light-head);
  border-radius: 1px;
  position: absolute;
  left: 0;
  transition: transform 0.2s, top 0.2s;
}

.coach-nav_hamburger__G0SJA::before { top: -6px; }
.coach-nav_hamburger__G0SJA::after  { top: 6px; }

.coach-nav_hamburgerOpen__WY6Gm { background: transparent; }
.coach-nav_hamburgerOpen__WY6Gm::before { top: 0; transform: rotate(45deg); }
.coach-nav_hamburgerOpen__WY6Gm::after  { top: 0; transform: rotate(-45deg); }

/* ── Mobile menu panel ── */
.coach-nav_mobileMenu__cradF {
  display: none;
}

@media (max-width: 640px) {
  .coach-nav_links__KA3KS  { display: none; }
  .coach-nav_avatar__GWxas { display: none; }

  .coach-nav_menuToggle__nyHhT {
    display: block;
    margin-left: auto;
  }

  .coach-nav_mobileMenu__cradF {
    display: flex;
    flex-direction: column;
    gap: 8px;
    position: absolute;
    top: var(--nav-height);
    left: 0;
    right: 0;
    background: var(--c-cream);
    border-bottom: 1px solid var(--c-border);
    box-shadow: var(--shadow);
    padding: 16px var(--page-gutter) 20px;
    animation: coach-nav_nari-fadeUp__NSxqb 0.2s ease both;
  }

  .coach-nav_mobileLinks__e_jDm {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }

  .coach-nav_mobileLink__GaiW3 {
    display: block;
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 400;
    color: var(--c-light-body);
    padding: 10px 12px;
    border-radius: 8px;
    transition: background 0.15s, color 0.15s;
  }

  .coach-nav_mobileLink__GaiW3:hover {
    background: var(--c-green-faint);
    color: var(--c-light-head);
  }

  .coach-nav_mobileLinkActive__Ab7bz {
    color: var(--c-green-dark);
    font-weight: 500;
  }

  .coach-nav_mobileCta__qdAIj {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 8px;
    padding-top: 12px;
    border-top: 1px solid var(--c-border);
  }

  .coach-nav_mobileNavBtn__0829t {
    display: block;
    text-align: center;
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 400;
    color: var(--c-light-head);
    padding: 10px 16px;
    border: 1px solid var(--c-border-mid);
    border-radius: 9px;
    transition: background 0.15s;
  }

  .coach-nav_mobileNavBtn__0829t:hover {
    background: var(--c-cream-dark);
  }

  .coach-nav_mobileSignOutBtn__ScMvi {
    display: block;
    width: 100%;
    text-align: center;
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 400;
    color: var(--c-light-mute);
    padding: 10px 16px;
    background: none;
    border: 1px solid var(--c-border);
    border-radius: 9px;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
  }

  .coach-nav_mobileSignOutBtn__ScMvi:hover {
    background: var(--c-cream-dark);
    color: var(--c-light-head);
  }
}

.layout_skipLink__O8w15 {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.layout_skipLink__O8w15:focus {
  position: fixed;
  top: calc(8px + var(--nari-announcement-h, 0px));
  left: 8px;
  width: auto;
  height: auto;
  padding: 8px 16px;
  background: var(--c-navy);
  color: var(--c-cream);
  font-size: 14px;
  font-weight: 500;
  border-radius: 6px;
  z-index: 9999;
  overflow: visible;
}

/* Mobile (≤768px) accessibility floor for public pages:
 * - 44px minimum touch target on interactive controls. Native-element
 *   selectors reach the DS Btn's rendered <button> across CSS-module
 *   boundaries; anchor-based CTAs get their min-height from the page CSS.
 * - 16px inputs so iOS Safari does not zoom the viewport on focus. */
@media (max-width: 768px) {
  .layout_publicMain__v2lwL :is(button, [role="button"]) {
    min-height: 44px;
  }

  .layout_publicMain__v2lwL
    :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea) {
    min-height: 44px;
    font-size: 16px;
  }
}

.footer_footer__MbdlQ {
  background: var(--c-cream-light);
  color: var(--c-light-body);
  padding: 72px var(--page-gutter) 0;
  border-top: 1px solid var(--c-border);
  transition: background 0.6s ease, border-color 0.6s ease;
}

.footer_inner__j3BS_ {
  max-width: var(--max-width-wide);
  margin: 0 auto;
  display: flex;
  gap: 64px;
  padding-bottom: 56px;
}

.footer_brand__m3oGh {
  flex-shrink: 0;
  max-width: 240px;
}

.footer_logoLink__zoB_j {
  display: inline-block;
  border-radius: 6px;
}

.footer_logoLink__zoB_j:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 4px;
}

.footer_logo__z5B3Q {
  width: 100%;
  max-width: 140px;
  height: auto;
}

.footer_tagline__IbG1k {
  margin: 18px 0 0;
  font-size: 14px;
  font-weight: 300;
  color: var(--c-light-body);
  line-height: 1.6;
  max-width: 240px;
  text-wrap: pretty;
}

.footer_taglineAccent__7ea4h {
  font-family: var(--font-heading);
  font-style: italic;
  font-weight: 400;
  color: var(--c-green-dark);
}

.footer_navGrid__goFS1 {
  flex: 1 1;
  display: flex;
  gap: 48px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.footer_linkGroup__yN6TK {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 140px;
}

.footer_groupLabel__yWLRL {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--c-wood-oak);
  margin: 0 0 4px;
}

.footer_link__TtCV5 {
  font-size: 14px;
  font-weight: 300;
  color: var(--c-light-body);
  transition: color 0.15s ease;
  line-height: 1.2;
}

.footer_link__TtCV5:hover {
  color: var(--c-green-dark);
}

.footer_link__TtCV5:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 3px;
  border-radius: 2px;
}

.footer_bottom__PhZ21 {
  border-top: 1px solid var(--c-border);
  padding: 24px 0;
  max-width: var(--max-width-wide);
  margin: 0 auto;
}

.footer_bottomInner__C83Ps {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}

.footer_copy__puMKC {
  font-size: 13px;
  font-weight: 300;
  color: var(--c-text-mute);
  margin: 0;
}

.footer_madeWith__g2Ipd {
  font-family: var(--font-heading);
  font-style: italic;
  font-size: 13.5px;
  font-weight: 400;
  color: var(--c-wood-oak);
  margin: 0;
}

/* ── Dark-sky bucket overrides ────────────────────────────────────────── */
/* Evening + night page bgs are dark navy throughout. The default cream
 * footer would create a hard cream-on-navy seam. Flip footer to a
 * slightly-deeper navy than the page bg (so the footer feels like a
 * distinct surface) and lift all text/links to cream tones.
 *
 * The accent uses the same pale-sage as the dark-mode SectionLabel /
 * Browse-all-resources link, keeping the "interactive accent in dark
 * mode" treatment consistent across the whole app. */
html[data-time="evening"] .footer_footer__MbdlQ,
html[data-time="night"]   .footer_footer__MbdlQ {
  background: color-mix(in srgb, var(--c-navy) 80%, var(--c-cream-light));
  border-top-color: color-mix(in srgb, var(--c-navy) 60%, transparent);
}

html[data-time="evening"] .footer_tagline__IbG1k,
html[data-time="night"]   .footer_tagline__IbG1k,
html[data-time="evening"] .footer_link__TtCV5,
html[data-time="night"]   .footer_link__TtCV5 {
  color: color-mix(in srgb, var(--c-cream-light) 82%, var(--c-light-mute));
}

html[data-time="evening"] .footer_taglineAccent__7ea4h,
html[data-time="night"]   .footer_taglineAccent__7ea4h {
  color: var(--on-dark-accent-warm);
}

html[data-time="evening"] .footer_groupLabel__yWLRL,
html[data-time="night"]   .footer_groupLabel__yWLRL,
html[data-time="evening"] .footer_madeWith__g2Ipd,
html[data-time="night"]   .footer_madeWith__g2Ipd {
  color: var(--on-dark-accent-warm);
}

html[data-time="evening"] .footer_copy__puMKC,
html[data-time="night"]   .footer_copy__puMKC {
  color: color-mix(in srgb, var(--c-cream-light) 65%, var(--c-light-mute));
}

html[data-time="evening"] .footer_link__TtCV5:hover,
html[data-time="night"]   .footer_link__TtCV5:hover {
  color: var(--c-cream-light);
}

html[data-time="evening"] .footer_bottom__PhZ21,
html[data-time="night"]   .footer_bottom__PhZ21 {
  border-top-color: color-mix(in srgb, var(--c-cream-light) 18%, transparent);
}

/* ── Mobile ── */
@media (max-width: 768px) {
  .footer_footer__MbdlQ {
    padding-top: 56px;
  }

  .footer_inner__j3BS_ {
    flex-direction: column;
    gap: 40px;
    padding-bottom: 40px;
  }

  .footer_navGrid__goFS1 {
    gap: 32px;
    justify-content: flex-start;
  }

  .footer_bottomInner__C83Ps {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
}

/* ─────────────────────────────────────────────────────────────────────────
 * Time-of-day ambient layer.
 *
 * Mounted at <html> root by <TimeOfDayAmbient>. Sits at z-index: -1 so it
 * paints behind body content but above the html background wash. The wash
 * carries the bucket's overall warmth/coolness; this layer adds the
 * perceptible "now"-ness via glow + atmospheric + kinetic elements.
 *
 * Discipline rules (per saved feedback_ambient_motion_a11y.md):
 *  - Opacity stays low (≤ 0.35 on most elements) so nothing competes
 *    with content for attention.
 *  - All animations use transform/opacity only — no layout/paint.
 *  - All elements honor the global `html[data-motion="static"]` rule
 *    which freezes animations app-wide. Glows / mist / aurora / stars
 *    look fine when frozen. Birds / petals / seeds / fireflies look
 *    broken when frozen — those are conditionally NOT rendered when
 *    motion is static, handled in the TSX.
 *  - All animations pause when the tab is hidden (browser default for
 *    backgrounded pages, plus the visibility hook in <TimeOfDayProvider>
 *    for re-evaluating bucket).
 * ───────────────────────────────────────────────────────────────────────── */

.time-of-day-ambient_layer__dwoZr {
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  overflow: hidden;
}

/* ── Shared element base ──────────────────────────────────────────────── */

.time-of-day-ambient_glow__EIHYw {
  position: absolute;
  border-radius: 50%;
  filter: blur(40px);
  opacity: 0.35;
  animation: time-of-day-ambient_ambient-pulse__mHp99 10s ease-in-out infinite;
}

.time-of-day-ambient_rays__buMVg {
  position: absolute;
  opacity: 0.18;
  mix-blend-mode: multiply;
  animation: time-of-day-ambient_ambient-pulse__mHp99 14s ease-in-out infinite;
}

@keyframes time-of-day-ambient_ambient-pulse__mHp99 {
  0%, 100% { opacity: 0.30; }
  50%      { opacity: 0.45; }
}

/* ── Dawn ─────────────────────────────────────────────────────────────── */

.time-of-day-ambient_dawnGlow__aMF9M {
  top: -12vh;
  left: -8vw;
  width: 60vw;
  height: 60vw;
  background: radial-gradient(
    circle,
    color-mix(in srgb, var(--c-golden-sand) 70%, transparent) 0%,
    transparent 60%
  );
}

.time-of-day-ambient_dawnMist__eTKTe {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 35vh;
  background: linear-gradient(
    to top,
    color-mix(in srgb, var(--c-cream-light) 60%, transparent) 0%,
    transparent 100%
  );
  opacity: 0.55;
}

.time-of-day-ambient_bird__qizEB {
  position: absolute;
  width: 24px;
  height: 14px;
  color: color-mix(in srgb, var(--c-wood-oak) 70%, var(--c-light-head));
  opacity: 0.55;
  /* Diagonal flight with gentle bobbing — was straight-line which read
   * as "UFO". Multi-step keyframes give a soft sine-like rise/fall so
   * birds feel like they're flapping/gliding rather than tracking. */
  animation: time-of-day-ambient_bird-flight__iIAkE 18s linear infinite;
}

.time-of-day-ambient_bird1__qXvRw {
  top: 14vh;
  left: -8vw;
  animation-delay: 0s;
}

.time-of-day-ambient_bird2__aF_K6 {
  top: 24vh;
  left: -8vw;
  width: 18px;
  height: 11px;
  animation-delay: -8s;
  opacity: 0.45;
}

@keyframes time-of-day-ambient_bird-flight__iIAkE {
  0%   { transform: translate3d(0,    0,    0); }
  20%  { transform: translate3d(22vw, -3vh, 0); }
  40%  { transform: translate3d(48vw, -1vh, 0); }
  60%  { transform: translate3d(72vw, -5vh, 0); }
  80%  { transform: translate3d(98vw, -3vh, 0); }
  100% { transform: translate3d(122vw, -8vh, 0); }
}

/* ── Morning ──────────────────────────────────────────────────────────── */

.time-of-day-ambient_morningGlow__zdnXL {
  top: -10vh;
  right: -10vw;
  width: 55vw;
  height: 55vw;
  background: radial-gradient(
    circle,
    color-mix(in srgb, var(--c-warm-amber) 65%, transparent) 0%,
    transparent 60%
  );
}

.time-of-day-ambient_morningRays__piZDC {
  top: 0;
  right: 0;
  width: 70vw;
  height: 80vh;
  background: conic-gradient(
    from 200deg at 100% 0%,
    transparent 0deg,
    color-mix(in srgb, var(--c-warm-amber) 28%, transparent) 18deg,
    transparent 24deg,
    color-mix(in srgb, var(--c-warm-amber) 28%, transparent) 34deg,
    transparent 40deg,
    color-mix(in srgb, var(--c-warm-amber) 28%, transparent) 50deg,
    transparent 56deg,
    transparent 90deg
  );
  /* Heavy blur softens the conic-gradient's hard ray edges into beams
   * of light rather than sharp lines. Without this, "rays" reads as
   * "stripes". */
  filter: blur(22px);
  opacity: 0.32;
}

.time-of-day-ambient_petal__Kk5ZU {
  position: absolute;
  width: 14px;
  height: 18px;
  color: color-mix(in srgb, #f4c2c2 80%, var(--c-cream-light));
  opacity: 0.42;
  animation: time-of-day-ambient_petal-fall__Slvsy 22s linear infinite;
}

.time-of-day-ambient_petal1__6twgu { left: 18vw; animation-delay: 0s;   }
.time-of-day-ambient_petal2__CKUmW { left: 38vw; animation-delay: -5s;  }
.time-of-day-ambient_petal3__PYBcp { left: 58vw; animation-delay: -10s; }
.time-of-day-ambient_petal4__BW5zn { left: 78vw; animation-delay: -15s; }
.time-of-day-ambient_petal5__th1_R { left: 88vw; animation-delay: -19s; }

@keyframes time-of-day-ambient_petal-fall__Slvsy {
  from {
    transform: translate3d(0, -10vh, 0) rotate(0deg);
  }
  to {
    transform: translate3d(-6vw, 110vh, 0) rotate(420deg);
  }
}

/* ── Afternoon ────────────────────────────────────────────────────────── */

.time-of-day-ambient_afternoonGlow__rFu2x {
  top: -18vh;
  left: 50%;
  transform: translateX(-50%);
  width: 70vw;
  height: 50vw;
  background: radial-gradient(
    ellipse at center,
    color-mix(in srgb, var(--c-warm-amber) 55%, transparent) 0%,
    transparent 65%
  );
}

/* Afternoon "rays" are intentionally NOT directional rays — original
 * conic-gradient read as chopsticks. Replaced with a soft warm radial
 * spilling from the lower-right (like late-afternoon light through a
 * window). Adds depth/dappled warmth without competing with the seeds. */
.time-of-day-ambient_afternoonRays__ToJQU {
  bottom: -15vh;
  right: -10vw;
  width: 75vw;
  height: 75vh;
  background: radial-gradient(
    ellipse at 30% 70%,
    color-mix(in srgb, var(--c-warm-amber) 40%, transparent) 0%,
    transparent 55%
  );
  filter: blur(18px);
  opacity: 0.45;
}

.time-of-day-ambient_seed__2WPYI {
  position: absolute;
  width: 22px;
  height: 30px;
  color: color-mix(in srgb, var(--c-wood-oak) 50%, var(--c-light-mute));
  opacity: 0.65;
  /* Horizontal drift across the upper-mid screen with a tiny vertical
   * sway. 32s loop is slow enough to feel ambient, fast enough to be
   * perceptibly moving in a typical page-view. */
  animation: time-of-day-ambient_seed-drift__fuTNj 32s linear infinite;
}

/* Pulled up into the hero area — was drifting through mid-screen which
 * meant they crossed cards instead of accenting the greeting. */
.time-of-day-ambient_seed1__hT6Jg { top: 6vh;  animation-delay: 0s;    }
.time-of-day-ambient_seed2__kuKpe { top: 18vh; animation-delay: -12s;  }
.time-of-day-ambient_seed3__WwKYC { top: 11vh; animation-delay: -22s;  }

@keyframes time-of-day-ambient_seed-drift__fuTNj {
  from { transform: translate3d(-8vw, 0, 0); }
  50%  { transform: translate3d(50vw, -3vh, 0); }
  to   { transform: translate3d(110vw, 0, 0); }
}

/* ── Evening ──────────────────────────────────────────────────────────── */

/* Evening glow: a soft horizon sliver pushed mostly off-screen so the
 * visible portion is just a hint of warm last-light at the very bottom
 * edge. Lower opacity prevents it from creating a hard "horizon-glow vs
 * dark sky" boundary in the middle of the viewport. */
.time-of-day-ambient_eveningGlow___xGZC {
  bottom: -55vh;
  left: 50%;
  transform: translateX(-50%);
  width: 130vw;
  height: 70vh;
  background: radial-gradient(
    ellipse at 50% 0%,
    color-mix(in srgb, var(--c-warm-amber) 60%, transparent) 0%,
    transparent 60%
  );
  opacity: 0.35;
}

/* Fireflies were too small + too dim to read as fireflies. Bumped core
 * size, intensified the box-shadow halo (3 layers now for a real glow
 * falloff), and pushed the pulse range higher so they actually flicker
 * like fireflies instead of just sitting there. */
.time-of-day-ambient_firefly__GqLjd {
  position: absolute;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: color-mix(in srgb, #fff4b8 65%, var(--c-warm-amber));
  box-shadow:
    0 0 6px  color-mix(in srgb, #ffe680 90%, transparent),
    0 0 18px color-mix(in srgb, var(--c-warm-amber) 75%, transparent),
    0 0 36px color-mix(in srgb, var(--c-warm-amber) 40%, transparent);
  opacity: 0.75;
  animation:
    time-of-day-ambient_firefly-drift__8jc39 24s ease-in-out infinite,
    time-of-day-ambient_firefly-pulse__EtLz0 3.5s ease-in-out infinite;
}

/* Pulled UP into the darker upper portion of the gradient so the firefly
 * glow actually pops against navy sky instead of competing with the warm
 * amber middle. This is what makes them read as fireflies. */
.time-of-day-ambient_firefly1__6wier { top: 18vh; left: 22vw; animation-delay: 0s,    0s;    }
.time-of-day-ambient_firefly2__sRys_ { top: 30vh; left: 62vw; animation-delay: -8s,  -1s;   }
.time-of-day-ambient_firefly3__IwKu_ { top: 12vh; left: 78vw; animation-delay: -15s, -2s;   }
.time-of-day-ambient_firefly4__FBb1o { top: 38vh; left: 38vw; animation-delay: -20s, -0.5s; }

/* Evening stars — first stars of dusk, in the dark upper portion of
 * the twilight gradient. Reuses .star base style. */
.time-of-day-ambient_eveningStar1__31hzL { top: 8vh;  left: 18vw; width: 3px; height: 3px; animation-delay: 0s;  }
.time-of-day-ambient_eveningStar2__dxiCp { top: 14vh; left: 68vw; width: 4px; height: 4px; animation-delay: -2s; }
.time-of-day-ambient_eveningStar3__n5yaL { top: 6vh;  left: 48vw; width: 3px; height: 3px; animation-delay: -4s; }

@keyframes time-of-day-ambient_firefly-drift__8jc39 {
  0%   { transform: translate3d(0, 0, 0); }
  25%  { transform: translate3d(8vw, -5vh, 0); }
  50%  { transform: translate3d(-3vw, -10vh, 0); }
  75%  { transform: translate3d(5vw, -4vh, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

@keyframes time-of-day-ambient_firefly-pulse__EtLz0 {
  0%, 100% { opacity: 0.45; }
  50%      { opacity: 0.95; }
}

/* ── Night ────────────────────────────────────────────────────────────── */

/* Moon glow: bigger, brighter, with a softer pearl-white core. Reads as
 * an actual moon now against the navy sky, not a dim cool blob. */
.time-of-day-ambient_nightGlow__zOwwa {
  top: -18vh;
  right: -8vw;
  width: 70vw;
  height: 70vw;
  background: radial-gradient(
    circle,
    color-mix(in srgb, #f3f0e8 95%, transparent) 0%,
    color-mix(in srgb, #d6e3f2 50%, transparent) 25%,
    transparent 60%
  );
  opacity: 0.55;
}

/* Aurora: now spans the full viewport height instead of just the top
 * 65vh, with much stronger blur + lower opacity. Earlier version was
 * brightening only the top half, which created a visible "above the
 * aurora vs below" boundary as the user scrolled. Spreading it full-
 * height + softening eliminates that perceived seam. */
.time-of-day-ambient_aurora__flviG {
  position: absolute;
  top: 0;
  left: -20%;
  width: 140%;
  height: 100vh;
  background: linear-gradient(
    115deg,
    transparent 0%,
    color-mix(in srgb, #4a8a6e 30%, transparent) 22%,
    color-mix(in srgb, #8b6db4 28%, transparent) 45%,
    color-mix(in srgb, #5a7a9e 25%, transparent) 70%,
    color-mix(in srgb, #4a8a6e 22%, transparent) 88%,
    transparent 100%
  );
  opacity: 0.45;
  filter: blur(60px);
  mix-blend-mode: screen;
  animation: time-of-day-ambient_aurora-drift__cRY4X 28s ease-in-out infinite;
}

@keyframes time-of-day-ambient_aurora-drift__cRY4X {
  0%, 100% { transform: translate3d(-3%, 0, 0); }
  50%      { transform: translate3d(3%, 1%, 0); }
}

.time-of-day-ambient_star__17PVW {
  position: absolute;
  border-radius: 50%;
  background: #fff8e7;
  /* Three-layer halo so each star reads as a luminous point, not a flat
   * dot. The aurora overlay above can otherwise wash them out entirely. */
  box-shadow:
    0 0 4px  #fff8e7,
    0 0 10px color-mix(in srgb, #fff8e7 75%, transparent),
    0 0 22px color-mix(in srgb, #fff8e7 35%, transparent);
  opacity: 0.85;
  animation: time-of-day-ambient_star-twinkle__mwlSY 6s ease-in-out infinite;
  /* Sit above the aurora so the halos aren't dimmed by the screen blend. */
  z-index: 1;
}

/* Bumped sizes (was 2–4px → now 4–6px) and scattered across the upper
 * third (where the sky-tint is strongest). Six stars = "a few stars
 * peeking out" — fewer reads accidental, more pushes toward starfield. */
.time-of-day-ambient_star1__g6l4z { top: 12vh; left: 25vw; width: 5px; height: 5px; animation-delay: 0s;   }
.time-of-day-ambient_star2__bNBVJ { top: 22vh; left: 70vw; width: 6px; height: 6px; animation-delay: -2s;  }
.time-of-day-ambient_star3__RHjos { top: 8vh;  left: 55vw; width: 4px; height: 4px; animation-delay: -4s;  }
.time-of-day-ambient_star4__MzlbG { top: 18vh; left: 12vw; width: 4px; height: 4px; animation-delay: -1s;  }
.time-of-day-ambient_star5__6itqX { top: 28vh; left: 88vw; width: 5px; height: 5px; animation-delay: -3s;  }
.time-of-day-ambient_star6__fEMWe { top: 35vh; left: 42vw; width: 4px; height: 4px; animation-delay: -5s;  }

@keyframes time-of-day-ambient_star-twinkle__mwlSY {
  0%, 100% { opacity: 0.65; }
  50%      { opacity: 1;    }
}

/* ── Mobile: hide entire ambient layer ────────────────────────────────── */
/* Mobile is forced static via the motion-preference system, but the
 * passive elements (glow, mist, aurora) would still render. That's extra
 * paint cost on battery-constrained devices for a feature that mostly
 * lives in the periphery — and viewport real estate on phones is too
 * tight for ambient elements not to feel like clutter. Hide entirely. */
@media (hover: none) and (pointer: coarse) {
  .time-of-day-ambient_layer__dwoZr { display: none; }
}

/* Bottom-LEFT to avoid colliding with journey-tweaks (bottom-right). */

.time-of-day-tweaks_toggle___jzLE {
  position: fixed;
  left: 20px;
  bottom: 20px;
  background: var(--green-dark);
  color: var(--cream-light);
  border: 0;
  border-radius: 999px;
  padding: 10px 16px;
  font-size: 12.5px;
  font-family: inherit;
  cursor: pointer;
  box-shadow: 0 6px 20px rgba(30, 20, 10, 0.2);
  z-index: 98;
}

.time-of-day-tweaks_panel__2mjWV {
  position: fixed;
  left: 20px;
  bottom: 20px;
  width: 280px;
  background: var(--cream-light);
  border: 1px solid var(--border-mid);
  border-radius: 14px;
  padding: 16px;
  box-shadow: 0 10px 40px rgba(30, 20, 10, 0.15);
  z-index: 99;
  font-family: var(--font-sans);
}

.time-of-day-tweaks_head__5rF35 {
  font-family: var(--font-serif);
  font-size: 15px;
  color: var(--light-head);
  margin-bottom: 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.time-of-day-tweaks_close__vOs4Z {
  background: none;
  border: 0;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  color: var(--light-mute);
  padding: 0;
  width: 24px;
  height: 24px;
}

.time-of-day-tweaks_close__vOs4Z:hover {
  color: var(--light-head);
}

.time-of-day-tweaks_group__TYOu1 {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.time-of-day-tweaks_label__1V1Nv {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--light-mute);
  margin-bottom: 4px;
  font-weight: 500;
}

.time-of-day-tweaks_derived___5KuV {
  color: var(--green-dark);
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
}

.time-of-day-tweaks_opts__8ceJr {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.time-of-day-tweaks_opt__yNQ8G {
  padding: 8px 10px;
  border-radius: 8px;
  font-size: 12.5px;
  color: var(--light-body);
  cursor: pointer;
  border: 1px solid transparent;
  background: transparent;
  text-align: left;
  font-family: inherit;
  transition: all 0.15s;
}

.time-of-day-tweaks_opt__yNQ8G:hover {
  background: var(--cream-dark);
}

.time-of-day-tweaks_optActive__qWIZl {
  background: var(--green-faint);
  color: var(--green-dark);
  border-color: var(--border-mid);
  font-weight: 500;
}

.time-of-day-tweaks_reset__Jp3D1 {
  margin-top: 4px;
  background: none;
  border: 0;
  font-size: 11.5px;
  color: var(--green-dark);
  text-align: left;
  padding: 4px 10px;
  cursor: pointer;
  font-family: inherit;
}

.time-of-day-tweaks_reset__Jp3D1:hover {
  text-decoration: underline;
}

/* Ambient warmth, three large low-opacity radial glows pinned to the
 * viewport. Decorative only (aria-hidden by the element that renders it);
 * kept behind content with z-index:-1. <body> is background:transparent and
 * the page background lives on <html>, so this paints between the two.
 *
 * Moved here from app/(member)/my-journey/page.module.css when the layer was
 * hoisted to the member layout; the gradients are unchanged, only the prose
 * was re-punctuated for the house dash rule. It is now the ONE definition, shared
 * by /my-journey, /resume, /my-search, /coaching and /member-resources, so
 * the five pages cannot drift apart again.
 *
 * Inlined gradients (rather than --accent-glow-* tokens) so we can dial
 * intensity to the dashboard's specific cream-light surface, token defaults
 * (5-8% alpha) are imperceptible here. */
.member-ambient_ambient__kl1nZ {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background-image:
    /* Top dawn-peach, full-bleed, very soft fade. Width 160vw so the curve
     * of the ellipse falls off-screen entirely; only the smooth interior
     * gradient is ever visible. Dialed down so the hero area doesn't read as
     * a sunburn, it should be a hint of morning light, not a wash. */
    radial-gradient(
      ellipse 160vw 90vh at 50% 0%,
      rgba(221, 174, 110, 0.13),
      rgba(221, 174, 110, 0.03) 55%,
      transparent 100%
    ),
    /* Top-right gold accent, extended to 100% so the radial curve never
     * shows as a visible edge at any zoom level / aspect ratio. */
    radial-gradient(
      ellipse 140vw 110vh at 100% 0%,
      rgba(212, 165, 86, 0.11),
      rgba(212, 165, 86, 0.02) 60%,
      transparent 100%
    ),
    /* Bottom-left sage, same treatment. */
    radial-gradient(
      ellipse 140vw 110vh at 0% 100%,
      rgba(96, 134, 88, 0.09),
      rgba(96, 134, 88, 0.02) 60%,
      transparent 100%
    );
  background-repeat: no-repeat;
}

/* Dampen ambient intensity in static mode, many users equate "less motion"
 * with "less visual noise." Drives off the same data-motion attribute as
 * the global animation suppression so the user setting is the source of
 * truth (rather than firing from OS prefers-reduced-motion behind the
 * user's back when they explicitly chose "Animated"). */
html[data-motion="static"] .member-ambient_ambient__kl1nZ {
  opacity: 0.65;
}

/* Fixed bottom conversion bar, mobile only. Marketing token convention:
 * --c-* colours, unprefixed --space-/--fs-/--font-* scale. Reduced motion is
 * handled globally by html[data-motion="static"] (which zeroes the transition
 * durations below), so there is no per-component prefers-reduced-motion query. */

.sticky-cta_bar__8hUFh {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: var(--z-sticky);
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-3) var(--page-gutter);
  padding-bottom: calc(var(--space-3) + env(safe-area-inset-bottom));
  background: var(--c-cream-light);
  border-top: 1px solid var(--c-border-mid);
  box-shadow: var(--shadow-hov);
  transition:
    opacity var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out),
    visibility 0s;
}

@media (max-width: 768px) {
  .sticky-cta_bar__8hUFh {
    display: flex;
  }
}

/* Hidden state: fade + slide out and leave the tab order / a11y tree
 * (visibility:hidden), delayed so the fade-out is visible first. */
.sticky-cta_hidden__F3qaO {
  opacity: 0;
  visibility: hidden;
  transform: translateY(100%);
  pointer-events: none;
  transition:
    opacity var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out),
    visibility 0s var(--dur-base);
}

.sticky-cta_copy__Ic5Cy {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.sticky-cta_title__W1Obw {
  font-family: var(--font-heading);
  font-size: var(--fs-md);
  font-weight: 500;
  color: var(--c-light-head);
  line-height: 1.2;
}

.sticky-cta_price__zhGPj {
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  font-weight: 400;
  color: var(--c-light-mute);
  line-height: 1.2;
}

/* The Btn renders an <a> (asChild); enforce the 44px touch target on it. */
.sticky-cta_cta__FIRaI {
  flex-shrink: 0;
  min-height: 44px;
}

.motion-toggle_section__A7vaR {
  padding: 8px 14px 10px;
}

.motion-toggle_label__W06aG {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-wood-oak);
  margin: 0 0 6px;
}

.motion-toggle_group__em0v4 {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.motion-toggle_item__W0qip {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 6px 4px;
  border: none;
  background: none;
  text-align: left;
  border-radius: 6px;
  font-family: var(--font-body);
  font-size: 13px;
  color: var(--c-light-body);
  cursor: pointer;
  outline: none;
}

.motion-toggle_item__W0qip:hover,
.motion-toggle_item__W0qip[data-highlighted] {
  background: var(--c-cream);
  color: var(--c-light-head);
}

.motion-toggle_item__W0qip:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 1px;
}

.motion-toggle_item__W0qip[data-state="checked"] .motion-toggle_dot__SwTjm {
  color: var(--c-green-dark);
}

.motion-toggle_dot__SwTjm {
  width: 12px;
  height: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--c-border-mid);
  border-radius: 50%;
  font-size: 8px;
  line-height: 1;
  color: transparent;
  flex-shrink: 0;
}

.motion-toggle_item__W0qip[data-state="checked"] .motion-toggle_dot__SwTjm {
  border-color: var(--c-green-dark);
}

.motion-toggle_itemLabel__aUxOq {
  flex: 1 1;
}

.motion-toggle_hint__NcjGl {
  margin: 6px 0 0;
  padding-left: 22px;
  font-family: var(--font-body);
  font-size: 11px;
  font-style: italic;
  color: var(--c-light-mute);
  line-height: 1.3;
}

.public-nav_header__Zl03f {
  position: fixed;
  /* Sits below the announcement banner when one is shown; the banner publishes
     its height into --nari-announcement-h, which is 0 (absent) otherwise. */
  top: var(--nari-announcement-h, 0px);
  left: 0;
  right: 0;
  height: var(--nav-bar-height);
  z-index: 100;
  background: rgba(245, 242, 235, 0.90);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid color-mix(in srgb, var(--c-green) 15%, transparent);
  transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
  /* Header-scoped palette, flipped by .headerTransparent below. */
  --nav-fg: var(--c-light-body);
  --nav-fg-strong: var(--c-light-head);
  --nav-hover-bg: var(--c-green-faint);
  --nav-shadow: none;
}

.public-nav_headerScrolled__wdhnJ {
  background: rgba(245, 242, 235, 0.94);
  border-bottom-color: color-mix(in srgb, var(--c-green) 22%, transparent);
  box-shadow: var(--shadow);
}

/* Over the dark landing hero (visitors, top of page, menu closed): the bar
   dissolves into the imagery. The .header transition fades it back to solid. */
.public-nav_headerTransparent__lCIjI {
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  border-bottom-color: transparent;
  --nav-fg: var(--c-cream);
  --nav-fg-strong: #fff;
  --nav-hover-bg: rgba(255, 255, 255, 0.14);
  --nav-shadow: 0 1px 2px rgba(11, 18, 25, 0.35);
}

.public-nav_nav__LApZI {
  display: flex;
  align-items: center;
  height: 100%;
  padding: 0 var(--page-gutter);
  max-width: var(--max-width-wide);
  margin: 0 auto;
  gap: 32px;
}

/* ── Left cluster: the logo ── */
.public-nav_leftCluster__UJsZN {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-shrink: 0;
}

.public-nav_logo__8nDIx {
  display: inline-grid;
  align-items: center;
  flex-shrink: 0;
  text-decoration: none;
}

/* Both logo renderings share the single grid cell and cross-fade. Base state
   (no animation) shows the light-background artwork on the solid header. */
.public-nav_logoImage__Cd_TD {
  grid-area: 1 / 1;
  height: 32px;
  width: auto;
  display: block;
  transition: opacity 0.2s;
}

.public-nav_logoDark__x3i9U {
  opacity: 0;
}

.public-nav_headerTransparent__lCIjI .public-nav_logoLight__E4mox {
  opacity: 0;
}

.public-nav_headerTransparent__lCIjI .public-nav_logoDark__x3i9U {
  opacity: 1;
}

.public-nav_links__urLGQ {
  display: flex;
  align-items: center;
  gap: 6px;
  list-style: none;
  margin-left: auto;
}

.public-nav_link__LeOxC {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  color: var(--nav-fg);
  text-shadow: var(--nav-shadow);
  padding: 6px 10px;
  border-radius: 6px;
  transition: background 0.15s, color 0.15s;
  /* The member bar runs 7 links wide; without these a tight viewport wraps the
     labels inside the 60px bar instead of holding the row until the
     breakpoint collapses it. */
  white-space: nowrap;
  flex-shrink: 0;
}

.public-nav_link__LeOxC:hover {
  background: var(--nav-hover-bg);
  color: var(--nav-fg-strong);
}

.public-nav_link__LeOxC:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

.public-nav_linkActive__nRH9i {
  color: var(--c-green-dark);
  font-weight: 500;
}

.public-nav_cta__H2IYX {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.public-nav_loginBtn__n3Ywn {
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  color: var(--nav-fg);
  text-shadow: var(--nav-shadow);
  padding: 7px 14px;
  border-radius: 7px;
  transition: background 0.15s, color 0.15s;
}

.public-nav_loginBtn__n3Ywn:hover {
  background: var(--nav-hover-bg);
  color: var(--nav-fg-strong);
}

.public-nav_loginBtn__n3Ywn:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

.public-nav_joinBtn__LAsyt {
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 500;
  color: var(--c-cream);
  background: var(--c-navy);
  padding: 7px 16px;
  border-radius: 7px;
  transition: background 0.15s, color 0.15s;
}

.public-nav_joinBtn__LAsyt:hover {
  background: #1a2a3a;
}

.public-nav_joinBtn__LAsyt:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

/* Gold pill only over the dark hero; the solid header keeps the navy pill
   (gold on cream is banned). */
.public-nav_headerTransparent__lCIjI .public-nav_joinBtn__LAsyt {
  color: var(--c-green-deep);
  background: var(--c-gold);
}

.public-nav_headerTransparent__lCIjI .public-nav_joinBtn__LAsyt:hover {
  background: #e6c86b;
}

/* Cream outlines where green-dark would vanish into the dark hero. */
.public-nav_headerTransparent__lCIjI .public-nav_link__LeOxC:focus-visible,
.public-nav_headerTransparent__lCIjI .public-nav_loginBtn__n3Ywn:focus-visible,
.public-nav_headerTransparent__lCIjI .public-nav_joinBtn__LAsyt:focus-visible,
.public-nav_headerTransparent__lCIjI .public-nav_menuToggle__RBooz:focus-visible {
  outline-color: var(--c-cream);
}

/* ── Avatar button (authenticated) ── */
.public-nav_avatar__Hequ4 {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--c-green-faint);
  color: var(--c-green-dark);
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  cursor: pointer;
  flex-shrink: 0;
  transition: box-shadow 0.15s;
}

.public-nav_avatar__Hequ4:hover {
  box-shadow: 0 0 0 2px var(--c-green-faint);
}

.public-nav_avatar__Hequ4:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

/* ── Account dropdown ── */
.public-nav_accountWrap__8ZGSn {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
}

.public-nav_dropdown__PqJ3h {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  background: var(--c-cream-light);
  border: 1px solid var(--c-border);
  border-radius: 10px;
  box-shadow: var(--shadow-hov);
  padding: 8px 0;
  min-width: 200px;
  z-index: 200;
  animation: public-nav_nari-fadeUp__EaLu9 0.15s ease both;
}

.public-nav_dropdownEmail__WiYP9 {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 300;
  color: var(--c-light-mute);
  padding: 6px 16px 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.public-nav_dropdownSep__h27fM {
  height: 1px;
  background: var(--c-border);
  margin: 4px 0;
}

.public-nav_dropdownItem__Qm8zk {
  display: block;
  width: 100%;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  color: var(--c-light-body);
  padding: 8px 16px;
  background: none;
  border: none;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.public-nav_dropdownItem__Qm8zk:hover,
.public-nav_dropdownItem__Qm8zk[data-highlighted] {
  background: var(--c-green-faint);
  color: var(--c-light-head);
  outline: none;
}

/* ── Hamburger toggle (hidden on desktop) ── */
.public-nav_menuToggle__RBooz {
  display: none;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  background: none;
  border: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.public-nav_menuToggle__RBooz:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

.public-nav_hamburger__6nW0m {
  display: block;
  width: 20px;
  height: 2px;
  background: var(--nav-fg-strong);
  border-radius: 1px;
  position: relative;
  transition: background 0.2s;
}

.public-nav_hamburger__6nW0m::before,
.public-nav_hamburger__6nW0m::after {
  content: "";
  display: block;
  width: 20px;
  height: 2px;
  background: var(--nav-fg-strong);
  border-radius: 1px;
  position: absolute;
  left: 0;
  transition: transform 0.2s, top 0.2s;
}

.public-nav_hamburger__6nW0m::before {
  top: -6px;
}

.public-nav_hamburger__6nW0m::after {
  top: 6px;
}

/* Open state: X shape */
.public-nav_hamburgerOpen__DsJI1 {
  background: transparent;
}

.public-nav_hamburgerOpen__DsJI1::before {
  top: 0;
  transform: rotate(45deg);
}

.public-nav_hamburgerOpen__DsJI1::after {
  top: 0;
  transform: rotate(-45deg);
}

/* ── Member link extras (badges, external marker) ── */

/* Counts beside Resumes / Coaching / My Search. Sized so a two-digit count
   still fits the pill without shifting the link's text baseline. */
.public-nav_badge__nxgZM {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 6px;
  margin-left: 6px;
  border-radius: 9px;
  background: var(--c-green-faint);
  color: var(--c-green-dark);
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 500;
  line-height: 1;
  flex-shrink: 0;
}

/* Community opens the external platform; mark it so the jump is not a
   surprise. */
.public-nav_linkExternal__fXrc0 {
  margin-left: 4px;
  font-size: 11px;
  opacity: 0.7;
}

/* ── Mobile menu panel ──────────────────────────────────────────────────────
 * Everything except `display` is defined at the base layer on purpose. The
 * panel only exists in the DOM while the menu is open, and the toggle that
 * opens it is itself display-gated, so these rules cost nothing at desktop.
 * Defining them here (they used to live inside the 640px query) is what makes
 * the panel render STYLED at every collapsed width: 641-900px for visitors,
 * which was previously a bare unstyled list, and up to 1100px for members. */
.public-nav_mobileMenu__i1m9C {
  display: none;
  flex-direction: column;
  gap: 8px;
  position: absolute;
  /* 100%, not var(--nav-height): this panel is absolutely positioned inside
     .header, which is ALREADY offset by the announcement banner, so
     --nav-height (bar + banner) counted the banner twice and floated the panel
     below the bar whenever a webinar banner was live. */
  top: 100%;
  left: 0;
  right: 0;
  background: var(--c-cream-light);
  border-bottom: 1px solid var(--c-border);
  box-shadow: var(--shadow);
  padding: 16px var(--page-gutter) 20px;
  animation: public-nav_nari-fadeUp__EaLu9 0.2s ease both;
  /* The panel hangs off a fixed header, so the page cannot scroll it: give
     it its own scroller or landscape phones lose the bottom CTAs. 100vh
     fallback first for browsers without dvh. */
  max-height: calc(100vh - var(--nav-height));
  max-height: calc(100dvh - var(--nav-height));
  overflow-y: auto;
  overscroll-behavior: contain;
}

.public-nav_mobileLinks__1ApUd {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.public-nav_mobileLink__tNUVu {
  display: flex;
  align-items: center;
  min-height: 44px;
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 400;
  color: var(--c-light-body);
  padding: 10px 12px;
  border-radius: 8px;
  transition: background 0.15s, color 0.15s;
}

.public-nav_mobileLink__tNUVu:hover {
  background: var(--c-green-faint);
  color: var(--c-light-head);
}

.public-nav_mobileLink__tNUVu:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

.public-nav_mobileLinkActive__9gGHL {
  color: var(--c-green-dark);
  font-weight: 500;
}

.public-nav_mobileCta__eON_c {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--c-border);
}

.public-nav_mobileLoginBtn__epDOh {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  text-align: center;
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 400;
  color: var(--c-light-head);
  padding: 10px 16px;
  border: 1px solid var(--c-border-mid);
  border-radius: 9px;
  transition: background 0.15s;
}

.public-nav_mobileLoginBtn__epDOh:hover {
  background: var(--c-cream-dark);
}

.public-nav_mobileLoginBtn__epDOh:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

.public-nav_mobileJoinBtn__n9Gwx {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  text-align: center;
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 500;
  color: var(--c-cream);
  background: var(--c-navy);
  padding: 10px 16px;
  border-radius: 9px;
  transition: background 0.15s;
}

.public-nav_mobileJoinBtn__n9Gwx:hover {
  background: #1a2a3a;
}

.public-nav_mobileJoinBtn__n9Gwx:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

.public-nav_mobileAccountBtn__FEFps {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  text-align: center;
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 400;
  color: var(--c-light-head);
  padding: 10px 16px;
  border: 1px solid var(--c-border-mid);
  border-radius: 9px;
  transition: background 0.15s;
}

.public-nav_mobileAccountBtn__FEFps:hover {
  background: var(--c-cream-dark);
}

.public-nav_mobileAccountBtn__FEFps:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

.public-nav_mobileSignOutBtn__B3RLN {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  width: 100%;
  text-align: center;
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 400;
  color: var(--c-light-mute);
  padding: 10px 16px;
  background: none;
  border: 1px solid var(--c-border);
  border-radius: 9px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.public-nav_mobileSignOutBtn__B3RLN:hover {
  background: var(--c-cream-dark);
  color: var(--c-light-head);
}

.public-nav_mobileSignOutBtn__B3RLN:focus-visible {
  outline: 2px solid var(--c-green-dark);
  outline-offset: 2px;
}

/* The member bar carries 7 links plus two always-on badges, so it needs more
   room than the visitor bar and collapses to the menu earlier. Two variants
   rather than one shared breakpoint, because collapsing the visitor bar at
   1100px would hide the marketing links on ordinary laptops. */
@media (max-width: 1100px) {
  .public-nav_headerMember__wA_t7 .public-nav_links__urLGQ,
  .public-nav_headerMember__wA_t7 .public-nav_cta__H2IYX {
    display: none;
  }

  .public-nav_headerMember__wA_t7 .public-nav_menuToggle__RBooz {
    display: grid;
    margin-left: auto;
  }

  .public-nav_headerMember__wA_t7 .public-nav_mobileMenu__i1m9C {
    display: flex;
  }
}

/* ── Collapsed nav (6 links + 2 CTAs need ~900px of bar) ── */
@media (max-width: 900px) {
  .public-nav_links__urLGQ {
    display: none;
  }

  .public-nav_cta__H2IYX {
    display: none;
  }

  .public-nav_menuToggle__RBooz {
    display: grid;
    margin-left: auto;
  }

  .public-nav_mobileMenu__i1m9C {
    display: flex;
  }
}

/* The avatar (and its dropdown, home of the Motion/Theme toggles) stays
   visible through tablet widths: the collapsed hamburger menu carries no
   toggles, so hiding the avatar earlier would strand members without
   motion/theme controls. Below 640px the mobile menu's account entries take
   over, matching the pre-redesign breakpoint. */
@media (max-width: 640px) {
  .public-nav_avatar__Hequ4 {
    display: none;
  }
}

