/** Shopify CDN: Minification failed

Line 1134:61 Unexpected "("

**/
/* am-product-title.css — AM26 PDP title weight + product subtitle
 * Created 2026-07-27 on the "AM26 subtitle + title weight" draft theme.
 *
 * WHY THIS FILE EXISTS
 * Audio-Technica product titles were normalised to "Brand + model" on
 * 2026-07-27, deliberately dropping the category noun. The PDP therefore needs
 * a short descriptive subtitle to say what the product actually is:
 * AT-VM95E (doza, 243 RON) and AT-VMN95E (ac de rezerva, 159 RON) now differ by
 * a single letter, and until the subtitle ships they are distinguishable only
 * by price.
 *
 * CASCADE
 * Loaded from layout/theme.liquid immediately after custom-fields.css, which is
 * the last stylesheet in <head> on this theme. That puts it last at equal
 * specificity, so no !important is needed here — see docs/theme-architecture.md
 * "Read this first" #1 for why load order (not selectors) is what usually bites.
 *
 * TOKENS
 * Uses the theme's existing --main_* / --size_* variable layer only. It does NOT
 * hardcode a font stack or a px size, so it follows whichever typography variant
 * is active (baseline screen.css, or am-type.css under ?am_type=).
 */

/* ---- 1. Title: make it the dominant element in the block ----------------- */

/* MEASURED ON THIS THEME (2026-07-27, draft 198758793551, via getComputedStyle):
     --main_h1 .. --main_h3 = 22px   (the heading scale is flattened; h1, h2 and
                                      h3 all resolve to the SAME 22px)
     --main_fz              = 14px
     --main_fw_h            = 700
     --main_fw_h_strong     = 900
   So weight alone cannot make the title dominant — at 22px it was competing
   with h2/h3 on the same page at identical size. The size step below is
   therefore deliberate and PDP-scoped: it does not touch --main_h1 itself, so
   no other heading anywhere on the site changes. */
.am-product-title {
  /* Heaviest weight the active type system offers (900 here; the am-type.css
     preview layer maps it to 600). Not a hardcoded 700. */
  font-weight: var(--main_fw_h_strong, 700);
  /* Clamp from the theme's own h1 token up to a genuinely dominant size.
     max() keeps this a step UP from whatever --main_h1 becomes later, so if
     the type scale is ever fixed properly this rule degrades gracefully
     instead of shrinking the title back down. */
  font-size: max(var(--main_h1, 22px), clamp(26px, 1.4rem + 0.9vw, 34px));
  /* Slight negative tracking keeps a heavier, larger title optically tight
     rather than letting the added weight read as sprawl. */
  letter-spacing: var(--main_ls_h, -0.01em);
  line-height: var(--main_lh_hc, 1.15);
  /* Pull the subtitle up close so the two read as one titling unit. */
  margin-bottom: 6px;
}

/* SPECIFICITY TRAP (runda 7, 2026-07-29) — the title markup carries the
   theme's own `.m5` spacing class, and screen.css sets `#root .m5 {
   margin-bottom: 5px }` at specificity (1,1,0). `.am-product-title` is
   (0,1,0), so the rule above LOSES on margin no matter how late this file
   loads — load order only decides ties. Measured: the 6px above never
   applied; the live value was 5px.
   The pair below re-states the margins at (1,1,0) so they actually win.
   Titling unit: title and subtitle stay tight to each other (8px), and the
   separation from the price comes from the price's own top margin — see
   am-pdp-info.css §6b. */
#root .am-product-title { margin-bottom: 8px; }
#root .am-product-subtitle { margin-bottom: 0; }

/* ---- 2. Subtitle: clearly secondary ------------------------------------- */

/* Deliberately lighter, smaller and muted relative to the title:
   - weight: the body regular weight, against the title's strong weight
   - size:   --main_lead (16px here) against the title's 26-34px
   - colour: a muted grey derived from the theme's body ink

   COLOUR TRAP — do not "simplify" this back to a token chain.
   The obvious-looking `var(--primary_text_light, var(--secondary_text, …))`
   renders the subtitle WHITE ON WHITE and invisible on this theme:
   --primary_text_light is UNSET, so it falls through to --secondary_text,
   which is #ffffff. On this theme --secondary_text means "text that sits on a
   dark background", NOT "muted text" — there is no muted-ink token.
   Verified by getComputedStyle on the draft, 2026-07-27.
   colour-mix keeps the subtitle tied to the theme's own ink (--primary_text,
   #303030) rather than hardcoding an unrelated grey, with a plain hex fallback
   for browsers without colour-mix. */
