/* Health Atlas Marketplace. Values use canonical Health Atlas tokens. */
.ha-marketplace{padding-block:var(--space-2xl);background:var(--color-background)}
.ha-marketplace__head{max-width:var(--container-narrow);margin-bottom:var(--space-xl)}
.ha-marketplace__head h1{margin:0}.ha-marketplace__head>p:last-child{color:var(--color-text-muted);font-size:var(--text-lg)}
.ha-marketplace__filters{max-width:32rem;margin-bottom:var(--space-xl)}
.ha-marketplace__filters label{display:block;margin-bottom:var(--space-xs);font-weight:var(--weight-semibold)}
.ha-marketplace__filters input{width:100%;min-height:44px;padding:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font:inherit}
.ha-marketplace__grid{display:grid;grid-template-columns:1fr;gap:var(--space-lg);margin:0;padding:0;list-style:none}
.ha-marketplace__card{overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-background);transition:transform var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease)}
.ha-marketplace__image{display:block;aspect-ratio:4/3;background:var(--color-background-alt)}
.ha-marketplace__image img{width:100%;height:100%;object-fit:contain}.ha-marketplace__body{padding:var(--space-lg)}
.ha-marketplace__body h2{margin:0;font-size:var(--text-xl)}.ha-marketplace__body h2 a{color:var(--color-text);text-decoration:none}
.ha-marketplace__description{color:var(--color-text-muted);font-size:var(--text-sm)}.ha-marketplace__price{font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-bold)}
.ha-marketplace__empty{max-width:var(--measure);margin:var(--space-xl) auto;color:var(--color-text-muted)}
/* One behaviour on every viewport: the bar sticks in normal flow directly BELOW the
   site header, which the shell bridge already makes sticky (id masthead: position
   sticky, top 0, z-index 100). --ha-offer-bar-top is the live header height set by
   marketplace.js (4rem pre-JS fallback); z-index 90 sits below the header, above content.
   No position:fixed and no spacer elements — those fought the bridge's id-masthead
   rule (ID specificity) and left the bar covering the menu on mobile. */
.ha-offer-bar{position:sticky;top:var(--ha-offer-bar-top,4rem);z-index:90;isolation:isolate;overflow:hidden;background:var(--color-primary-deep);color:var(--color-on-dark);padding-block:var(--space-xs);box-shadow:var(--shadow-sm)}
/* The product bar supersedes the Home's editorial marquee only while it is explicitly enabled. */
body.ha-offer-bar-active.home .ha-home>.ha-marquee{display:none}
.ha-offer-bar__track{display:flex;width:max-content;animation:ha-offer-bar-scroll calc(var(--dur-marquee) * 1.5) linear infinite}
.ha-offer-bar:hover .ha-offer-bar__track,.ha-offer-bar:focus-within .ha-offer-bar__track{animation-play-state:paused}
.ha-offer-bar__group{display:flex;flex:none;gap:var(--space-2xl);margin:0;padding:0 var(--space-xl);list-style:none}.ha-offer-bar__item{white-space:nowrap}
.ha-offer-bar__item a{display:flex;align-items:center;gap:var(--space-sm);min-height:calc(var(--space-xl) + var(--space-md));color:var(--color-on-dark);text-decoration:none}.ha-offer-bar__item a:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}
.ha-offer-bar__item img{width:calc(var(--space-xl) + var(--space-xs));height:calc(var(--space-xl) + var(--space-xs));object-fit:contain;border-radius:var(--radius-pill);background:var(--color-background)}
.ha-offer-bar__item span{display:grid;gap:var(--space-2xs)}.ha-offer-bar__item strong{font-family:var(--font-display);font-size:var(--text-sm)}.ha-offer-bar__item small{color:var(--color-on-dark-muted);font-size:var(--text-xs);letter-spacing:var(--tracking-kicker);text-transform:uppercase}
@keyframes ha-offer-bar-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (hover:hover){.ha-marketplace__card:hover{transform:translateY(calc(var(--space-2xs) / -2));box-shadow:var(--shadow-md)}}
@media (min-width:40rem){.ha-marketplace__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:64rem){.ha-marketplace__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (prefers-reduced-motion:reduce){.ha-offer-bar__track{width:auto;animation:none;flex-wrap:wrap;justify-content:center}.ha-offer-bar__group[aria-hidden=true]{display:none}}

/* ---- Product overview — editorial first fold (ha-product) ----
   First fold: media + factual intro on the left, a sticky action card on the right.
   Home-style rhythm: same tokens, same card + button language as the rest of the site.
   No rating, no stock/urgency claim, no colour outside the palette. */
.ha-product{display:grid;gap:var(--space-xl);align-items:start;margin-block:var(--space-lg) var(--space-2xl)}
.ha-product__body{margin-inline:auto}
.ha-product__main{display:grid;gap:var(--space-lg)}
.ha-product__media{margin:0}
.ha-product__media>img,.ha-product__media .wp-post-image{width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;background:var(--color-background-alt);border-radius:var(--radius-lg)}
.ha-product__thumbs{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-sm)}
.ha-product__thumbs img{width:64px;height:64px;object-fit:contain;background:var(--color-background-alt);border:1px solid var(--color-border);border-radius:var(--radius-sm)}
.ha-product__intro h1{margin:var(--space-2xs) 0 var(--space-xs)}
.ha-product__dek{color:var(--color-text-muted);font-size:var(--text-lg);line-height:var(--leading-normal)}
.ha-product__meta{margin-top:var(--space-sm);color:var(--color-text-muted);font-size:var(--text-sm)}
.ha-product__facts{margin:var(--space-md) 0 0;padding:0;list-style:none;display:grid;gap:var(--space-xs);font-size:var(--text-sm)}
.ha-product__facts li{display:flex;gap:var(--space-sm)}
.ha-product__facts span{flex:0 0 9rem;color:var(--color-text-muted)}
.ha-product__buy{display:grid;gap:var(--space-md);padding:var(--space-lg);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.ha-product__price{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-bold);line-height:var(--leading-tight)}
.ha-product__price small{display:block;margin-top:var(--space-2xs);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-regular);color:var(--color-text-muted)}
.ha-product__redirect{margin:0;padding:var(--space-sm) var(--space-md);background:var(--color-background-alt);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--color-text-muted)}
.ha-product__buy .ha-btn{width:100%;justify-content:center;text-align:center}
.ha-product__assurances{margin:0;padding:0;list-style:none;display:grid;gap:var(--space-xs);font-size:var(--text-sm);color:var(--color-text-muted)}
.ha-product__assurances li{position:relative;padding-left:1.5em}
.ha-product__assurances li::before{content:"✓";position:absolute;left:0;top:0;color:var(--color-primary-dark);font-weight:var(--weight-bold)}
@media (min-width:48rem){.ha-product__main{grid-template-columns:minmax(0,20rem) minmax(0,1fr);align-items:start}}
@media (min-width:64rem){
  .ha-product{grid-template-columns:minmax(0,1fr) 20rem;gap:var(--space-2xl)}
  .ha-product__buy{position:sticky;top:var(--space-lg)}
}
@media (prefers-reduced-motion:reduce){.ha-product__buy{position:static}}
