/* =========================================================
   Coached. brand — applied across portal, auth, storefront
   Palette from landing page: bg #faf9f7, ink #16130f,
   muted #6b6458, accent #e25b2a, card #fff, line #e6e2da.
   ========================================================= */

:root{
  --coached-bg:#faf9f7;
  --coached-ink:#16130f;
  --coached-muted:#6b6458;
  --coached-accent:#e25b2a;
  --coached-accent-deep:#d1541d;
  --coached-card:#ffffff;
  --coached-line:#e6e2da;
  --coached-dark:#1c1915;
  --coached-darkm:#b8b0a2;
}

body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}

/* =========================================================
   Shared site header — landing-page parity across the
   storefront (shop.coachedbytj.com) and the portal (/portal).
   Mirrors landing/index.html: sticky cream blur bar, muted
   .95rem nav links with ink hover, orange "Book a Call" pill,
   accent-bordered hamburger on mobile.
   ========================================================= */

/* Accent "Book a Call" pill — now PORTAL header only. The storefront header
   pill was removed (its mobile-menu .coached-mobile-btn pill is separate and
   unchanged). */
.coached-book-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:var(--coached-accent);
  color:#fff !important;
  padding:11px 20px;
  border-radius:10px;
  font-weight:700;
  font-size:.95rem;
  line-height:1;
  white-space:nowrap;
  text-decoration:none;
  transition:background .12s ease,transform .12s ease;
}
.coached-book-btn:hover{
  background:var(--coached-accent-deep);
  color:#fff !important;
  transform:translateY(-1px);
}
@media(max-width:720px){
  .coached-book-btn{display:none !important;} /* landing hides its header CTA on mobile too (portal) */
}