.am-product-subtitle {
  margin-top: 0;
  margin-bottom: 0;
  max-width: 46ch; /* keeps a long subtitle to a readable single-idea line */
  /* 82% ink keeps the subtitle visibly muted against the near-black title
     while still clearing WCAG AA (4.5:1) for normal-size body text on the
     white PDP background. An earlier 68% mix measured 2.54:1 and FAILED —
     do not lighten this without re-measuring the contrast ratio. */
  color: #56544f;
  color: color-mix(in srgb, var(--primary_text, #303030) 82%, #ffffff);
  font-family: var(--main_ff, inherit);
  font-size: var(--main_lead, var(--main_fz, 16px));
  font-weight: var(--main_fw, 400);
  line-height: 1.45;
  letter-spacing: 0;
  text-transform: none; /* never inherit the title's uppercase setting */
}

/* The theme can uppercase product titles via settings.product_titles_caps.
   That must not cascade into the subtitle. */
.am-product-title.text-uppercase + .am-product-subtitle {
  text-transform: none;
}

/* ---- 3. Mobile ---------------------------------------------------------- */

@media screen and (max-width: 767px) {
  .am-product-subtitle {
    /* Step down with the mobile type scale so the subtitle stays subordinate
       on small screens, where the title itself shrinks. */
    font-size: var(--mob_lead, var(--mob_fz, 15px));
    max-width: none;
  }
}

/* ---- 4. Product list / search cards ------------------------------------- */

/* The same custom.product_subtitle field, rendered on the collection and
   search result cards by snippets/product-item.liquid.

   It lives INSIDE the card's <h3>, so it inherits heading weight, size and
   letter-spacing and must be reset back to body-text appearance — otherwise
   it reads as a second title. display:block puts it on its own line under the
   product name without needing a wrapper element. */
.am-card-subtitle {
  display: block;
  margin: 2px 0 0;
  color: #56544f;
  color: color-mix(in srgb, var(--primary_text, #303030) 82%, #ffffff);
  font-family: var(--main_ff, inherit);
  font-size: var(--main_fz, 14px);
  font-weight: var(--main_fw, 400);
  line-height: 1.4;
  letter-spacing: normal; /* headings carry --main_ls_h; body text should not */
  text-transform: none;   /* never inherit settings.product_titles_caps */
}


/* ==================================================================
   PRP everywhere, black + faded — never red (Tudor, 2026-07-29:
   "schimba peste tot unde e pret de lista cu rosu sa fie PRP PRET cu
   negru opacity scazut").

   This file is the right home because theme.liquid loads it on EVERY
   template, unlike am-collection-premium.css which is gated to
   collection/search. The collection card had already been fixed in
   isolation; the cart drawer, the PDP, upsell blocks, quickshop and the
   search dropdown were all still showing red "Pret de lista".

   Two halves to the change:
   1. The LABEL is a locale string, not CSS — `product.list_price`, now
      "PRP" (ro-RO) / "RRP" (en.default). It is printed by a `content:`
      pseudo-element in monkeysmart.css and by an inline <style> in
      theme.liquid, both reading that same string, so editing the locale
      fixes every surface at once and needs no per-surface override.
   2. The COLOUR is the theme variable `--price_color_old`
      (screen.css:1887 → `#root .old-price:not([class*="overlay-"])`).
      It is set from the `compare_at_price_color` theme setting, which is
      a merchant-facing setting — changing it in settings_data.json would
      be silently reverted by the next theme-editor save. Overriding the
      variable here keeps the setting intact while making the rendered
      colour correct.

   Opacity rather than a mid-grey so the figure recedes on BOTH the white
   surfaces and the dark cart drawer, where a fixed grey would sink into
   the background. 0.62 on #303030 is still ~5.6:1 on white — above AA —
   because unlike the tiny card variant this rule also covers 14px+
   instances. */
:root {
    --price_color_old: #303030;
}

#root .old-price:not([class*="overlay-"]),
#root .price .old-price,
.old-price {
    color: #303030;
    opacity: 0.62;
    /* The strike-through is what made it read as "was/now" pricing; a PRP is a
       reference figure, not a former price. */
    text-decoration: none;
}

/* ==================================================================
   R1 — GALBENUL COBOARĂ DE PE CTA, DEVINE ACCENT (Tudor, 2026-07-29:
   „vreau sa merg cu recomandarile tale").

   DE CE. Auditul celor 6 branduri premium: NICIUNUL nu pune o culoare
   saturată de brand pe butonul de cumpărare. Master & Dynamic — referința
   pe care Tudor a numit-o — ARE un galben (`--yellow: 241 196 24`) și îl
   folosește de 3 ori în 426 KB de CSS, niciodată pe CTA:
   `--button-background-primary: var(--empress)` = #4a4a4a.

   Negru pe alb = 21:1, maximul posibil. Galbenul cu text negru era 10.42:1
   — deci schimbarea NU repară un defect de contrast pe CTA (ăla era în
   regulă); repară IERARHIA. Când butonul cel mai apăsat de pe site e în
   culoarea brandului, culoarea nu mai marchează nimic special.

   CE PĂSTREAZĂ GALBENUL: inelele de focus, conturul variantei active,
   iconițele mici, logo-ul, header-ul. Țintă: ≤3 elemente galbene per ecran.

   MECANISM. Tema pictează fundalul butoanelor cu un `::before`, nu cu
   `background` pe element (capcană măsurată: `getComputedStyle(btn)
   .backgroundColor` întoarce `rgba(0,0,0,0)`). Deci fundalul se schimbă pe
   pseudo-element. Tokenii `--secondary_bg*` sunt sursa galbenului pentru
   butoane; îi redefinim la negru ca să prindem și butoanele pe care nu le-am
   enumerat, în loc să vânăm selector cu selector.
   ================================================================== */

/* 1. Tokenii de buton: negru în loc de galben. `--secondary_btn_text` era
      #ffffff — pe negru e corect (21:1), pe galben era 1.59:1 (vezi §11). */
:root {
    --secondary_bg:      #000000;
    --secondary_bg_dark: #1a1a1a;   /* hover/active */
    --secondary_bg_fade: #333333;
    --secondary_btn_text: #ffffff;
}

/* 2. Fundalul real al butoanelor (pictat de ::before, nu de background). */
#root .link-btn a:before,
#root button:not(.m6pn-close):not(.inv):before,
#root input[type="submit"]:before,
#root .inv-btn button:before {
    background: #000000;
}

/* 3. Rimul chihlimbar de pe butoanele galbene NU mai are rost: exista doar
      pentru că galbenul pe alb nu avea graniță vizibilă (1.59:1). Negrul pe
      alb e 21:1 — bordura ar fi zgomot. */
#root .overlay-tertiary:before,
#root .l4cl.am-premium .am-card .am-card__cta:before {
    border-color: transparent;
}

/* 3b. CAPCANĂ REALĂ, găsită la verificare — .overlay-tertiary e clasa care
      chiar stilează CTA-ul de pe PDP (`screen.css:1935`), și NU e doar o
      regulă de culoare: redefinește PATRU tokenuri custom property ÎN
      INTERIORUL propriului scope —
        --secondary_btn_text: var(--tertiary_text)   (#000000)
        --secondary_bg / --secondary_bg_btn: var(--tertiary_bg)  (#ffc500)
      O redefinire de custom property mai apropiată de element bate orice
      suprascriere la :root, INDIFERENT de ordinea în fișier — de-aia §1 de
      mai sus nu ajungea la acest buton: textul rămânea negru pe fundal
      negru (deja invizibil), iar fundalul galben venea din altă variabilă
      (`--secondary_bg_btn`, nu `--secondary_bg`) pe care §1 nu o atingea.
      Verificat cu getComputedStyle: text rgb(0,0,0) pe fundal rgb(0,0,0). */
#root .overlay-tertiary,
#root button.overlay-tertiary,
#root .link-btn a.overlay-tertiary {
    --secondary_btn_text: #ffffff;
    --secondary_bg: #000000;
    --secondary_bg_btn: #000000;
    --secondary_bg_btn_dark: #1a1a1a;
}

/* 4. Focus: AICI galbenul își face treaba — un inel gros pe un buton negru
      e vizibil și e exact tipul de „moment" pentru care păstrăm culoarea. */
#root button:focus-visible,
#root .link-btn a:focus-visible,
#root input[type="submit"]:focus-visible {
    outline: 3px solid var(--tertiary_bg, #ffc500);
    outline-offset: 2px;
}

/* ==================================================================
   Cart / quickshop drawer: white instead of dark grey — Tudor,
   2026-07-29 ("putem face cart ul sa fie alb, in line cu tema noastra
   curenta, mi se pare ca vizibilitatea e foarte slaba cu gri ul asta
   inchis doar ca ai grija ca odata ce face cartul alb o sa avem probleme
   cu contrastul ca avem mult galben pe acolo").

   Tudor's warning was correct and it is the whole reason this block is
   long: MEASURED 23 yellow (#ffc500) elements inside the open drawer —
   the "Continua navigarea" link, its chevron, every upsell add-to-cart
   fill, every "In stoc" line and its check icon, and the product links.
   On #303030 they read fine; on white they all drop to 1.59:1. Flipping
   the background alone would have traded one visibility problem for a
   worse one, so every one of those surfaces is re-inked here.

   Scope: `.m6pn` covers the side cart, quickshop, pickup-availability and
   the login panel — they share one panel component and all four measured
   #303030, so they change together and stay consistent with each other.
   ================================================================== */

/* 1. The panel itself. `--custom_*` are the theme's own panel tokens, so
      children that read them (borders, dividers, muted text) follow
      instead of needing individual overrides. */
#root .m6pn,
#root #cart.m6pn,
#root #quickshop.m6pn {
    background: #fff;
    color: #303030;
    --custom_top_main_bg: #fff;
    --custom_top_main_fg: #303030;
}

/* 2. Headings, totals and body copy were painted white for the dark panel. */
#root .m6pn h1, #root .m6pn h2, #root .m6pn h3,
#root .m6pn h4, #root .m6pn h5, #root .m6pn h6,
#root .m6pn p, #root .m6pn li, #root .m6pn td, #root .m6pn th,
#root .m6pn .strong, #root .m6pn label {
    color: #303030;
}

/* 3. Product titles inside the drawer: keep them links, make them ink. */
#root .m6pn a:not(.overlay-tertiary):not(.link-btn a),
#root .m6pn .l4ca a {
    color: #303030;
}

/* 4. THE YELLOW TEXT — the 23 elements above.
      "Continua navigarea pe site" + its chevron, and the product links,
      become ink; they are navigation, not brand moments, and at 1.59:1 on
      white they would be unreadable. */
#root .m6pn .m6pn-close,
#root .m6pn .m6pn-close .icon-chevron-left,
#root .m6pn a.strong {
    color: #303030;
}
#root .m6pn .m6pn-close:hover { text-decoration: underline; }

/* 5. "In stoc" lines: the theme paints these with the yellow accent via
      `.overlay-valid`. Green states availability without relying on the
      brand colour, and matches the collection card's own stock line.
      5.04:1 on white — AA for this size. */
#root .m6pn .stock.overlay-valid,
#root .m6pn .stock.overlay-valid .icon-check,
#root .m6pn .detailed-stock.overlay-valid {
    color: #2f7d4f;
}

/* 6. The yellow FILLS stay yellow — they are the buttons, and the brand
      belongs on them. Only the boundary is added, same fix and same
      reasoning as the collection card's Add-to-cart: a #ffc500 fill on
      white is 1.59:1 as a SHAPE, below the 3:1 WCAG asks of a control's
      edge. The label on the fill is already ~10:1 and is left alone. */
#root .m6pn .overlay-tertiary:before,
#root .m6pn button.overlay-tertiary:before,
#root .m6pn .link-btn a:before {
    border: 1px solid #b98d00;
}

/* 7. Panel chrome that was tuned for a dark surface. */
#root .m6pn .m6pn-close-btn,
#root .m6pn > a.close,
#root .m6pn .close { color: #303030; }

#root .m6pn hr,
#root .m6pn .l4ca li,
#root .m6pn footer {
    border-color: rgba(48, 48, 48, 0.12);
}

/* 8. Quantity stepper and inputs: white-on-white boxes otherwise. */
#root .m6pn input,
#root .m6pn select,
#root .m6pn .input-amount input {
    color: #303030;
    background: #fff;
    border-color: rgba(48, 48, 48, 0.2);
}

/* 9. The PRP line inside the drawer inherits the global rule above
      (black, 0.62) — no drawer-specific colour, so it cannot drift out of
      sync with the rest of the site. */

/* 10. Two dark leftovers found only by probing the OPEN drawer — both are
       absolutely-positioned ::before layers, siblings in paint order, so no
       ancestor-background override could reach them:
       - the sticky checkout bar: `form.sticky-in-panel::before` paints a
         #303030 slab (166px tall) behind the "Vezi cosul" button — the dark
         band that survived the first pass;
       - the item thumbnails: `figure.img-multiply::before` paints #303030
         behind every 52px product image (the theme's multiply trick expects
         a dark panel). On white they read as black squares. */
#root .m6pn form.sticky-in-panel:before,
#root .m6pn .sticky-in-panel:before {
    background: #fff;
    box-shadow: 0 -8px 24px rgba(48, 48, 48, 0.08);
}
#root .m6pn figure.img-multiply:before,
#root .m6pn .img-multiply:before {
    background: #f6f6f5;
}

/* 11. Butonul de newsletter din footer: TEXT ALB PE GALBEN = 1.59:1 (runda 7).
       Găsit măsurând toate butoanele galbene de pe pagină, nu citind CSS-ul:
       cele 40 de butoane „Adauga in cos" sunt corecte (negru pe galben,
       10.42:1), dar butonul „Aboneaza-te" din formularul de newsletter e
       singurul care iese alb — moștenește `--secondary_btn_text: #ffffff`
       din regula generică `button, input[type=submit], .link-btn a` din
       screen.css, în timp ce fundalul galben e pictat de ::before.

       Fix la nivel de temă, nu doar pe acest buton: ORICE buton din footer
       primește cerneala închisă. Tema are deja tokenul potrivit —
       `--tertiary_text: #000000` — deci nu inventăm o culoare nouă.
       Regula galbenului (vezi docs/design-standards.md §3): galbenul e
       suprafață, nu cerneală; textul de deasupra lui e întotdeauna închis. */
#root .shopify-section-footer button,
#root .shopify-section-footer input[type="submit"],
#root .contact-form button,
#root .contact-form input[type="submit"] {
    color: var(--tertiary_text, #000);
}

/* ------------------------------------------------------------------
   Transparent homepage header (Tudor, 2026-07-30) — approach ported
   from TUDOR-TEST am-draft-fixes.css (2026-07-25/26 rounds, which found
   and fixed four real bugs the first-principles version below reproduced
   blind: (1) a persistent grey border line from a SEPARATE nav-border
   variable the transparent-background override didn't touch; (2)+(3) TWO
   independent 16px centering offsets — the header's own scrollbar-gutter
   bleed, and a right-only 32px border screen.css puts on every
   #header-inner child, #logo included; (4) hiding `.logo-img` alone
   leaves its `<picture>` wrapper in flow at a hard 140px
   (`#logo picture { width: var(--logo_w) !important }`), which silently
   half-empties the centered box and makes every centering fix "measure
   correct" while still rendering off-center.

   Net effect of those bugs: my first attempt at this (opacity-crossfade
   between two <img> siblings) rendered the header non-transparent (it
   never left `position:static`, so it sat ABOVE the hero instead of
   floating over it — confirmed live: #header-outer y:0-115, hero
   y:115-815, no overlap) and, even fixed, would have hit the same
   centering traps. Using the proven technique instead: absolutely
   positioned header, `#logo a:after` background-image for the white
   mark (not a second <img>, which avoids bug 4 entirely since there's
   no wrapper to hide), swapped for the regular <picture>/<img> on hover.

   Adapted from the original: the white-logo URL is NOT hardcoded here —
   it comes from a CSS custom property set inline from the `logo_white`
   theme setting (header.liquid), so this stays swappable in the theme
   editor like every other logo setting instead of pinned to one file.

   Scoped to `body.template-index` (Shopify's standard homepage body
   class, emitted by layout/theme.liquid's
   `template-{{ template.name | handle }}`) and gated to desktop
   (min-width: 1001px) for the absolute/centered treatment — mobile gets
   its own simpler in-flow version below, matching the source's fix for
   the mobile-clipping bug that the desktop-authored absolute box caused
   there. */
/* `:not(.fixed)` is load-bearing: the theme's own scroll-triggered sticky
   behavior is `.shopify-section-header.fixed { position: fixed }`
   (screen.css:841) — an unscoped `position: absolute` here beat that rule
   (both are 2-class specificity; this file loads later) and the header
   scrolled away with the page instead of sticking, confirmed live
   (rect.top went to -800px on scroll instead of staying pinned at 0). */
/* 2026-08-05: `#root` adăugat în selector. Runda 4 mobilă (am-nav-drawer.css:523)
   a introdus `#root .shopify-section-header { position: relative }` pentru
   centrarea logoului — specificitate (1,1,0), care bătea selectorul de aici
   (0,3,1) și scotea headerul din absolute PE HOMEPAGE: headerul cădea în flux,
   pe fundal alb, cu textul și logoul forțate albe de regulile de mai jos =
   header complet invizibil (regresie văzută live 2026-08-05). Cu `#root`,
   specificitatea devine (1,3,1) și overlay-ul câștigă iar; regula de centrare
   rămâne neatinsă pe restul paginilor. */
body.template-index #root .shopify-section-header:not(.fixed) {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100;
    transition: background-color 0.2s ease;
}
body.template-index .shopify-section-header:before {
    background: transparent !important;
    border-bottom: 0 !important;
    transition: background-color 0.2s ease;
}
body.template-index .shopify-section-header:hover:before,
body.template-index .shopify-section-header.fixed:before {
    background: #ffc500 !important;
}
body.template-index .shopify-section-header,
body.template-index .shopify-section-header a,
body.template-index .shopify-section-header .cart {
    --custom_top_main_fg: #ffffff;
    --custom_top_main_link_text: #ffffff;
    color: #ffffff;
}
body.template-index .shopify-section-header:hover,
body.template-index .shopify-section-header:hover a,
body.template-index .shopify-section-header:hover .cart,
body.template-index .shopify-section-header.fixed,
body.template-index .shopify-section-header.fixed a,
body.template-index .shopify-section-header.fixed .cart {
    --custom_top_main_fg: #141414;
    --custom_top_main_link_text: #141414;
    color: #141414;
}
/* push page content up under the now-absolutely-positioned header */
body.template-index #MainContent {
    margin-top: 0;
}

/* KNOWN RISK, not yet resolved (2026-07-30) — needs a real-browser check,
   not just this preview: assets/custom-async.js's sticky-header mechanism
   (`io()` IntersectionObserver + `distance-spacer` insertion, ~line 3610)
   assumes the header starts in normal document flow and only becomes
   `.fixed` after scrolling past a threshold; it sizes the spacer from
   `le.clientHeight` at that moment. Making the header `position: absolute`
   at rest here (matching TUDOR-TEST's approach, so this may be a
   pre-existing gap there too) takes it out of flow before that JS ever
   runs, and automated scroll testing in this session could not reliably
   confirm `.fixed` still gets applied afterward (headless `scrollTo` may
   simply race the async IntersectionObserver rather than indicate a real
   break — inconclusive either way). The resting transparent/centered/
   white-logo state is verified working; scroll-to-yellow-sticky on the
   homepage specifically needs a manual check in an actual browser before
   calling this done. */

/* ⚠️ 2026-07-30 — WHITE LOGO URL, HARDCODED. Tudor: "pe homepage la invisible
   header nu mai am logo, unde e logo ul alb?".

   Measured live on the homepage: `--am-logo-white-url` computed to an EMPTY
   string (not `url("")` — the declaration was never emitted at all), so
   `#logo a::after` had background-image: none, i.e. an empty 170×44 box. And
   because the transparent state deliberately hides the real logo
   (`#logo picture { display: none }` below), the header rendered with NO
   logo at all rather than the wrong-coloured one.

   Ruled out by checking, not by assuming: the file exists and is READY
   (audio_monkey_logo_white.png, 800×269, HTTP 200 on the CDN); the value IS
   on the theme (header-group.json:48, read back from REMOTE); the setting IS
   in the schema (header.liquid local/remote md5 identical); the Liquid at
   header.liquid:237-251 is correct; and `shopify://shop_images/` resolves
   fine for the `logo` setting right next to it.

   What's left is Shopify's own behaviour: an `image_picker` value written by
   `theme push` never binds to the MediaImage object, so Liquid sees it as
   blank and the `{%- if section.settings.logo_white -%}` guard fails
   silently. `logo` works because it was picked through the theme editor
   long ago; `logo_white` is a setting we added and only ever pushed.

   Tudor's explicit choice (AskUserQuestion, 2026-07-30) was to hardcode the
   CDN URL so it works with no manual editor step. The var() fallback keeps
   the door open: if anyone ever DOES pick a white logo in the editor,
   header.liquid's emitted --am-logo-white-url wins over this default. */