/* ---------- Storefront header (Twenty Twenty Five template part) ---------- */
.wp-site-blocks header.wp-block-template-part{
  position:sticky;
  top:0;
  z-index:50;
  border-bottom:1px solid var(--coached-line);
}
/*
  The cream + blur lives on ::before, NOT on the header element:
  backdrop-filter on the header would make it a containing block for
  position:fixed descendants, trapping the WP mobile nav overlay and the
  mini-cart drawer inside the header box (\"cut off\") instead of letting
  them overlay the whole viewport like the landing page menu.
*/
.wp-site-blocks header.wp-block-template-part::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:rgba(250,249,247,.9);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
}
/* Landing header rhythm (28px) instead of the theme's wider spacing */
.wp-site-blocks header.wp-block-template-part [class*="is-content-justification-space-between"]{
  padding-top:26px !important;
  padding-bottom:26px !important;
}
/* Wordmark lockup sits at the landing logo scale */
.wp-site-blocks header.wp-block-template-part .wp-block-site-logo img{
  height:34px;
  width:auto;
  min-width:0;
}
/* Nav links: muted, hover to ink, current page bold ink */
.wp-site-blocks header.wp-block-template-part .wp-block-navigation,
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__container{
  gap:22px;
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation-item__content{
  color:var(--coached-muted);
  font-size:.95rem;
  font-weight:500;
  padding:0;
  text-decoration:none;
  transition:color .12s ease;
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation-item__content:hover{
  color:var(--coached-ink);
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation-item.current-menu-item .wp-block-navigation-item__content{
  color:var(--coached-ink);
  font-weight:700;
}
/* Desktop right cluster (nav · account · cart): landing nav gap (16px).
   The theme's group gap references --wp--preset--spacing--10, which this
   site's palette doesn't define, so it computes to `normal` (0) and the
   cluster items sit flush. Still needed now that the header pill is gone —
   without it nav/account/cart would be flush against each other. Mobile
   (<=599px) keeps the previous spacing. */
@media (min-width:600px){
  .wp-site-blocks header.wp-block-template-part .wp-block-group.is-content-justification-right{
    gap:16px;
  }
}
/* Mobile hamburger — exact landing .menu-btn: 50px accent-bordered, three
   muted bars that morph to an X via the .open class (synced to the modal
   state by headerSyncScript), so it stays in the open state like the
   landing page menu. */
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container-open{
  width:50px;
  height:50px;
  min-height:50px;
  padding:12px 11px;
  flex-direction:column;
  justify-content:center;
  align-items:stretch;
  gap:5px;
  background:transparent;
  border:1.5px solid var(--coached-accent);
  border-radius:10px;
  color:var(--coached-muted);
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container-open span{
  height:2px;
  background:var(--coached-muted);
  border-radius:2px;
  transition:transform .3s ease,opacity .3s ease;
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container-open.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container-open.open span:nth-child(2){opacity:0}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container-open.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
/* Mobile: hamburger is the RIGHTMOST icon, beside the mini-cart — the same
   spot as the landing hamburger (far right of the header). Order only
   applies <600px where the hamburger exists; desktop is untouched. */
@media (max-width:599px){
  .wp-site-blocks header.wp-block-template-part .wp-block-navigation{order:4;}
  .wp-site-blocks header.wp-block-template-part .wp-block-woocommerce-customer-account{order:2;}
  .wp-site-blocks header.wp-block-template-part .wp-block-woocommerce-mini-cart{order:3;}
}
/* Mobile overlay menu — matches the landing overlay exactly: cream sheet
   BELOW the sticky header (so the logo + morphed X stay visible, like the
   landing), centered 1.7rem/800 links in 26px gaps that stagger in, and
   Book a Call pinned 44px off the bottom fading in last. JS sets an exact
   top (header height) on open; 96px here is only a pre-JS fallback. */
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container{
  color:var(--coached-ink);
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open{
  top:96px;
  justify-content:center;
  padding:0;
  background:#faf9f7 !important;
  animation:none; /* items stagger individually instead of one whole-sheet fade */
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{
  width:100%;
  padding-top:0;
  justify-content:flex-start;
  align-items:center;
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{
  flex-direction:column;
  flex-wrap:nowrap;
  align-items:center;
  gap:26px;
  width:100%;
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item{
  opacity:0;
  transform:translateY(14px);
  animation:coached-menu-item .3s ease forwards;
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(1){animation-delay:.06s}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(2){animation-delay:.12s}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(3){animation-delay:.18s}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(4){animation-delay:.24s}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(5){animation-delay:.30s}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content{
  color:var(--coached-ink);
  font-size:1.7rem;
  font-weight:800;
  letter-spacing:-0.02em;
  line-height:1.2;
  padding:0;
}
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover{
  color:var(--coached-accent);
}
@keyframes coached-menu-item{
  from{opacity:0;transform:translateY(14px)}
  to{opacity:1;transform:none}
}
/* Native modal X is hidden — the header hamburger morphs into the X and
   closes it from the same spot, exactly like the landing page. */
.wp-site-blocks header.wp-block-template-part .wp-block-navigation__responsive-container-close{
  display:none;
}
/* Landing .menu-book equivalent: Book a Call pinned to the overlay bottom.
   Hidden everywhere EXCEPT the open mobile sheet. The WP responsive nav
   container renders INLINE (display:block; position:relative) on desktop
   >=600px, so without scoping this button would leak into the desktop
   header as a second, absolutely-positioned "Book a Call" floating over
   the nav (the two-button + no-spacing bug). It only shows inside
   .is-menu-open, i.e. the mobile overlay. */
.coached-mobile-btn{
  display:none;
  box-sizing:border-box; /* match landing border-box: width includes padding */
  position:absolute;
  left:0;
  right:0;
  bottom:44px;
  width:min(90%,360px);
  margin:0 auto;
  align-items:center;
  justify-content:center;
  background:var(--coached-accent);
  color:#fff !important;
  padding:13px 24px;
  border-radius:10px;
  font-weight:700;
  font-size:.95rem;
  line-height:1;
  text-decoration:none;
  transition:background .12s ease;
}
.coached-mobile-btn:hover{
  background:var(--coached-accent-deep);
  color:#fff !important;
}
/* Visible only inside the open mobile sheet */
.wp-block-navigation__responsive-container.is-menu-open .coached-mobile-btn{
  display:flex;
  opacity:0;
  transform:translateY(12px);
  animation:coached-menu-item .3s ease .36s forwards;
}
/* Never in the desktop header (nav container is inline >=600px) */
@media (min-width:600px){
  .coached-mobile-btn{display:none !important;}
}

/* ---------- Portal top menu (FluentCommunity) ---------- */
body .fcom_top_menu{
  background:rgba(250,249,247,.92);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--coached-line) !important;
  padding:13px 22px;
}
body .fcom_top_menu .fcom_header_menu .fcom_menu_link{
  color:var(--coached-muted);
  font-size:.95rem;
  font-weight:500;
  padding:8px 10px;
  border-radius:8px;
  transition:color .12s ease,background .12s ease;
}
body .fcom_top_menu .fcom_header_menu .fcom_menu_link:hover{
  color:var(--coached-accent);
  background:var(--coached-bg);
}
body .fcom_top_menu .fcom_header_menu li.active > .fcom_menu_link,
body .fcom_top_menu .fcom_header_menu a.fcom_menu_link.active{
  color:var(--coached-ink);
  font-weight:700;
}
/* Portal hamburger (space opener): accent-bordered like the landing .menu-btn */
body .fcom_top_menu .space_opener button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:46px;
  height:46px;
  border:1.5px solid var(--coached-accent);
  border-radius:10px;
  color:var(--coached-muted);
  background:transparent;
}
body .fcom_top_menu .space_opener button svg{font-size:18px;}
/* Portal login button -> landing pill radius/weight */
body .fcom_top_menu .fcom_login_btn.el-button{
  border-radius:10px;
  font-weight:700;
  padding:11px 20px;
}
/* Portal right cluster: keep the Book a Call pill aligned with the icons/button */
body .fcom_top_menu .top_menu_right{
  align-items:center;
  gap:12px;
}
body .fcom_top_menu .top_menu_right .coached-book-btn{
  margin-left:2px;
}
/* Dark mode mirrors the cream blur with the brand dark */
html.dark body .fcom_top_menu{
  background:rgba(28,25,21,.92);
  border-bottom-color:#3b352c !important;
}
html.dark body .fcom_top_menu .fcom_header_menu .fcom_menu_link{
  color:var(--coached-darkm);
}
html.dark body .fcom_top_menu .fcom_header_menu .fcom_menu_link:hover{
  color:var(--coached-accent);
  background:#2d2720;
}
html.dark body .fcom_top_menu .space_opener button{
  color:var(--coached-darkm);
  border-color:var(--coached-accent);
}

/* ============================== Portal (FluentCommunity app) ============================== */

body.fcom_body, body:has(.fcom_root){
  background:var(--coached-bg);
}
body .fcom_top_menu{
  font-family:inherit;
}
body .fcom_top_menu a.fcom_bootstrap_class,
body .fcom_top_menu .fcom_search_cta,
body .fcom_top_menu .fcom_profile_avatar,
body .fcom_top_menu .fcom_user_menu_trigger{
  -webkit-tap-highlight-color:transparent;
}
/* Hover state for top menu links (default uses brand color #506CF0) */
body .fcom_top_menu a:hover .fcom_menu_text,
body .fcom_top_menu a:focus-visible .fcom_menu_text{
  color:var(--coached-accent);
}

/* Sidebar spaces */
.spaces .space-nav-item:hover .space-title,
.spaces .space-nav-item:hover svg path{
  color:var(--coached-accent);
  stroke:var(--coached-accent);
}
.spaces .space-nav-item .fcom_space_dot{
  color:var(--coached-accent);
}

/* Feed */
.fcom_feed_area{
  font-family:inherit;
  color:var(--coached-ink);
}

/* Shared buttons/menus picked up via CSS vars (printed after the app's var block) */
.fcom_primary_button,
.fcom_primary_button.el-button{
  font-weight:700;
  letter-spacing:.01em;
}

/* ============================== Auth / sign-in pages ============================== */

.fcom_auth_page{
  background:var(--coached-bg);
  font-family:inherit;
}
.fcom_auth_page .fcom_layout_side{
  background:linear-gradient(160deg,#fdfbf8 0%,var(--coached-bg) 45%,#f0e9dd 100%);
}
.fcom_auth_page .fcom_logo img{
  height:34px;
  width:auto;
}
.fcom_auth_page .fcom_title{
  font-family:inherit;
  letter-spacing:-.02em;
}
.fcom_auth_page .fcom_welcome{
  color:var(--coached-accent);
  font-weight:700;
}
.fcom_auth_page .fcom_layout_main form,
.fcom_auth_page .fcom_onboard_form{
  background:var(--coached-card);
  border:1px solid var(--coached-line);
  border-radius:12px;
}
.fcom_auth_page input[type="text"],
.fcom_auth_page input[type="email"],
.fcom_auth_page input[type="password"],
.fcom_auth_page input[type="url"],
.fcom_auth_page .fcom_form-group input{
  border:1px solid var(--coached-line);
  border-radius:8px;
}
.fcom_auth_page input:focus{
  border-color:var(--coached-accent);
  box-shadow:0 0 0 3px rgba(226,91,42,.12);
}
.fcom_auth_page .button-primary,
.fcom_auth_page button[type="submit"],
.fcom_auth_page .fcom_onboard_form button{
  background:var(--coached-accent) !important;
  border-color:var(--coached-accent) !important;
  border-radius:8px;
  font-weight:700;
}
.fcom_auth_page .button-primary:hover,
.fcom_auth_page button[type="submit"]:hover{
  background:var(--coached-accent-deep) !important;
  border-color:var(--coached-accent-deep) !important;
}
.fcom_auth_page a:not(.button){
  color:var(--coached-accent);
}

/* ============================== WooCommerce coming soon ============================== */

.wp-block-woocommerce-coming-soon,
.woocommerce-coming-soon,
.wp-block-woocommerce-coming-soon .wp-block-cover,
.wp-block-woocommerce-coming-soon .woocommerce-coming-soon-default{
  background:var(--coached-bg) !important;
  color:var(--coached-ink);
}
.woocommerce-coming-soon-header{
  border-bottom:1px solid var(--coached-line) !important;
}
.woocommerce-coming-soon-header .wp-block-site-title a{
  color:var(--coached-ink);
  font-weight:800;
  letter-spacing:-.02em;
}
.woocommerce-coming-soon-header .wp-block-button__link,
.woocommerce-coming-soon-header a.wp-block-button__link{
  background:transparent !important;
  border:1px solid var(--coached-line) !important;
  color:var(--coached-ink) !important;
  border-radius:999px !important;
  font-weight:600;
}
.woocommerce-coming-soon-header .wp-block-button__link:hover,
.woocommerce-coming-soon-header a.wp-block-button__link:hover{
  color:var(--coached-accent) !important;
  border-color:var(--coached-accent) !important;
}
.woocommerce-coming-soon-banner{
  color:var(--coached-ink) !important;
  font-weight:800 !important;
  letter-spacing:-.03em;
}
.woocommerce-coming-soon-banner .coached-dot,
.woocommerce-coming-soon-banner span{ /* the trailing period in the headline */
  color:var(--coached-accent) !important;
}
.woocommerce-coming-soon-banner p{
  color:var(--coached-muted);
}
.woocommerce-coming-soon-footer{
  border-top-color:var(--coached-line) !important;
}
.woocommerce-coming-soon-footer p{
  color:var(--coached-muted);
}

/* ============================== Storefront (twenty twenty five, modern) ============================== */

.wp-site-blocks{
  --wp--preset--color--contrast:var(--coached-ink);
  --wp--preset--color--base:#faf9f7;
  --wp--preset--color--accent:var(--coached-accent);
  background:var(--coached-bg);
  color:var(--coached-ink);
  font-family:'Manrope','Manrope Variable',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}
.wp-site-blocks h1,
.wp-site-blocks h2,
.wp-site-blocks h3,
.wp-site-blocks h4{
  letter-spacing:-.02em;
  line-height:1.15;
}
.wp-site-blocks .wp-block-site-title a{
  color:var(--coached-ink);
}
.wp-site-blocks .wp-block-site-title a .coached-dot{
  color:var(--coached-accent);
}
.wp-site-blocks a{
  color:var(--coached-accent);
}
.wp-site-blocks a{
  text-decoration-thickness:1px;
  text-underline-offset:2px;
}
.wp-site-blocks a:hover{
  color:var(--coached-accent-deep);
}

/* Buttons */
.wp-site-blocks .wp-block-button__link,
.wp-site-blocks .wp-element-button,
.wp-site-blocks .wc-block-components-button,
.wp-site-blocks .woocommerce a.button,
.wp-site-blocks .woocommerce button.button,
.wp-site-blocks .wc-block-cart__submit-button,
.wp-site-blocks .wc-block-checkout__actions .wc-block-components-button{
  background:var(--coached-accent);
  color:#ffffff;
  border-radius:999px;
  font-weight:700;
  border:0;
  box-shadow:none;
  transition:background .15s ease,transform .15s ease;
}
.wp-site-blocks .wp-element-button:hover,
.wp-site-blocks .wp-block-button__link:hover,
.wp-site-blocks .wc-block-components-button:hover,
.wp-site-blocks .wc-block-cart__submit-button:hover{
  background:var(--coached-accent-deep);
  color:#ffffff;
  transform:translateY(-1px);
}

/* Classic WooCommerce buttons need their BOX set explicitly, not just their
   colours. The block-theme pills above (.wp-block-button__link,
   .wp-element-button, .wc-block-components-button) get display/padding/
   font-size from WooCommerce, but nothing in the loaded cascade does that for
   `a.button` — so on My Account sub-pages the anchors came out as bare
   `display:inline`, `padding:0`, underlined, and inheriting the theme's fluid
   21.76px body font: a 30px sliver against the 43-57px pills elsewhere. That is
   what payment-methods showed ("Add payment method" plus the per-method
   Delete/Edit links, which WooCommerce renders as `a.button delete-payment-method`).
   Metrics below match the My Account "Log in" button (padding 16px 36px,
   999px radius, weight 700). Scoped to `.button` on purpose: /cart/, /checkout/
   and /shop/ contain none of these, so only the account pages are affected. */
.wp-site-blocks .woocommerce a.button,
.wp-site-blocks .woocommerce button.button,
.wp-site-blocks .woocommerce input.button,
.wp-site-blocks .woocommerce a.button.alt,
.wp-site-blocks .woocommerce button.button.alt,
.wp-site-blocks .woocommerce input.button.alt{
  display:inline-block;
  padding:1rem 2.25rem;
  font-size:1rem;
  line-height:1.4;
  text-decoration:none;
  border-radius:999px;
  font-weight:700;
  background:var(--coached-accent);
  color:#ffffff;
  border:0;
  box-shadow:none;
  cursor:pointer;
  transition:background .15s ease,transform .15s ease;
}
.wp-site-blocks .woocommerce a.button:hover,
.wp-site-blocks .woocommerce button.button:hover,
.wp-site-blocks .woocommerce input.button:hover,
.wp-site-blocks .woocommerce a.button.alt:hover,
.wp-site-blocks .woocommerce button.button.alt:hover,
.wp-site-blocks .woocommerce input.button.alt:hover{
  background:var(--coached-accent-deep);
  color:#ffffff;
  text-decoration:none;
  transform:translateY(-1px);
}

/* Form fields + selects (kills the raw browser dropdown look) */
.wp-site-blocks input[type="text"],
.wp-site-blocks input[type="email"],
.wp-site-blocks input[type="url"],
.wp-site-blocks input[type="password"],
.wp-site-blocks input[type="tel"],
.wp-site-blocks input[type="number"],
.wp-site-blocks input[type="search"],
.wp-site-blocks input[type="date"],
.wp-site-blocks .input-text,
.wp-site-blocks select,
.wp-site-blocks textarea{
  border:1px solid var(--coached-line);
  border-radius:10px;
  background:#ffffff;
  color:var(--coached-ink);
  padding:10px 14px;
  font:inherit;
  line-height:1.4;
  width:100%;
  max-width:100%;
}
.wp-site-blocks input:focus,
.wp-site-blocks select:focus,
.wp-site-blocks textarea:focus{
  outline:none;
  border-color:var(--coached-accent);
  box-shadow:0 0 0 3px rgba(226,91,42,.12);
}
.wp-site-blocks select{
  appearance:none;
  -webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b6458' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 14px center;
  background-size:14px;
  padding-right:42px;
  cursor:pointer;
}

/* Shop page: result count + ordering */
.wp-site-blocks .wc-block-product-results-count .woocommerce-result-count{
  color:var(--coached-muted);
  font-size:.86rem;
  margin:0;
}
.wp-site-blocks .wc-block-catalog-sorting .woocommerce-ordering select.orderby{
  width:auto;
  min-width:230px;
  border-radius:999px;
  font-size:.86rem;
  font-weight:600;
  padding-top:9px;
  padding-bottom:9px;
}

/* Shop grid: product cards */
.wp-site-blocks ul.wc-block-product-template{
  gap:1.5rem;
  align-items:stretch;
}
.wp-site-blocks ul.wc-block-product-template li.wc-block-product{
  background:var(--coached-card);
  border:1px solid var(--coached-line);
  border-radius:18px;
  padding:12px 12px 20px;
  display:flex;
  flex-direction:column;
  align-items:center;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.wp-site-blocks ul.wc-block-product-template li.wc-block-product:hover{
  transform:translateY(-4px);
  box-shadow:0 16px 32px -18px rgba(22,19,15,.35);
  border-color:#dcd6c9;
}
.wp-site-blocks ul.wc-block-product-template .wc-block-components-product-image{
  border-radius:14px;
  overflow:hidden;
  margin-bottom:14px;
  background:#f4f1eb;
}
.wp-site-blocks ul.wc-block-product-template .wc-block-components-product-image img{
  border-radius:14px;
}
.wp-site-blocks ul.wc-block-product-template .wp-block-post-title{
  font-size:1.02rem;
  line-height:1.35;
  font-weight:700;
  letter-spacing:-.01em;
  margin:0 0 .5rem;
  padding-inline:4px;
  text-align:center;
}
.wp-site-blocks ul.wc-block-product-template .wp-block-post-title a{
  color:var(--coached-ink);
  text-decoration:none;
}
.wp-site-blocks ul.wc-block-product-template .wp-block-post-title a:hover{
  color:var(--coached-accent);
}
.wp-site-blocks ul.wc-block-product-template .wc-block-components-product-price .amount{
  font-weight:800;
  font-size:1.05rem;
  color:var(--coached-ink);
}
.wp-site-blocks ul.wc-block-product-template .wc-block-components-product-price .woocommerce-Price-currencySymbol{
  color:var(--coached-accent);
}
.wp-site-blocks ul.wc-block-product-template .wc-block-components-product-button{
  margin-top:auto;
  width:100%;
}
.wp-site-blocks ul.wc-block-product-template .wc-block-components-product-button .wp-block-button__link{
  border-radius:999px;
  width:100%;
  padding:.85em 1.4em;
  font-size:.9rem;
}
.wp-site-blocks ul.wc-block-product-template .wc-block-components-product-button .wp-block-button__link:hover{
  color:#ffffff;
}

/* Mini cart */
.wp-site-blocks .wc-block-mini-cart__badge{
  background:var(--coached-accent);
}

/* Single product */
.wp-site-blocks .woocommerce-product-gallery{
  background:var(--coached-card);
  border:1px solid var(--coached-line);
  border-radius:18px;
  overflow:hidden;
  padding:10px;
}
.wp-site-blocks .woocommerce-product-gallery__wrapper img{
  border-radius:12px;
}
.wp-site-blocks .woocommerce-breadcrumb{
  color:var(--coached-muted);
  font-size:.85rem;
}
.wp-site-blocks .woocommerce-breadcrumb a{
  color:var(--coached-muted);
  text-decoration:none;
}
.wp-site-blocks .woocommerce-breadcrumb a:hover{
  color:var(--coached-accent);
}
.wp-site-blocks .wp-block-woocommerce-product-price .amount,
.wp-site-blocks .entry-summary .price .amount{
  font-weight:800;
  color:var(--coached-ink);
}
.wp-site-blocks .wp-block-woocommerce-product-price .woocommerce-Price-currencySymbol{
  color:var(--coached-accent);
}
.wp-site-blocks .variations_form table.variations select{
  min-width:180px;
}
.wp-site-blocks .variations_form .reset_variations{
  font-size:.8rem;
  color:var(--coached-muted);
}
.wp-site-blocks .woocommerce-variation-add-to-cart{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.75rem;
}
.wp-site-blocks .woocommerce-variation-add-to-cart .quantity{
  margin:0;
}
.wp-site-blocks .woocommerce-variation-add-to-cart .qty{
  width:74px;
  text-align:center;
  border-radius:999px;
}
.wp-site-blocks .woocommerce-variation-add-to-cart button.single_add_to_cart_button{
  border-radius:999px;
  padding:1em 2.2em;
}
.wp-site-blocks .woocommerce-tabs{
  background:var(--coached-card);
  border:1px solid var(--coached-line);
  border-radius:18px;
  padding:24px;
  margin-top:2rem;
}
.wp-site-blocks .woocommerce-tabs ul.tabs{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  margin:0 0 1.25rem;
  padding:0;
  border:none;
}
.wp-site-blocks .woocommerce-tabs ul.tabs::before{
  display:none;
}
.wp-site-blocks .woocommerce-tabs ul.tabs li{
  background:var(--coached-bg);
  border:1px solid var(--coached-line);
  border-radius:999px;
  margin:0;
  padding:0;
}
.wp-site-blocks .woocommerce-tabs ul.tabs li::before,
.wp-site-blocks .woocommerce-tabs ul.tabs li::after{
  display:none;
}
.wp-site-blocks .woocommerce-tabs ul.tabs li a{
  display:inline-block;
  padding:.55em 1.2em;
  color:var(--coached-muted);
  font-weight:600;
  text-decoration:none;
}
.wp-site-blocks .woocommerce-tabs ul.tabs li.active{
  background:var(--coached-accent);
  border-color:var(--coached-accent);
}
.wp-site-blocks .woocommerce-tabs ul.tabs li.active a{
  color:#ffffff;
}
.wp-site-blocks .woocommerce-tabs .panel h2{
  font-size:1.25rem;
}

/* Cart */
.wp-site-blocks .wc-block-cart,
.wp-site-blocks .wc-block-cart__items,
.wp-site-blocks .wc-block-cart__totals{
  background:var(--coached-card);
  border:1px solid var(--coached-line);
  border-radius:18px;
  padding:1.5rem;
}
.wp-site-blocks .wc-block-cart__totals-title,
.wp-site-blocks .wc-block-components-totals-item__label,
.wp-site-blocks .wc-block-cart-items__header{
  color:var(--coached-muted);
  font-weight:700;
}
.wp-site-blocks .wc-block-cart-items .wc-block-cart-item__product-name{
  color:var(--coached-ink);
}

/* Checkout */
.wp-site-blocks .wp-block-woocommerce-checkout{
  background:var(--coached-card);
  border:1px solid var(--coached-line);
  border-radius:18px;
  padding:1.5rem;
}
.wp-site-blocks .wc-block-checkout__add-address-card,
.wp-site-blocks .wc-block-components-checkout-step__container,
.wp-site-blocks .wc-block-components-address-form,
.wp-site-blocks .wc-block-components-form{
  background:transparent;
}

/* Notices */
.wp-site-blocks .wc-block-components-notice-banner,
.wp-site-blocks .woocommerce-message,
.wp-site-blocks .woocommerce-info,
.wp-site-blocks .woocommerce-error{
  border-radius:12px;
  border-left-width:0;
}
.wp-site-blocks .wc-block-components-notice-banner.is-error,
.wp-site-blocks .woocommerce-error{
  background:#fdf1ea;
  color:#8a2b0d;
}
.wp-site-blocks .wc-block-components-notice-banner.is-success,
.wp-site-blocks .woocommerce-message{
  background:#eef4ec;
  color:#2f5230;
}
.wp-site-blocks .woocommerce-store-notice{
  background:var(--coached-accent);
  color:#ffffff;
}

/* My account.
   box-sizing:border-box is LOAD-BEARING, not cosmetic. WooCommerce floats
   the nav at width:30% and the content at width:68% (=98% of the ~1000px
   container). These elements are content-box in a block theme, so the padding
   and border below are ADDED on top of those percentages: 300->326px and
   680->730px = 1056px, a 56px overflow. Two floats that do not fit on one
   line drop, so the content ("Hello TJ") fell underneath the nav and read as
   stuck at the bottom of the page. With border-box they measure 300+680=980
   and sit side by side, content level with the top of the menu. Same trap as
   .coached-mobile-btn below. */
.wp-site-blocks .woocommerce-MyAccount-navigation{
  box-sizing:border-box;
  background:var(--coached-card);
  border:1px solid var(--coached-line);
  border-radius:18px;
  padding:.75rem;
}
.wp-site-blocks .woocommerce-MyAccount-navigation ul li a{
  display:block;
  padding:.6rem 1rem;
  border-radius:10px;
  color:var(--coached-ink);
  text-decoration:none;
  font-weight:600;
}
.wp-site-blocks .woocommerce-MyAccount-navigation ul li.is-active a,
.wp-site-blocks .woocommerce-MyAccount-navigation ul li a:hover{
  background:var(--coached-bg);
  color:var(--coached-accent);
}
.wp-site-blocks .woocommerce-MyAccount-content{
  box-sizing:border-box;
  background:var(--coached-card);
  border:1px solid var(--coached-line);
  border-radius:18px;
  padding:1.5rem;
}

/* Footer */
.wp-site-blocks footer{
  background:var(--coached-dark);
  color:var(--coached-darkm);
}
.wp-site-blocks footer a{
  color:var(--coached-darkm);
}
.wp-site-blocks footer a:hover{
  color:#ffffff;
}
.wp-site-blocks footer .wp-block-site-logo a{
  display:inline-block;
  width:120px;
  height:35px;
  background:url("/wp-content/uploads/coached/coached-wordmark-white.svg") no-repeat left center;
  background-size:contain;
}
.wp-site-blocks footer .wp-block-site-logo img{
  display:none;
}

/* ============================== wp-login ============================== */

body.login{
  background:var(--coached-bg);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
body.login div#login h1 a{
  background-image:url("/wp-content/uploads/coached/coached-wordmark-dark.png");
  background-size:contain;
  background-repeat:no-repeat;
  background-position:center center;
  width:200px;
  height:44px;
  margin:0 auto 8px;
}
body.login #loginform,
body.login .login form{
  background:var(--coached-card);
  border:1px solid var(--coached-line);
  border-radius:12px;
  box-shadow:none;
}
body.login .login label{
  color:var(--coached-ink);
}
body.login .login .button-primary,
body.login #wp-submit{
  background:var(--coached-accent);
  border-color:var(--coached-accent);
  border-radius:8px;
  font-weight:700;
}
body.login .login .button-primary:hover{
  background:var(--coached-accent-deep);
  border-color:var(--coached-accent-deep);
}
body.login .login #backtoblog a,
body.login .login #nav a{
  color:var(--coached-muted);
}
body.login .login #backtoblog a:hover,
body.login .login #nav a:hover{
  color:var(--coached-accent);
}
body.login .login .message,
body.login .login .notice{
  border-left-color:var(--coached-accent);
}