body.template-index #logo {
    --am-logo-white-url: url("/cdn/shop/files/audio_monkey_logo_white.png?v=1784849808");
}

@media only screen and (min-width: 1001px) {
    body.template-index #header-inner {
        position: relative;
    }
    body.template-index #logo {
        --am-logo-w: 170px;
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(calc(-50% - 16px), -50%);
        width: auto !important;
        max-width: none !important;
        margin: 0;
        border-right-width: 0 !important;
        z-index: 2;
        justify-content: center;
    }
    body.template-index #logo a {
        width: auto !important;
        justify-content: center;
    }
    /* white logo (default, transparent state) — the theme forces
       `#logo img, #logo picture { width: var(--logo_w) !important }`,
       so both the <img> AND its <picture> wrapper must be hidden, or the
       wrapper stays in flow and half-empties the centered flex box. */
    body.template-index #logo picture {
        display: none !important;
    }
    body.template-index #logo a:after {
        content: "";
        display: block;
        width: var(--am-logo-w);
        height: 44px;
        background: var(--am-logo-white-url) no-repeat center / contain;
    }
    /* regular logo (hover / scrolled state) — same box as the white one. */
    body.template-index .shopify-section-header:hover #logo picture,
    body.template-index .shopify-section-header.fixed #logo picture {
        display: block !important;
        width: var(--am-logo-w) !important;
    }
    body.template-index .shopify-section-header:hover #logo .logo-img,
    body.template-index .shopify-section-header.fixed #logo .logo-img {
        display: block !important;
        width: var(--am-logo-w) !important;
        height: 44px !important;
        object-fit: contain;
        object-position: center;
    }
    body.template-index .shopify-section-header:hover #logo a:after,
    body.template-index .shopify-section-header.fixed #logo a:after {
        display: none;
    }
}

/* Homepage logo below 1001px: no absolute positioning, no fixed 44px
   box — the white mark sits IN FLOW in the same flex slot the <picture>
   occupied, sized by the theme's own --logo_w. Scrolled (.fixed, yellow
   bar) reverts to the native logo — white-on-yellow would be unreadable. */
@media only screen and (max-width: 1000px) {
    body.template-index .shopify-section-header:not(.fixed) #logo picture,
    body.template-index .shopify-section-header:not(.fixed) #logo .logo-img {
        display: none !important;
    }
    body.template-index .shopify-section-header:not(.fixed) #logo a:after {
        content: "";
        display: block;
        width: var(--logo_w, 140px);
        aspect-ratio: 900 / 303;
        background: var(--am-logo-white-url) no-repeat center / contain;
    }
}

/* ------------------------------------------------------------------
   Homepage hero: fullscreen (ported from TUDOR-TEST am-draft-fixes.css,
   2026-07-30). Depends on the transparent-header block above: plain
   100vh (not the theme's own --header_height_static subtraction used
   for solid-header pages) works only because the homepage header is
   `position: absolute` and floats over the hero instead of pushing it
   down — there's no real header height to subtract. Scoped to this
   section's own id (templates/index.json) rather than a generic
   `.m6fr` class so it can't leak onto other slideshow instances on
   other templates. The announcement bar must stay disabled
   (header-group.json `announcement.disabled: true`, already the case
   here) — TUDOR-TEST's own history notes a prior break came from the
   announcement marquee changing header-stack height AFTER Swiper had
   already measured slide widths at init, not from setting hero height
   itself; both preconditions (marquee disabled, absolute header) hold
   in this draft too. */
[id*="6d11a565-b845-4c8c-81e5-279e84af7970"] .m6fr article {
    --mih: 100vh !important;
}
@media only screen and (max-width: 760px) {
    [id*="6d11a565-b845-4c8c-81e5-279e84af7970"] .m6fr article {
        --mih: 100svh !important;
    }
}

/* ------------------------------------------------------------------
   Custom chat launcher (ported from TUDOR-TEST am-draft-fixes.css,
   2026-07-30) — see am-collection-premium.js for the JS half and the
   full rationale (skin over Shopify Inbox's <shopify-chat>).
   ------------------------------------------------------------------ */
#am-chat-launcher {
    position: fixed;
    right: max(16px, env(safe-area-inset-right, 0px));
    bottom: max(16px, env(safe-area-inset-bottom, 0px));
    z-index: 2147482999;
    display: flex;
    align-items: center;
    gap: 10px;
}
#am-chat-launcher .am-chat-monkey-wrap { position: relative; }
#am-chat-launcher .am-chat-monkey {
    display: block;
    width: 64px;
    /* the theme's global button rule sets min-width: min(100%, 120px),
       which inflates this to a 120px oval without this override. */
    min-width: 0;
    height: 64px;
    padding: 8px;
    border: 0;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
    cursor: pointer;
    transition: transform 0.2s ease;
}
#am-chat-launcher .am-chat-monkey:hover { transform: scale(1.06); }
/* RUNDA 17 (2026-07-30) — Tudor: „on mobile have the chat monkey have
   yellow circle around it, not white (this is only for the mobile
   version)". Explicit doar-mobil, deci scopat la 760px (breakpoint-ul
   folosit deja în restul acestui fișier, linia 627), fără să ating
   fundalul alb de pe desktop. */
@media only screen and (max-width: 760px) {
    #am-chat-launcher .am-chat-monkey {
        background: #ffc500;
    }
}
/* small X on the monkey's top-right corner; hides the whole launcher */
#am-chat-launcher .am-chat-close {
    position: absolute;
    top: -5px;
    right: -5px;
    z-index: 1;
    width: 18px;
    min-width: 0;             /* global button min-width trap */
    height: 18px !important;  /* global button height trap */
    min-height: 0;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: #141414;
    color: #fff;
    font-size: 11px;
    line-height: 18px;
    text-align: center;
    cursor: pointer;
}
#am-chat-launcher .am-chat-monkey img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    /* screen.css:1916 `button img { margin-left: 2px; }` is a global theme
       rule that otherwise skews this image right — reset it first. */
    margin-left: 0;
    /* the artwork itself isn't centered on its canvas — measured bbox on
       the 256x256 PNG is left/right-balanced (19px/18px) but sits ~4% of
       canvas height high (content center y=118 vs canvas center y=128).
       Nudge down to visually center it on the white circle rather than
       re-exporting the asset. */
    transform: translateY(4%);
}
#am-chat-launcher .am-chat-bubble {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 2px;
    max-width: 230px;
    margin-bottom: 10px;
    padding: 10px 14px;
    border-radius: 16px;
    background: #fff;
    color: #141414;
    font-size: 14px;
    line-height: 1.35;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.15);
    cursor: pointer;
}
#am-chat-launcher .am-chat-bubble__title {
    display: flex;
    align-items: center;
    gap: 6px;
    font-weight: 600;
}
#am-chat-launcher .am-chat-bubble__sub {
    color: #5c5c5c;
    font-size: 12.5px;
}
#am-chat-launcher .am-chat-live-dot {
    position: relative;
    display: inline-block;
    flex: none;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #2ecc71;
}
#am-chat-launcher .am-chat-live-dot:before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: #2ecc71;
    animation: am-chat-live-pulse 1.8s ease-out infinite;
}
/* outside program hours: static grey dot, no pulse — "revine în program" */
#am-chat-launcher .am-chat-live-dot--offline {
    background: #b3b3b3;
}
#am-chat-launcher .am-chat-live-dot--offline:before {
    display: none;
}
@keyframes am-chat-live-pulse {
    0% { transform: scale(1); opacity: 0.6; }
    100% { transform: scale(2.6); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
    #am-chat-launcher .am-chat-live-dot:before { animation: none; }
}
/* bubble tail pointing at the monkey — the launcher row is vertically
   centered (align-items: center), so the tail sits at the bubble's
   vertical center to line up with the monkey circle's center rather
   than its bottom edge. */
#am-chat-launcher .am-chat-bubble:after {
    content: "";
    position: absolute;
    right: -6px;
    top: 50%;
    margin-top: -6px;
    width: 12px;
    height: 12px;
    background: #fff;
    transform: rotate(45deg);
    box-shadow: 3px 3px 6px rgba(0, 0, 0, 0.06);
}
#am-chat-launcher .am-chat-bubble[hidden] { display: none; }
#am-chat-launcher .am-chat-monkey:focus-visible,
#am-chat-launcher .am-chat-close:focus-visible {
    outline: 2px solid #141414;
    outline-offset: 2px;
}
/* the bubble eats too much width on a phone — the monkey alone is the
   mobile entry point */
@media only screen and (max-width: 760px) {
    #am-chat-launcher .am-chat-bubble { display: none !important; }
}
@media (prefers-reduced-motion: reduce) {
    #am-chat-launcher .am-chat-monkey { transition: none; }
    #am-chat-launcher .am-chat-monkey:hover { transform: none; }
}

/* ------------------------------------------------------------------
   Newsletter: eyebrow, benefits list, split layout (ported from
   TUDOR-TEST am-draft-fixes.css, 2026-07-30). Structure only — button
   colors are governed by the footer-button contrast fix earlier in this
   file (`#root .shopify-section-footer button { color: var(--tertiary_text) }`,
   2026-07-29), which is untouched and keeps applying here since it's
   scoped to the footer section, not to any .f8nw layout variant.
   ------------------------------------------------------------------ */
.f8nw .am-nl-benefits {
    list-style: none;
    width: 100%;
    max-width: 460px;
    margin: 4px auto 22px;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 11px;
    text-align: left;
}
.f8nw .am-nl-benefits li {
    display: flex;
    align-items: flex-start;
    gap: 11px;
    margin: 0;
    padding: 0;
    font-size: 15px;
    line-height: 1.45;
}
.f8nw .am-nl-benefits li + li { margin-top: 0; }
.f8nw .am-nl-benefits .am-nl-tick {
    flex: 0 0 auto;
    margin-top: 1px;
    color: var(--accent, #ffc500);
}
/* Accent palette paints #ffc500 and sets text to white — 1.59:1, far under
   the 4.5:1 floor, and an amber tick on amber is invisible. Scoped to this
   list only; the section's own palette is left alone. */
.f8nw.palette-accent .am-nl-benefits,
.f8nw.palette-light_gradient .am-nl-benefits {
    color: #303030;
}
.f8nw.palette-accent .am-nl-benefits .am-nl-tick,
.f8nw.palette-light_gradient .am-nl-benefits .am-nl-tick {
    color: currentColor;
}
@media only screen and (max-width: 47.5em) {
    .f8nw .am-nl-benefits {
        max-width: 340px;
        gap: 10px;
        margin-bottom: 18px;
    }
    .f8nw .am-nl-benefits li { font-size: 14.5px; }
}

/* ---------------------------------------------------------------
   B&O-style split newsletter (.am-nl-split, opt-in per section)

   The vendor .f8nw is a centred single-column band: text-align:center
   on the header, fixed-width inputs, and the image treated as a
   full-bleed BACKGROUND behind the text. This promotes the same markup
   to a two-column grid: the existing <figure class="background">
   becomes the left cell instead of an absolute backdrop, and <fieldset>
   becomes the right cell. Nothing is restructured in Liquid, so the
   centred layout is untouched when the toggle is off.
   --------------------------------------------------------------- */
.f8nw.am-nl-split {
    display: block !important;
    padding: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
}
.f8nw.am-nl-split > fieldset > figure.background {
    position: relative !important;
    left: auto !important;
    right: auto !important;
    top: auto !important;
    bottom: auto !important;
    z-index: 1 !important;
    grid-column: 1 !important;
    grid-row: 1 / 7 !important;
    align-self: stretch !important;
    justify-self: stretch !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 560px;
    margin: 0 !important;
}
.f8nw.am-nl-split > fieldset > figure.background picture,
.f8nw.am-nl-split > fieldset > figure.background img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover;
    object-position: center;
}
.f8nw.am-nl-split > fieldset {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr auto auto auto auto 1fr;
    align-items: start;
    gap: 0;
    width: 100%;
    margin: 0 !important;
    padding: 0 !important;
    border: 0;
}
.f8nw.am-nl-split > fieldset > header          { grid-row: 2 !important; }
.f8nw.am-nl-split > fieldset > .am-nl-benefits { grid-row: 3 !important; }
.f8nw.am-nl-split > fieldset > div             { grid-row: 4 !important; }
.f8nw.am-nl-split > fieldset > p.submit        { grid-row: 5 !important; }
.f8nw.am-nl-split > fieldset > header,
.f8nw.am-nl-split > fieldset > .am-nl-benefits,
.f8nw.am-nl-split > fieldset > div,
.f8nw.am-nl-split > fieldset > p.submit {
    grid-column: 2 !important;
    justify-self: start;
    width: auto;
    max-width: 470px;
    margin-left: clamp(24px, 5vw, 76px) !important;
    margin-right: clamp(24px, 4vw, 56px) !important;
    text-align: left;
}
.f8nw.am-nl-split > fieldset > legend {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: -1px !important;
    padding: 0 !important;
    overflow: hidden !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
}
.f8nw.am-nl-split > fieldset > header {
    margin-bottom: 26px;
    text-align: left;
}
.f8nw.am-nl-split > fieldset > header p { text-align: left; }
.f8nw.am-nl-split:before,
.f8nw.am-nl-split.wide:before {
    display: none !important;
}
.f8nw.am-nl-split {
    color: #141414;
}
.f8nw.am-nl-split .am-nl-benefits {
    max-width: 470px;
    margin-top: 0;
    margin-bottom: 30px;
}
.f8nw .am-nl-eyebrow {
    margin: 0 0 14px;
    font-size: 13px;
    font-weight: 400;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    opacity: .75;
}
.f8nw.am-nl-split input[type="email"],
.f8nw.am-nl-split .check,
.f8nw.am-nl-split .invalid-feedback {
    width: 100% !important;
    max-width: 470px;
}
.f8nw.am-nl-split input[type="email"] {
    border-width: 0 0 1px 0;
    border-radius: 0;
    background: none;
    padding-left: 0;
    padding-right: 0;
}
.f8nw.am-nl-split p.submit { margin-top: 6px; }
.f8nw.am-nl-split p.submit button {
    display: inline-flex;
    align-items: center;
    width: auto;
    min-width: 178px;
    justify-content: center;
}

@media only screen and (max-width: 60em) {
    .f8nw.am-nl-split > fieldset {
        grid-template-columns: 1fr;
        grid-template-rows: auto auto auto auto auto;
    }
    .f8nw.am-nl-split > fieldset > figure.background {
        grid-column: 1 !important;
        grid-row: 1 !important;
        min-height: 300px;
        max-height: 46vh;
        height: auto !important;
    }
    .f8nw.am-nl-split > fieldset > header,
    .f8nw.am-nl-split > fieldset > .am-nl-benefits,
    .f8nw.am-nl-split > fieldset > div,
    .f8nw.am-nl-split > fieldset > p.submit {
        grid-column: 1 !important;
        justify-self: stretch;
        max-width: none;
        margin-left: var(--rpp, 16px) !important;
        margin-right: var(--rpp, 16px) !important;
    }
    .f8nw.am-nl-split > fieldset > header          { grid-row: 2 !important; margin-top: 30px; }
    .f8nw.am-nl-split > fieldset > .am-nl-benefits { grid-row: 3 !important; }
    .f8nw.am-nl-split > fieldset > div             { grid-row: 4 !important; }
    .f8nw.am-nl-split > fieldset > p.submit        { grid-row: 5 !important; margin-bottom: 34px; }
}

/* Predictive-search results dropdown was rendering black (Tudor,
   2026-07-30) — same root cause and same fix pattern as the cart drawer
   fix in async-panels.css: `#search > div` (async-search.css) paints its
   background/text from --custom_drop_nav_head_bg/--custom_drop_nav_fg,
   the same pair the header's dropdown-nav color scheme feeds (currently
   black, per settings.dropdown_color). Reset locally to a plain white
   panel with dark text rather than touching those shared variables,
   which the real nav dropdown still needs to stay dark. */
#search > div, #search fieldset > div {
    background: #ffffff;
    color: #141414;
}

/* ------------------------------------------------------------------
   Header order (Tudor, 2026-07-30): hamburger on the far left.
   #header-inner is a flex row with .link-btn (the hamburger's <p>
   wrapper — after the JS move below, its ONLY child) as a direct flex
   item; am-nav-drawer.css sets it to order:1 for the ported
   mobile-drawer trigger, which (same file, same specificity as
   below) otherwise beats a same-specificity rule here on source
   order — override with the identical selector shape it uses
   (#root #header-inner.hide-btn > .link-btn) so this still applies.

   The search icon (a.search-compact) used to be the second child of
   this same .link-btn — `order` on the wrapper alone can't send its
   two children to different places, and `display: contents` on the
   wrapper (tried first, to let both <a>s order independently) was
   confirmed NOT to work live in this stack: computed `order` read
   back correctly but the box still rendered at its original spot,
   reproducible across reloads. Moved the actual DOM node instead —
   see am-collection-premium.js, "Move search icon next to account
   icon" — which is also why plain `order` on .link-btn is safe now:
   the wrapper only has one child left. */
@media only screen and (min-width: 1001px) {
    #root #header-inner.hide-btn > .link-btn {
        order: -10;
    }
}

/* am-collection-premium.js ("Move search icon next to account icon")
   wraps the moved search <a> in a fresh <li class="search"> and
   inserts it into #nav-user > ul. The vendor has a blanket, unscoped
   rule that hides exactly this shape — screen.css:552
   "#header-inner #search.compact-handle ~ nav li.search { display:
   none }" — written for a DIFFERENT, mobile-only li.search this theme
   also happens to render (a dead one, confirmed empty of content on
   this store). That rule matches ours too since it's not scoped to
   any particular li.search, and it caused the icon to render with
   width/height 0 (`display: none`), i.e. silently vanish — caught
   only by an actual screenshot, not by measuring computed `order` or
   bounding-rect numbers on a rule that never fires. Un-hide ours
   specifically, at higher specificity, rather than touching the
   vendor rule (which still needs to hide whatever it was originally
   for). */
#root #header-inner #nav-user > ul > li.search {
    display: flex;
    align-items: center;
}
/* Same fix, extended to the account + cart <li>s (Tudor, 2026-07-30 —
   reported the icons still misaligned everywhere after the search-icon
   li got this treatment). The vendor only centers <li> boxes as flex
   ITEMS of #nav-user > ul (screen.css ~3514, align-items: center on the
   <ul>) — that does nothing for the <a>/<i> INSIDE each <li>, which
   falls back to icon-font-era metrics (min-height/line-height: 44px on
   the <a>, screen.css:720) instead of centering the new inline-flex
   icon boxes. li.search got its own `display:flex; align-items:center`
   above; li.cart/li.sub/li.user-login did not — that gap is the whole
   bug, confirmed via a read-only Explore pass before this edit. */
#root #header-inner #nav-user > ul > li.cart,
#root #header-inner #nav-user > ul > li.sub,
#root #header-inner #nav-user > ul > li.user-login {
    display: flex;
    align-items: center;
}

/* ------------------------------------------------------------------
   Modern SVG icons for account + cart (Tudor, 2026-07-30), replacing
   the vendor icon-font glyphs on the two header triggers only (their
   dropdown/submenu glyphs — orders, logout, etc. — are untouched).
   mask-image (not background-image) so the icon inherits
   --custom_top_main_fg / hover-state color changes automatically,
   same as the glyph it replaces, instead of needing a second white
   variant like the logo did.
   ------------------------------------------------------------------ */
.am-icon-user, .am-icon-cart, .am-icon-search {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    /* explicit box, NOT left to the icon-font's line-height metrics —
       this <i> has no text content of its own (the glyph is suppressed
       below and replaced by the :before mask), so with no intrinsic
       size it computed to 0x0 in some header layouts (confirmed live:
       0x0 on both the homepage's transparent header AND a plain
       collection page — the collection page only happened to still
       look aligned because its surrounding line-height/vertical-align
       coincidentally centered a zero-size box in the same spot; the
       homepage's different header layout did not). Fixed size removes
       the coincidence. */
    width: 21px;
    height: 21px;
}
.am-icon-user:before, .am-icon-cart:before, .am-icon-search:before {
    content: "";
    display: block;
    width: 21px;
    height: 21px;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
}
/* the vendor glyph (font content, ::before on the same element) still
   paints underneath — suppress it rather than removing the class, so
   nothing else keyed off .icon-user/.icon-cart-*/.icon-zoom (submenu
   icons, selector specificity elsewhere) is disturbed. ::before is
   redefined above for the mask; the original glyph used the same
   pseudo-element, so setting content:"" already replaced it — this is
   belt-and-braces for icon-font rules that use ::after instead. */
.am-icon-user:after, .am-icon-cart:after, .am-icon-search:after { content: none; }

.am-icon-user:before {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21c0-3.87-3.58-7-8-7s-8 3.13-8 7'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21c0-3.87-3.58-7-8-7s-8 3.13-8 7'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
}
.am-icon-cart:before {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4h2l2.4 12.2a2 2 0 0 0 2 1.8h7.2a2 2 0 0 0 2-1.6L20 8H6'/%3E%3Ccircle cx='9' cy='20' r='1.4'/%3E%3Ccircle cx='17' cy='20' r='1.4'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4h2l2.4 12.2a2 2 0 0 0 2 1.8h7.2a2 2 0 0 0 2-1.6L20 8H6'/%3E%3Ccircle cx='9' cy='20' r='1.4'/%3E%3Ccircle cx='17' cy='20' r='1.4'/%3E%3C/svg%3E");
}
.am-icon-search:before {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
}
/* screen.css:550 (`#header-inner > .link-btn .search-compact i { display:
   block; font-size:...; line-height: 45px }`) is a generic icon-font rule
   with higher specificity than the plain `.am-icon-search` selector above
   — without matching/beating it here, the lupă's `display` reverts to
   `block` and the inline-flex centering (shared block above, same as
   account/cart) never applies, leaving it back on icon-font baseline
   metrics instead of the identical 21x21 box the other two triggers use. */
#header-inner > .link-btn .search-compact .am-icon-search {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 21px;
    height: 21px;
    font-size: 0;
    line-height: normal;
}
/* Bulina cu numărul de produse din coş dispare de tot (Tudor, 2026-08-05:
   „vreau sa scoti marcajul care sugereaza cate produse sunt in cart si de pe
   mobile si de pe desktop"). Pe 2026-08-05 dimineaţa fusese stinsă doar când
   coşul era gol; acum e stinsă necondiţionat.

   Se STINGE, nu se şterge din markup, şi asta nu e lene: `custom-async.js:5424`
   face `countElement.innerHTML = count` FĂRĂ gardă de null, iar funcţia e
   apelată necondiţionat din `handleCartPanel()` (`:5296`), care rulează la
   fiecare adăugare în coş şi e urmată imediat de `showCartPanel()` (`:5297`).
   Fără element, aruncă TypeError şi sertarul de coş nu s-ar mai deschide.
   Elementul rămâne deci în pagină, invizibil, ca ţintă pentru scriptul temei.

   `#root` e obligatoriu: `screen.css:3452` re-afirmă `display: block` pe
   `#root #nav-user > ul > li > a i span` printr-un selector cu ID — o regulă
   fără ID ar pierde. Nu există media query nicăieri pe lanţul ăsta, deci o
   singură regulă acoperă şi mobilul, şi desktopul. */
#root #nav-user > ul > li > a i #cart-count {
    display: none;
}

/* Maximum două recomandări în „Te-ar mai putea interesa" (Tudor, 2026-08-05).
   `data-limit="2"` din side-cart.liquid reduce ce se CERE, dar nu e suficient:
   `custom-async.js:6500` forţează `limit = 4` pentru intentul `related`, iar
   rezultatele celor două intenturi se concatenează. Plafonul vizual se pune
   aici, unde e garantat, fără să atingem fişierul vendor de 273 KB. */
#root .cart-upsell .l4ca > li:nth-child(n+3) {
    display: none;
}

/* ------------------------------------------------------------------
   Drawer (#nav) cleanup (Tudor, 2026-07-30): white background, text
   that no longer flips with the homepage transparent-header state,
   drop the accessibility text-size toggle, and a plain-red (no pill)
   PROMOȚII label. All four scoped strictly to #nav — none of these
   touch --custom_drop_nav_head_bg / settings.show_accessibility /
   sale_highlight_item globally, since those are shared with other
   components (filters, search dropdown, cart panel) not in scope here.
   ------------------------------------------------------------------ */

/* am-nav-drawer.css loads right after this file and repeats the exact
   selector `#root .shopify-section-header #nav { background: ... }`
   for the ported drawer (line ~92) — same specificity, later source
   order, so it wins without !important. Same story for
   `li.has-link-accessible > a { display: block }` (line ~240), just
   with an even MORE specific selector than a plain
   `#nav .link-accessible` would ever reach. !important is the
   established pattern in this file for beating that stylesheet
   without hand-editing it (see "Header order" section above). */

/* 1. White drawer background — same "reset the local usage, not the
   shared variable" pattern already used for the cart panel
   (assets/async-panels.css, .m6pn .l4ca { --body_bg: var(--white) }).
   Also covers the contact block (phone/email/WhatsApp <li>s,
   ".l4cn li") — both screen.css's async-menu.css and am-nav-drawer.css
   paint EACH of those <li> individually with the same
   --custom_drop_nav_head_bg variable (not just #nav's own background),
   so without this second selector they'd keep their own dark-grey
   boxes even after #nav itself turned white (caught live: computed
   rgb(61,61,61) on the <li>, confirmed via matching stylesheet rules,
   not guessed). */
#root .shopify-section-header #nav,
#root .shopify-section-header #nav .l4cn li {
    background: var(--white, #ffffff) !important;
}

/* 2. Drawer text must not follow the homepage transparent-header
   color flip (am-product-title.css, "Transparent homepage header" —
   sets --custom_top_main_fg to white/black depending on .fixed/:hover,
   scoped to .shopify-section-header, of which #nav is a descendant).
   The drawer has its own opaque background regardless of header
   state, so re-pin its color unconditionally. */
#root .shopify-section-header #nav {
    --custom_top_main_fg: #141414;
    --custom_top_main_link_text: #141414;
}
/* `#nav a` alone missed non-link text nodes that inherit the same
   flipped color — confirmed live: `span.main-parent` (the PRODUSE
   category labels with children, e.g. "Căști") computed white-on-white,
   invisible, even though the <ul> itself was correctly positioned and
   visible. `#nav *` covers every descendant regardless of tag —
   `:not(.overlay-sale)` so it doesn't outrank the PROMOȚII red-text
   rule further down (higher specificity here — 2 IDs vs that rule's
   1 ID + 2 classes — would otherwise always win regardless of source
   order, turning PROMOȚII black; confirmed live before adding the
   exclusion). */
#root .shopify-section-header #nav,
#root .shopify-section-header #nav *:not(.overlay-sale) {
    color: #141414 !important;
}

/* 3. Remove the accessibility/text-size ("Tt") toggle from the drawer
   only — settings.show_accessibility itself stays on (it may be used
   elsewhere; not verified in scope here). Target the same <li> the
   vendor keys off (li.has-link-accessible), not just the inner <a>,
   so nothing reserves layout space for a hidden link. */
#root .shopify-section-header #nav li.has-link-accessible,
#nav .link-accessible {
    display: none !important;
}

/* 4. PROMOȚII: keep the vendor sale_highlight_item mechanism (it's
   already correctly targeting the right menu item at any level), just
   suppress the pill background it paints via .s1bx:before and force
   plain red text instead. */
#nav .s1bx.overlay-sale:before {
    display: none !important;
}
#nav .s1bx.overlay-sale {
    background: none !important;
    color: #e93d3d !important;
}

/* 7. Search/account/cart icons not vertically centered against the logo
   (Tudor, 2026-07-30) — confirmed live: #header-inner's own flex
   align-items:center correctly centers #logo (top:18.5, height:44 on a
   57px-tall header-inner → dead center), but
   `.shopify-section-header #header-inner.text-center-mobile #nav-user`
   (screen.css) pulls #nav-user OUT of that flex flow with
   `position: absolute; top: 0`, pinning it to header-inner's top edge
   instead. Re-center it explicitly rather than fighting the vendor's
   position:absolute (needed for its own layout purposes on other
   pages/breakpoints) with a flex property that won't apply to an
   absolutely-positioned element. */
/* ⚠️ 2026-07-30 — TWO BUGS FIXED HERE, both from the round-10 version of
   this rule (`margin: auto 0`, no media query). Tudor: "vad ca mi ai mutat
   toate icontiele magnify, profile, cart in stanga langa hamburger menu?
   de ce? trebuie sa fie in dreapta".

   Bug 1 — the shorthand. `margin: auto 0` expands to margin-left: 0, which
   overrode the ONLY thing holding #nav-user on the right: the vendor's
   `margin: 0 0 12px auto` (screen.css:709). With no auto left margin it
   collapsed back to its natural flex-item position — right after the
   hamburger, i.e. hard left. (Its `float: right` is inert: #header-inner is
   display:flex, and floats don't apply to flex items.) Measured live before
   the fix: x=75px, margin-left=0px. Now margin-left stays auto explicitly.

   Bug 2 — the scope. This rule exists to counteract screen.css:633, which
   pins #nav-user with `position: absolute; top: 0` — but that vendor rule
   lives inside `@media (max-width: 760px)`, so it only exists on mobile.
   The round-10 rule was written top-level, so on desktop it landed on a
   `position: relative` flex item and did nothing but damage. Now gated to
   the same breakpoint as the rule it answers. */
@media only screen and (max-width: 760px) {
    #root .shopify-section-header #header-inner.text-center-mobile #nav-user {
        top: 0 !important;
        bottom: 0 !important;
        margin: auto 0 auto auto;
    }
}
/* Desktop (>760px): #nav-user is an ordinary flex item, centred by
   #header-inner's own align-items:center. Only ONE thing must be preserved
   from the vendor's `margin: 0 0 12px auto` (screen.css:709): the
   `margin-left: auto` that holds it on the right. The 12px bottom margin is
   what has to MATCH #logo's, or the two stop sharing a centre line — and
   #logo's own bottom margin differs by page type:

     • homepage (≥1001px): #logo is position:absolute (rule further up this
       file), so it is out of flow and its margin is irrelevant; #nav-user
       must then have NO bottom margin to sit dead centre.
     • every other page: #logo is a static flex item WITH the vendor's
       12px bottom margin (measured live on /collections/casti: logo 47px
       tall, top 12 → bottom 59, centre 35.5).

   Measured the wrong way first, worth recording: zeroing the bottom margin
   everywhere fixed the homepage (delta 0) but broke collections — logo
   centre 35.5 vs #nav-user centre 41.5, a 6px offset, because #nav-user
   then stretched the full 59px while the logo kept its 12px margin. So the
   margin is only zeroed where the logo is absolutely positioned, and
   mirrored (12px) everywhere else. */
@media only screen and (min-width: 761px) {
    #root .shopify-section-header #header-inner #nav-user {
        margin-top: 0;
        margin-bottom: 12px;
        margin-left: auto;
        align-self: center;
    }
}
@media only screen and (min-width: 1001px) {
    body.template-index #root .shopify-section-header #header-inner #nav-user {
        margin-bottom: 0;
    }
}
/* #nav-user itself is now correctly centered as a 44px-tall box on the
   57px header-inner (confirmed live: top 18.5, matching #logo exactly).
   The remaining gap: the <a> wrapping each icon (.search-compact,
   #nav-user li.cart > a, li.user-login/sub > a) is `display: block`
   (vendor default), so the round-9 `align-items: center` on their <li>
   ancestors has nothing to act on — flex alignment only affects flex
   ITEMS, and a block-level <a> filling its full 44px height just lets
   the 21px icon sit at its block-start (top), not centered within it.
   Make the <a> itself the flex container. */
#nav-user li.search > a.search-compact,
#nav-user li.cart > a,
#nav-user li.user-login > a,
#nav-user li.sub > a {
    display: flex !important;
    align-items: center;
}

/* 5. Hover/active grey on level-1 items (PRODUSE, PROMOȚII, etc.) —
   assets/async-menu.css: ".m2a ... #nav.ul-hover > ul > li.hover > a"
   paints the same --custom_drop_nav_head_bg ("black") the drawer's own
   background used to be. Same fix pattern as the white-background rule
   above: reset just this state, not the shared variable. */
/* ⚠️ 2026-08-05, RUNDA 4 — `white` a devenit `transparent`. Regula asta a fost
   scrisă când panoul era închis la culoare şi trebuia să anuleze un fundal
   negru. Panoul e acum alb translucid, deci „alb opac" nu mai anulează nimic —
   desenează o bandă mai albă decât panoul, exact ce a reclamat Tudor de două
   ori (2026-08-05: „i se schimba fundalul cu unul mai alb", apoi cererea ca
   starea deschisă să fie marcată DOAR prin greutate). `transparent` anulează
   la fel de bine fundalul vendorului, fără să deseneze nimic. */
#root .shopify-section-header #nav.ul-hover > ul > li.hover > a {
    background: transparent !important;
}

/* 5b. (runda 11) Textul dispare la hover pe itemele de nivel 1 din drawer —
   Tudor: „cand dau hover pe produse de exemplu, cuvantul produse dispare".
   Regula #5 de mai sus vizează mecanismul VECHI de hover desktop
   (.ul-hover/li.hover pe clona ul.inner), care e display:none cât timp
   drawerul (.m2a) e deschis — deci nu acoperă starea curentă de
   click/toggle a drawerului. Fix robust: forțează explicit ȘI culoarea ȘI
   fundalul pe orice stare de hover/toggle a itemelor de nivel 1, indiferent
   de ce altă regulă vendor ar „trebui" să câștige — nu doar culoare, ca să
   nu depindă de o presupunere despre fundal.

   ⚠️ 2026-08-05, RUNDA 4: culoarea rămâne forţată (ea rezolvă „cuvântul
   dispare"), dar fundalul trece pe `transparent`. Acelaşi motiv ca la regula
   #5 de mai sus — pe un panou alb translucid, „alb opac" nu mai anulează un
   fundal închis, ci desenează o bandă. Marcajul stării deschise e acum doar
   greutatea fontului (am-nav-drawer.css, RUNDA 4 § 2). */
#root .shopify-section-header #nav > ul > li:hover > a,
#root .shopify-section-header #nav > ul > li.toggle > a,
#root .shopify-section-header #nav > ul > li.hover > a {
    color: #141414 !important;
    background: transparent !important;
}

/* 6. Drawer header bar height — was a flat 48px (am-nav-drawer.css),
   unrelated to the real site header's rendered height (measured live:
   #header-inner height 59px + 12px top padding ≈ 71px total). Match it
   here so the yellow "Meniu" bar reads as continuous with the site
   header instead of visibly shorter, and push the rest of the drawer's
   content down by the same amount (#nav's own top padding). */
#root .shopify-section-header #nav {
    padding-top: 71px !important;
}
#root .shopify-section-header #nav > .header {
    height: 71px !important;
    line-height: 71px !important;
}

/* 7. Header text ink on the yellow bar (ATP-04, approved by Tudor 2026-08-05).
   The main-bar TEXT links ("Catalog produse", "Cauta", "Sign in",
   "0 Cos de produse") inherited white ink from the accent palette while
   sitting on #ffc500 — 1.59:1, effectively invisible; only the separately
   configured black icons showed. Scoped to NON-homepage pages: on the
   homepage the transparent-at-rest header keeps deliberate white ink over
   the hero (section 4 above), and its yellow hover/.fixed states already
   switch to #141414 via the rules there. Icons are untouched (their own
   settings already say black). */
body:not(.template-index) #root #header a {
    color: #141414;
}

/* ══════════════════════════════════════════════════════════════════════════
   CĂUTAREA — panou ancorat sub lupă, aspect 2026 (Tudor, 2026-08-05)
   ══════════════════════════════════════════════════════════════════════════
   „we have the magnifying glass on the right of the header but when I press it
   the search input bar appears to the left, and also that search input bar is
   very old looking, not like our new modern design".

   CAUZA poziţiei, măsurată: lupa E mutată în `#nav-user` (dreapta) la runtime,
   de `am-collection-premium.js:580-588`, dar `<form id="search">` a rămas în
   markup exact unde îl pune `header.liquid`, imediat după `.link-btn` — adică
   în STÂNGA. Închis, formularul e parcat la `top: -3000em` (`screen.css:578`);
   deschis (`html.search-compact-active`), regula aia încetează să se aplice şi
   formularul cade înapoi în fluxul flex al lui `#header-inner`, la x≈85.
   Deci nu era „poziţionat greşit", ci NEpoziţionat.

   Blocul conţinător pentru poziţionarea absolută e `#header-outer`
   (`screen.css:526`, `position: relative`) — NU `.shopify-section-header`, cum
   presupunea comentariul din am-nav-drawer.css:526. Verificat: `#header-outer`
   e simetric faţă de fereastră (30→1410 la 1440px), în timp ce `#header` se
   întinde 30→1442; de aceea ancorarea la dreapta cade exact sub lupă.
   ══════════════════════════════════════════════════════════════════════════ */
@media only screen and (min-width: 761px) {
    .search-compact-active #root #header-inner #search.compact {
        position: absolute;
        left: auto;
        /* 2026-08-05: era `right: 0`. Bara a primit aer lateral (runda 3,
           am-nav-drawer.css § „aer lateral"), deci grupul de iconiţe s-a mutat
           cu un `--am-header-inset` spre interior — măsurat, coşul se termină
           acum la 62px de margine, nu la 30. Panoul trebuie să-l urmeze, altfel
           marginea lui din dreapta rămâne cu 32px în afara lupei sub care se
           presupune că e ancorat. Aceeaşi variabilă în ambele locuri, ca să nu
           poată diverge. */
        right: var(--am-header-inset, 32px);
        /* Sub bara de header, nu ÎN ea: la `top: 12px` panoul de 420px acoperea
           lupa, contul şi coşul (măsurat: panoul 990→1410, iconiţele 1296→1410),
           deci nu mai puteai închide căutarea de pe aceeaşi iconiţă cu care ai
           deschis-o. Ca dropdown sub header, iconiţele rămân vizibile şi panoul
           se citeşte ca ataşat lupei. Rezultatele Typesense se aşază oricum
           relativ la `#search` (`async-search.css:5`, `top: calc(100% + 16px)`),
           deci cad exact sub el. */
        top: calc(100% + 6px);
        bottom: auto;
        z-index: 60;
        width: min(420px, calc(100vw - 120px));
        max-width: none;
        margin: 0;
        flex-grow: 0;
    }
}
/* Aspectul inputului. Starea de dinainte, măsurată: fundal NEGRU
   (`--custom_top_search_bg: var(--black_bg)` din header.liquid:138), fără
   bordură vizibilă (`--custom_top_search_bd: transparent`, fiindcă paleta
   headerului diferă de cea a căutării), 50px înălţime şi un buton de submit de
   55px care desenează o glifă de icon-font (`\e91d`, screen.css:837).
   Acum: suprafaţă albă pe hairline, aceeaşi cerneală ca restul temei, tipografia
   din tokenul de buton, iar lupa devine SVG prin `mask-image` — exact tiparul
   validat mai sus pentru `.am-icon-user/-cart/-search`. */
#root #search.compact input[type="search"],
#root #search.compact input[type="text"] {
    height: 48px;
    padding-left: 44px;
    padding-right: 44px;
    border: 1px solid var(--am-hairline, #e0e0e0);
    border-radius: var(--b2r, 4px);
    background: #ffffff;
    box-shadow: 0 6px 24px rgba(20, 20, 20, 0.10);
    color: #141414;
    font-family: var(--main_ff);
    font-size: 15px;
    font-weight: 400;
}
#root #search.compact input::placeholder {
    color: #5c5c5c;
    opacity: 1;
}
#root #search.compact input:focus {
    border-color: #141414;
    outline: none;
}
/* Butonul de submit trece pe stânga, ca lupa să stea lângă textul tastat, şi
   primeşte aceeaşi lupă SVG ca iconiţa din header (aceeaşi geometrie, deci
   citirea e continuă între iconiţă şi panou). */
#root #search.compact button {
    left: 0;
    right: auto;
    width: 44px;
    color: #141414;
}
#root #search.compact button:before {
    content: "";
    display: block;
    width: 19px;
    height: 19px;
    margin: 0 auto;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
    text-indent: 0;
}
/* Săgeata de „înapoi" injectată de temă (`custom-async.js:2670`) stătea peste
   noua lupă din stânga; pe desktop panoul se închide oricum cu click în afară
   sau Esc, deci controlul e redundant. */
@media only screen and (min-width: 761px) {
    .search-compact-active #root #search.compact p > a.search-back { display: none; }
    .search-compact-active #root #search.compact p input { padding-left: 44px; }
}

/* ==================================================================
   §12. BUTOANE PE SECȚIUNI CU FUNDAL ÎNCHIS (2026-08-05)
   ------------------------------------------------------------------
   §2 de mai sus pictează fundalul TUTUROR butoanelor pe ::before cu
   #000, ca să ducă la capăt decizia „CTA negru". Într-un modul cu
   paletă închisă asta dă negru pe negru: măsurat pe secțiunea de
   showroom din homepage, cele două butoane aveau fundal transparent,
   text rgb(48,48,48) și border-width 0 — practic invizibile.

   Excepția e legată de paleta ALEASĂ de autor, nu de secțiune: dacă
   cineva a pus explicit `button_color_palette: white`, o onorăm.
   Restul butoanelor din site rămân negre, deci standardul din
   docs/design-standards.md §5 nu se schimbă.
   ================================================================== */
#root .link-btn a.button-palette-white:before {
    background: #ffffff;
}

/* ==================================================================
   §13. PASTILA „+N" DE LA CULORI — STINSĂ IMPLICIT (2026-08-05)
   ------------------------------------------------------------------
   product-item.liquid randează pastila „+N" peste tot unde e pornit
   selectorul de culori, dar ea are sens DOAR pe homepage, unde
   am-homepage.css limitează lista la 3 culori (2 pe mobil). În rest
   lista se afișează întreagă, deci un „+3" acolo ar minți.

   Comentariul din product-item.liquid spunea că elementul e „display:
   none implicit" — nu era: regula lipsea, iar pe orice colecție cu
   selectorul de culori pornit ar fi apărut o casetă în plus. Aici e
   acel implicit. am-homepage.css o aprinde înapoi cu un selector mult
   mai specific (`.template-index #root [id*="__am_populare"] …`),
   deci ordinea fișierelor nu contează.
   ================================================================== */
.am-swatch-more {
    display: none;
}
