/** Shopify CDN: Minification failed

Line 418:4 Unexpected "{"
Line 418:5 Expected identifier but found "%"
Line 418:23 Unexpected "2026"
Line 419:82 Expected identifier but found "%"

**/
/* SHOPIFY_STYLESHEETS_VERSION: 1.0 */


/* CSS from section stylesheet tags */
/* START_SECTION:bokja-artisans (INDEX:1) */
/* ---- THE TITLE, in the Collective's own style (James, 2026-09-03: same as the collective
     titles, left, smaller, less height). It carries .bokja-collective-active, the class the
     Collective's filtered views put on their heading, so the size, the letterspacing, the
     uppercase and the hairline rule under it are all inherited from bokja-custom.css rather
     than restated. Only two things are overridden: the archive intro centres its text and this
     must sit left, and the intro's bottom margin was sized for a heading plus a standfirst. ---- */
  .bokja-artisans .bokja-archive__intro { text-align: start; margin-block-end: 0; }
  /* Measured against the live Collaborations page rather than read off the stylesheet, after
     getting it wrong that way once. Two values need restoring because this is an h1 and the
     Collective's heading is a p: the h1 default weight is 700 against the live 400, and the
     h1 reset flattens the class's own bottom margin. Everything else matches exactly:
     12px / Inter / uppercase / 1.92px tracking / 0.55 opacity / 0.5px rule.

     The margin needs TWO classes, not one. base.css carries
     `:last-child:is(p, h1, ...) { margin-block-end: 0 }` at (0,1,1), and with the standfirst
     empty this h1 is the intro's only child, so it matches. On the live Collaborations page the
     same heading has the grid after it and never does, which is why it keeps its 34px there and
     lost it here. Two classes is (0,2,0) and clears the reset. */
  .bokja-artisans .bokja-artisans__title { font-weight: 400; margin: 0 0 clamp(20px, 2.5vw, 34px); }
  /* The former-artisans label: the title's treatment (class shared), pushed down off the first
     wall by one grid gap and a little air, so the second wall reads as a chapter, not a leftover. */
  .bokja-artisans .bokja-artisans__former-label { font-weight: 400; margin: clamp(36px, 5vw, 72px) 0 clamp(20px, 2.5vw, 34px); }

  /* Top space, measured against both live pages rather than chosen. The gallery section pads
     clamp(40px, 6vw, 96px), which put the title 91px below the nav; the Collective hub pads
     clamp(20px, 3.5vw, 56px) and puts its Collaborations heading at 53px. This page wears the
     Collective's heading, so it takes the Collective's space. Two classes to beat the archive
     shorthand reliably, whichever order the section stylesheets compile in. */
  .bokja-artisans.bokja-archive { padding-block-start: clamp(20px, 3.5vw, 56px); }

  /* ---- THE CUSTOM LAYOUT (James, 2026-09-03: "more dense, at least seven images wide", and
     "we can have a custom layout for this page if it's easier").

     WHY THE GALLERY'S OWN CYCLE IS WRONG HERE. That cycle varies tile WIDTH, spans of one and
     two columns, which is right for pieces: a tapestry can earn a bigger tile. Measured on this
     page at 1512px it put FOUR portraits across and ran 2,765px tall for twenty five people.
     Two problems, and the second is not about density: on a wall of PEOPLE a wider tile reads
     as a rank, and we do not mean one artisan to outrank the next.

     SO: every tile is the SAME WIDTH and only the HEIGHT varies. The wall keeps a masonry
     rhythm, the count per row is exact and settable, and nobody is promoted by the grid.
     Everything else is still the gallery's: the same gap token, the same hover label, the same
     cover crop, no zoom and no scrim. ---- */
  @media screen and (min-width: 1100px) {
    .bokja-artisans .bokja-gallery__grid {
      grid-template-columns: repeat(var(--art-cols, 8), minmax(0, 1fr));
      /* The base row scales with the column count, so tiles keep their shape as the wall gets
         denser: a column is 1/N of the measure, so the row has to shrink with it. */
      grid-auto-rows: calc((100vw - 2 * clamp(16px, 4vw, 56px)) / var(--art-cols, 8) / 4.2);
      grid-auto-flow: row dense;
    }
    .bokja-artisans .bokja-gallery__piece {
      aspect-ratio: auto; block-size: 100%; grid-column: span 1;
    }
    .bokja-artisans .bokja-gallery__piece--s1 { grid-row: span 5; }
    .bokja-artisans .bokja-gallery__piece--s2 { grid-row: span 4; }
    .bokja-artisans .bokja-gallery__piece--s3 { grid-row: span 4; }
    .bokja-artisans .bokja-gallery__piece--s4 { grid-row: span 5; }
    .bokja-artisans .bokja-gallery__piece--s5 { grid-row: span 4; }
    .bokja-artisans .bokja-gallery__piece--s6 { grid-row: span 5; }
    .bokja-artisans .bokja-gallery__piece--s7 { grid-row: span 4; }
    .bokja-artisans .bokja-gallery__piece--s8 { grid-row: span 4; }
    /* ---- THE FEATURE TILE (James, 2026-09-03: Huda and Maria two columns wide, more centred).
       This is the ONE place the wall ranks anybody, and it ranks a different thing: founders
       against the studio, not artisans against each other. Two columns and six rows, so it
       reads as a feature by area rather than by ornament. Where it lands horizontally is set
       by its position in the names list, which is why the two of them sit at the midpoint of
       the default order rather than at their alphabetical places. ---- */
    /* Two columns is 393px wide, and a 2:3 portrait needs about 590px of height to show whole
       at that width. Six rows gave 336px, a landscape box holding an upright photograph, so
       both founders were cut top and bottom however their crop was set. Nine rows is 510px,
       near enough their own shape that the picture survives. */
    .bokja-artisans .bokja-gallery__piece--feature { grid-row: span 9; }
    /* Placed explicitly, and symmetrically: on a seven column wall a four-wide pair cannot be
       centred, but 1 + [2,3] + 4 + [5,6] + 7 is perfectly balanced about the middle column, with
       a single portrait between the two founders and one at each end. */
    .bokja-artisans .bokja-gallery__piece--feature1 { grid-column: 2 / span 2; }
    .bokja-artisans .bokja-gallery__piece--feature2 { grid-column: 5 / span 2; }
    /* Any further featured names fall back to a plain two-wide tile, wherever they land. */
    .bokja-artisans .bokja-gallery__piece--feature:not(.bokja-gallery__piece--feature1):not(.bokja-gallery__piece--feature2) {
      grid-column: span 2;
    }

    /* ---- TALL TILES (James, 2026-09-03: Maalim Mahmoud can be longer, we do not need to crop
       height that much). The size cycle gave him a four unit tile, 220px at 191 wide, which
       throws away most of a full length studio frame.

       Six units is 336px. Against a 191px column that box is proportionally TALLER than the
       source 2:3, so cover scales the image by its height instead of its width: the whole
       height survives and roughly 15% comes off the sides, which is the trade this asks for.
       Five units would be the other way round, near enough the source ratio, and would still
       be cropping the length. ---- */
    .bokja-artisans .bokja-gallery__piece--tall { grid-row: span 6; }

    /* The hover label is the gallery's; at this tile size it wants to be smaller. */
    .bokja-artisans .bokja-gallery__name { padding: 5px 7px; font-size: var(--bt-micro, 11px); }
  }
  /* Tablet: half the desktop count, same rules. */
  @media screen and (min-width: 750px) and (max-width: 1099px) {
    .bokja-artisans .bokja-gallery__grid {
      grid-template-columns: repeat(4, minmax(0, 1fr));
      grid-auto-rows: calc((100vw - 2 * clamp(16px, 4vw, 56px)) / 4 / 4.2);
      grid-auto-flow: row dense;
    }
    .bokja-artisans .bokja-gallery__piece {
      aspect-ratio: auto; block-size: 100%; grid-column: span 1;
    }
    .bokja-artisans .bokja-gallery__piece--s1,
    .bokja-artisans .bokja-gallery__piece--s4,
    .bokja-artisans .bokja-gallery__piece--s6 { grid-row: span 5; }
    .bokja-artisans .bokja-gallery__piece--s2,
    .bokja-artisans .bokja-gallery__piece--s3,
    .bokja-artisans .bokja-gallery__piece--s5,
    .bokja-artisans .bokja-gallery__piece--s7,
    .bokja-artisans .bokja-gallery__piece--s8 { grid-row: span 4; }
  }
  /* ---- THE COLLABORATIONS LAYOUT AT SEVEN STACKS ----
     Inherits .bokja-collective-front wholesale (the AD-derived column stacks, its gap tokens and
     its border offset). Two changes only: seven equal columns instead of 1fr 2fr 1fr, and a rule
     in every internal gutter rather than only around the centre, since with seven equal stacks
     there is no centre to single out. Row gap comes down from 3rem because a portrait column is
     narrower than a story column. ---- */
  @media screen and (min-width: 1100px) {
    .bokja-artisans-stacks {
      grid-template-columns: repeat(var(--art-cols, 7), minmax(0, 1fr));
      --front-gap: clamp(14px, 1.6vw, 26px);
      --front-border-offset: calc(var(--front-gap) / 2);
    }
    .bokja-artisans-stacks .bokja-collective-front__col { row-gap: clamp(20px, 2.2vw, 38px); }
    .bokja-artisans-stacks .bokja-collective-front__col + .bokja-collective-front__col {
      margin-inline-start: calc(var(--front-border-offset) * -1);
      padding-inline-start: var(--front-border-offset);
      border-inline-start: 1px solid rgba(26, 26, 26, 0.4);
    }
    .bokja-artisans-stacks .bokja-collective-card__title { font-size: var(--bt-h3, 15px); }
    .bokja-artisans-stacks .bokja-collective-card__rule { margin-block-start: 10px; width: 28px; }
    .bokja-artisans-stacks .bokja-collective-card__standfirst { font-size: var(--bt-micro, 11px); }
  }
  @media screen and (min-width: 750px) and (max-width: 1099px) {
    .bokja-artisans-stacks { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  }
  @media screen and (max-width: 749px) {
    .bokja-artisans-stacks { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }

  /* The drawer chassis (.fabric-drawer) is inherited from bokja-custom.css, which loads on
     every page. Only the pane's own contents are styled here. */
  .bokja-artisan-drawer__portrait {
    display: block; inline-size: 100%; aspect-ratio: 2 / 3;
    object-fit: cover; margin-block-end: 18px; /* object-position is per portrait, inline */
  }
  .bokja-artisan-drawer__line {
    margin: 0 0 14px; font-size: var(--bt-micro, 11px); letter-spacing: .1em;
    text-transform: uppercase; opacity: .65;
  }
  .bokja-artisan-drawer__bio { margin: 0; font-size: var(--bt-body, 13px); line-height: 1.65; }

  /* ---- THE HEADER BAND ---- */
  .bokja-artisans__band { display: grid; gap: clamp(18px, 3vw, 44px); margin-block-end: clamp(18px, 2.2vw, 32px); }
  .bokja-artisans__band-media { margin: 0; }
  /* The WHOLE photograph, scaled down. No crop: it is a group portrait and every face in it
     is somebody, so it is made smaller by narrowing its column, not by trimming its edges. */
  .bokja-artisans__band-media img { display: block; inline-size: 100%; block-size: auto; }

  .bokja-artisans__band-text {
    font-size: var(--bt-body, 13px); line-height: 1.7; max-inline-size: 56ch;
    /* Justified, no hyphenation. The rivers a justified column opens are a function of the
       measure, not of hyphens: at 46ch there was not enough room to distribute the slack, so
       the text now fills its column instead of being capped, and the spacing evens out on its
       own. Wider measure, no broken words. */
    text-align: justify; hyphens: none;
  }
  .bokja-artisans__band-text > :first-child { margin-block-start: 0; }
  .bokja-artisans__band-text > :last-child { margin-block-end: 0; }
  .bokja-artisans__break {
    border: 0; border-block-start: 0.5px solid rgba(26, 26, 26, 0.18);
    margin: 0 0 clamp(18px, 2.2vw, 32px);
  }
  @media screen and (min-width: 750px) {
    /* Picture left, words right. The text sits at the FOOT of its column so its last line
       lands on the photograph's bottom edge, which is where the eye leaves the band and
       enters the wall. */
    .bokja-artisans__band {
      /* 0.93fr against 1fr puts the photograph at about 645px wide, a further 10% on the 586px
         it was, and about 430px tall at its own 3:2. Still the whole frame, nothing cut. */
      grid-template-columns: minmax(0, 0.93fr) minmax(0, 1fr);
      align-items: end;
    }
  }

  /* Editorial: the portraits' own shape, so no face is cropped at the chest. */
  .bokja-artisans .bokja-collective-card__media { aspect-ratio: 2 / 3; overflow: hidden; }
  .bokja-artisans .bokja-collective-card__image {
    inline-size: 100%; block-size: 100%; object-fit: cover; object-position: 50% 22%;
  }
  .bokja-artisans .bokja-collective-card { cursor: default; }
  /* Editorial gets the same density: the Collective's three columns are sized for stories. */
  @media screen and (min-width: 1100px) {
    .bokja-artisans .bokja-collective-grid {
      grid-template-columns: repeat(var(--art-cols, 8), minmax(0, 1fr));
      column-gap: var(--bokja-gap, 10px);
      row-gap: clamp(20px, 2vw, 34px);
    }
    .bokja-artisans .bokja-collective-card__title { font-size: var(--bt-h3, 15px); }
    .bokja-artisans .bokja-collective-card__rule { margin-block-start: 10px; width: 28px; }
    .bokja-artisans .bokja-collective-card__standfirst { font-size: var(--bt-micro, 11px); }
  }
/* END_SECTION:bokja-artisans */

/* START_SECTION:bokja-bestsellers (INDEX:3) */
.bokja-bestsellers {
    display: flex;
    flex-direction: column;
    align-items: center;
    /* Side inset uses the shared --bokja-edge token so the four products ALWAYS line up to the
       same width as the three gateway panels above (James, 2026-06-30). Top/bottom keep the
       larger frame that separates the strip from the full-height gateway. */
    padding: clamp(28px, 3.5vw, 56px) var(--bokja-edge);
    background: var(--color-background);
  }
  .bokja-bestsellers__head {
    font-size: var(--bt-label);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.5;
    text-align: center;
    margin: 0 0 18px;
  }
  .bokja-bestsellers__headlink { color: inherit; text-decoration: none; }
  .bokja-bestsellers__headlink:hover { text-decoration: underline; text-underline-offset: 0.3em; }
  .bokja-bestsellers__row {
    display: flex;
    justify-content: center;
    gap: var(--bokja-gap);
    width: 100%;
    margin-inline: auto;
  }
  .bokja-bestsellers__item {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
    text-decoration: none;
    color: inherit;
  }
  .bokja-bestsellers__media-wrap { position: relative; }
  .bokja-bestsellers__image-link { display: block; color: inherit; text-decoration: none; }
  .bokja-bestsellers__media {
    display: block;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: var(--bokja-product-media-background, var(--color-background));
  }
  .bokja-bestsellers__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center var(--bokja-bestsellers-crop-y, 100%);
    display: block;
  }
  .bokja-bestsellers__info {
    color: inherit;
    text-decoration: none;
    /* TWO-COLUMN GRID, not a flex row (James 2026-08-16: "the name of the item and the
       price seem to come on the same line ... the price ends up on the left underneath
       the name"). One rule, three sections: storygroup, catgroup and this one. This row
       was the worst instance because it is on the HOMEPAGE and it failed on desktop too.

       This SUPERSEDES the 2026-08-09 Safari large-text guard that used to sit here. That
       guard was a correct read of a real bug - name and nowrap price overlapping when they
       no longer fit one line - but letting the row wrap moved the failure instead of
       removing it. Once it could wrap, the price took flex line 2 on its own, and
       "justify-content: space-between" resolves a lone item to flex-START: hard left, under
       the name. Measured live on bokja.com before this change: 6/6 cards at 375px and
       320px, and 3/6 at 1440px.

       "min-width: 0" on the name (already present below) does not prevent it. Flex line
       breaking uses each item's MAX-CONTENT hypothetical size, which min-width does not
       reduce; min-width only governs shrinking after the lines are decided.

       A grid removes the choice. Track placement is fixed, so the price can never leave
       its column and can never fall below the name. "minmax(0, 1fr)" lets the name take
       the rest of the card and wrap; "max-content" means the price column is exactly as
       wide as the price, so it is never shrunk and never wrapped mid-value. The overlap
       the 08-09 guard was written against cannot return either: the name track has a zero
       minimum, so it yields to the price rather than growing into it.

       These are the same three declarations as .bokja-product-card-caption in
       assets/bokja-custom.css, which has been a grid since it was written and has never
       had this bug. */
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content;
    align-items: baseline;
    column-gap: 12px;
    row-gap: 0;
    /* Lift the caption so the gap under a picture EQUALS the gap beside it
       (James's rule, extended to the vertical, 2026-08-09).

       Measured on the page: at a 13px caption the capitals are 9.46px tall, the
       font's ascent is 13.0px and the line box is 20.8px. So the space sitting
       above the capitals inside the box is 3.9px of half-leading PLUS 3.54px of
       ascender, 7.44px in total, and a 10px flex gap was reading as 17.44px.

       As a ratio of the caption's own size that is 0.572em, so this scales if the
       caption size ever changes.

       NOTE the unit: this must be calculated from the CAPTION token, not in `em`.
       An em here resolves against this row's own inherited font-size (16.1px),
       not the caption's 13px, which overshot the lift by 1.8px and pulled the
       text too close. Verified by measuring the rendered page, twice.

       text-box: trim-start was tried first and is the right tool in principle,
       but it computed to `none` on the live engine and silently did nothing,
       which is worse than a number that works. */
    margin-block-start: calc(var(--bt-card) * -0.572);
  }

  .bokja-bestsellers__name {
    font-size: var(--bt-card);
    letter-spacing: 0.01em;
    color: var(--color-foreground);
    /* allow the name to shrink and wrap inside its own box rather than overflow
       into the price column (min-width:auto is what let it collide in Safari) */
    min-width: 0;
    /* Residual edge case (2026-08-09): the wrap fix pairs name and price
       correctly, but one long single word still overflowed. "Pomegranate"
       renders 158px inside a 145px card at 320/200 and was the last 3px of
       document scroll. A word can only break when it cannot fit. */
    overflow-wrap: anywhere;
    hyphens: auto;
  }
  .bokja-bestsellers__price {
    font-family: var(--font-body--family);
    font-size: var(--bt-card);
    font-weight: 400;
    letter-spacing: 0.01em;
    color: var(--bokja-price-ink);
    /* Safe unconditionally now: the name track is minmax(0, 1fr), so a nowrap price can
       only overflow the card if the price alone is wider than the card. Widest real value
       is "$9,200.00" at 63.5px against a 145px card at 320px. */
    white-space: nowrap;
    justify-self: end;
    text-align: end;
  }
  /* ---- TABLET (750-1099): four across, two rows of the six (Malou 2026-08-19 — the row
     held 6-across all the way down to 750px, then snapped to 2-up; the phone grid, not the
     desktop flex row, is the model here). Same grid mechanics as the phone block below so
     the 750px edge is a column-count change only, not a layout-model change: a card never
     changes from a grid cell to a flex item at a breakpoint, which is what stops the
     picture ratio jumping. Two rows of three would also fit six, but the catalogue's own
     call everywhere else at this width is four (product grids, the Gallery band added
     yesterday), and six-as-4+2 reads as "more below", where 3+3 reads as the end. ---- */
  @media screen and (min-width: 750px) and (max-width: 1099px) {
    .bokja-bestsellers__row {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 24px var(--bokja-gap);
    }
  }

  @media screen and (max-width: 749px) {
    /* Two-up on mobile with side borders exactly as thin as the picture gap
       (James 2026-08-06 second pass; full bleed reverted). Grid, not flex: the
       flex-basis pairing rendered one-up on real phones. */
    .bokja-bestsellers {
      padding: clamp(14px, 1.9vw, 30px) var(--bokja-gap);
    }
    .bokja-bestsellers__row {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 24px var(--bokja-gap);
    }
  }
/* END_SECTION:bokja-bestsellers */

/* START_SECTION:bokja-category-groups (INDEX:4) */
.bokja-catgroups {
    display: flex;
    flex-direction: column;
    gap: clamp(36px, 4.5vw, 72px);
    padding: clamp(28px, 3.5vw, 56px) var(--bokja-edge);
    background: var(--color-background);
  }
  /* Sticky group names on All Homeware, same behaviour as the cushion families
     (James 2026-08-06): held just below the sticky trail, measured offsets.

     PINNED CLEARANCE (James 2026-08-08): "the spacing is correct before the menu locks into
     place, and then you lose height." Measured on the live theme before touching it: pinned,
     this title's box top landed at the locked trail's bottom edge (clearance -0.33px at 1280,
     -0.09px at 390) so the word butted straight onto the bar, and 4 product cards sat inside
     the head's own box because nothing painted below the text - the 18px underneath was
     MARGIN, which is transparent and does not travel with a sticky element.

     Two changes, both invisible in normal flow:
     1. `top` gains --bokja-group-clear, so the pinned word keeps that much air under the bar.
     2. the 18px below the text moves from margin to PADDING. Identical block geometry (18px
        either way), but padding is inside the sticky box, so it paints the background and
        holds the cards off the title while they scroll past.
     The ::before apron does the same job above. Trail z-index is 12 against this head's 5, so
     the apron always paints UNDER the bar. No transforms anywhere near the header (tear-guard). */
  .bokja-catgroup__head {
    position: sticky;
    {%- comment -%} v6 2026-08-25: the header is static and scrolls away — the head clears
    only the pinned strip. Pinning at the header var was the stuck-CUSHIONS bug. {%- endcomment -%}
    top: calc(var(--bokja-trail-height, 44px) + var(--bokja-group-clear, 18px));
    z-index: 5;
    background: var(--color-background);
    margin: 0;
    padding-block-end: 18px;
  }
  /* Opaque apron above the stuck title: covers the clearance strip plus 10px of slack for the
     few-px variance in the trail's measured height across viewports and zoom levels. */
  .bokja-catgroup__head::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: calc(-1 * (var(--bokja-group-clear, 18px) + 10px));
    height: calc(var(--bokja-group-clear, 18px) + 10px);
    background: var(--color-background);
  }
  .bokja-catgroup__title {
    font-size: var(--bt-label);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.5;
    text-align: center;
    margin: 0;
    font-weight: inherit;
  }
  .bokja-catgroup__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    /* Generous ROW gap, tight columns (James, 05-08 second pass): with contained images
       the 10px shared gap left captions sandwiched between frames and rows read cramped. */
    gap: clamp(32px, 3.5vw, 56px) var(--bokja-gap);
  }
  .bokja-catgroup__item {
    position: relative;
    min-width: 0;
  }
  .bokja-catgroup__link {
    display: flex;
    flex-direction: column;
    gap: 10px;
    text-decoration: none;
    color: inherit;
    min-width: 0;
  }
  /* Card gallery (James, 05-08): every image stacked in the frame, arrows step through,
     hover reveals the CLOSE-UP only (never the back — registration between front and back
     shots is unreliable). The wishlist heart reuses the global bokja-card-controls classes
     and the delegated bokja-wishlist.js. */
  .bokja-catgroup__img {
    opacity: 0;
    transition: opacity 180ms ease;
  }
  .bokja-catgroup__img.is-current {
    opacity: 1;
  }
  .bokja-catgroup__item:not([data-nav]):hover .bokja-catgroup__img--hover {
    opacity: 1;
    z-index: 1;
  }
  .bokja-catgroup__arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 3;
    background: transparent;
    border: 0;
    padding: 4px 10px;
    cursor: pointer;
    color: var(--color-foreground);
    font-size: 26px;
    line-height: 1;
    opacity: 0;
    transition: opacity 150ms ease;
  }
  .bokja-catgroup__arrow--prev {
    left: 2px;
  }
  .bokja-catgroup__arrow--next {
    right: 2px;
  }
  .bokja-catgroup__item:hover .bokja-catgroup__arrow,
  .bokja-catgroup__arrow:focus-visible {
    opacity: 0.75;
  }
  @media (hover: none) {
    .bokja-catgroup__arrow {
      opacity: 0.75;
    }
  }
  .bokja-catgroup__save {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    background: transparent;
    border: 0;
    padding: 6px;
    cursor: pointer;
    color: var(--color-foreground);
    opacity: 0;
    transition: opacity 150ms ease;
  }
  .bokja-catgroup__item:hover .bokja-catgroup__save,
  .bokja-catgroup__save.is-saved,
  .bokja-catgroup__save:focus-visible {
    opacity: 1;
  }
  @media (hover: none) {
    .bokja-catgroup__save {
      opacity: 1;
    }
  }
  /* Uniform 4:5 frame with the FULL image contained (James, 05-08): the catalogue mixes
     4:5, 2:3 and two landscape sofa shots — natural heights made the rows ragged. contain
     letterboxes on the off-white ground instead of cropping; 4:5 matches the dominant
     format so most images fill the frame edge to edge. The img is absolutely pinned:
     an in-flow img taller than the frame stretches the aspect-ratio box (live-observed
     453px vs 375px rows); absolute positioning makes the frame the hard boundary. */
  .bokja-catgroup__media {
    display: block;
    position: relative;
    aspect-ratio: 4 / 5;
    background: var(--bokja-product-media-background, var(--color-background));
  }
  .bokja-catgroup__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
  }
  .bokja-catgroup__info {
    /* TWO-COLUMN GRID, not a flex row (James 2026-08-16: "the name of the item and the
       price seem to come on the same line ... the price ends up on the left underneath
       the name"). One rule, three sections: storygroup, bestsellers and this one.

       This SUPERSEDES the 2026-08-09 wrap guard that used to sit here. That guard was a
       correct read of a real bug - a nowrap price being pushed out of its own card into
       the neighbour's column, 39px over at 375 and 67px at 320 - but the cure moved the
       failure instead of removing it. Once the row could wrap, any name wider than the
       card took flex line 1 on its own and the price fell to line 2, where
       "justify-content: space-between" resolves a lone item to flex-START: hard left,
       under the name. Measured live before this change: 94/94 cards on
       /collections/homeware at 320px, 89/94 at 375px, and 1/94 even at 1440px.

       "min-width: 0" on the name (already present below) does not prevent it. Flex line
       breaking uses each item's MAX-CONTENT hypothetical size, which min-width does not
       reduce; min-width only governs shrinking after the lines are decided.

       A grid removes the choice. Track placement is fixed, so the price can never leave
       its column and can never fall below the name. "minmax(0, 1fr)" lets the name take
       the rest of the card and wrap; "max-content" means the price column is exactly as
       wide as the price, so it is never shrunk and never wrapped mid-value. The original
       overflow the 08-09 guard was written against cannot return either: the name track
       has a zero minimum, so it yields to the price rather than pushing it out.

       These are the same three declarations as .bokja-product-card-caption in
       assets/bokja-custom.css, which has been a grid since it was written and has never
       had this bug. */
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content;
    align-items: baseline;
    column-gap: 12px;
    row-gap: 0;
    /* Lift the caption so the gap under a picture EQUALS the gap beside it
       (James's rule, extended to the vertical, 2026-08-09).

       Measured on the page: at a 13px caption the capitals are 9.46px tall, the
       font's ascent is 13.0px and the line box is 20.8px. So the space sitting
       above the capitals inside the box is 3.9px of half-leading PLUS 3.54px of
       ascender, 7.44px in total, and a 10px flex gap was reading as 17.44px.

       As a ratio of the caption's own size that is 0.572em, so this scales if the
       caption size ever changes.

       NOTE the unit: this must be calculated from the CAPTION token, not in `em`.
       An em here resolves against this row's own inherited font-size (16.1px),
       not the caption's 13px, which overshot the lift by 1.8px and pulled the
       text too close. Verified by measuring the rendered page, twice.

       text-box: trim-start was tried first and is the right tool in principle,
       but it computed to `none` on the live engine and silently did nothing,
       which is worse than a number that works. */
    margin-block-start: calc(var(--bt-card) * -0.572);
  }
  .bokja-catgroup__name {
    font-size: var(--bt-card);
    letter-spacing: 0.01em;
    color: var(--color-foreground);
    /* min-width:auto is what let the name overflow into the price column */
    min-width: 0;
    overflow-wrap: anywhere;
  }
  .bokja-catgroup__price {
    font-family: var(--font-body--family);
    font-size: var(--bt-card);
    font-weight: 400;
    letter-spacing: 0.01em;
    color: var(--bokja-price-ink);
    /* Safe unconditionally now: the name track is minmax(0, 1fr), so a nowrap price can
       only overflow the card if the price alone is wider than the card. Widest real value
       is "$9,200.00" at 63.5px against a 145px card at 320px. */
    white-space: nowrap;
    justify-self: end;
    text-align: end;
  }
  @media screen and (max-width: 749px) {
    .bokja-catgroups {
      /* Side borders as thin as the picture gap (James 2026-08-06 second pass). */
      padding: clamp(14px, 1.9vw, 30px) var(--bokja-gap);
    }
    /* STRICT two-up (James 2026-08-08, supersedes his 08-06 no-orphan mixes: "It should only
       be two up"). A trailing lone card is accepted. This landed first as an !important block
       in assets/bokja-custom.css because this section was on a worker branch that night; it is
       folded in here now and removed there, so the rule has ONE home.

       The price overflow this rule was paired with is the same bug: 3-up cards at 117px could
       not hold a nowrap "$5,000.00", two prices overflowed the document by 18px, and every touch
       swipe panned the page sideways - which broke image swiping on the PDP. Two-up widens the
       card, and since 2026-08-16 the caption row is a grid whose NAME track has a zero minimum,
       so the name yields to the price instead of pushing it out. The mobile
       ".bokja-catgroup__price { white-space: normal }" escape hatch that used to sit here is
       therefore gone: it was the thing that let a price break mid-value, and it is no longer
       load-bearing. Re-measured live at 320px after the change - 0 of 94 cards overflow. */
    .bokja-catgroup__grid {
      grid-template-columns: repeat(2, 1fr);
    }
    /* FAMILY ROWS (James 2026-08-08, supersedes the even-index doctrine on MOBILE ONLY: "on
       mobile it's better to have the pairs together, and sometimes have one on a single row...
       It's less important to have a space, and more important to keep the pairs together.")

       The first card of a declared family run starts in column 1, so a run can never straddle
       two rows. When the arithmetic does not line up, the card before it sits alone and column 2
       of that row stays EMPTY - that gap is the intended outcome, not a bug to pack away. With
       two columns, column 1 is the only start that guarantees it.

       DESKTOP IS UNTOUCHED: the rule lives inside the phone query, so the published 4-up
       even-index layout is byte-for-byte what it was. */
    .bokja-catgroup__item--famlead {
      grid-column-start: 1;
    }
  }
/* END_SECTION:bokja-category-groups */

/* START_SECTION:bokja-category-nav (INDEX:5) */
.bokja-category-nav {
    z-index: 12;
    /* Side padding matches the homepage's near-full-bleed margins. Top padding halved
       (James, 05-08), then trimmed again same day ("a little bit more"). */
    padding: clamp(6px, 0.8vw, 12px) var(--bokja-edge, 30px) 12px;
    background: var(--color-background);
    position: relative;
  }

  .bokja-category-nav.is-sticky {
    position: sticky;
    /* Measured, never guessed: the header's real height (megamenu keeps the var honest),
       so the trail meets the header underside on every page and breakpoint. */
    top: var(--bokja-header-height, 60px);
  }

  .bokja-category-nav__inner {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 22px;
    width: 100%;
    margin-inline: auto;
    padding-block-end: 4px;
  }

  .bokja-category-nav__link {
    color: var(--color-foreground);
    opacity: 0.58;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-size: var(--bt-label);
    line-height: 1.3;
    padding-block-end: 2px;
    border-block-end: 0.5px solid transparent;
    transition: opacity 150ms ease, border-color 150ms ease;
  }

  .bokja-category-nav__link:hover,
  .bokja-category-nav__link:focus-visible,
  .bokja-category-nav__link.is-active {
    opacity: 1;
  }

  .bokja-category-nav__link.is-active {
    border-block-end-color: currentColor;
  }

  @media screen and (max-width: 749px) {
    .bokja-category-nav {
      padding: 8px var(--bokja-edge, 14px) 10px;
    }

    .bokja-category-nav.is-sticky {
      top: var(--bokja-header-height, 50px);
    }

    .bokja-category-nav__inner {
      flex-wrap: nowrap;
      gap: 18px;
      overflow-x: auto;
      scrollbar-width: none;
      white-space: nowrap;
    }

    .bokja-category-nav__inner::-webkit-scrollbar {
      display: none;
    }
  }

  /* ---- cushion filter dropdown (2026-08-24) ---- */
  /* The trigger is a .bokja-category-nav__link in button form: same word styling,
     pushed to the end of the row. Button element defaults need flattening the
     link class never had to. */
  .bokja-cfilters-toggle {
    margin-inline-start: auto;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: none;
    border: none;
    border-block-end: 0.5px solid transparent;
    padding: 0 0 2px;
    font-family: inherit;
    cursor: pointer;
  }
  .bokja-cfilters-toggle.is-open,
  .bokja-cfilters-toggle.is-active {
    opacity: 1;
  }
  /* No underline on the trigger in ANY state (Malou 2026-08-25, third pass of
     "remove the little lines around the arrow") - the active signal is the echoed
     pick itself (colour dot or word) at full opacity, nothing more. The trigger
     wears the nav-link class, so `.bokja-category-nav__link.is-active` above still
     coloured the button's bottom border - arrow included - whenever a filter was
     active. Same specificity, later in the sheet, so this wins. */
  .bokja-cfilters-toggle.is-active {
    border-block-end-color: transparent;
  }
  .bokja-cfilters-toggle__caret {
    display: block;
    transition: transform 150ms ease;
  }
  .bokja-cfilters-toggle.is-open .bokja-cfilters-toggle__caret {
    transform: rotate(180deg);
  }
  /* Active colour echoed in the trigger summary as a smaller dot (built by the
     engine). The engine builds it as a SPAN while the panel's dots are BUTTONs:
     a span is display:inline, which ignores width/height and painted as a thin
     vertical red bar beside the arrow - the second of Malou's "little lines".
     inline-block makes it the round dot it was always meant to be. */
  .bokja-cfilters-toggle .bokja-cfilters__dot--mini {
    display: inline-block;
    width: 7px;
    height: 7px;
  }

  /* The panel hangs off .bokja-category-nav (position: relative / sticky), so it
     travels with the sticky trail. Doubled class: the .bokja-cfilters base rule
     (row flex, align-items center) sits in bokja-story-groups' stylesheet, which
     compiles AFTER this one - equal specificity loses and the rows collapse to
     centred shrink-to-fit instead of stretching label-left/options-right. */
  .bokja-cfilters.bokja-cfilters--panel {
    position: absolute;
    top: 100%;
    inset-inline-end: var(--bokja-edge, 30px);
    z-index: 20;
    flex-direction: column;
    align-items: stretch;
    gap: 14px;
    min-width: 250px;
    background: var(--color-background);
    border: 0.5px solid rgba(0, 0, 0, 0.16);
    box-shadow: 0 14px 34px rgba(0, 0, 0, 0.08);
    padding: 16px 18px 13px;
  }
  .bokja-cfilters--panel[hidden] {
    display: none;
  }
  .bokja-cfilters__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
  }
  /* An axis none of the cushions carry offers nothing - hide its whole row, label
     included (progressive: without :has support the label just sits alone). */
  .bokja-cfilters__row:not(:has(button:not([hidden]))) {
    display: none;
  }
  .bokja-cfilters__row--foot {
    justify-content: flex-end;
    border-block-start: 0.5px solid rgba(0, 0, 0, 0.08);
    padding-block-start: 10px;
  }
  .bokja-cfilters__axis {
    font-size: 9px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    opacity: 0.38;
  }
  .bokja-cfilters--panel .bokja-cfilters__set {
    flex-wrap: wrap;
    justify-content: flex-end;
  }

  @media screen and (max-width: 749px) {
    /* The row scrolls sideways on phones; the trigger stays pinned at the right
       edge (sticky inside the scroll row), fading the words sliding under it. */
    .bokja-cfilters-toggle {
      position: sticky;
      inset-inline-end: -1px;
      background: linear-gradient(to right, transparent, var(--color-background) 24px);
      padding-inline-start: 30px;
      /* The trigger wears the nav-link class, whose 0.58 opacity made the WHOLE button
         translucent: the words sliding under it showed straight through the word FILTER
         (James 2026-09-23, "the Filter button overlaps Furniture"). The button itself is
         opaque so its fade actually hides them; the dimming moves to what it contains. */
      opacity: 1;
    }
    .bokja-cfilters-toggle > * {
      opacity: 0.58;
      transition: opacity 150ms ease;
    }
    .bokja-cfilters-toggle.is-open > *,
    .bokja-cfilters-toggle.is-active > * {
      opacity: 1;
    }
    .bokja-cfilters.bokja-cfilters--panel {
      inset-inline: 0;
      border-inline: none;
      padding: 16px var(--bokja-edge, 14px) 13px;
    }
  }
/* END_SECTION:bokja-category-nav */

/* START_SECTION:bokja-drops-timeline (INDEX:10) */
.bokja-drops {
    --drop-gap: clamp(64px, 9vw, 140px);
    display: flex;
    flex-direction: column;
    gap: var(--drop-gap);
    padding-block: clamp(32px, 5vw, 72px);
  }

  .bokja-drops__intro {
    max-inline-size: 40ch;
    margin-inline: auto;
    text-align: center;
    font-size: var(--bt-body);
    letter-spacing: 0.04em;
    line-height: 1.6;
    opacity: 0.7;
  }

  .bokja-drop {
    display: flex;
    flex-direction: column;
  }

  .bokja-drop__hero {
    display: block;
    inline-size: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--color-background);
  }

  .bokja-drop__img {
    inline-size: 100%;
    block-size: 100%;
    object-fit: cover;
    display: block;
  }

  .bokja-drop__intro {
    text-align: center;
    max-inline-size: 52ch;
    margin-inline: auto;
    padding-block: clamp(20px, 3vw, 40px);
    padding-inline: 16px;
  }

  .bokja-drop__eyebrow {
    margin: 0 0 14px;
    font-size: var(--bt-label);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    opacity: 0.6;
  }

  .bokja-drop__title {
    margin: 0;
    font-size: var(--bt-hero);
    font-weight: 400;
    line-height: 1.08;
    letter-spacing: -0.01em;
  }

  .bokja-drop__dek {
    margin: 16px auto 0;
    max-inline-size: 44ch;
    font-size: var(--bt-h3);
    line-height: 1.65;
    opacity: 0.78;
  }

  .bokja-drop__cta {
    display: inline-block;
    margin-block-start: 22px;
    font-size: var(--bt-label);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-foreground);
    text-decoration: none;
    border-block-end: 1px solid var(--color-foreground);
    padding-block-end: 4px;
  }

  .bokja-drop__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: clamp(8px, 1.4vw, 18px);
    list-style: none;
    margin: 0;
    padding-inline: clamp(16px, 3vw, 48px);
    max-inline-size: var(--full-page-grid-central-column-width, 1400px);
    margin-inline: auto;
    inline-size: 100%;
  }

  .bokja-drop__item { margin: 0; }

  .bokja-drop__product { display: block; text-decoration: none; color: var(--color-foreground); }

  .bokja-drop__thumb {
    display: block;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: var(--color-background);
  }

  .bokja-drop__pimg { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; }

  .bokja-drop__name {
    display: block;
    margin-block-start: 8px;
    font-size: var(--bt-card);
    line-height: 1.3;
  }

  .bokja-drop__price {
    display: block;
    margin-block-start: 2px;
    font-family: var(--font-body--family);
    font-size: var(--bt-card);
    font-weight: 400;
    letter-spacing: 0.01em;
    color: var(--bokja-price-ink);
  }

  @media screen and (max-width: 749px) {
    .bokja-drop__hero { aspect-ratio: 4 / 5; }
    .bokja-drop__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
/* END_SECTION:bokja-drops-timeline */

/* START_SECTION:bokja-flora-fauna (INDEX:11) */
/* FULL WIDTH, like the homepage (James, 2026-09-15): the hero runs edge to edge as the
     homepage video does, and the head and the grid sit on the same gutter the bestsellers
     row uses (--bokja-edge). No page-width column: the schema class is deliberately NOT
     "section", which would pull in base.css's centred grid. */
  .bokja-ff {
    padding: clamp(28px, 3.5vw, 56px) 0 clamp(56px, 7vw, 110px);
    color: var(--color-foreground);
  }
  .bokja-ff__head {
    max-width: 760px;
    margin: 0 0 clamp(28px, 4vw, 56px);
    padding-inline: var(--bokja-edge);
  }
  .bokja-ff__eyebrow {
    font-size: var(--bt-label);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    opacity: 0.5;
    margin: 0 0 14px;
  }
  .bokja-ff__title {
    font-family: Georgia, 'Times New Roman', serif;
    font-style: italic;
    font-weight: 400;
    font-size: clamp(34px, 4.6vw, 58px);
    line-height: 1.05;
    letter-spacing: 0;
    margin: 0;
  }
  .bokja-ff__intro {
    margin: 18px 0 0;
    font-size: var(--bt-body);
    line-height: 1.6;
    max-width: 62ch;
  }
  .bokja-ff__hero {
    margin: 0 0 clamp(32px, 4.5vw, 64px);
  }
  .bokja-ff__hero img {
    display: block;
    width: 100%;
    height: auto;
  }
  .bokja-ff__grid {
    list-style: none;
    margin: 0;
    padding: 0 var(--bokja-edge);
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(32px, 3.5vw, 56px) var(--bokja-gap, 10px);
  }
  .bokja-ff__item {
    margin: 0;
  }
  .bokja-ff__link {
    display: block;
    color: inherit;
    text-decoration: none;
  }
  .bokja-ff__media {
    margin: 0 0 12px;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: rgba(26, 26, 26, 0.04);
  }
  .bokja-ff__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .bokja-ff__name,
  .bokja-ff__price,
  .bokja-ff__caption {
    display: block;
    font-size: var(--bt-body);
    letter-spacing: 0.02em;
    line-height: 1.4;
  }
  .bokja-ff__price {
    opacity: 0.6;
  }
  .bokja-ff__caption {
    margin-top: 6px;
    font-family: Georgia, 'Times New Roman', serif;
    font-style: italic;
    opacity: 0.75;
  }
  @media (max-width: 989px) {
    .bokja-ff__grid {
      grid-template-columns: repeat(2, 1fr);
    }
  }
/* END_SECTION:bokja-flora-fauna */

/* START_SECTION:bokja-footer (INDEX:12) */
.bokja-footer {
    background: var(--color-background);
    color: var(--color-foreground);
    padding: clamp(56px, 7vw, 110px) clamp(16px, 3vw, 48px) 0;
    border-block-start: 0.5px solid rgba(26, 26, 26, 0.12);
  }
  .bokja-footer__inner {
    max-width: 1440px;
    margin-inline: auto;
    display: flex;
    flex-wrap: wrap;
    gap: 48px 80px;
    justify-content: space-between;
    align-items: flex-start;
    padding-block-end: clamp(48px, 6vw, 88px);
  }
  .bokja-footer__cta {
    flex: 1 1 340px;
    max-width: 460px;
  }
  .bokja-footer__eyebrow {
    font-size: var(--bt-label);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    opacity: 0.5;
    margin: 0 0 14px;
  }
  .bokja-footer__head {
    font-size: var(--bt-h2);
    font-weight: 400;
    letter-spacing: -0.005em;
    margin: 0 0 10px;
  }
  .bokja-footer__dek {
    font-size: var(--bt-body);
    line-height: 1.6;
    opacity: 0.75;
    margin: 0 0 22px;
    max-width: 36ch;
  }
  .bokja-footer__field {
    display: flex;
    align-items: center;
    max-width: 380px;
    border-block-end: 1px solid rgba(26, 26, 26, 0.3);
  }
  .bokja-footer__field input {
    flex: 1;
    min-width: 0;
    background: none;
    border: none;
    color: var(--color-foreground);
    font-family: inherit;
    font-size: var(--bt-body);
    letter-spacing: 0.02em;
    padding: 10px 0;
    outline: none;
  }
  .bokja-footer__field input::placeholder {
    color: rgba(26, 26, 26, 0.45);
  }
  .bokja-footer__names {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 18px;
    max-width: 380px;
  }
  .bokja-footer__names input {
    min-width: 0;
    background: none;
    border: none;
    border-block-end: 1px solid rgba(26, 26, 26, 0.3);
    color: var(--color-foreground);
    font-family: inherit;
    font-size: var(--bt-body);
    letter-spacing: 0.02em;
    padding: 10px 0;
    outline: none;
  }
  .bokja-footer__names input::placeholder {
    color: rgba(26, 26, 26, 0.45);
  }
  .bokja-footer__names input:focus {
    border-block-end-color: var(--color-foreground);
  }
  /* The salutation pills: sr-only radios, labels as quiet toggle pills (the size-pill
     grammar). Shared between footer and membership dialog - the dialog carries no copy
     of these rules, its stylesheet only adjusts spacing. */
  .bokja-signup-address {
    border: none;
    margin: 14px 0 4px;
    padding: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
  }
  .bokja-signup-address legend {
    float: inline-start;
    padding: 0;
    margin-inline-end: 4px;
    font-size: var(--bt-label);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(26, 26, 26, 0.6);
  }
  .bokja-signup-address label {
    cursor: pointer;
  }
  .bokja-signup-address input {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
  .bokja-signup-address span {
    display: inline-block;
    padding: 4px 10px;
    border: 1px solid rgba(26, 26, 26, 0.3);
    font-size: var(--bt-label);
    letter-spacing: 0.04em;
    color: var(--color-foreground);
  }
  .bokja-signup-address input:checked + span {
    border-color: var(--color-foreground);
    background: var(--color-foreground);
    color: #FBFBF6;
  }
  .bokja-signup-address input:focus-visible + span {
    outline: 2px solid var(--color-foreground);
    outline-offset: 1px;
  }
  .bokja-footer__field button {
    background: none;
    border: none;
    color: var(--color-foreground);
    font-size: var(--bt-h3);
    line-height: 1;
    cursor: pointer;
    padding-block: 0;
    padding-inline: 12px 2px;
  }
  .bokja-footer__field:focus-within {
    border-block-end-color: var(--color-foreground);
  }
  /* TWO STEPS, v2 (James, 2026-09-07): step 2 REPLACES step 1 in place. Shared by every
     signup surface the way the pills are. The wrapper clips; is-leaving slides step 1 off
     to the left, then the module swaps the panels (is-step2) and step 2 slides in from the
     right where step 1 stood. The echoed email at the top of step 2 is the way back. */
  .bokja-signup-steps {
    position: relative;
    overflow: clip;
    overflow-clip-margin: 6px;
  }
  .bokja-signup-step1 {
    transition: transform 0.26s ease, opacity 0.26s ease;
  }
  .bokja-signup-steps.is-leaving .bokja-signup-step1 {
    transform: translateX(-100%);
    opacity: 0;
  }
  .bokja-signup-steps.is-step2 .bokja-signup-step1 {
    display: none;
  }
  .bokja-signup-step2 {
    display: none;
  }
  .bokja-signup-steps.is-step2 .bokja-signup-step2 {
    display: block;
    animation: bokja-signup-enter 0.3s ease both;
  }
  @keyframes bokja-signup-enter {
    from { transform: translateX(100%); opacity: 0; }
    to { transform: none; opacity: 1; }
  }
  .bokja-signup-back {
    display: inline-block;
    margin: 0 0 4px;
    padding: 0;
    border: 0;
    background: none;
    font-family: inherit;
    font-size: var(--bt-label);
    letter-spacing: 0.02em;
    color: inherit;
    opacity: 0.6;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
  }
  .bokja-signup-back:hover,
  .bokja-signup-back:focus-visible {
    opacity: 1;
    outline: none;
  }
  .bokja-signup-join {
    display: inline-block;
    margin-top: 18px;
    padding: 9px 18px;
    border: 1px solid var(--color-foreground, #1a1a1a);
    background: var(--color-foreground, #1a1a1a);
    color: #FBFBF6;
    font-family: inherit;
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    cursor: pointer;
  }
  .bokja-signup-join:focus-visible {
    outline: 2px solid var(--color-foreground, #1a1a1a);
    outline-offset: 2px;
  }
  @media (prefers-reduced-motion: reduce) {
    .bokja-signup-step1 { transition: none; }
    .bokja-signup-steps.is-step2 .bokja-signup-step2 { animation: none; }
  }
  .bokja-footer__ok {
    font-size: var(--bt-body);
    opacity: 0.75;
  }
  .bokja-footer__cols {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(40px, 5vw, 88px);
  }
  .bokja-footer__col {
    display: flex;
    flex-direction: column;
    gap: 11px;
  }
  .bokja-footer__col-head {
    font-size: var(--bt-label);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    opacity: 0.5;
    margin-block-end: 5px;
  }
  .bokja-footer__col a {
    color: var(--color-foreground);
    text-decoration: none;
    font-size: var(--bt-card);
    opacity: 0.75;
  }
  .bokja-footer__col a:hover {
    opacity: 1;
  }
  .bokja-footer__base {
    max-width: 1440px;
    margin-inline: auto;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    padding-block: 24px 36px;
  }
  .bokja-footer__copy {
    font-size: var(--bt-micro);
    letter-spacing: 0.04em;
    opacity: 0.45;
  }
  .bokja-footer__social {
    display: flex;
    gap: 22px;
  }
  .bokja-footer__social a {
    color: var(--color-foreground);
    opacity: 0.55;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-size: var(--bt-label);
  }
  .bokja-footer__social a:hover {
    opacity: 1;
  }
  @media screen and (max-width: 749px) {
    .bokja-footer {
      padding-inline: 20px;
    }
    .bokja-footer__inner {
      flex-direction: column;
      gap: 36px;
    }
    /* Keep the newsletter usable: full width, sitting above the link grid. */
    .bokja-footer__cta,
    .bokja-footer__field {
      max-width: none;
    }
    /* Enlarged-text fix (2026-08-09). The column-direction flex item kept its
       automatic minimum inline size, so at 200% text its intrinsic width grew to
       ~453px and the nowrap social row to ~468px, forcing the WHOLE DOCUMENT to
       488px wide on a 375px phone: every page scrolled sideways, not just the
       footer. */
    .bokja-footer__cta {
      min-width: 0;
      width: 100%;
    }
    .bokja-footer__social {
      flex-wrap: wrap;
      row-gap: 12px;
    }
    /* The link groups become a tidy, EVEN grid rather than a stack of rows, so the column
       count tracks the number of groups: it was 3 for five groups (3+2), and is 2 for the
       four groups of the 2026-08-15 restructure (2+2). Three would leave a 3+1 orphan. */
    .bokja-footer__cols {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 28px 16px;
    }
    .bokja-footer__col {
      gap: 9px;
      min-width: 0;
    }
    .bokja-footer__col-head {
      font-size: var(--bt-label);
      letter-spacing: 0.16em;
      margin-block-end: 3px;
    }
    .bokja-footer__col a {
      font-size: var(--bt-card);
      line-height: 1.35;
    }
    /* At 320px on the old three-column grid each column got ~83px, while at 200% text a
       single label like THE COLLECTIVE needs 183px and a link like "Exchanges and returns"
       needs 127px, so all three drew through one another. Two columns give ~132px each,
       which is better but still short of 183px, so the rule stays. It only changes wrapping
       when an individual WORD cannot fit; the grid is untouched wherever the words do. */
    .bokja-footer__col a,
    .bokja-footer__col-head {
      min-width: 0;
      overflow-wrap: anywhere;
      hyphens: auto;
    }
    .bokja-footer__base {
      flex-direction: column;
      align-items: flex-start;
    }
  }
/* END_SECTION:bokja-footer */

/* START_SECTION:bokja-gallery-forward (INDEX:13) */
.bokja-gallery-forward {
    margin: 0;
    padding: clamp(48px, 10vw, 140px) clamp(16px, 4vw, 56px);
    text-align: center;
    font-size: var(--bt-body);
    letter-spacing: 0.04em;
    color: var(--color-foreground, #1a1a1a);
  }
/* END_SECTION:bokja-gallery-forward */

/* START_SECTION:bokja-gallery (INDEX:14) */
/* ==========================================================================
     Container + intro: still James's June archive frame (snippets/bokja-archive-gallery.liquid,
     commit 0f51189) so the Gallery and the Archive page share one page rhythm. The GRID below is
     no longer his CSS-columns masonry - it is v4 of the grid comparison (see header comment).
     ========================================================================== */
  .bokja-archive {
    max-inline-size: var(--page-width, 1400px);
    margin-inline: auto;
    padding: clamp(40px, 6vw, 96px) clamp(16px, 4vw, 56px);
  }
  .bokja-archive__intro {
    text-align: center;
    margin-block-end: clamp(32px, 5vw, 72px);
  }
  .bokja-archive__title {
    margin: 0 0 12px;
    font-size: var(--bt-h1);
    font-weight: 400;
    letter-spacing: 0.02em;
    color: var(--color-foreground, #1a1a1a);
  }
  .bokja-archive__dek {
    max-inline-size: 56ch;
    margin-inline: auto;
    font-size: var(--bt-body);
    line-height: 1.65;
    opacity: 0.7;
    color: var(--color-foreground, #1a1a1a);
  }
  /* His snippet takes a plain string dek; this one takes richtext, so the wrapping <p>
     margins are flattened. Additive only - it changes none of his values. */
  .bokja-archive__dek > :first-child { margin-block-start: 0; }
  .bokja-archive__dek > :last-child { margin-block-end: 0; }

  /* ---- The grid: v4 "mixed framing" ----
     PHONES FIRST (<=749px): two-up, uniform 4:5 tiles, pure pictures. No labels, no hover, no
     size cycle - the name lives in the drawer that a tap opens. Even gap both ways. */
  .bokja-gallery__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--bokja-gap, 10px);
  }
  .bokja-gallery__piece {
    position: relative;
    display: block;
    inline-size: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    color: inherit;
    text-align: start;
    cursor: pointer;
    overflow: hidden;
    aspect-ratio: 4 / 5;
  }
  .bokja-gallery__piece:focus-visible {
    outline: 2px solid var(--color-foreground, #1a1a1a);
    outline-offset: -2px;
  }
  /* cover, centred, no zoom and no scrim (house rule). The tile ratio is set by the span cycle,
     so cover is what lets one 4:5 photograph sit in a tall, a square-ish and a wide box. The
     drawer shows every image whole (object-fit: contain), so nothing is lost to the crop. */
  .bokja-gallery__img {
    display: block;
    inline-size: 100%;
    block-size: 100%;
    object-fit: cover;
  }
  .bokja-gallery__img--placeholder {
    background: var(--color-border, rgba(26, 26, 26, 0.06));
  }

  /* The hover name: a solid off-white label inset in the tile's bottom-left corner, not a wash
     over the photograph. Hidden entirely on phones. Never a price. */
  .bokja-gallery__name { display: none; }

  @media screen and (min-width: 750px) {
    /* v4's mechanics: 6 columns, fixed row height, one even gap. Row height is v4's 110px
       expressed as 8.6vw (= 110px at 1280, where v4 was measured) and clamped, so the tile
       ratios hold as the column width scales with the viewport. `dense` only ever backfills a
       hole an earlier span left; it does not reorder the pieces visually for this cycle. */
    .bokja-gallery__grid {
      grid-template-columns: repeat(6, 1fr);
      grid-auto-rows: clamp(64px, 8.6vw, 118px);
      grid-auto-flow: row dense;
    }
    .bokja-gallery__piece { aspect-ratio: auto; block-size: 100%; }

    /* The 8-step size cycle, verbatim from v4 (.c1 - .c8). */
    .bokja-gallery__piece--s1 { grid-column: span 2; grid-row: span 5; }
    .bokja-gallery__piece--s2 { grid-column: span 2; grid-row: span 3; }
    .bokja-gallery__piece--s3 { grid-column: span 2; grid-row: span 2; }
    .bokja-gallery__piece--s4 { grid-column: span 1; grid-row: span 3; }
    .bokja-gallery__piece--s5 { grid-column: span 1; grid-row: span 3; }
    .bokja-gallery__piece--s6 { grid-column: span 2; grid-row: span 5; }
    .bokja-gallery__piece--s7 { grid-column: span 2; grid-row: span 3; }
    .bokja-gallery__piece--s8 { grid-column: span 2; grid-row: span 2; }

    /* ---- TABLET (750-1099): the same mosaic on FOUR columns (Malou 2026-08-18 — the page
       stepped 6 straight to 2 with nothing between, because 750px was its only breakpoint).

       The span cycle is deliberately UNCHANGED. Its eight steps span 2,2,2,1,1,2,2,2 columns,
       which lands on 4 exactly as readily as on 6: 2+2, then 2+1+1, then 2+2, with the eighth
       step's remainder paired by the next cycle's first — and `dense` (inherited from the rule
       above) backfills anything a tall neighbour leaves open. So the tablet view is the same
       composition at a different measure, not a second design to keep in step with the first.

       Row height is the one thing that MUST move. A span-2 piece is a third of the width at
       6 columns and a half at 4, so holding 8.6vw would squash every tile by the same ~1.5x
       the columns grew. 12.9vw restores the ratio (0.5 / (0.33 / 0.086)); the clamp bounds are
       set outside the band's own range so they never bind inside it, and exist only to stop an
       extreme zoom or a narrow embed from producing a 40px or a 300px row. ---- */
    @media screen and (max-width: 1099px) {
      .bokja-gallery__grid {
        grid-template-columns: repeat(4, 1fr);
        grid-auto-rows: clamp(90px, 12.9vw, 145px);
      }
    }

    .bokja-gallery__name {
      display: block;
      position: absolute;
      inset-inline-start: var(--bokja-gap, 10px);
      inset-block-end: var(--bokja-gap, 10px);
      max-inline-size: calc(100% - (2 * var(--bokja-gap, 10px)));
      /* Enlarged-text fix (2026-08-09): narrow pieces are ~109px wide with
         overflow hidden, so at 150% text a name like "Art Installation" was
         clipped when the label appeared on hover or keyboard focus. The
         accessible name was always intact; this repairs the visible one. */
      overflow-wrap: anywhere;
      hyphens: auto;
      padding: 7px 10px;
      background: var(--bokja-background, #fbfbf6);
      color: var(--color-foreground, #1a1a1a);
      font-size: var(--bt-label);
      letter-spacing: 0.02em;
      line-height: 1.35;
      opacity: 0;
      transition: opacity 140ms ease;
      pointer-events: none;
    }
    .bokja-gallery__piece:focus-visible .bokja-gallery__name { opacity: 1; }
  }

  /* Pointer devices only: a touch tap must not leave a label stuck on the tile it opened. */
  @media screen and (min-width: 750px) and (hover: hover) and (pointer: fine) {
    .bokja-gallery__piece:hover .bokja-gallery__name { opacity: 1; }
  }

  /* ---- The piece drawer ---- */
  .bokja-gal-drawer { padding-block-end: var(--padding-2xl, 24px); }

  /* The shared shell's close button is position:fixed at the panel's top corner, so a long
     two-part piece name ("Tapestry · How Do Things Travel") runs under the X. Reserve the
     corner. Scoped to the gallery drawers with :has() so no other drawer shifts. */
  .fabric-drawer__dialog:has(.bokja-gal-drawer) .fabric-drawer__heading {
    padding-inline-end: 44px;
  }

  .bokja-gal-drawer__viewer { position: relative; }

  /* Native scroll-snap: swipe on touch, arrows/keyboard on desktop, no carousel script. */
  .bokja-gal-drawer__track {
    display: flex;
    margin: 0;
    padding: 0;
    list-style: none;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    overscroll-behavior-inline: contain;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .bokja-gal-drawer__track::-webkit-scrollbar { display: none; }
  .bokja-gal-drawer__track:focus-visible { outline: 2px solid var(--color-foreground); outline-offset: -2px; }

  /* Every slide is the same 4:5 box, so the track's height does not jump between a portrait
     and a taller shot (an auto-height track sizes to the TALLEST slide and leaves dead space
     under the shorter ones). The photo is CONTAINED in that box, letterboxed on the off-white
     ground — the same call the PDP fabric drawer makes: show the whole piece, crop nothing. */
  .bokja-gal-drawer__slide {
    flex: 0 0 100%;
    margin: 0;
    aspect-ratio: 4 / 5;
    scroll-snap-align: center;
  }
  .bokja-gal-drawer__img {
    display: block;
    inline-size: 100%;
    block-size: 100%;
    object-fit: contain;
  }

  .bokja-gal-drawer__nav {
    position: absolute;
    inset-block: 0;
    inset-inline: 0;
    display: flex;
    justify-content: space-between;
    pointer-events: none;
  }
  .bokja-gal-drawer__arrow {
    pointer-events: auto;
    inline-size: 46px;
    min-block-size: 46px;
    align-self: center;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    cursor: pointer;
    position: relative;
  }
  .bokja-gal-drawer__arrow::before {
    content: '';
    position: absolute;
    inset-block-start: 50%;
    inset-inline-start: 50%;
    inline-size: 9px;
    block-size: 9px;
    border-inline-end: 1.4px solid var(--color-foreground, #1a1a1a);
    border-block-start: 1.4px solid var(--color-foreground, #1a1a1a);
    opacity: 0.62;
    transition: opacity 140ms ease;
  }
  .bokja-gal-drawer__arrow--next::before { transform: translate(-50%, -50%) rotate(45deg); }
  .bokja-gal-drawer__arrow--prev::before { transform: translate(-50%, -50%) rotate(-135deg); }
  [dir='rtl'] .bokja-gal-drawer__arrow--next::before { transform: translate(-50%, -50%) rotate(-135deg); }
  [dir='rtl'] .bokja-gal-drawer__arrow--prev::before { transform: translate(-50%, -50%) rotate(45deg); }
  .bokja-gal-drawer__arrow:hover::before,
  .bokja-gal-drawer__arrow:focus-visible::before { opacity: 1; }

  .bokja-gal-drawer__count {
    margin: 10px 0 0;
    text-align: center;
    font-size: var(--bt-label);
    letter-spacing: 0.14em;
    opacity: 0.5;
    color: var(--color-foreground, #1a1a1a);
  }

  .bokja-gal-drawer__story {
    padding: var(--padding-xl, 20px) var(--padding-xl, 20px) 0;
    font-size: var(--bt-body);
    line-height: 1.7;
    color: var(--color-foreground, #1a1a1a);
  }
  .bokja-gal-drawer__story > :first-child { margin-block-start: 0; }
  .bokja-gal-drawer__story > :last-child { margin-block-end: 0; }

  .bokja-gal-drawer__note {
    margin: var(--padding-xl, 20px) 0 0;
    padding-inline: var(--padding-xl, 20px);
    font-size: var(--bt-label);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    opacity: 0.5;
    color: var(--color-foreground, #1a1a1a);
  }

  @media screen and (min-width: 750px) {
    .bokja-gal-drawer__story { padding-inline: var(--padding-2xl, 24px); }
    .bokja-gal-drawer__note { padding-inline: var(--padding-2xl, 24px); }
  }
/* END_SECTION:bokja-gallery */

/* START_SECTION:bokja-gateway (INDEX:15) */
.bokja-gateway {
    display: flex;
    justify-content: center;
    /* Near-full-bleed per the V1 homepage mock: ~30px side margins at desktop,
       panels stretch the full line instead of capping at 1440px. No top padding:
       the panels sit directly under the header (which carries its own 18px bottom
       padding), so the menu row isn't separated from the images by a large gap. */
    padding: 0 var(--bokja-edge) 0;
    background: var(--color-background);
  }
  .bokja-gateway__panels {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    gap: var(--bokja-gap);
    width: 100%;
    margin-inline: auto;
  }
  .bokja-gateway__panel {
    position: relative;
    flex: 1 1 0;
    aspect-ratio: 4 / 5;
    min-width: 0;
    max-width: none;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    overflow: hidden;
    text-decoration: none;
  }
  .bokja-gateway__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
  .bokja-gateway__img--ph {
    background: #c7bfb0;
  }
  .bokja-gateway__panel:nth-child(1) .bokja-gateway__img--ph {
    background: #c3baa8;
  }
  .bokja-gateway__panel:nth-child(2) .bokja-gateway__img--ph {
    background: #d0c8b9;
  }
  .bokja-gateway__panel:nth-child(3) .bokja-gateway__img--ph {
    background: #b9b0a0;
  }
  .bokja-gateway__cap {
    position: relative;
    z-index: 2;
    text-align: center;
    color: #ffffff;
    padding: 0 24px 10%;
    opacity: 0;
    transition: opacity 0.35s ease;
  }
  .bokja-gateway__panel:hover .bokja-gateway__cap,
  .bokja-gateway__panel:focus-visible .bokja-gateway__cap {
    opacity: 1;
  }
  /* The ready-to-wear photography sits on a near-white studio ground, so the
     white caption is illegible there: this panel captions in the house black,
     shadows off (a dark glow under dark text reads as mud). */
  .bokja-gateway__panel--rtw .bokja-gateway__cap {
    color: #1a1a1a;
  }
  .bokja-gateway__panel--rtw .bokja-gateway__name,
  .bokja-gateway__panel--rtw .bokja-gateway__sub,
  .bokja-gateway__panel--rtw .bokja-gateway__enter {
    text-shadow: none;
  }
  .bokja-gateway__name {
    display: block;
    font-weight: 500;
    font-size: var(--bt-h2);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    text-shadow: 0 1px 20px rgba(0, 0, 0, 0.5);
  }
  .bokja-gateway__sub {
    display: block;
    margin-top: 10px;
    font-size: var(--bt-label);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    opacity: 0.88;
    text-shadow: 0 1px 16px rgba(0, 0, 0, 0.5);
  }
  .bokja-gateway__enter {
    display: inline-block;
    margin-top: 16px;
    font-size: var(--bt-micro);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    opacity: 0;
    transform: translateY(6px);
    transition: opacity 0.3s ease, transform 0.3s ease;
    text-shadow: 0 1px 16px rgba(0, 0, 0, 0.5);
  }
  .bokja-gateway__panel:hover .bokja-gateway__enter {
    opacity: 0.95;
    transform: translateY(0);
  }
  @media screen and (max-width: 749px) {
    .bokja-gateway {
      /* Side borders as thin as the panel gap (James 2026-08-06 second pass). */
      padding: clamp(12px, 3vw, 18px) var(--bokja-gap) 0;
    }
    .bokja-gateway__panels {
      gap: var(--bokja-gap);
      height: calc(100svh - 74px);
      min-height: 560px;
    }
    .bokja-gateway__panel {
      height: 100%;
      max-width: none;
      aspect-ratio: auto;
    }
    /* Vertical strips: label rotated to read up the strip, always visible. */
    .bokja-gateway__cap {
      position: absolute;
      top: 50%;
      left: 50%;
      padding: 0;
      opacity: 1;
      white-space: nowrap;
      transform: translate(-50%, -50%) rotate(-90deg);
      transform-origin: center;
    }
    html[dir='rtl'] .bokja-gateway__cap {
      transform: translate(-50%, -50%) rotate(90deg);
    }
    .bokja-gateway__name {
      font-size: var(--bt-h3);
      letter-spacing: 0.22em;
    }
    .bokja-gateway__sub,
    .bokja-gateway__enter {
      display: none;
    }
  }
/* END_SECTION:bokja-gateway */

/* START_SECTION:bokja-header (INDEX:16) */
.bokja-nav {
    position: sticky;
    top: 0;
    /* Above the PDP/collection sticky category trail (z-index 29): the inline-search results panel
       lives inside this header, so the header's stacking context must clear the trail or the trail
       pokes through the top of the open panel (James, 2026-06-17). */
    z-index: 31;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px var(--bokja-edge, 28px); /* one edge token everywhere (James 2026-08-06) */
    background: var(--color-background);
  }
  /* Lead group: the wordmark and, on the homepage, the cascade words sit together on the
     inline-start (Arket places the departments under the logo, left-aligned). On every other
     template the lead holds only the logo, so the bar is unchanged there. */
  .bokja-nav__lead {
    display: flex;
    align-items: center;
    gap: clamp(18px, 2.6vw, 38px);
    min-width: 0;
  }
  .bokja-nav__logo {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    text-decoration: none;
    color: inherit;
    flex: 0 0 auto;
  }
  .bokja-nav__logo-img {
    height: 29px;
    width: auto;
    display: block;
  }
  .bokja-nav__logo-img--arabic-lettering { height: 32px; }
  .bokja-nav__wordmark {
    display: none;
    font-family: 'Marcellus', serif;
    font-size: 32px;
    font-weight: 400;
    line-height: 29px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    white-space: nowrap;
  }
  @media screen and (min-width: 750px) {
    .bokja-nav__wordmark { display: block; }
    .bokja-nav__logo--lockup:not(.bokja-nav__logo--lockup-ar) .bokja-nav__logo-picture { display: none; } /* Arabic desktop keeps its SVG wordmark */
  }
  .bokja-nav__since {
    font-size: var(--bt-micro);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.5;
    font-weight: 400;
    margin-inline-start: 6px;
  }
  .bokja-nav__mark-link {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .bokja-nav__mark {
    height: 33.22px;
    width: auto;
    display: block;
  }
  /* Homepage (cascade) variant: a TWO-ROW header. Row 1 = wordmark (inline-start) + the centred
     birds mark + the utilities (inline-end); row 2 = the cascade section words, full width,
     left-aligned at the page gutter (roughly where the collection filter strip sits). Every other
     template keeps the single-row bar; the mark stays centred there too. */
  @media screen and (min-width: 750px) {
    .bokja-nav--mega {
      display: grid;
      grid-template-columns: 1fr auto;
      grid-template-rows: auto auto;
      align-items: center;
      row-gap: clamp(8px, 1.1vw, 16px);
      column-gap: 16px;
    }
    .bokja-nav--mega .bokja-nav__lead { grid-column: 1; grid-row: 1; }
    .bokja-nav--mega .bokja-nav__right { grid-column: 2; grid-row: 1; justify-self: end; }
    /* The centred birds mark sits in row 1, horizontally centred between the wordmark and the
       utilities (placed in the grid rather than absolutely, so it never overlaps the menu row). */
    .bokja-nav--mega .bokja-nav__mark-link {
      position: static;
      grid-column: 1 / -1;
      grid-row: 1;
      justify-self: center;
      align-self: center;
      inset: auto;
      transform: none;
    }
    /* Row 2: the cascade spans both columns and sits at the inline-start gutter (the header's own
       28px padding does the aligning, so the first word lines up under the wordmark / with the
       collection filter strip). */
    .bokja-nav--mega .bokja-mega { grid-column: 1 / -1; grid-row: 2; }
  }
  .bokja-nav__right {
    display: flex;
    align-items: center;
    gap: 20px;
  }
  .bokja-nav__menu {
    display: flex;
    gap: 22px;
    /* Push "The Collective" off the search box: it had a big void on its left (to the centred mark)
       but sat tight against the utilities. This balances it (James 2026-06-17). */
    margin-inline-end: clamp(20px, 3vw, 56px);
  }
  .bokja-nav__menu a {
    font-size: var(--bt-nav);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--color-foreground);
    font-weight: 500;
    text-decoration: none;
  }
  /* Search icon: same quiet weight as the cart/locale icons. Opens the predictive-search overlay. */
  .bokja-nav__search {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    min-height: 18px;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    color: var(--color-foreground);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  .bokja-nav__search .svg-wrapper { display: inline-flex; inline-size: 17px; block-size: 17px; }
  .bokja-nav__search svg { inline-size: 100%; block-size: 100%; display: block; }
  .bokja-nav__search:focus { outline: none; }
  .bokja-nav__search:focus-visible { outline: 2px solid var(--color-foreground); outline-offset: 2px; }

  /* The cart trigger lives inside <cart-drawer-component class="cart-drawer">, which computes
     display:block - so the trigger pinned to the wrapper's top and sat ~3px above the account /
     wishlist icons. Make the header instance a centring flex so the bag aligns on the icon line. */
  .bokja-nav__right .cart-drawer {
    display: inline-flex;
    align-items: center;
  }
  .bokja-nav__cart {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    min-width: 21px;
    min-height: 21px;
    color: var(--color-foreground);
    font-size: var(--bt-micro);
    line-height: 1;
    letter-spacing: 0;
    text-decoration: none;
  }
  /* HEADER UTILITY ICON SIZE — one number, three icons (James, 2026-08-13: the person icon
     "seems very small"). All three boxes were 18px, so the whole set went up ~17% to 21px
     rather than the person alone, which would have left the row uneven. The phone loupe in
     bokja-search-inline moved with them (its own comment binds it to these two), and the
     phone gap clamp below was RE-DERIVED for the wider row. */
  .bokja-nav__cart-icon {
    display: inline-flex;
    width: 21px;
    height: 21px;
  }
  .bokja-nav__cart-icon svg {
    display: block;
    width: 100%;
    height: 100%;
  }
  .bokja-nav__cart-count {
    display: inline-block;
    min-width: 1ch;
    font-size: var(--bt-micro);
    line-height: 1;
    text-align: end;
  }

  /* Account + wishlist utilities (Arket order: account, wishlist, cart). Quiet line icons matching
     the cart's weight; the wishlist count sits inline like the cart count, hidden when empty.

     ACCOUNT ICON SHRANK TO A DOT (James, 2026-08-13: "totally invisible"; fixed the same day).
     The person icon was NOT too small — it was being CRUSHED. The button carried `button-unstyled`,
     and the only property of that base.css class the section rules here do not already override is
     `overflow: hidden`. On a flex item, overflow other than visible makes the automatic minimum size
     `min-width: auto` resolve to ZERO instead of the content minimum — so the account button was the
     one item in this row that could shrink below its 21px box, and it absorbed the row's entire
     over-constraint. Measured on preview 188315402568 before the fix: button 12.7px wide at 1440w,
     4.3px at 645w, 5.4px at 375w, with the head circle down to 1.29px — the faint dot on screen. The
     svg is untouched and was never the problem: viewBox "0 0 24 24" with the default
     preserveAspectRatio simply scales the whole drawing into whatever box it is given. The wishlist
     heart, byte-for-byte the same construction in a bare <button>, held 21px throughout, which is
     the control that isolates the class.
     Two halves, both geometry: the class is gone from the markup (the resets below are all it was
     giving), and the boxes are now explicitly inflexible, so no future class or added utility can
     shrink an icon again. The row's slack comes from the search field, which is built to flex.
     This also makes the phone gap arithmetic below TRUE — it already assumed a 21px account box. */
  .bokja-nav__account,
  .bokja-nav__wish {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    gap: 4px;
    padding: 0;
    border: 0;
    background: none;
    cursor: pointer;
    color: var(--color-foreground);
    text-decoration: none;
    font: inherit;
  }
  .bokja-nav__util-icon {
    display: inline-flex;
    flex: 0 0 auto;
    width: 21px;
    height: 21px;
  }
  .bokja-nav__util-icon svg { display: block; width: 100%; height: 100%; }
  .bokja-nav__wish-count {
    font-size: var(--bt-micro);
    line-height: 1;
    min-width: 1ch;
  }
  .bokja-nav__wish-count[hidden] { display: none; }
  /* Compact phone-only locale control: shows the CURRENT language + currency and opens the
     slide-up sheet. Hidden on desktop, where the inline switchers below are used instead. */
  .bokja-nav__locale {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    font-family: inherit;
    font-size: var(--bt-nav);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    line-height: 1;
    color: var(--color-foreground);
    cursor: pointer;
  }
  .bokja-nav__locale-cur { font-size: var(--bt-nav); }
  .bokja-nav__locale-sep { opacity: 0.4; }
  /* The inline desktop switchers are retired in favour of the EN/€ pill + slide-in drawer (same as
     the right-hand cart/wishlist), which frees the bar at intermediate widths. They still render
     inside the drawer (lang_buttons / cur_buttons are dropped into both). */
  .bokja-nav__lang,
  .bokja-nav__cur {
    display: none;
    gap: 8px;
    align-items: center;
    margin: 0;
    padding-inline-start: 18px;
    border-inline-start: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.14));
  }
  .bokja-nav__lang button,
  .bokja-nav__lang a,
  .bokja-nav__cur button {
    background: none;
    border: none;
    font-family: inherit;
    font-size: var(--bt-label);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-foreground);
    opacity: 0.5;
    cursor: pointer;
    padding: 0;
    transition: opacity 160ms;
  }
  .bokja-nav__lang a {
    text-decoration: none;
  }
  .bokja-nav__cur button {
    font-size: var(--bt-nav);
    letter-spacing: 0;
  }
  .bokja-nav__lang button:hover,
  .bokja-nav__lang a:hover,
  .bokja-nav__cur button:hover {
    opacity: 0.8;
  }
  .bokja-nav__lang button.is-active,
  .bokja-nav__lang a.is-active,
  .bokja-nav__cur button.is-active {
    opacity: 1;
    text-decoration: underline;
    text-underline-offset: 3px;
  }
  @media screen and (max-width: 749px) {
    .bokja-nav {
      /* Side padding on the shared edge token: the logo sat at 18px while the trail
         and breadcrumb sat at the 14px token - the 4px mobile misalignment caught by
         the 2026-08-06 layout audit. */
      padding: 14px var(--bokja-edge, 14px);
    }
    .bokja-nav__menu {
      display: none;
    }
    /* The full inline switchers are replaced by the compact pill + slide-up sheet on phones,
       which is what was crowding the bar over the centred mark. */
    .bokja-nav__cur,
    .bokja-nav__lang {
      display: none;
    }
    .bokja-nav__locale {
      display: inline-flex;
    }
    /* EVEN SPACING AROUND THE CENTRED MARK (James's ruling, 2026-08-08). The birds mark is
       absolutely centred and the utilities are flush to the inline-end, so on a fixed gap EVERY
       pixel of viewport growth lands in the ONE gap between the mark and the loupe, and every
       pixel lost is taken out of that same gap: at 375w it had gone negative and the loupe box
       sat 5.6px over the mark (1.2px of visible ink). The mark does not move; the row squeezes.
       Half the viewport growth is shared by the five gaps that follow the mark (mark to loupe,
       then loupe / account / wishlist / locale / bag), which is 0.1px per px of viewport = 10vw.
       The constant is set by today's five utility boxes inside the 14px edge token, so RE-DERIVE
       it if a utility is added or the locale pill grows (a second enabled currency turns "EN"
       into "EN / EUR"). The 8px floor keeps 320px phones off the mark; the 20px ceiling is the
       desktop value, so the two meet at the breakpoint.
       RE-DERIVED 2026-08-13 for the bigger icons: the boxes went 18 + 18 + 18 + 19.7 + 20 = 93.7px
       to 21 + 21 + 21 + 19.7 + 21 = 103.7px, and the constant is (36.3 + boxes) / 5, so 26 -> 28.
       Measured ink-to-ink gaps at the OLD sizes, empty cart: 375w 16.8 / 18.3 / 17.3 / 13.7 / 16.9,
       390w 18.3 / 19.8 / 18.8 / 15.2 / 18.4, 430w 22.3 / 23.8 / 22.8 / 19.2 / 22.4. The re-derived
       constant holds those gaps; re-measure on a phone before treating them as current. */
    .bokja-nav__right {
      gap: clamp(8px, 10vw - 28px, 20px);
    }
    /* Phone touch targets, same trick the loupe already uses (bokja-search-inline): a 39px
       hit area from a pseudo-element, so the utilities row keeps its 21px layout boxes and
       the gap arithmetic above stays true. */
    .bokja-nav__account,
    .bokja-nav__wish,
    .bokja-nav__cart--trigger {
      position: relative;
    }
    .bokja-nav__account::after,
    .bokja-nav__wish::after,
    .bokja-nav__cart--trigger::after {
      content: '';
      position: absolute;
      inset: -9px;
    }
    /* Right cluster on phones: the locale pill then the basket (the burger now sits on the
       inline-start, beside the logo, like Arket). */
    .bokja-nav__locale { order: 1; }
    .cart-drawer,
    .bokja-nav__cart { order: 2; }
    .bokja-nav__cart {
      min-width: 21px;
      min-height: 21px;
      /* A NON-EMPTY cart is the binding case for the squeeze above: the count bubble carries its
         own 4px inline-start margin (bokja-custom.css) on top of this 5px gap, and the pair widened
         the row by 18.1px at 375w, which is more than the whole clearance the mark had won. 3px and
         no margin still reads as bag-then-number and leaves the mark clear at every phone width. */
      gap: 3px;
    }
    .bokja-nav__cart .cart-bubble {
      margin-inline-start: 0;
    }
    .bokja-nav__since {
      display: none;
    }
    .bokja-nav__mark {
      height: 26.4px;
    }
    .bokja-nav__burger {
      display: inline-flex;
      flex-direction: column;
      justify-content: center;
      gap: 4px;
      inline-size: 20px;
      block-size: 15px;
      padding: 0;
      border: 0;
      background: none;
      color: var(--color-foreground);
      cursor: pointer;
      -webkit-tap-highlight-color: transparent;
    }
    .bokja-nav__burger span {
      display: block;
      inline-size: 100%;
      block-size: 1.5px;
      background: currentColor;
    }
  }

  /* --- Mobile menu (the hamburger slide-out). Phones only; the desktop inline nav is
     untouched. Fills the gap where .bokja-nav__menu was simply display:none on mobile.
     The hide is scoped to desktop: an unconditional display:none here sat LATER in source
     than the max-width:749px show rule and beat it, hiding the burger on phones too. --- */
  @media screen and (min-width: 750px) {
    .bokja-nav__burger { display: none; }
  }

  .bokja-menu {
    margin: 0;
    padding: 0;
    border: 0;
    max-inline-size: none;
    max-block-size: none;
    position: fixed;
    inset-block: 0;
    inset-inline-start: 0;
    inset-inline-end: auto;
    inline-size: 50vw;
    block-size: 100%;
    background: var(--color-background);
    color: var(--color-foreground);
    border-inline-end: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.14));
    overflow-y: auto;
  }
  .bokja-menu::backdrop { background: rgba(26, 26, 26, 0.28); }
  .bokja-menu[open] { animation: bokjaMenuIn 260ms ease; }
  [dir='rtl'] .bokja-menu[open] { animation: bokjaMenuInRtl 260ms ease; }
  /* Slides in from the inline-start (left), like Arket. */
  @keyframes bokjaMenuIn { from { transform: translateX(-100%); } to { transform: translateX(0); } }
  @keyframes bokjaMenuInRtl { from { transform: translateX(100%); } to { transform: translateX(0); } }
  @media (prefers-reduced-motion: reduce) { .bokja-menu[open] { animation: none; } }

  .bokja-menu__inner {
    display: flex;
    flex-direction: column;
    min-block-size: 100%;
    padding: 18px;
  }
  /* It receives focus on open (so the close X never paints its outline box); show nothing for it. */
  .bokja-menu__inner:focus,
  .bokja-menu__inner:focus-visible { outline: none; }
  .bokja-menu__close {
    align-self: flex-end;
    inline-size: 44px;
    block-size: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-block-end: 6px;
    padding: 0;
    /* No native button chrome — just the X. (appearance:auto draws a faint box on iOS even with
       border:0/background:none.) */
    appearance: none;
    -webkit-appearance: none;
    border: 0;
    background: none;
    color: var(--color-foreground);
    cursor: pointer;
    /* The dialog autofocuses the close button on open, which drew a focus box around the X,
       and iOS adds a tap-highlight box on touch. Suppress both; keyboard users keep a ring
       via :focus-visible below. */
    -webkit-tap-highlight-color: transparent;
  }
  .bokja-menu__close:focus { outline: none; }
  .bokja-menu__close:focus-visible { outline: 2px solid var(--color-foreground); outline-offset: 2px; }
  .bokja-menu__close .svg-wrapper {
    display: inline-flex;
    inline-size: 15px;
    block-size: 15px;
  }
  .bokja-menu__nav {
    display: flex;
    flex-direction: column;
    gap: 26px;
    margin-block-start: 22px;
  }
  .bokja-menu__nav a {
    font-size: var(--bt-nav);
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--color-foreground);
    text-decoration: none;
    font-weight: 500;
  }

  /* Desktop never opens the menu (the inline nav is the navigation there); keep it hidden
     so a resize while open can't leave a phone drawer on a wide screen. */
  @media screen and (min-width: 750px) {
    .bokja-menu { display: none; }
  }

  /* --- Language + currency slide-up sheet (phones). The header pill opens it; it slides up
     from the bottom edge, the same family as the cart and fabric drawers. Hidden on desktop,
     where the inline switchers are used. --- */
  .bokja-locale-sheet {
    margin: 0;
    padding: 0;
    border: 0;
    position: fixed;
    inset-block: 0;
    inset-inline-end: 0;
    inset-inline-start: auto;
    inline-size: min(340px, 88vw);
    max-inline-size: 88vw;
    block-size: 100%;
    max-block-size: 100dvh;
    background: var(--color-background);
    color: var(--color-foreground);
    border-inline-start: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.14));
    box-shadow: 0 0 50px -24px rgba(26, 26, 26, 0.4);
    overflow-y: auto;
    overscroll-behavior: contain;   /* don't let a scroll over the drawer chain to the page behind */
  }
  .bokja-locale-sheet::backdrop { background: rgba(26, 26, 26, 0.28); }
  .bokja-locale-sheet[open] { animation: bokjaSheetIn 260ms ease; }
  @keyframes bokjaSheetIn { from { transform: translateX(100%); } to { transform: translateX(0); } }
  /* RTL: the drawer sits on the LEFT (logical inset-inline-end flips), so it slides in from the left. */
  [dir='rtl'] .bokja-locale-sheet {
    border-inline-start: 0;
    border-inline-end: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.14));
  }
  [dir='rtl'] .bokja-locale-sheet[open] { animation: bokjaSheetInRtl 260ms ease; }
  @keyframes bokjaSheetInRtl { from { transform: translateX(-100%); } to { transform: translateX(0); } }
  @media (prefers-reduced-motion: reduce) { .bokja-locale-sheet[open] { animation: none; } }

  .bokja-locale-sheet__inner {
    display: flex;
    flex-direction: column;
    padding: 16px 22px 30px;
  }
  .bokja-locale-sheet__close {
    align-self: flex-end;
    inline-size: 40px;
    block-size: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0;
    background: none;
    color: var(--color-foreground);
    cursor: pointer;
  }
  .bokja-locale-sheet__close .svg-wrapper {
    display: inline-flex;
    inline-size: 15px;
    block-size: 15px;
  }
  .bokja-locale-sheet__section + .bokja-locale-sheet__section { margin-block-start: 24px; }
  .bokja-locale-sheet__heading {
    margin: 0 0 8px;
    font-size: var(--bt-label);
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    opacity: 0.5;
  }
  .bokja-locale-sheet__list {
    display: flex;
    flex-direction: column;
    margin: 0;
  }
  .bokja-locale-sheet__list button,
  .bokja-locale-sheet__list a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    inline-size: 100%;
    margin: 0;
    padding: 13px 2px;
    background: none;
    border: 0;
    border-block-end: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.1));
    font-family: inherit;
    font-size: var(--bt-nav);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-foreground);
    text-decoration: none;
    cursor: pointer;
  }
  .bokja-locale-sheet__list button.is-active,
  .bokja-locale-sheet__list a.is-active { font-weight: 600; }
  .bokja-locale-sheet__list button.is-active::after,
  .bokja-locale-sheet__list a.is-active::after {
    content: '\2713';            /* ✓ */
    margin-inline-start: auto;
    opacity: 0.7;
  }

  /* The locale drawer is now used on desktop too (the EN/€ pill opens it), so it must NOT be hidden
     at >=750px - that left it display:none even when [open], so clicking did nothing. The <dialog>
     UA rule already hides it while closed. (James, 2026-06-17.) */
/* END_SECTION:bokja-header */

/* START_SECTION:bokja-home-split (INDEX:17) */
.bokja-split {
    position: relative;
    width: 100%;
    margin: 0;
    background: var(--bokja-split-panel, #000);
    color: #ffffff;
  }
  .bokja-split__track {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
  .bokja-split__media-link { position: absolute; inset: 0; display: block; }
  /* Banner mode: each cell shows its own half of the one wide image (the cell is exactly half the image's
     width at the image's height, so cover + left / right is an exact split, not a crop). */
  .bokja-split__img.bokja-split__img--left { object-position: left center; }
  .bokja-split__img.bokja-split__img--right { object-position: right center; z-index: 0; }
  .bokja-split__panel--banner { position: relative; }
  .bokja-split__panel--banner > :not(.bokja-split__img) { position: relative; z-index: 1; }
  .bokja-split__dots { display: none; }
  /* A true half each. The painting cell is as tall as the whole image at half the width, capped to
     the first screen; the image is contained, never cropped, and on short screens the panel colour
     (sampled from the painting's own ground) shows above and below it. */
  /* A proper half: the painting cell is exactly the image at half the width (James 2026-09-22, "it should
     really fill the screen"), so the painting fills it edge to edge with nothing cropped and no bands. */
  .bokja-split__media {
    position: relative;
    height: calc(50vw / var(--bokja-split-ratio, 0.8));
    background: var(--bokja-split-panel, #000);
  }
  .bokja-split__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
  }
  /* Text block sits above centre: centred in the cell, then the cell's bottom padding pushes it up. */
  .bokja-split__panel {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: clamp(32px, 5vw, 80px);
    padding-block-end: 22%;
  }
  .bokja-split__title {
    margin: 0;
    font-family: 'Marcellus', Georgia, serif;
    font-weight: 400;
    font-size: max(22px, calc(var(--bokja-split-title-size, 26) * 100vw / 1440));
    line-height: 1;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #ffffff;
  }
  .bokja-split__title--arabic { letter-spacing: normal; text-transform: none; }
  .bokja-split__arabic-lettering { display: block; block-size: 1.15em; inline-size: auto; max-inline-size: 100%; }
  /* Description in a painter's hand (James: "a more flowery handwriting, as if a painter wrote it"):
     a self-hosted OFL script, sized up because a script needs the room; skinnier block. */
  .bokja-split__copy {
    margin: clamp(14px, 1.6vw, 28px) 0 0;
    max-inline-size: min(340px, 86%);
    font-family: 'Bokja Script', 'Marcellus', Georgia, serif;
    font-weight: 400;
    font-size: max(20px, calc(25 * 100vw / 1440));
    line-height: 1.3;
    letter-spacing: 0;
    text-align: center;
    hyphens: manual;
    color: #ffffff;
  }
  .bokja-split__cta {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-block-start: clamp(20px, 2.2vw, 36px);
    font-family: 'Marcellus', Georgia, serif;
    font-size: max(11px, calc(12 * 100vw / 1440));
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: #ffffff;
  }
  .bokja-split__arrow { font-family: Georgia, serif; font-size: 1.15em; line-height: 1; letter-spacing: 0; }
  /* Under the header: PORTED VERBATIM from bokja-home-video.liquid (2026-09-22, James: "have we lost the transparent
     menu?"). Same body / header hooks, so whichever hero section is on the page drives the same band.
     Original note (2026-09-18, James, banner preview): on desktop the hero starts at the very top of the
     page and the sticky header sits over it as a half-transparent bar of the page background, so the still
     gains the header's height and reads bigger. The header height is measured by the JS below into
     --bokja-header-height (other sections already read that token with fallbacks). Phones are untouched:
     James is making a separate mobile version. */
  @media screen and (min-width: 750px) {
    /* Under-header model v3 (James 2026-09-18, after seeing v2): the announcement strip and the header's
       TOP ROW (wordmark, birds, search, icons) stay on the page white; only the MENU ROW (Homeware, Ready
       to Wear, The Collective) sits over the banner, on a frosted half-transparent band, and the banner
       is pulled up by exactly that band. The band height is measured by the JS below into
       --bokja-mega-band (nav bottom minus the menu row's top, plus a little air). !important where the
       rule fights bokja-custom.css, which styles #header-group by ID and header.bokja-nav by element. */
    body.bokja-under-header #header-group {
      background: transparent !important;
      margin-bottom: calc(-1 * var(--bokja-mega-band, 44px));
      /* bokja-custom.css gives the group will-change: opacity (Safari scroll-tear guard, 2026-08-07). That
         makes the group a backdrop root, so the frosted band and panel could only blur the group's own
         (transparent) content: translucent, never out of focus. Proven in a headless render 2026-09-18.
         The guard's other half, the opaque background, is off here by design anyway. Watch Safari. */
      will-change: auto !important;
    }
    body.bokja-under-header header.bokja-nav.bokja-nav--over-hero {
      background: linear-gradient(var(--bokja-background, var(--color-background)), var(--bokja-background, var(--color-background))) top / 100% calc(100% - var(--bokja-mega-band, 44px)) no-repeat !important;
    }
    .bokja-nav.bokja-nav--over-hero::after {
      content: '';
      position: absolute;
      left: 0; right: 0; bottom: 0;
      height: var(--bokja-mega-band, 44px);
      z-index: -1;
      pointer-events: none;
      /* One continuous frost (James 2026-09-18, "the header and the menu act as separate elements; the
         snap to white"): the band runs from the top row's solid white into the frost over its first 45
         percent, so there is no hard edge between the two rows, and alpha / blur are scroll-driven tokens
         (--bokja-frost-a .65 to 1, --bokja-frost-blur 10px to 0 across the first 140px of scroll, set by
         the JS below), so it fades to white instead of snapping. The drawers share the same tokens. */
      background: linear-gradient(to bottom,
        rgba(253, 253, 251, 1) 0,
        rgba(253, 253, 251, var(--bokja-frost-a, 0.65)) 45%,
        rgba(253, 253, 251, var(--bokja-frost-a, 0.65)) 100%);
      -webkit-backdrop-filter: blur(var(--bokja-frost-blur, 10px));
      backdrop-filter: blur(var(--bokja-frost-blur, 10px));
    }
    /* While the burger drawer is open it covers the header too; the band steps aside so the drawer's
       frost is the only layer over the banner (two stacked frosts read as a darker patch, James). */
    body:has(.bokja-menu[open]) .bokja-nav.bokja-nav--over-hero::after {
      background: transparent;
      -webkit-backdrop-filter: none;
      backdrop-filter: none;
    }
    /* The drawers take the SAME frost as the menu band (James: same transparency, no change in colour):
       the burger's dialog (.bokja-menu, 50vw from the left) and the mega-menu hover panel
       (.bokja-mega__panel). Inside the dialog the drill-down panels (.bokja-mega-m__panel) paint their
       own full-size page white, which is what kept the drawer opaque; they go transparent here. The
       dialog's grey veil over the page goes too, so the page keeps its colour behind the frost. */
    body.bokja-under-header .bokja-menu,
    body.bokja-under-header .bokja-mega__panel {
      background: rgba(253, 253, 251, var(--bokja-frost-a, 0.65)) !important;
      -webkit-backdrop-filter: blur(var(--bokja-frost-blur, 10px));
      backdrop-filter: blur(var(--bokja-frost-blur, 10px));
    }
    /* The panel opens at the band's bottom edge (the nav's bottom), never inside the band: one frost, not
       two stacked (the megamenu JS sets --bokja-mega-panel-top to the bar's bottom, 18px higher). */
    /* Attached, not measured (James 2026-09-18, "the drawer stays static and the header goes over or
       under it"): the panel is positioned INSIDE the sticky nav (absolute, top 100 percent) instead of fixed
       to the viewport with a JS-measured top, so it travels with the header by construction in every
       browser. Height reaches the viewport bottom from the nav's bottom edge. */
    body.bokja-under-header .bokja-mega__panel {
      position: absolute !important;
      inset-block-start: 100% !important;
      inset-block-end: auto !important;
      block-size: calc(100svh - var(--bokja-nav-bottom, 155px)) !important;
      max-block-size: calc(100svh - var(--bokja-nav-bottom, 155px));
    }
    body.bokja-under-header .bokja-menu .bokja-mega-m,
    body.bokja-under-header .bokja-menu .bokja-mega-m__stage,
    body.bokja-under-header .bokja-menu .bokja-mega-m__panel { background: transparent !important; }
    body.bokja-under-header .bokja-menu::backdrop { background: transparent; }
  }

  .bokja-split__cta { position: relative; z-index: 4; text-decoration: none; }
  .bokja-split__cta:hover { opacity: 0.75; }
  .bokja-split__link { position: absolute; inset: 0; z-index: 3; display: block; }

  @media screen and (max-width: 749px) {
    /* Two-slide carousel: painting, then the text panel, each a full screen wide, snap on swipe. The
       section-wide link steps aside so the finger reaches the track; the painting and the link line
       carry the link instead. */
    .bokja-split__track {
      display: flex;
      overflow-x: auto;
      overflow-y: hidden;
      scroll-snap-type: x mandatory;
      -webkit-overflow-scrolling: touch;
      overscroll-behavior-x: contain;
      scrollbar-width: none;
    }
    .bokja-split__track::-webkit-scrollbar { display: none; }
    /* Slides fill the screen below the header (James 2026-09-22, "I still have a white bar on the bottom of my
       phone"): height = viewport minus the header group's measured height (--bokja-split-offset from the script
       below, 115px fallback), never shorter than the half image at this width. In that taller box cover
       already shows the full height and trims the sides; on top of that a light zoom and a downward shift
       (James: "push it down a tiny bit more and zoom it in a tiny bit more"). */
    .bokja-split__media,
    .bokja-split__panel {
      flex: 0 0 100%;
      scroll-snap-align: start;
      scroll-snap-stop: always;
      /* Bounded so the framing is the same on every phone: never shorter than the half image at this width, never
         taller than 1.9 x the width (Safari's toolbars shrink svh; without the cap the lady changed size
         between a phone and a preview). */
      height: clamp(calc(100vw / var(--bokja-split-ratio, 0.8)), calc(100svh - var(--bokja-split-offset, 115px)), calc(100vw * 1.9));
      overflow: hidden;
    }
    .bokja-split__panel .bokja-split__img { transform: scale(1.12); transform-origin: center center; }
    /* Painting slide (James 2026-09-22): sized by the screen WIDTH alone (the full image at 290vw, so the lady's
       size no longer depends on the phone's height or its browser bars), her centre (22.5 percent into the
       full image) pinned 8px right of the slide's centre, the whole thing 40px below vertical centre. The
       image is taller than any slide height the clamp allows, so nothing shows behind it. */
    .bokja-split .bokja-split__media .bokja-split__img {
      inset: auto;
      width: 290vw;
      height: auto;
      max-width: none;
      object-fit: unset;
      top: 50%;
      left: calc(50% - 65.25vw + 8px);
      transform: translateY(calc(-50% + 40px));
    }
    /* Text slide (James 2026-09-22): block a little higher and narrower than a full-width column; then "more
       space between the title and the body, the body slightly larger, all the text slightly bigger, and
       Discover the collection significantly lower, halfway between the dots and the bottom of the text
       block": the link line leaves the flow and sits at a fixed height above the dots. */
    .bokja-split__panel { padding: 24px 28px 56px; padding-block-end: 22%; justify-content: center; }
    .bokja-split__title { font-size: 27px; }
    .bokja-split__copy { margin-block-start: 26px; max-inline-size: 86%; font-size: 21px; line-height: 1.3; }
    /* Specificity beats the desktop `.bokja-split__panel--banner > :not(img) { position: relative }` rule. 18.5
       percent from the bottom = the midpoint between the text block's bottom and the dots (measured 459 / 706
       in a 728px slide at 390 x 844). */
    .bokja-split .bokja-split__panel .bokja-split__cta { position: absolute; inset-inline: 0; inset-block-end: 18.5%; justify-content: center; margin: 0; font-size: 12.5px; }
    .bokja-split__link { display: none; }
    .bokja-split__dots {
      position: absolute;
      inset-inline: 0;
      inset-block-end: 16px;
      display: flex;
      justify-content: center;
      gap: 8px;
      pointer-events: none;
    }
    .bokja-split__dot { inline-size: 6px; block-size: 6px; border-radius: 50%; background: rgba(255, 255, 255, 0.4); transition: background 200ms ease; }
    .bokja-split__dot.is-active { background: #ffffff; }
  }
/* END_SECTION:bokja-home-split */

/* START_SECTION:bokja-home-video (INDEX:18) */
.bokja-vhero {
    position: relative;
    width: 100%;
    margin: 0;
    overflow: hidden;
    background: var(--color-background);
    display: flex;
    align-items: flex-end;
    isolation: isolate;
  }
  /* Height presets. svh so mobile browser chrome does not crop the hero. The header is
     sticky and transparent-friendly; we leave a little of the next section showing on
     "tall" so the page invites a scroll (Arket does the same). */
  .bokja-vhero--full { min-height: calc(100svh - var(--bokja-header-height, 62px)); }
  /* 72svh (was 88svh): the first product row must always show below the hero to invite the
     scroll (James 2026-08-06). */
  .bokja-vhero--tall { min-height: min(72svh, 92vw); }
  .bokja-vhero--medium { min-height: min(64svh, 70vw); }
  /* "Banner": the height follows the window WIDTH (a share of it, the setting), capped by the window
     height, so a wide still scales down with the window before the cover-crop takes anything, and the
     crop stays the same proportion at every size (James 2026-09-18). At 36 a 3.08:1 banner shows about
     90 percent of its width; the natural height would be 32.5. */
  .bokja-vhero--banner { min-height: min(calc(var(--bokja-vhero-banner-vw, 36) * 1vw), 64svh); }

  .bokja-vhero__media {
    position: absolute;
    inset: 0;
    z-index: 0;
  }
  .bokja-vhero__poster,
  .bokja-vhero__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
  .bokja-vhero__poster--ph { background: var(--bokja-product-media-background, #efeae1); }
  /* Video sits ON TOP of the poster but stays transparent until it is actually PLAYING, so
     the poster is the visual the whole time the video is loading, missing, blocked or errors.
     It can therefore never leave the hero blank (the fail-open lesson from the gallery). JS
     adds .is-playing on the first frame; with JS off, the poster simply stays. */
  .bokja-vhero__video {
    z-index: 1;
    opacity: 0;
    transition: opacity 600ms ease;
  }
  .bokja-vhero__video.is-playing { opacity: 1; }

  /* Breakpoint-switched sources: desktop shows the landscape master, mobile the portrait cut. */
  .bokja-vhero__video--mobile { display: none; }
  @media screen and (max-width: 749px) {
    .bokja-vhero__video--desktop { display: none; }
    .bokja-vhero__video--mobile { display: block; }
  }

  /* Still fit "natural" (2026-09-18, Flora & Fauna banner): a wide still shown whole, full width, at its own
     aspect ratio; the height presets and the cover-crop do not apply. Meant for a still hero with no video
     and no caption (a caption would sit below the image, not over it). */
  .bokja-vhero--fit-natural { min-height: 0 !important; display: block; }
  .bokja-vhero--fit-natural .bokja-vhero__media { position: relative; inset: auto; }
  .bokja-vhero--fit-natural .bokja-vhero__poster { position: relative; inset: auto; height: auto; object-fit: fill; }

  /* Under the header (2026-09-18, James, banner preview): on desktop the hero starts at the very top of the
     page and the sticky header sits over it as a half-transparent bar of the page background, so the still
     gains the header's height and reads bigger. The header height is measured by the JS below into
     --bokja-header-height (other sections already read that token with fallbacks). Phones are untouched:
     James is making a separate mobile version. */
  @media screen and (min-width: 750px) {
    /* Under-header model v3 (James 2026-09-18, after seeing v2): the announcement strip and the header's
       TOP ROW (wordmark, birds, search, icons) stay on the page white; only the MENU ROW (Homeware, Ready
       to Wear, The Collective) sits over the banner, on a frosted half-transparent band, and the banner
       is pulled up by exactly that band. The band height is measured by the JS below into
       --bokja-mega-band (nav bottom minus the menu row's top, plus a little air). !important where the
       rule fights bokja-custom.css, which styles #header-group by ID and header.bokja-nav by element. */
    body.bokja-under-header #header-group {
      background: transparent !important;
      margin-bottom: calc(-1 * var(--bokja-mega-band, 44px));
      /* bokja-custom.css gives the group will-change: opacity (Safari scroll-tear guard, 2026-08-07). That
         makes the group a backdrop root, so the frosted band and panel could only blur the group's own
         (transparent) content: translucent, never out of focus. Proven in a headless render 2026-09-18.
         The guard's other half, the opaque background, is off here by design anyway. Watch Safari. */
      will-change: auto !important;
    }
    body.bokja-under-header header.bokja-nav.bokja-nav--over-hero {
      background: linear-gradient(var(--bokja-background, var(--color-background)), var(--bokja-background, var(--color-background))) top / 100% calc(100% - var(--bokja-mega-band, 44px)) no-repeat !important;
    }
    .bokja-nav.bokja-nav--over-hero::after {
      content: '';
      position: absolute;
      left: 0; right: 0; bottom: 0;
      height: var(--bokja-mega-band, 44px);
      z-index: -1;
      pointer-events: none;
      /* One continuous frost (James 2026-09-18, "the header and the menu act as separate elements; the
         snap to white"): the band runs from the top row's solid white into the frost over its first 45
         percent, so there is no hard edge between the two rows, and alpha / blur are scroll-driven tokens
         (--bokja-frost-a .65 to 1, --bokja-frost-blur 10px to 0 across the first 140px of scroll, set by
         the JS below), so it fades to white instead of snapping. The drawers share the same tokens. */
      background: linear-gradient(to bottom,
        rgba(253, 253, 251, 1) 0,
        rgba(253, 253, 251, var(--bokja-frost-a, 0.65)) 45%,
        rgba(253, 253, 251, var(--bokja-frost-a, 0.65)) 100%);
      -webkit-backdrop-filter: blur(var(--bokja-frost-blur, 10px));
      backdrop-filter: blur(var(--bokja-frost-blur, 10px));
    }
    /* While the burger drawer is open it covers the header too; the band steps aside so the drawer's
       frost is the only layer over the banner (two stacked frosts read as a darker patch, James). */
    body:has(.bokja-menu[open]) .bokja-nav.bokja-nav--over-hero::after {
      background: transparent;
      -webkit-backdrop-filter: none;
      backdrop-filter: none;
    }
    /* The drawers take the SAME frost as the menu band (James: same transparency, no change in colour):
       the burger's dialog (.bokja-menu, 50vw from the left) and the mega-menu hover panel
       (.bokja-mega__panel). Inside the dialog the drill-down panels (.bokja-mega-m__panel) paint their
       own full-size page white, which is what kept the drawer opaque; they go transparent here. The
       dialog's grey veil over the page goes too, so the page keeps its colour behind the frost. */
    body.bokja-under-header .bokja-menu,
    body.bokja-under-header .bokja-mega__panel {
      background: rgba(253, 253, 251, var(--bokja-frost-a, 0.65)) !important;
      -webkit-backdrop-filter: blur(var(--bokja-frost-blur, 10px));
      backdrop-filter: blur(var(--bokja-frost-blur, 10px));
    }
    /* The panel opens at the band's bottom edge (the nav's bottom), never inside the band: one frost, not
       two stacked (the megamenu JS sets --bokja-mega-panel-top to the bar's bottom, 18px higher). */
    /* Attached, not measured (James 2026-09-18, "the drawer stays static and the header goes over or
       under it"): the panel is positioned INSIDE the sticky nav (absolute, top 100 percent) instead of fixed
       to the viewport with a JS-measured top, so it travels with the header by construction in every
       browser. Height reaches the viewport bottom from the nav's bottom edge. */
    body.bokja-under-header .bokja-mega__panel {
      position: absolute !important;
      inset-block-start: 100% !important;
      inset-block-end: auto !important;
      block-size: calc(100svh - var(--bokja-nav-bottom, 155px)) !important;
      max-block-size: calc(100svh - var(--bokja-nav-bottom, 155px));
    }
    body.bokja-under-header .bokja-menu .bokja-mega-m,
    body.bokja-under-header .bokja-menu .bokja-mega-m__stage,
    body.bokja-under-header .bokja-menu .bokja-mega-m__panel { background: transparent !important; }
    body.bokja-under-header .bokja-menu::backdrop { background: transparent; }
  }

  /* Reduced motion: do not play the loop — keep the video hidden so the still poster stands.
     (Pure CSS, so it holds even if the JS guard does not run.) */
  @media (prefers-reduced-motion: reduce) {
    .bokja-vhero__video { display: none; }
  }

  /* Centred title over the still (James 2026-09-18): Marcellus, capitals, dead centre of the hero box.
     Size is a px value at a 1440 px wide screen and scales with the viewport (22 px floor). */
  .bokja-vhero__text {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    pointer-events: none;
    padding-inline: 24px;
  }
  .bokja-vhero__title {
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-family: 'Marcellus', Georgia, serif;
    font-weight: 400;
    font-size: max(22px, calc(var(--bokja-vhero-title-size, 52) * 100vw / 1440));
    line-height: 1;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-foreground, #1a1a1a);
  }
  /* Title and description follow the caption legibility setting (2026-09-22, black-wall banner):
     light = white words with the house soft shadow, dark = the off-black as before. */
  .bokja-vhero[data-text='light'] .bokja-vhero__title,
  .bokja-vhero[data-text='light'] .bokja-vhero__copy { color: #ffffff; text-shadow: 0 1px 24px rgba(0, 0, 0, 0.45); }
  /* Description: Marcellus like the title, smaller (James 2026-09-22: "make it smaller and use the same font"). */
  .bokja-vhero__copy {
    margin-block-start: clamp(12px, 1.4vw, 24px);
    max-inline-size: min(440px, 70%);
    font-family: 'Marcellus', Georgia, serif;
    font-weight: 400;
    font-size: max(11px, calc(12.5 * 100vw / 1440));
    line-height: 1.55;
    letter-spacing: 0.03em;
    text-align: justify;
    text-align-last: center;
    hyphens: manual;
    color: var(--color-foreground, #1a1a1a);
  }
  .bokja-vhero__copy { margin-block-end: 0; }

  .bokja-vhero__link { position: absolute; inset: 0; z-index: 3; display: block; }
  .bokja-vhero__title--arabic { letter-spacing: normal; text-transform: none; }
  .bokja-vhero__arabic-lettering {
    display: block;
    block-size: 1.15em;
    inline-size: auto;
    max-inline-size: calc(100% - 32px);
    object-fit: contain;
  }

  .bokja-vhero__caption {
    position: relative;
    z-index: 2;
    max-width: min(560px, 86%);
    padding: clamp(20px, 4vw, 56px);
    display: flex;
    flex-direction: column;
    gap: 14px;
  }
  .bokja-vhero__caption--bottom-left { align-self: flex-end; margin-inline-end: auto; text-align: start; }
  .bokja-vhero__caption--bottom-centre {
    align-self: flex-end;
    margin-inline: auto;
    text-align: center;
    align-items: center;
  }
  .bokja-vhero__caption--centre {
    align-self: center;
    margin-inline: auto;
    text-align: center;
    align-items: center;
  }

  /* Legibility from the TEXT, not a scrim over the footage (house rule). Light theme adds
     a soft shadow on the words; dark theme uses the house off-black with none. */
  .bokja-vhero[data-text='light'] .bokja-vhero__caption {
    color: #ffffff;
    text-shadow: 0 1px 24px rgba(0, 0, 0, 0.45);
  }
  .bokja-vhero[data-text='dark'] .bokja-vhero__caption {
    color: var(--color-foreground, #1a1a1a);
    text-shadow: none;
  }

  .bokja-vhero__eyebrow {
    font-size: var(--bt-label);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    opacity: 0.85;
  }
  .bokja-vhero__headline {
    margin: 0;
    font-size: var(--bt-hero);
    line-height: 1.08;
    letter-spacing: 0.01em;
    font-weight: 400;
  }
  .bokja-vhero__cta {
    align-self: start;
    margin-top: 6px;
    font-size: var(--bt-label);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    text-decoration: none;
    color: inherit;
    border-block-end: 1px solid currentColor;
    padding-block-end: 4px;
    transition: opacity 160ms ease;
  }
  .bokja-vhero__caption--bottom-centre .bokja-vhero__cta,
  .bokja-vhero__caption--centre .bokja-vhero__cta { align-self: center; }
  .bokja-vhero__cta:hover { opacity: 0.7; }

  @media screen and (max-width: 749px) {
    .bokja-vhero--full,
    /* 58svh/100vw (was 82svh/150vw): the first products must show below the fold on
       mobile (James 2026-08-06). */
    .bokja-vhero--tall { min-height: min(58svh, 100vw); }
    .bokja-vhero--medium { min-height: min(60svh, 120vw); }
    .bokja-vhero--banner { min-height: min(58svh, 100vw); }
    /* A phone still sets the hero's shape: the box takes the still's own aspect ratio, uncropped. */
    .bokja-vhero--phone-still { min-height: 0 !important; height: auto; aspect-ratio: var(--bokja-vhero-phone-ratio, 1); }
    .bokja-vhero--phone-title-bottom .bokja-vhero__text { justify-content: flex-end; padding-bottom: 3vw; }
    .bokja-vhero--phone-title-top .bokja-vhero__text { justify-content: flex-start; padding-top: 3vw; }
    /* Phones: the description would sit over the framed painting under a bottom-anchored title, so the
       phone still carries the title only (judged on the preview 2026-09-22). */
    .bokja-vhero__copy { display: none; }
    .bokja-vhero__caption { gap: 10px; }
  }
/* END_SECTION:bokja-home-video */

/* START_SECTION:bokja-jw-grid (INDEX:20) */
.bokja-jw-grid {
    /* Matched to jwanderson.com proportionally, not literally: their 240px rows
       sit in a ~1200px column (the vertical wordmark eats the right margin), so
       a tile is ~20% of the line and rows hold 4-5. Our line is full-bleed, so
       the same FEEL needs ~19.5vw rows (~290px at 1488). Gaps: 6px columns
       (their exact figure and the house gutter); the row gap recreates their
       measured 80px image-bottom to image-top pitch (caption ~30px + 50px). */
    --jw-h: clamp(210px, 19.5vw, 300px);

    display: flex;
    flex-wrap: wrap;
    gap: 50px 6px;
    padding-inline: 12px;
    padding-block: 8px 48px;
  }

  /* Fixed width = height x ratio. No grow, no shrink: the uneven row ends are
     the look. */
  .bokja-jw-item {
    flex: 0 0 calc(var(--jw-h) * var(--jw-ratio));
  }

  .bokja-jw-item__media {
    position: relative;
  }

  /* Width varies, height follows the row: the item's aspect ratio is the knob. */
  .bokja-jw-grid .bokja-product-placeholder-card {
    aspect-ratio: var(--jw-ratio);
  }

  /* JW look fills the frame, so crop inside the varied boxes (the uniform grid
     keeps its contain behaviour; this is scoped to the mock only). The crop is
     anchored to the photo's bottom edge, not its centre: pieces are shot
     standing on the ground, so keeping the bottom puts every base on the
     tile's lower edge and the row reads as one shared floor line. */
  .bokja-jw-grid .bokja-product-placeholder-card__image {
    object-fit: cover;
    object-position: 50% 100%;
  }

  /* The shared nav caps itself to a 4:5 box for the uniform grid; here the
     media wrapper is exactly the image box, so span it fully. */
  .bokja-jw-grid .bokja-card-nav {
    inset: 0;
    aspect-ratio: auto;
  }

  @media screen and (max-width: 749px) {
    .bokja-jw-grid {
      --jw-h: clamp(150px, 45vw, 250px);
      gap: 36px 6px;
    }
  }

  /* ---- Fabric swab strip ---- */
  .bokja-jw-swatch {
    position: fixed;
    inset-block: 0;
    inset-inline-end: 0;
    width: 200px;
    z-index: 60;
    overflow: hidden;
    background: var(--color-background);
    border-inline-start: 0.5px solid color-mix(in srgb, var(--color-foreground) 12%, transparent);
    opacity: 0;
    pointer-events: none;
    transition: opacity 160ms ease;
  }

  .bokja-jw-swatch.is-open {
    opacity: 1;
  }

  /* cover on a 200px-wide full-height box is already a tall crop; the scale
     pushes it into true macro territory. */
  .bokja-jw-swatch__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(3.4);
  }

  @media (hover: none) {
    .bokja-jw-swatch {
      display: none;
    }
  }
/* END_SECTION:bokja-jw-grid */

/* START_SECTION:bokja-related (INDEX:23) */
.bokja-related {
    padding-block: var(--bokja-related-pad-top, 48px) var(--bokja-related-pad-bottom, 48px);
    background: var(--color-background);
  }

  .bokja-related__inner {
    width: 100%;
    /* Match the PDP main content container exactly. The product page's .product-information__grid
       uses max-width: min(1440px, 100% - 80px) with no inner padding; the related strip previously
       added 48px padding-inline on top of a 1440px cap, so its grid sat ~96px narrower than the
       gallery above it. Align to the same container so the page width never varies. */
    max-width: min(1440px, 100% - 80px);
    margin-inline: auto;
    padding-inline: 0;
    box-sizing: border-box;
  }

  .bokja-related__heading {
    margin: 0 0 18px;
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.75;
  }

  .bokja-related__grid {
    display: grid;
    grid-template-columns: repeat(var(--bokja-related-cols, 4), 1fr);
    gap: var(--bokja-gap);
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .bokja-related__item { margin: 0; min-width: 0; }

  .bokja-related__media-wrap { position: relative; }
  /* Wishlist heart on every "More for you" card (James 2026-09-23): top-right, the collection cards' treatment
     (hover, saved, focus, always on touch). The quick add sits in the bottom-right corner in the same column. */
  .bokja-related__save {
    position: absolute;
    top: 4px;
    right: 2px;
    z-index: 2;
    background: transparent;
    border: 0;
    padding: 6px;
    cursor: pointer;
    color: var(--color-foreground);
    opacity: 0;
    transition: opacity 150ms ease;
  }
  .bokja-related__item:hover .bokja-related__save,
  .bokja-related__save.is-saved,
  .bokja-related__save:focus-visible { opacity: 1; }
  @media (hover: none) { .bokja-related__save { opacity: 1; } }
  /* heart centre 2 + 14.5 = 16.5px in; tile centre 0 + 6 + 10 = 16px in */
  .bokja-related__media-wrap .bokja-card-quick-add--bottom { right: 0; padding-block-end: 10px; } /* 10px off the bottom = the heart's 10px off the top */

  .bokja-related__link {
    display: block;
    text-decoration: none;
    color: var(--color-foreground);
  }

  .bokja-related__media {
    display: block;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: var(--bokja-product-media-background, var(--color-background));
  }

  /* RTW garments keep the shoot's 2:3 so full-length shots keep their feet
     (James 2026-08-06 card rule; reached bokja-cut-recommend 2026-08-08 and this
     rail 2026-08-12 - More for you was the last surface still cropping at 4:5).
     Per CARD, not per page: a mixed rail renders each item in its own ratio. */
  .bokja-related__item.is-rtw .bokja-related__media { aspect-ratio: 2 / 3; }

  /* Fill the box (cover), consistent with the collection grid + PDP hero - no white strips. */
  .bokja-related__img {
    inline-size: 100%;
    block-size: 100%;
    object-fit: cover;
    object-position: center center;
    display: block;
  }

  .bokja-related__item.is-sold-out .bokja-related__media { opacity: 0.6; }

  .bokja-related__title,
  .bokja-related__name {  /* __name = the hover alt line's base class (shared snippet emits
                             {prefix}__name); it overlays __title's grid cell, so it needs
                             the identical box — margin included. */
    display: block;
    margin-block-start: 8px;
    font-family: var(--font-body--family);
    font-size: var(--bt-card);
    line-height: 1.35;
    letter-spacing: 0.01em;
    color: var(--color-foreground);
    min-width: 0;              /* collapse to the width the price leaves, don't widen the row */
    overflow-wrap: anywhere;
  }

  .bokja-related__price {
    justify-self: end;
    text-align: end;
    white-space: nowrap;
    font-family: var(--font-body--family);
    font-size: var(--bt-card);
    font-weight: 400;
    letter-spacing: 0.01em;
    color: var(--bokja-price-ink);
  }

  .bokja-related__sold { text-transform: uppercase; letter-spacing: 0.06em; }

  /* Detailed foot: price under the name (left) + the fabric-variant swatch row (right). Mirrors the
     collection card's .bokja-product-card-foot--detailed; gated by settings.bokja_card_style. The
     'classic' foot is just the caption (title + price stacked), unchanged from before. */
  /* Name LEFT, price RIGHT on one line (Malou, 2026-08-20) — the same two-column caption
     the storygroup / catgroup / bestsellers rows already use, so a price sits in the same
     place on every card in the site. This was a flex COLUMN, which is what put the price
     under the name here and nowhere else. `minmax(0, 1fr)` lets the name take the rest and
     collapse rather than pushing the row wider; `max-content` means the price column is
     exactly as wide as the price, so it is never shrunk or wrapped mid-value. The strip has
     no fabric-swatch row (James: the chips crowd it), so column 2 was empty and the price
     moves into it without displacing anything. */
  .bokja-related__caption {
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content;
    align-items: baseline;
    column-gap: 12px;
    text-decoration: none;
    color: inherit;
  }
  .bokja-related__foot--detailed {
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content;
    gap: 12px;
    align-items: start;
  }
  .bokja-related__foot--detailed .bokja-fabrics--card {
    position: relative;
    z-index: 2;
    margin-block: 8px 0;
    align-self: start;
  }

  @media screen and (max-width: 749px) {
    /* Phones: the strip used a 40px inset (100% - 80px) while the gallery above is edge-to-edge, so
       it read as not using the full width. Match the catalogue grid's slim gutter instead. */
    .bokja-related__inner { max-width: 100%; padding-inline: 16px; }
    .bokja-related__grid { grid-template-columns: repeat(2, 1fr); }
  }
/* END_SECTION:bokja-related */

/* START_SECTION:bokja-service-hub (INDEX:24) */
.bokja-service {
    background: var(--bokja-background, var(--color-background));
    color: var(--color-foreground);
    padding: clamp(34px, 6vw, 84px) clamp(16px, 3vw, 48px) clamp(56px, 8vw, 110px);
  }

  .bokja-service__wrap {
    max-width: 1280px;
    margin-inline: auto;
  }

  .bokja-service__hero {
    max-width: 760px;
    margin-block-end: clamp(28px, 5vw, 64px);
  }

  .bokja-service__eyebrow,
  .bokja-service__kicker,
  .bokja-service__nav a,
  .bokja-service__inline-nav a {
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.16em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  .bokja-service__eyebrow,
  .bokja-service__kicker {
    margin: 0 0 12px;
    opacity: 0.52;
  }

  .bokja-service__hero h1 {
    max-width: 14ch;
    margin: 0 0 18px;
    font-size: var(--bt-display);
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.03;
  }

  .bokja-service__hero p,
  .bokja-service__panel p,
  .bokja-service__panel li,
  .bokja-service__list dd {
    font-size: var(--bt-body);
    line-height: 1.7;
  }

  .bokja-service__hero p {
    max-width: 58ch;
    margin: 0;
    opacity: 0.72;
  }

  .bokja-service__hero span {
    color: inherit;
  }

  .bokja-service__nav {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 24px;
    padding-block: 14px 18px;
    border-block: 0.5px solid rgba(26, 26, 26, 0.16);
    margin-block-end: clamp(28px, 5vw, 58px);
  }

  .bokja-service__nav a,
  .bokja-service__inline-nav a,
  .bokja-service a {
    color: inherit;
    text-decoration: none;
  }

  /* Links inside panel prose carry a hairline underline at rest, the same affordance the
     stockists page gives a linked name. Without it a signpost like "published in full in
     our shipping policy" renders as plain body copy and the reader concludes there is no
     link (Malou 2026-08-19: "why don't they contain the links to the pages" — they did).
     The nav rows keep their own treatment: uppercase labels at 0.56 opacity read as
     controls already. */
  .bokja-service__panel p a {
    text-decoration: underline;
    text-decoration-thickness: 0.5px;
    text-underline-offset: 3px;
    text-decoration-color: rgba(26, 26, 26, 0.4);
  }

  .bokja-service__panel p a:hover,
  .bokja-service__panel p a:focus-visible {
    text-decoration-color: currentColor;
  }

  .bokja-service__nav a,
  .bokja-service__inline-nav a {
    opacity: 0.56;
  }

  .bokja-service__nav a:hover,
  .bokja-service__nav a:focus-visible,
  .bokja-service__inline-nav a:hover,
  .bokja-service__inline-nav a:focus-visible,
  .bokja-service a:hover {
    opacity: 1;
    text-decoration: underline;
    text-decoration-thickness: 0.5px;
    text-underline-offset: 3px;
  }

  .bokja-service__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
  }

  .bokja-service__panel {
    min-width: 0;
    padding: clamp(22px, 3vw, 38px);
    background: #f8f7f1;
  }

  .bokja-service__panel--wide {
    grid-column: 1 / -1;
  }

  .bokja-service__panel h2 {
    margin: 0 0 18px;
    font-size: var(--bt-h2);
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.15;
  }

  .bokja-service__panel p {
    max-width: 70ch;
    margin: 0 0 16px;
    opacity: 0.74;
  }

  .bokja-service__panel p:last-child,
  .bokja-service__bullets li:last-child {
    margin-block-end: 0;
  }

  .bokja-service__table {
    display: grid;
    margin-block: 22px;
    border-block-start: 0.5px solid rgba(26, 26, 26, 0.24);
  }

  .bokja-service__table > div {
    display: grid;
    grid-template-columns: minmax(120px, 0.8fr) minmax(120px, 0.7fr) minmax(0, 1fr);
    gap: 18px;
    padding-block: 12px;
    border-block-end: 0.5px solid rgba(26, 26, 26, 0.14);
  }

  .bokja-service__table span,
  .bokja-service__list dt {
    font-size: var(--bt-micro);
    line-height: 1.45;
  }

  .bokja-service__table [role='columnheader'],
  .bokja-service__list dt {
    opacity: 0.56;
    text-transform: uppercase;
    letter-spacing: 0.12em;
  }

  .bokja-service__list {
    display: grid;
    gap: 16px;
    margin: 0;
  }

  .bokja-service__list div {
    display: grid;
    grid-template-columns: minmax(110px, 0.28fr) minmax(0, 1fr);
    gap: 18px;
    padding-block-end: 16px;
    border-block-end: 0.5px solid rgba(26, 26, 26, 0.14);
  }

  .bokja-service__list div:last-child {
    padding-block-end: 0;
    border: 0;
  }

  .bokja-service__list dt,
  .bokja-service__list dd {
    margin: 0;
  }

  .bokja-service__list dd,
  .bokja-service__bullets {
    opacity: 0.74;
  }

  .bokja-service__list--compact div {
    grid-template-columns: minmax(82px, 0.24fr) minmax(0, 1fr);
  }

  .bokja-service__inline-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 24px;
    margin-block-start: 24px;
  }

  .bokja-service__bullets {
    display: grid;
    gap: 10px;
    max-width: 82ch;
    margin: 0;
    padding-inline-start: 18px;
  }

  @media screen and (max-width: 899px) {
    .bokja-service__grid {
      grid-template-columns: 1fr;
    }
  }

  @media screen and (max-width: 749px) {
    .bokja-service {
      padding-inline: 12px;
    }

    .bokja-service__nav {
      flex-wrap: nowrap;
      overflow-x: auto;
      scrollbar-width: none;
      white-space: nowrap;
    }

    .bokja-service__nav::-webkit-scrollbar {
      display: none;
    }

    .bokja-service__panel {
      padding: 22px 18px;
    }

    .bokja-service__table > div,
    .bokja-service__list div,
    .bokja-service__list--compact div {
      grid-template-columns: 1fr;
      gap: 6px;
    }
  }
/* END_SECTION:bokja-service-hub */

/* START_SECTION:bokja-stockists (INDEX:25) */
.bokja-stockists {
    background: var(--bokja-background, var(--color-background));
    color: var(--color-foreground);
    padding-inline: clamp(16px, 3vw, 48px);
  }

  .bokja-stockists__wrap {
    max-width: 1280px;
    margin-inline: auto;
  }

  .bokja-stockists__group {
    max-width: 760px;
    padding-block: clamp(44px, 7vw, 92px) 0;
  }

  .bokja-stockists__group h2 {
    margin: 0 0 14px;
    font-size: var(--bt-h2);
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.15;
  }

  .bokja-stockists__group-intro p {
    margin: 0;
    font-size: var(--bt-body);
    line-height: 1.7;
    opacity: 0.72;
  }

  .bokja-stockists__region {
    display: grid;
    grid-template-columns: minmax(110px, 0.2fr) minmax(0, 1fr);
    gap: 24px;
    padding-block: clamp(30px, 4vw, 46px);
  }

  .bokja-stockists__region-label {
    margin: 0;
    /* 12px padding + the 0.5px rule the first entry carries, so the region label sits on
       the same line as the first stockist name rather than 13px above it. */
    padding-block-start: 13px;
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.16em;
    line-height: 1.35;
    text-transform: uppercase;
    opacity: 0.52;
  }

  .bokja-stockists__list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 0 24px;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  /* Entries are ruled text, not cards. That is what lets a 2-entry region and a 25-entry
     region use the same grid: a short region reads as a list that ended, because there is
     no card chrome left standing empty next to it. */

  .bokja-stockists__item {
    display: block;
    min-width: 0;
    padding-block: 12px 14px;
    border-block-start: 0.5px solid rgba(26, 26, 26, 0.16);
  }

  .bokja-stockists__name,
  .bokja-stockists__city,
  .bokja-stockists__detail {
    display: block;
    font-size: var(--bt-body);
    font-style: normal;
    line-height: 1.5;
    overflow-wrap: anywhere;
  }

  .bokja-stockists__city {
    opacity: 0.56;
  }

  .bokja-stockists__detail {
    margin-block-start: 6px;
    opacity: 0.56;
  }

  .bokja-stockists a {
    color: inherit;
    text-decoration: none;
  }

  .bokja-stockists__name--link,
  .bokja-stockists__detail--link {
    text-decoration: underline;
    text-decoration-thickness: 0.5px;
    text-underline-offset: 3px;
    text-decoration-color: rgba(26, 26, 26, 0.4);
  }

  .bokja-stockists__name--link:hover,
  .bokja-stockists__name--link:focus-visible,
  .bokja-stockists__detail--link:hover,
  .bokja-stockists__detail--link:focus-visible {
    text-decoration-color: currentColor;
  }

  .bokja-stockists__filter {
    padding-block-start: clamp(22px, 3vw, 30px);
  }

  .bokja-stockists__filter-controls {
    display: flex;
    flex-wrap: wrap;
    gap: 0 22px;
  }

  /* Text switches, not chips: a pill row would be the only card chrome on a page whose own
     entries are deliberately ruled text (see the note above .bokja-stockists__item). */
  .bokja-stockists__filter-btn {
    appearance: none;
    background: none;
    border: 0;
    border-radius: 0;
    padding: 0;
    color: inherit;
    font: inherit;
    font-size: var(--bt-label);
    letter-spacing: 0.16em;
    line-height: 1.35;
    text-transform: uppercase;
    cursor: pointer;
    opacity: 0.52;
    /* Reserve the underline at rest so selecting one never reflows the row. */
    border-block-end: 0.5px solid transparent;
    padding-block-end: 4px;
    transition: opacity 0.15s ease;
  }

  .bokja-stockists__filter-btn:hover {
    opacity: 0.8;
  }

  .bokja-stockists__filter-btn[aria-pressed='true'] {
    opacity: 1;
    border-block-end-color: currentColor;
  }

  .bokja-stockists__filter-note {
    margin: 14px 0 0;
    font-size: var(--bt-body);
    line-height: 1.7;
    opacity: 0.56;
  }

  /* The items and regions carry display:block / display:grid, which both beat the UA rule
     for [hidden]. Without these two the filter would set the attribute and change nothing. */
  .bokja-stockists__item[hidden],
  .bokja-stockists__region[hidden],
  .bokja-stockists__filter[hidden],
  .bokja-stockists__filter-note[hidden] {
    display: none;
  }

  @media screen and (max-width: 899px) {
    .bokja-stockists__region {
      grid-template-columns: minmax(0, 1fr);
      gap: 14px;
    }

    /* Stacked above its entries, so the desktop first-line alignment no longer applies. */
    .bokja-stockists__region-label {
      padding-block-start: 0;
    }
  }

  @media screen and (max-width: 749px) {
    .bokja-stockists {
      padding-inline: 12px;
    }

    /* Two up on a phone, the same call the product grid already makes (James 2026-08-08,
       "It should only be two up"). auto-fill would give one column here, which turns 45
       name+city entries into a 4,300px scroll with two thirds of every row empty. */
    .bokja-stockists__list {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 0 12px;
    }
  }
/* END_SECTION:bokja-stockists */

/* START_SECTION:bokja-stores (INDEX:26) */
.bokja-stores {
    background: var(--bokja-background, var(--color-background));
    color: var(--color-foreground);
    padding: clamp(34px, 6vw, 84px) clamp(16px, 3vw, 48px) 0;
  }

  .bokja-stores__wrap {
    max-width: 1280px;
    margin-inline: auto;
  }

  .bokja-stores__hero {
    max-width: 760px;
    margin-block-end: clamp(28px, 5vw, 58px);
  }

  .bokja-stores__eyebrow,
  .bokja-stores__kicker,
  .bokja-stores__field-label {
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.16em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  .bokja-stores__eyebrow,
  .bokja-stores__kicker {
    margin: 0 0 12px;
    opacity: 0.52;
  }

  .bokja-stores__hero h1 {
    max-width: 14ch;
    margin: 0 0 18px;
    font-size: var(--bt-display);
    font-style: normal;
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.03;
    text-align: left;
  }

  .bokja-stores__intro p,
  .bokja-stores__note p {
    margin: 0 0 12px;
    font-size: var(--bt-body);
    line-height: 1.7;
    opacity: 0.72;
  }

  .bokja-stores__intro p:last-child,
  .bokja-stores__note p:last-child {
    margin-block-end: 0;
  }

  .bokja-stores__intro {
    max-width: 58ch;
  }

  .bokja-stores__showroom {
    padding: clamp(22px, 3vw, 38px);
    background: #f8f7f1;
  }

  .bokja-stores__showroom h2 {
    max-width: 22ch;
    margin: 0 0 26px;
    font-size: var(--bt-h2);
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.15;
  }

  .bokja-stores__showroom-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 22px 32px;
    padding-block: 20px 0;
    border-block-start: 0.5px solid rgba(26, 26, 26, 0.24);
  }

  .bokja-stores__field {
    display: grid;
    gap: 8px;
    min-width: 0;
    align-content: start;
  }

  .bokja-stores__field-label {
    opacity: 0.56;
  }

  .bokja-stores__field address,
  .bokja-stores__value {
    font-size: var(--bt-body);
    font-style: normal;
    line-height: 1.7;
    overflow-wrap: anywhere;
  }

  .bokja-stores a {
    color: inherit;
    text-decoration: none;
  }

  .bokja-stores__value--link,
  .bokja-stores__note a {
    text-decoration: underline;
    text-decoration-thickness: 0.5px;
    text-underline-offset: 3px;
    text-decoration-color: rgba(26, 26, 26, 0.4);
  }

  .bokja-stores__value--link:hover,
  .bokja-stores__value--link:focus-visible,
  .bokja-stores__note a:hover,
  .bokja-stores__note a:focus-visible {
    text-decoration-color: currentColor;
  }

  .bokja-stores__note {
    max-width: 70ch;
    margin-block-start: 26px;
  }

  @media screen and (max-width: 749px) {
    .bokja-stores {
      padding-inline: 12px;
    }

    .bokja-stores__showroom {
      padding: 22px 18px;
    }
  }
/* END_SECTION:bokja-stores */

/* START_SECTION:bokja-story-groups (INDEX:27) */
/* ---- quiet cushion filters (James 2026-08-06) ---- */
  .bokja-cfilters {
    display: flex;
    align-items: center;
    gap: 6px 14px;
  }
  .bokja-cfilters__set {
    display: inline-flex;
    align-items: center;
    gap: 8px;
  }
  /* The bar's old inline --trail placement is gone (2026-08-24): it is now a dropdown
     panel whose positioning lives in bokja-category-nav's stylesheet, next to the
     markup it hangs off. Only the option/dot/grid styles remain here. */
  .bokja-cfilters__opt {
    font-size: 10px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    background: none;
    border: none;
    padding: 2px 0;
    cursor: pointer;
    color: var(--color-foreground);
    opacity: 0.45;
    border-block-end: 0.5px solid transparent;
    transition: opacity 150ms ease, border-color 150ms ease;
  }
  .bokja-cfilters__opt:hover { opacity: 0.8; }
  .bokja-cfilters__opt.is-active {
    opacity: 1;
    border-block-end-color: currentColor;
  }
  .bokja-cfilters__dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    border: 0.5px solid rgba(0, 0, 0, 0.18);
    padding: 0;
    cursor: pointer;
    opacity: 0.75;
    transition: opacity 150ms ease, box-shadow 150ms ease;
  }
  .bokja-cfilters__dot:hover { opacity: 1; }
  .bokja-cfilters__dot.is-active {
    opacity: 1;
    box-shadow: 0 0 0 1.5px var(--color-background), 0 0 0 2.5px var(--color-foreground);
  }
  .bokja-cfilters__dot--white { background: #f4f2ec; }
  .bokja-cfilters__dot--beige { background: #d8cbb3; }
  .bokja-cfilters__dot--yellow { background: #d9b943; }
  .bokja-cfilters__dot--gold { background: #c2a24b; }
  .bokja-cfilters__dot--orange { background: #cf7b3e; }
  .bokja-cfilters__dot--red { background: #a53d35; }
  .bokja-cfilters__dot--pink { background: #d59aa8; }
  .bokja-cfilters__dot--brown { background: #7a5c44; }
  .bokja-cfilters__dot--green { background: #5c7350; }
  .bokja-cfilters__dot--teal { background: #3d7d78; }
  .bokja-cfilters__dot--blue { background: #5d7fa3; }
  .bokja-cfilters__dot--grey { background: #9a9a94; }
  .bokja-cfilters__dot--black { background: #1a1a1a; }
  .bokja-cfilters__dot--multicolour {
    background: conic-gradient(#a53d35, #d9b943, #5c7350, #5d7fa3, #a53d35);
  }
  /* [hidden] must WIN over the display:grid below, or the empty container joins the
     storygroups flex as a zero-height child and drags a full flex-gap in with it -
     the cushions-only extra top gap James screenshotted (2026-08-06). */
  .bokja-cfilters__grid[hidden] { display: none; }
  .bokja-cfilters__grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: clamp(32px, 3.5vw, 56px) var(--bokja-gap);
    /* The engine scrolls the results here after a pick (the swap happens at the top
       of the page, so from further down it used to read as "nothing happened").
       Clear the pinned header + trail: both vars are measured by the megamenu. */
    scroll-margin-top: calc(var(--bokja-trail-height, 48px) + 18px); /* v6: static header scrolls away; clear the pinned strip only */
  }
  .bokja-cfilters__grid > * { grid-column: span 3; }
  .bokja-cfilters__grid > .f-span4 { grid-column: span 4; }
  .bokja-cfilters__grid > .f-span6 { grid-column: span 6; }
  .bokja-cfilters__grid > .f-span12 { grid-column: span 12; }
  /* The clones carry no row class, so the row CSS that sizes card media never
     applies here - constrain at every width or a filtered image renders giant. */
  .bokja-cfilters__grid .bokja-storygroup__media {
    aspect-ratio: 4 / 5;
    display: block;
  }
  .bokja-cfilters__grid .bokja-storygroup__img {
    object-fit: contain;
    object-position: center;
    width: 100%;
    height: 100%;
  }
  .bokja-cfilters__empty {
    font-size: 12px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    opacity: 0.5;
    padding: 18px 2px 6px;
  }
  .bokja-cfilters__dot.is-muted,
  .bokja-cfilters__opt.is-muted {
    opacity: 0.14;
    pointer-events: none;
  }
  @media screen and (max-width: 749px) {
    .bokja-cfilters__grid > * { grid-column: span 6; }
    .bokja-cfilters__grid > .f-span4 { grid-column: span 4; }
  }

  .bokja-storygroups {
    display: flex;
    flex-direction: column;
    gap: clamp(36px, 4.5vw, 72px);
    padding: clamp(28px, 3.5vw, 56px) var(--bokja-edge);
    background: var(--color-background);
  }
  /* No group title on the page (the RTW sub-collections, scarves, quilts...): the space from the category strip to
     the photos matches the space from the main menu to the strip (James 2026-09-23; measured 39px text to text at
     1440 against 69px before). The strip keeps 19px below its words, so the wrapper adds the other 20px. */
  .bokja-storygroups:not(:has(.bokja-storygroup__head)) {
    padding-block-start: 20px;
  }
  /* Sticky group title (James, 05-08): holds just below the sticky category strip.
     Offset measured (header + trail vars), not guessed - the 196px constant drifted
     against real header heights (James 2026-08-06).

     PINNED CLEARANCE (James 2026-08-08): normal flow is right, the pinned state was not -
     measured on the live theme, the stuck word cleared the locked trail by 7.67px at 1280 and
     7.91px at 390 against 26px of air in normal flow, and 4 cards sat inside the head's own box
     because the 18px below the text was MARGIN (transparent, and margins do not travel with a
     sticky element). --bokja-group-clear is the air the pinned TEXT keeps under the bar; the
     8px subtracted is this head's own top padding, so the same var lands the same 18px of text
     clearance here as on the bokja-catgroup titles. Below the text, the old 8px of padding plus
     18px of margin becomes 26px of PADDING - identical block geometry (26px either way, verified
     against the live theme), but now painted and carried by the sticky box. Do not "simplify"
     that 26 to 18: the first pass did, and every group on the cushions page came out 8px short. */
  .bokja-storygroup__head {
    position: sticky;
    top: calc(var(--bokja-trail-height, 44px) + var(--bokja-group-clear, 18px) - 8px); /* v6: strip only, header is static */
    z-index: 5;
    background: var(--color-background);
    margin: 0;
    padding: 8px 0 26px;
  }
  /* Opaque apron above the stuck title: absorbs the few-px variance in the strip's stuck
     bottom across viewports/zoom so content never slides through the gap. Sized off the same
     var as the offset so the two stay in step (28px at the default clearance, as before). */
  .bokja-storygroup__head::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: calc(-1 * (var(--bokja-group-clear, 18px) + 10px));
    height: calc(var(--bokja-group-clear, 18px) + 10px);
    background: var(--color-background);
  }
  .bokja-storygroup__title {
    font-size: var(--bt-label);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.5;
    text-align: center;
    margin: 0;
    font-weight: inherit;
  }
  /* Adaptive full-width rows: the grid is a column of rows; each row carries its own
     column count so every row spans the full width (James, 05-08). */
  .bokja-storygroup__grid {
    display: flex;
    flex-direction: column;
    gap: clamp(32px, 3.5vw, 56px);
  }
  .bokja-storygroup__row {
    display: grid;
    gap: var(--bokja-gap);
  }
  .bokja-storygroup__row--c5 { grid-template-columns: repeat(5, 1fr); }
  .bokja-storygroup__row--c4 { grid-template-columns: repeat(4, 1fr); }
  .bokja-storygroup__row--c3 { grid-template-columns: repeat(3, 1fr); }
  /* Rows of two and one never exceed the three-across card (James 2026-09-23): third-width tracks, centred. */
  .bokja-storygroup__row--c2,
  .bokja-storygroup__row--c1 {
    grid-template-columns: repeat(auto-fit, calc((100% - 2 * var(--bokja-gap)) / 3));
    justify-content: center;
  }
  .bokja-storygroup__item {
    position: relative;
    min-width: 0;
  }
  .bokja-storygroup__link {
    display: flex;
    flex-direction: column;
    gap: 10px;
    text-decoration: none;
    color: inherit;
    min-width: 0;
  }
  /* Card gallery: stacked images, arrows, close-up-only hover. */
  .bokja-storygroup__img {
    opacity: 0;
    transition: opacity 180ms ease;
  }
  .bokja-storygroup__img.is-current {
    opacity: 1;
  }
  .bokja-storygroup__item:not([data-nav]):hover .bokja-storygroup__img--hover {
    opacity: 1;
    z-index: 1;
  }
  .bokja-storygroup__arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 3;
    background: transparent;
    border: 0;
    padding: 4px 10px;
    cursor: pointer;
    color: var(--color-foreground);
    font-size: 26px;
    line-height: 1;
    opacity: 0;
    transition: opacity 150ms ease;
  }
  .bokja-storygroup__arrow--prev { left: 2px; }
  .bokja-storygroup__arrow--next { right: 2px; }
  .bokja-storygroup__item:hover .bokja-storygroup__arrow,
  .bokja-storygroup__arrow:focus-visible {
    opacity: 0.75;
  }
  @media (hover: none) {
    /* Much quieter on touch screens - at 0.75 they read as little ears on every card
       (James 2026-08-06). Still tappable; swipe is the primary gesture anyway. */
    .bokja-storygroup__arrow { opacity: 0.22; font-size: 20px; }
  }
  .bokja-storygroup__save {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    background: transparent;
    border: 0;
    padding: 6px;
    cursor: pointer;
    color: var(--color-foreground);
    opacity: 0;
    transition: opacity 150ms ease;
  }
  .bokja-storygroup__item:hover .bokja-storygroup__save,
  .bokja-storygroup__save.is-saved,
  .bokja-storygroup__save:focus-visible {
    opacity: 1;
  }
  @media (hover: none) {
    .bokja-storygroup__save { opacity: 1; }
  }
  /* Base frame (4- and 5-across): uniform 4:5, full image contained, img absolutely
     pinned so tall images cannot stretch the frame. */
  .bokja-storygroup__media {
    display: block;
    position: relative;
    aspect-ratio: 4 / 5;
    background: var(--bokja-product-media-background, var(--color-background));
  }
  .bokja-storygroup__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
  }
  /* Wide-card rows (3-across and narrower): SQUARE frame, cover crop anchored bottom —
     the top of the photo is cropped downwards (James's framing call, 05-08). */
  .bokja-storygroup__row--c3 .bokja-storygroup__media,
  .bokja-storygroup__row--c2 .bokja-storygroup__media,
  .bokja-storygroup__row--c1 .bokja-storygroup__media {
    aspect-ratio: 1 / 1;
  }
  .bokja-storygroup__row--c3 .bokja-storygroup__img,
  .bokja-storygroup__row--c2 .bokja-storygroup__img,
  .bokja-storygroup__row--c1 .bokja-storygroup__img {
    object-fit: cover;
    object-position: center bottom;
  }
  /* RTW pages: the shoot's 2:3, cover — James's standing RTW ratio (the 2026-08-06 "feet
     stay on" ruling, already on the catgroup landing, bokja-cut-recommend and the related
     rail). The storygroup card met RTW content for the FIRST time when the house template
     landed (2026-08-25), and the square wide-row crop above — a homeware framing call —
     took the models' heads off (James's robes report, same day). One RTW frame for every
     row count and both viewports; html-prefixed so it outranks the wide-row rules above
     and the mobile 4:5 rules below. Scoped under .bokja-storygroups so strip/collective
     reuses of the card classes stay untouched. */
  html[data-bokja-shop-side='ready_to_wear'] .bokja-storygroups .bokja-storygroup__media {
    aspect-ratio: 2 / 3;
  }
  html[data-bokja-shop-side='ready_to_wear'] .bokja-storygroups .bokja-storygroup__img {
    object-fit: cover;
    object-position: center;
  }
  .bokja-storygroup__info {
    /* TWO-COLUMN GRID, not a flex row (James 2026-08-16: "the name of the item and the
       price seem to come on the same line ... the price ends up on the left underneath
       the name"). One rule, three sections: catgroup, bestsellers and this one.

       Why a grid and not a better flex row. A flex row has exactly two failure modes and
       this card had both across the site. With "flex-wrap: nowrap" (what this row was) the
       price is safe on the right, but the name is squeezed into whatever the price leaves
       and shreds: measured live on /collections/cushions, "Cushion in Bisri Forest Neutral
       Right" ran to 3 lines in a 108px column at 375px and 4 lines at 320px. With
       "flex-wrap: wrap" (what catgroup and bestsellers were) the price drops onto its own
       flex line, and "justify-content: space-between" puts a lone item at flex-START, so
       it lands hard LEFT under the name - James's exact report. Note that "min-width: 0"
       does NOT prevent this: flex line breaking uses each item's MAX-CONTENT hypothetical
       size, which min-width does not reduce; min-width only governs shrinking afterwards.

       A grid removes the choice. Track placement is fixed, so the price can never leave
       its column and can never fall below the name. "minmax(0, 1fr)" lets the name take
       the rest of the card and wrap; "max-content" means the price column is exactly as
       wide as the price, so it is never shrunk and never wrapped mid-value.

       These are the same three declarations as .bokja-product-card-caption in
       assets/bokja-custom.css, which has been a grid since it was written and has never
       had this bug. */
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content;
    align-items: baseline;
    column-gap: 12px;
    row-gap: 0;
  }
  .bokja-storygroup__name {
    font-size: var(--bt-card);
    letter-spacing: 0.01em;
    color: var(--color-foreground);
    /* Lets the name track collapse to the width the price leaves rather than pushing the
       row wider. Paired with the grid above, not a substitute for it. */
    min-width: 0;
    /* A single word longer than its column would otherwise paint over the price:
       "Cynzia.Assemblage" is 17 characters and renders wider than the 69.5px name track
       a 320px two-up card leaves. Matches the catgroup and bestsellers rows. */
    overflow-wrap: anywhere;
  }
  .bokja-storygroup__price {
    font-family: var(--font-body--family);
    font-size: var(--bt-card);
    font-weight: 400;
    letter-spacing: 0.01em;
    color: var(--bokja-price-ink);
    /* Safe unconditionally now: the name track is minmax(0, 1fr), so a nowrap price can
       only overflow the card if the price alone is wider than the card. Widest real value
       is "$9,200.00" at 63.5px against a 145px card at 320px. */
    white-space: nowrap;
    justify-self: end;
    text-align: end;
  }
  @media screen and (max-width: 749px) {
    .bokja-storygroups {
      /* Side borders as thin as the picture gap (James 2026-08-06 second pass). */
      padding: clamp(14px, 1.9vw, 30px) var(--bokja-gap);
    }
    /* Mobile: STRICT two-up (James 2026-08-08, supersedes his 2026-08-06 no-orphan
       mixes rule: "It should only be two up"). c1 stays one full-width. Uniform 4:5
       contained frame.

       ONE FLOWING GRID PER GROUP (Malou 2026-08-22): the desktop row plan used to survive
       into mobile as separate row grids, so an odd desktop row (c3/c5) wrapped 2+1 and left
       a hole mid-group even when the group is one declared family - Flora & Fauna's six
       rendered 2/1/2/1 off its 3,3 plan. Phones now collapse the row containers to
       `display: contents` and put the 6-col grid on the group itself, so cards flow 2-up
       across the whole group and the only gaps left are the ones the famlead rule forces
       on purpose. Row gap matches the bokja-catgroup grids (generous rows, tight columns);
       the row containers previously contributed both their internal var(--bokja-gap) wrap
       gap and the 32px flex gap between rows, so mobile rhythm was already mixed - this
       unifies it. DESKTOP IS UNTOUCHED: everything here lives inside the phone query. */
    .bokja-storygroup__grid {
      display: grid;
      grid-template-columns: repeat(6, 1fr);
      gap: clamp(32px, 3.5vw, 56px) var(--bokja-gap);
    }
    .bokja-storygroup__row--c5,
    .bokja-storygroup__row--c4,
    .bokja-storygroup__row--c3,
    .bokja-storygroup__row--c2,
    .bokja-storygroup__row--c1 {
      display: contents;
    }
    .bokja-storygroup__row--c5 > *,
    .bokja-storygroup__row--c4 > *,
    .bokja-storygroup__row--c3 > *,
    .bokja-storygroup__row--c2 > * {
      grid-column: span 3;
    }
    .bokja-storygroup__row--c1 > * {
      grid-column: span 6;
    }
    /* FAMILY ROWS (James 2026-08-08, supersedes the even-index doctrine on MOBILE ONLY: "on
       mobile it's better to have the pairs together, and sometimes have one on a single row...
       It's less important to have a space, and more important to keep the pairs together.")

       The first card of a declared family run - and the Left half of every Left/Right diptych -
       starts in column 1, so a pair can never straddle two mobile rows. The card before it then
       sits alone with the other half of that row EMPTY, which is the intended outcome.
       Specificity is (0,3,0) so it beats the span rules above; c1 rows are excluded so a lone
       full-width card keeps its span 6. DESKTOP IS UNTOUCHED - this lives inside the phone
       query, and the row plan above still decides the 3/4/5 desktop rows.

       Since the 2026-08-22 flattening the column is column 1 of the GROUP grid (row containers
       are display: contents on phones), which also removed the old limit where a pair split
       across two row containers could not be joined. */
    .bokja-storygroup__row:not(.bokja-storygroup__row--c1) > .bokja-storygroup__item--famlead {
      grid-column: 1 / span 3;
    }
    .bokja-storygroup__row--c5 .bokja-storygroup__media,
    .bokja-storygroup__row--c4 .bokja-storygroup__media,
    .bokja-storygroup__row--c3 .bokja-storygroup__media,
    .bokja-storygroup__row--c2 .bokja-storygroup__media,
    .bokja-storygroup__row--c1 .bokja-storygroup__media {
      aspect-ratio: 4 / 5;
    }
    .bokja-storygroup__row--c5 .bokja-storygroup__img,
    .bokja-storygroup__row--c4 .bokja-storygroup__img,
    .bokja-storygroup__row--c3 .bokja-storygroup__img,
    .bokja-storygroup__row--c2 .bokja-storygroup__img,
    .bokja-storygroup__row--c1 .bokja-storygroup__img {
      object-fit: contain;
      object-position: center;
    }
    .bokja-storygroup__head {
      top: calc(var(--bokja-trail-height, 44px) + var(--bokja-group-clear, 18px) - 8px); /* v6: strip only */
    }
  }
/* END_SECTION:bokja-story-groups */

/* START_SECTION:collection-links (INDEX:30) */
collection-links-component {
    --alignment: flex-start;

    display: grid;
    align-items: center;
    grid-gap: var(--gap-3xl);

    &:has([ratio='portrait']) {
      --template-column-ratio: 0.8fr;
    }

    &:has([ratio='square']) {
      --template-column-ratio: 1fr;
    }

    &:has([ratio='landscape']) {
      --template-column-ratio: 1.4fr;
    }

    &[alignment='center'] {
      --alignment: center;

      .text-block {
        text-align: center;
      }
    }

    &[alignment='right'] {
      --alignment: flex-end;

      .text-block {
        text-align: right;
      }
    }

    &[layout='spotlight'] {
      position: relative;
      grid-template-columns: 1fr var(--template-column-ratio);
      grid-template-areas: 'text image';

      @media screen and (min-width: 750px) {
        &[reverse] {
          grid-template-areas: 'image text';
          grid-template-columns: var(--template-column-ratio) 1fr;
        }
      }

      .collection-links__container {
        align-items: var(--alignment);
      }

      @media screen and (max-width: 749px) {
        grid-template-columns: 1fr;
        grid-template-areas: 'text' 'image';
        grid-gap: var(--gap-2xl);

        .collection-links__container {
          gap: clamp(var(--gap-xs), 1vw, var(--gap-xl)) var(--gap-2xl);
          justify-content: var(--alignment);
        }
      }
    }

    &[layout='text'] {
      grid-gap: 0;
      grid-template-areas: 'text';

      .collection-links__container {
        gap: clamp(var(--gap-xs), 1vw, var(--gap-xl)) var(--gap-2xl);
        flex-wrap: wrap;
        flex-direction: row;
        justify-content: var(--alignment);
      }
    }
  }

  .collection-links__container {
    display: flex;
    gap: var(--gap-md);
    flex-direction: column;
  }

  .collection-links__images {
    overflow: hidden;
    grid-area: image;

    @media screen and (max-width: 749px) {
      image-block {
        max-width: 100%;
      }
    }
  }
/* END_SECTION:collection-links */

/* START_SECTION:featured-product (INDEX:36) */
.featured-product-section .section-content-wrapper {
    grid-template-columns: 1fr;
    display: grid;
    overflow: hidden;

    @media screen and (min-width: 750px) {
      grid-template-columns: 1fr 1fr;
    }
  }

  .featured-product-section {
    --viewport-offset: 400px;
    --constrained-min-height: var(--visual-preview--height, 80dvh);
    --constrained-height: max(var(--constrained-min-height), calc(100vh - var(--viewport-offset)));

    @media screen and (min-width: 750px) {
      --viewport-offset: 300px;
    }
  }

  .featured-product-section .product-grid__card {
    --padding-block: 20px;
    --padding-inline: 20px;

    @media screen and (min-width: 750px) {
      --padding-block: 40px;
      --padding-inline: 40px;
    }
  }

  @media screen and (max-width: 749px) {
    .featured-product-section .media-block {
      order: -1;
    }
  }

  @media screen and (min-width: 750px) {
    .featured-product-section .product-card__content {
      --hugged-width: calc(var(--constrained-height) * var(--gallery-aspect-ratio, var(--media-preview-ratio)));
      width: min(100%, var(--hugged-width));
      margin-left: auto;
      margin-right: auto;
    }
  }
/* END_SECTION:featured-product */

/* START_SECTION:footer-utilities (INDEX:37) */
.utilities {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap);
    text-wrap: nowrap;
    border-top: var(--border-width) solid var(--color-border);
    color: var(--color-foreground-muted);

    @media screen and (min-width: 750px) {
      display: grid;
      grid-template-columns: 1fr auto 1fr;
      justify-content: center;
      gap: var(--gap);
      align-items: center;
      text-align: left;
    }
  }

  .utilities a {
    color: var(--color-foreground-muted);
  }

  .utilities > * {
    text-align: center;

    @media screen and (min-width: 750px) {
      text-align: left;
      justify-self: start;
    }
  }

  /* Dynamic positioning based on number of blocks */
  @media screen and (min-width: 750px) {
    /* 1 block: Single column, left aligned */
    .utilities--blocks-1 {
      grid-template-columns: 1fr;
      justify-content: start;
    }

    .utilities--blocks-1 > * {
      justify-self: start;
      text-align: left;
    }

    /* 2 blocks: Two equal columns, start and end aligned */
    .utilities--blocks-2 {
      grid-template-columns: 1fr 1fr;
    }

    .utilities--blocks-2 > *:nth-child(2) {
      justify-self: end;
      text-align: right;
    }

    /* 3 blocks: Three columns (1fr auto 1fr), start/center/end aligned */
    .utilities--blocks-3 {
      grid-template-columns: 1fr auto 1fr;
    }

    .utilities--blocks-3 > *:nth-child(2) {
      justify-self: center;
      text-align: center;
    }

    .utilities--blocks-3 > *:nth-child(3) {
      justify-self: end;
      text-align: right;
    }
  }
/* END_SECTION:footer-utilities */

/* START_SECTION:footer (INDEX:38) */
.footer-content {
    contain: content;
    content-visibility: auto;
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--footer-gap);
    align-items: start;
  }

  .footer-content .menu__heading__default {
    font-weight: var(--font-heading--weight);
  }

  @media screen and (min-width: 750px) and (max-width: 989px) {
    .footer-content {
      grid-template-columns: repeat(min(var(--grid-columns), 3), 1fr);
      grid-auto-flow: row;
    }

    .footer-content[style*='--grid-columns: 4'] {
      grid-template-columns: repeat(2, 1fr);
    }

    .footer-content--isolated-grid-item-tablet > :last-child {
      grid-column: 1 / -1;
    }
  }

  @media screen and (min-width: 990px) {
    .footer-content {
      grid-template-columns: repeat(var(--grid-columns), 1fr);
    }

    /* Single item centered */
    .footer-content[style*='--grid-columns: 1'] {
      justify-items: center;
    }

    .footer-content--isolated-grid-item-desktop > :last-child {
      grid-column: 1 / -1;
    }
  }
/* END_SECTION:footer */

/* START_SECTION:header-announcements (INDEX:39) */
.announcement-bar {
    border-block-end: var(--border-bottom-width) solid var(--color-border);
  }

  .announcement-bar__slider {
    display: flex;
    flex-direction: row;
    align-items: center;
    position: relative;

    @media screen and (max-width: 749px) {
      grid-column: 1 / -1;
    }
  }

  .announcement-bar__slides {
    display: grid;
    grid: [stack] auto / [stack] auto;
    width: calc(100% - var(--button-size) * 2);
    max-width: 680px;
    margin-inline: auto;
  }

  .announcement-bar__slides > * {
    grid-area: stack;
  }

  .announcement-bar__slide {
    transition: opacity 0.5s ease-in-out, visibility 0.5s ease-in-out;
    content-visibility: visible;

    &[aria-hidden='true'] {
      opacity: 0;
      visibility: hidden;
    }
  }

  .announcement-bar__slider slideshow-arrows {
    padding: 0;
    mix-blend-mode: normal;
  }

  .announcement-bar__slider slideshow-arrows .slideshow-control {
    color: var(--color-foreground);
  }

  .announcement-bar__slider .slideshow-control {
    display: flex;
    padding: 0;
    width: var(--button-size);
    height: var(--button-size);
    align-items: center;
    justify-content: center;
    opacity: 1;
    animation: none;

    @media screen and (min-width: 750px) {
      --slideshow-control-offset: calc((var(--button-size) - var(--icon-size-xs)) / 2);

      .section--page-width &.slideshow-control--previous {
        transform: translateX(var(--slideshow-control-offset));
      }
    }
  }

  .announcement-bar__slider .slideshow-control .svg-wrapper {
    width: var(--icon-size-xs);
    height: var(--icon-size-xs);
  }

  .announcement-bar__slide {
    place-content: center;
  }

  .announcement-bar__text:first-child {
    margin: 0;
  }

  .announcement-bar__link {
    position: absolute;
    inset: 0;
  }
/* END_SECTION:header-announcements */

/* START_SECTION:header (INDEX:40) */
body {
    --header-height: 60px;
    --header-group-height: var(--header-height);
    --transparent-header-offset-boolean: 0; /* stylelint-disable-line declaration-property-value-disallowed-list */
  }

  .header {
    /* Set header paddings based on height setting */
    --header-padding: var(--padding-sm);
    --font-paragraph--line-height: 1;
    --header-content-transition-timing: 0s;

    display: block;
    contain: layout style;
    background: transparent;

    a,
    .button,
    .button-secondary,
    .header-actions__action {
      /* reset style from base.css */
      transition: color var(--header-content-transition-timing), border-color var(--header-content-transition-timing);
    }
  }

  #header-component :is(.header-menu, .dropdown-localization) {
    display: none;
  }

  @media screen and (min-width: 750px) {
    #header-component[data-menu-style='menu'] :is(.header-menu, .dropdown-localization) {
      display: flex;
    }
  }

  #header-component[data-menu-style='drawer'] .header__column {
    display: contents;
  }

  @media screen and (min-width: 750px) {
    #header-component[data-menu-style='menu'] .header__navigation-bar-row {
      display: none;
    }
  }

  .header[transparent] {
    --language-button-background-color: transparent;
    --language-button-border-color: transparent;
    --header-content-transition-timing: calc(var(--submenu-animation-speed) - var(--animation-speed-fast))
      var(--animation-speed-fast) var(--ease-out-cubic);

    --closed-underlay-height: 0px;

    /* used to display the appropriate logo based on transparency state */
    --header-logo-display: none;
    --header-logo-inverse-display: block;

    position: absolute;
    top: 0;
    left: 0;
    right: 0;

    z-index: var(--layer-overlay);

    &[transparent='not-sticky'][data-sticky-state='active'],
    &:has(.menu-list__link:not([aria-haspopup]):hover) {
      --header-logo-display: unset;
      --header-logo-inverse-display: unset;
      --color-foreground: inherit;
      --color-foreground-rgb: inherit;
      --color-background: inherit;
      --color-background-rgb: inherit;
      --color-border: inherit;
      --color-border-rgb: inherit;
      --closed-underlay-height: 100%;
    }

    /** For transparent header, apply inherit to rows when menu is not hovered */
    &:not([data-sticky-state='active']):not(:has(.menu-list__link:is(:hover, [aria-expanded='true']))) .header__row {
      --color-foreground: inherit;
      --color-foreground-rgb: inherit;
      --color-border: inherit;
      --color-border-rgb: inherit;
      --color-primary-button-background: inherit;
      --color-primary-button-text: inherit;
    }

    /* Multiple selectors for performance: each simple :has() check is faster than one complex selector with multiple conditions */
    &:has(.mega-menu__list:hover),
    &:has(.menu-list__link:is(:hover, [aria-expanded='true'])),
    &:has(.menu-list__list-item[slot='overflow'] .menu-list__link:is(:hover, [aria-expanded='true'])) {
      --header-logo-display: unset;
      --header-logo-inverse-display: unset;
      --color-foreground: inherit;
      --color-foreground-rgb: inherit;
      --color-background: inherit;
      --color-background-rgb: inherit;
      --color-border: inherit;
      --color-border-rgb: inherit;
      --header-content-transition-timing: var(--submenu-animation-speed) var(--ease-out-cubic);
    }
  }

  /* When top row has transparent background, make it inherit colors from header component */
  [data-transparent-color-scheme='top']:hover .header__row--top,
  [data-transparent-color-scheme='top']:focus-within .header__row--top,
  [data-transparent-color-scheme='both']:hover .header__row--top,
  [data-transparent-color-scheme='both']:focus-within .header__row--top {
    --color-foreground: inherit;
    --color-foreground-rgb: inherit;
    --color-border: inherit;
    --color-border-rgb: inherit;
    --color-primary-button-background: inherit;
    --color-primary-button-text: inherit;
  }

  /* When bottom row has transparent background, make it inherit colors from header component */
  [data-transparent-color-scheme='bottom']:hover .header__row--bottom,
  [data-transparent-color-scheme='bottom']:focus-within .header__row--bottom,
  [data-transparent-color-scheme='both']:hover .header__row--bottom,
  [data-transparent-color-scheme='both']:focus-within .header__row--bottom {
    --color-foreground: inherit;
    --color-foreground-rgb: inherit;
    --color-border: inherit;
    --color-border-rgb: inherit;
    --color-primary-button-background: inherit;
    --color-primary-button-text: inherit;
  }

  .header-section {
    position: relative;
    z-index: var(--layer-heightened);
  }

  /* need default values for non-flash transitions on first overflow menu open */
  #header-component {
    --submenu-height: 0px;
    --full-open-header-height: 0px;
  }

  #header-group:has(#header-component[sticky]) {
    display: contents;
  }

  .header-section:has(> #header-component[sticky='always']),
  .header-section:has(> #header-component[sticky='scroll-up'][data-sticky-state='active']) {
    position: sticky;

    /* Use -1 instead of 0 so intersection observer can track sticky state */
    top: -1px;
    z-index: var(--layer-sticky);
  }

  .header[data-sticky-state] {
    transition: opacity var(--animation-speed) var(--animation-easing);
    opacity: 1;
  }

  .header[data-sticky-state='active'] {
    view-transition-name: sticky-header;
  }

  :active-view-transition-type(empty-cart-drawer) {
    .header[data-sticky-state='active'] {
      view-transition-name: none;
    }
  }

  .header[data-sticky-state='idle'] {
    opacity: 0;
  }

  /* ================================
     * Underlays
     * ================================ */
  .header__underlay {
    position: absolute;
    inset: 0;
  }

  .header__underlay-closed {
    height: var(--closed-underlay-height, 100%);
    z-index: var(--layer-lowest);
    background: linear-gradient(
      var(--color-scheme-top-row) 0 var(--top-row-height),
      var(--color-scheme-bottom-row) var(--top-row-height) var(--header-height)
    );
    transition: height var(--animation-speed-slow) var(--ease-out-cubic);
  }

  .header__underlay-open {
    height: var(--full-open-header-height);
    background: linear-gradient(
      var(--color-scheme-top-row) 0 var(--top-row-height),
      var(--color-scheme-bottom-row) var(--top-row-height) var(--header-height),
      var(--color-submenu) var(--header-height) 100%
    );
    /* header-height is updated via js, the transition works automagically */
    transition: height var(--submenu-animation-speed) var(--ease-out-cubic);
  }

  .header__underlay-open::after {
    content: '';
    position: absolute;
    inset: 0;
    box-shadow: var(--shadow-popover);
    clip-path: inset(var(--header-height) 0 -100px 0); /* stylelint-disable-line */
    transition: height var(--submenu-animation-speed) var(--ease-out-cubic);
  }

  /* When top row has transparent background, make underlay inherit colors from header component */
  [data-transparent-color-scheme='top']:hover,
  [data-transparent-color-scheme='top']:focus-within,
  [data-transparent-color-scheme='both']:hover,
  [data-transparent-color-scheme='both']:focus-within {
    :is(.header__underlay-open, .header__underlay-closed) {
      --color-scheme-top-row: var(--color-background);
    }
  }

  /* When bottom row has transparent background, make underlay inherit colors from header component */
  [data-transparent-color-scheme='bottom']:hover,
  [data-transparent-color-scheme='bottom']:focus-within,
  [data-transparent-color-scheme='both']:hover,
  [data-transparent-color-scheme='both']:focus-within {
    :is(.header__underlay-open, .header__underlay-closed) {
      --color-scheme-bottom-row: var(--color-background);
    }
  }

  [data-submenu-overlap-bottom-row] {
    .header__underlay-open {
      background: linear-gradient(
        var(--color-scheme-top-row) 0 var(--top-row-height),
        var(--color-submenu) var(--top-row-height) 100%
      );
    }

    .header__row--bottom {
      z-index: var(--layer-lowest);
    }
  }

  /* End Underlays ================ */

  .header__row {
    /* The account component uses a different color scheme, but we need to override it to inherit the color of the header row */
    --color-account-icon: var(--color-foreground);

    position: relative;

    /* Overwrite color from color scheme, background is controlled by the underlays */
    background-color: transparent;

    &:has(.mega-menu__list:hover),
    &:has(.menu-list__link[aria-haspopup]:is(:hover, [aria-expanded='true'])),
    &:has(.menu-list__list-item[slot='overflow'] .menu-list__link:is(:hover, [aria-expanded='true'])) {
      /* Only elevate the row when the submenu is open to avoid overlapping other elevated content */
      z-index: var(--layer-heightened);
    }
  }

  .header__row--top:not(.divider--page-width),
  .header__row--top.divider--page-width .header__columns,
  .header__row--bottom {
    border-bottom: var(--border-bottom-width) solid var(--color-border);
  }

  @media screen and (max-width: 749px) {
    .header__row--top:not(.divider--page-width),
    .header__row--top.divider--page-width .header__columns {
      border-bottom-width: var(--border-bottom-width-mobile);
    }
  }

  #header-component[data-menu-style='drawer'] .header__row--top:not(.divider--page-width),
  #header-component[data-menu-style='drawer'] .header__row--top.divider--page-width .header__columns {
    border-bottom-width: var(--border-bottom-width-mobile);
  }

  .header__row.divider--page-width:not(.section--page-width) .header__columns {
    @media screen and (min-width: 750px) {
      padding-inline-start: 0;
      padding-inline-end: 0;
      margin-inline-start: var(--page-margin);
      margin-inline-end: var(--page-margin);
    }
  }

  .header__column {
    display: flex;
    align-items: center;

    /* on mobile, header__column nodes are ignored to create a new grid-template-area based on all visible content */
    @media screen and (max-width: 749px) {
      display: contents;
    }
  }

  .header__column--left,
  .header__column--center {
    gap: var(--gap-xl);
    grid-area: left;
  }

  .header__column--center {
    justify-content: center;
    grid-area: center;

    header-menu:only-child .overflow-menu::part(list) {
      justify-content: center;
    }
  }

  .header__column--right {
    gap: var(--gap-xl);
    justify-content: flex-end;
    grid-area: right;

    .overflow-menu::part(list) {
      justify-content: flex-end;
    }
  }

  .header__columns {
    /* Three column layout */
    --header-left: 1fr;
    --header-center: auto;
    --header-right: 1fr;
    --header-template-columns: var(--header-left) var(--header-center) var(--header-right);

    /* Mobile layout */
    --header-mobile-bookend: 44px;

    display: grid;
    grid-template-areas: 'left center right';
    grid-gap: var(--gap-xl);
    grid-template-columns: var(--header-template-columns);

    /* If menu is in center column */
    &:has(.header__column--center header-menu) {
      --header-center: auto;
      --header-left: minmax(max-content, 1fr);
      --header-right: minmax(max-content, 1fr);
    }

    /* If there is no center column, make the column the menu is in grow eagerly */
    &:where(:not(:has(.header__column--center))) {
      @media screen and (min-width: 750px) {
        --header-template-columns: var(--header-left) var(--header-right);

        grid-template-areas: 'left right';
      }

      /* If the header-menu is in the right column */
      &:has(.header__column--right header-menu) {
        --header-right: auto;
        --header-left: minmax(max-content, 1fr);
      }

      /* If the header-menu is in the left column */
      &:has(.header__column--left header-menu) {
        --header-left: auto;
        --header-right: minmax(max-content, 1fr);
      }
    }

    @media screen and (max-width: 749px) {
      --header-template-columns: var(--header-mobile-bookend) var(--header-mobile-bookend) 1fr
        var(--header-mobile-bookend) var(--header-mobile-bookend);

      grid-template-areas: 'leftA leftB center rightA rightB';
      grid-column: span 3;
      column-gap: 0;
      align-items: center;
      padding-block: 0;
      padding-inline: 0 var(--padding-3xs);

      .header-logo {
        grid-area: center;
      }

      &:not(:has(header-actions)) .search-action {
        grid-area: leftB;
      }

      &:not(:has(shopify-account)) .search-action {
        grid-area: rightA;
      }

      .search-action {
        grid-area: leftB;
      }

      header-actions {
        grid-area: rightB;
      }
    }
  }

  /* not ideal but we need to duplicate these styles for when touch comes into play
    We could avoid the duplication using js to set the data-menu-style attribute on small screens instead of using @media queries */
  #header-component[data-menu-style='drawer'] .header__columns {
    --header-template-columns: var(--header-mobile-bookend) var(--header-mobile-bookend) 1fr
      var(--header-mobile-bookend) var(--header-mobile-bookend);

    grid-template-areas: 'leftA leftB center rightA rightB';
    grid-column: span 3;
    column-gap: 0;
    align-items: center;
    padding-block: 0;
    padding-inline: 0 var(--padding-3xs);

    .header-logo {
      grid-area: center;
    }

    &:not(:has(header-actions)) .search-action {
      grid-area: leftB;
    }

    &:not(:has(shopify-account)) .search-action {
      grid-area: rightA;
    }

    .search-action {
      grid-area: leftB;
    }

    header-actions {
      grid-area: rightB;
    }
  }

  /* Single column layout if there are no columns within */
  .header__columns:not(:has(.header__column)) {
    grid-template-columns: 1fr;
  }

  /* Check for hover support to avoid unnecessary expensive recalculations when tapping on mobile */
  @media (hover: hover) {
    /* Column-specific dimming effect when any interactive element is hovered
        Multiple selectors for performance: each simple :has() check is faster than one complex selector with multiple conditions */
    .header__column:has(header-menu:hover),
    .header__column:has(.header-actions__action:hover),
    .header__column:has(.header__icon--menu:hover) {
      header-menu:not(:hover),
      .header-actions__action:not(:hover),
      .header__icon--menu:not(:hover) {
        opacity: var(--opacity-subdued-text);
        transition: opacity var(--animation-speed) var(--animation-easing);
      }
    }
  }

  /* Ensure smooth transitions for all interactive elements */
  header-menu,
  .header-actions__action,
  .header__icon--menu {
    transition: opacity var(--animation-speed) var(--animation-easing);
  }

  /* Header action button styles */
  .header-actions__action {
    --button-color: var(--color-foreground);
    color: var(--button-color);
    cursor: pointer;
    display: flex;
    justify-content: center;

    &:hover {
      --button-color: var(--color-foreground);
    }
  }

  .header-actions__action:not(.account-button) .svg-wrapper {
    height: var(--button-size);
    width: var(--button-size);
  }

  .header-actions__action:not(.account-button) svg {
    width: var(--icon-size-md);
    height: var(--icon-size-md);
  }

  .header:has(#Details-menu-drawer-container[open]) {
    contain: style;
  }

  .header.header--compact {
    --header-padding: var(--padding-2xs);
  }

  .header__columns {
    --padding-block-start: var(--header-padding);
    --padding-block-end: var(--header-padding);
  }

  .header:not(.header--compact) .header__row--bottom {
    --header-padding: var(--padding-xs);
  }

  .header--collapse-row-paddings {
    .header__row--top .header__columns {
      --padding-block-end: 0px;
    }

    .header__row--bottom .header__columns {
      --padding-block-start: 0px;
    }
  }

  /* When the header is transparent, add a margin to a potential header-section below it */
  .header-section:has(.header[transparent]) + .shopify-section {
    margin-top: var(--header-height);
  }

  /* When the header is transparent, and when there is no header-section below it, offset the first main-section with
     * the height of the header
     */

  main > .shopify-section:first-child .section:not(.disable-section-top-offset) {
    &.spacing-style,
    .spacing-style {
      --section-top-offset: calc(var(--header-height) * var(--transparent-header-offset-boolean));

      /* Any nested sections should not be offset */
      :is(.spacing-style, .inherit-spacing) {
        --section-top-offset: 0px;
      }
    }

    /* Make sticky content immediately stick to the top of the page */
    .sticky-content {
      margin-top: calc(var(--header-height) * var(--transparent-header-offset-boolean) * -1);
    }
  }

  /* Optimize layout performance for hidden menus */
  .header-menu .menu-list__submenu {
    content-visibility: auto;
    contain-intrinsic-size: 0px 500px;
  }

  /* Force visibility when open/animating and in overflow submenu to prevent layout issues */
  .header-menu details[open] .menu-list__submenu,
  .header-menu .menu-list__submenu[data-active],
  .header-menu .menu-list__list-item[slot='overflow'] .menu-list__submenu {
    content-visibility: visible;
  }

  /* Dropdown Localization Styles */
  .dropdown-localization__button {
    display: flex;
    position: relative;
    align-items: center;
    gap: 4px;
    font-family: var(--menu-localization-font);
    font-size: var(--menu-localization-font-size);
    font-weight: var(--menu-top-level-font-weight);
    padding-inline: var(--padding-2xs);
    margin-inline: calc(-1 * var(--padding-2xs));
  }

  .dropdown-localization__button .svg-wrapper.icon-caret {
    height: var(--icon-size-xs);
    width: var(--icon-size-xs);
    right: var(--margin-xs);
    top: calc(50% - var(--padding-2xs));
    flex-shrink: 0;
    transition: transform var(--animation-speed) var(--animation-easing);
  }

  .dropdown-localization__button .icon-flag {
    width: var(--menu-localization-font-size, var(--icon-size-sm));
    height: var(--menu-localization-font-size, var(--icon-size-sm));
    clip-path: circle(50%); /* stylelint-disable-line */
    background-position: center;
    background-size: cover;
    margin-inline-end: 4px;
    position: relative;
  }

  .dropdown-localization__button .icon-flag::after {
    content: '';
    position: absolute;
    inset: 0;
    box-shadow: inset 0 0 var(--size-shadow) var(--color-shadow);
    border-radius: 50%;
  }

  .dropdown-localization__button[aria-expanded='true'] .icon-caret svg {
    transform: rotate(180deg);
  }

  .dropdown-localization__button,
  .dropdown-localization__button:hover {
    box-shadow: none;
    background-color: transparent;
    border-color: transparent;
  }

  dropdown-localization-component .localization-form__list {
    max-height: 20.5rem;
  }

  .localization-wrapper {
    position: fixed;
    z-index: var(--layer-raised);
    border-radius: var(--style-border-radius-popover);
    transition-property: display, opacity, translate;
    transition-duration: 0.3s;
    transition-timing-function: var(--ease-out-quad);
    transition-behavior: allow-discrete;
    translate: 0 20px;
    opacity: 0;
  }

  .localization-wrapper:not([hidden]) {
    translate: 0 0;
    opacity: 1;
  }

  @starting-style {
    .localization-wrapper:not([hidden]) {
      translate: 0 20px;
      opacity: 0;
    }
  }

  dropdown-localization-component {
    position: relative;
    background-color: transparent;
  }

  dropdown-localization-component .country-filter {
    position: relative;
    padding: 8px;
  }

  dropdown-localization-component .country-filter__input {
    border: none;
  }

  dropdown-localization-component .localization-form__list-item {
    margin-inline: 8px;
  }

  dropdown-localization-component .localization-wrapper {
    box-shadow: var(--shadow-popover);
    border: var(--style-border-popover);
    background-color: var(--color-background);
    max-height: 27.5rem;
    position: absolute;
    top: calc(100% + 10px);
    z-index: calc(var(--layer-header-menu) + 1);
  }

  dropdown-localization-component .localization-wrapper.right-bound {
    right: 0;
    left: unset;
  }

  dropdown-localization-component .localization-wrapper.left-bound {
    left: -8px;
    right: unset;
  }

  /* Additional specificity due to dropdown-localization-component getting a low score */
  dropdown-localization-component .language-selector.language-selector {
    padding: 10px 8px 10px 16px;
  }

  dropdown-localization-component .localization-form__currency {
    width: max-content;
    opacity: 0;
    visibility: hidden;
    transition: none;
  }

  dropdown-localization-component .localization-form__select:hover {
    background-color: rgb(var(--color-primary-hover-rgb) / var(--opacity-8));
  }

  dropdown-localization-component
    :is(
      .localization-form__list-item:hover,
      .localization-form__list-item[aria-selected='true'],
      .localization-form__list-item[aria-current='true']
    )
    .localization-form__currency {
    opacity: 1;
    color: var(--color-foreground-muted);
    transition: opacity var(--animation-speed-slow) var(--animation-easing);
    visibility: visible;
  }

  .dropdown-localization .language-selector:where(:not(.top-shadow)) {
    font-weight: var(--menu-top-level-font-weight);
  }

  .dropdown-localization:not(dropdown-localization-component) .language-selector {
    font-family: var(--menu-localization-font);
    font-size: var(--menu-localization-font-size);
  }
/* END_SECTION:header */

/* START_SECTION:hero (INDEX:41) */
.hero-wrapper {
    --hero-height-offset: 0px;
  }

  /* Being extra specific in the selector for performance reasons */
  body:has(> #header-group > .header-section > #header-component) .hero-wrapper:first-child {
    --hero-height-offset: var(--header-group-height, 0);
  }

  .hero {
    position: relative;
    min-height: calc(var(--hero-min-height) - var(--hero-height-offset));
  }

  .hero[data-shopify-visual-preview] {
    --hero-min-height: 600px;

    min-height: 600px;
  }

  .hero__container {
    position: relative;
    overflow: hidden;
    border: var(--hero-border-width) var(--hero-border-style) rgb(var(--color-border-rgb) / var(--hero-border-opacity));
    min-height: inherit;
    align-items: var(--vertical-alignment-mobile);
    justify-content: var(--horizontal-alignment);
    z-index: var(--layer-base);

    @media screen and (min-width: 750px) {
      align-items: var(--vertical-alignment);
    }
  }

  .hero__content-wrapper.page-width {
    grid-column: 2 / 3;
  }

  .hero__content-wrapper {
    position: relative;
    inset: 0;
    z-index: var(--layer-flat);
  }

  .hero__content-wrapper .group-block-content {
    position: relative;
  }

  .hero__media-grid {
    position: absolute;
    inset: 0;
    display: grid;
    grid-column: 1 / -1;
    grid-template-columns: repeat(var(--hero-media-count, 1), 1fr);
  }

  .hero--auto .hero__media {
    aspect-ratio: var(--hero-media-aspect-ratio);
  }

  .hero--no-blocks-auto-height {
    .hero__media {
      width: 100%;
      aspect-ratio: auto;
    }

    .hero__media-grid {
      /* When there are no blocks and the height is auto, allow the image to appear. */
      position: relative;
    }
  }

  .hero__media-wrapper {
    overflow: hidden;
    position: relative;
  }

  .hero__media {
    height: 100%;
    width: 100%;
    object-fit: cover;
    object-position: center center;
    overflow: hidden;
    position: relative;
    z-index: var(--layer-base);
  }

  /* Mobile/Desktop media visibility */

  .hero__media-wrapper--mobile {
    display: none;
  }

  .hero__media-wrapper--desktop {
    display: block;
  }

  @media screen and (max-width: 749px) {
    .hero__media-wrapper--desktop {
      display: none;
    }

    .hero__media-wrapper--mobile {
      display: block;
    }

    .hero__media-grid {
      grid-template-columns: repeat(var(--hero-media-count-mobile, 1), 1fr);
    }

    /* Mobile stacking */
    .hero--stack-mobile .hero__media-grid {
      grid-template-columns: 1fr;
      grid-template-rows: repeat(var(--hero-media-count-mobile, 1), calc(100% / var(--hero-media-count-mobile, 1)));
    }
  }

  .hero__link {
    position: absolute;
    inset: 0;
    grid-column: 1 / -1;
  }

  .hero__media-grid,
  .hero__content-wrapper {
    pointer-events: none;

    :is(a, button, input, textarea, select, details, summary) {
      pointer-events: auto;
    }
  }

  .hero__content-wrapper--design-mode * {
    pointer-events: auto;
  }

  .hero[data-blur-shadow='true'] {
    --blurred-reflection-filter-saturate: saturate(1.5);
    --blurred-reflection-mask-image: linear-gradient(to bottom, #000 0%, #000 60%, transparent 100%);
    --blurred-reflection-box-shadow: rgb(0 0 0 / 5%) 0 0 1rem;
    --blurred-reflection-filter-blur: blur(20px);
    --blurred-reflection-scale: scale(2, 1.25);
    --blurred-reflection-padding-block-end: 60px;
  }

  .hero[data-blur-shadow='true'] .hero__container::before {
    content: '';
    position: absolute;
    inset: 0;
    box-shadow: var(--blurred-reflection-box-shadow);
    mix-blend-mode: overlay;
    pointer-events: none;
    z-index: -1;
  }

  .hero__blurred-image {
    position: absolute;
    inset: 0;
    z-index: -1;
    mask-image: var(--blurred-reflection-mask-image);
    filter: var(--blurred-reflection-filter-saturate);
    pointer-events: none;
    transform: translateY(50%);
    overflow: hidden;
  }

  .hero__blurred-image--desktop {
    display: none;

    @media screen and (min-width: 750px) {
      display: block;
    }
  }

  .hero__blurred-image--mobile {
    display: block;

    @media screen and (min-width: 750px) {
      display: none;
    }
  }

  .hero__blurred-image img,
  .hero__blurred-image svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    filter: var(--blurred-reflection-filter-blur);
    opacity: var(--blur-opacity);
    transform: var(--blurred-reflection-scale);
    padding-block-end: var(--blurred-reflection-padding-block-end);

    &:not(:only-child) {
      width: 50%;

      &:last-child {
        right: 0;
        left: auto;
      }
    }
  }
/* END_SECTION:hero */

/* START_SECTION:layered-slideshow (INDEX:42) */
.layered-slideshow-section {
    position: relative;
  }

  layered-slideshow-component {
    display: block;
    width: 100%;
  }

  .layered-slideshow__container {
    --radius: calc(var(--corner-radius, 1) * 1rem);
    --button-width: 56px;
    --border-color: var(--color-background);
    --inactive-tabs-width: calc((var(--total-tabs) - 1) * var(--button-width));
    --active-panel-width: calc(100cqi - var(--inactive-tabs-width));
    width: 100%;
    position: relative;
    container-type: inline-size;
    border-radius: var(--radius);
    overflow: hidden;
  }

  .layered-slideshow__container:not([size='auto']) {
    height: 100%;
  }

  .layered-slideshow__container[size='auto'] {
    height: auto;
  }

  @media screen and (min-width: 750px) {
    layered-slideshow-component {
      min-height: var(--layered-min-height-desktop, 0px);
    }
  }

  .layered-slideshow__tablist {
    display: grid;
    grid-template-columns: var(--active-tab);
    position: absolute;
    inset: 0;
    height: 100%;
    pointer-events: none;
    z-index: var(--layer-raised);
  }

  .layered-slideshow__tablist button {
    width: var(--button-width);
    height: 100%;
    pointer-events: all;
    opacity: 0;
    cursor: grab;
    border: none;
    background: transparent;
    padding: 0;
    position: relative;
    outline: none;
    transition: opacity 0.2s ease;
  }

  .layered-slideshow__tablist button:active {
    cursor: grabbing;
  }

  .layered-slideshow__tablist button[aria-selected='true'] {
    cursor: default;
  }

  .layered-slideshow__tablist button:focus-visible {
    opacity: 1;
  }

  .layered-slideshow__container[data-dragging] {
    cursor: grabbing;
  }

  .layered-slideshow__container[data-instant-transitions],
  .layered-slideshow__container:is([data-dragging], [data-instant-transitions])
    :is(
      .layered-slideshow__tablist,
      .layered-slideshow__panels,
      .layered-slideshow__panel-content,
      .layered-slideshow__content
    ) {
    transition: none;
  }

  .layered-slideshow__panels {
    display: grid;
    grid-template-columns: var(--active-tab);
    height: 100%;
    overflow: hidden;
  }

  .layered-slideshow__panel {
    position: relative;
    height: 100%;
    min-width: var(--button-width);
    border-radius: var(--radius);
    z-index: calc(var(--total-tabs) - var(--index));
  }

  .layered-slideshow__panel:first-child .layered-slideshow__panel-content {
    width: var(--active-panel-width);
    border-left: var(--border-width) solid var(--border-color);
  }

  .layered-slideshow__panel:not(:first-child) .layered-slideshow__content {
    padding-inline-start: calc((var(--radius) * 2) + var(--padding-inline-start, 0px));
  }

  .layered-slideshow__panel-content {
    border: var(--border-width) solid var(--border-color);
    border-left: none;
    border-radius: var(--radius);
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    overflow: hidden;
    width: calc(var(--active-panel-width) + (var(--radius) * 2));
  }

  .layered-slideshow__panel-content :is(img, video, svg) {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  /* Video poster visibility - poster shows initially and hides when panel becomes active */
  .layered-slideshow__video-poster {
    z-index: 1;
  }

  .layered-slideshow__video {
    z-index: 0;
  }

  /* When panel is active, hide poster so video is visible */
  .layered-slideshow__panel:not([inert]) .layered-slideshow__video-poster {
    opacity: 0;
  }

  @media (prefers-reduced-motion: no-preference) {
    .layered-slideshow__video-poster {
      transition: opacity 0.3s ease;
    }
  }

  .layered-slideshow__content {
    height: 100%;
    position: relative;
    z-index: 1;
  }

  .layered-slideshow__content > * {
    margin: auto;
  }

  .layered-slideshow__content.background-transparent {
    background-color: transparent;
  }

  .layered-slideshow__panel--drop-shadow:not(:last-child) .layered-slideshow__panel-content {
    box-shadow: 4px 0 12px 0 rgba(0, 0, 0, 0.1);
  }

  /* Shared transitions (desktop and mobile) */
  @media (prefers-reduced-motion: no-preference) {
    .layered-slideshow__panels,
    .layered-slideshow__tablist {
      transition-property: grid-template-columns, grid-template-rows;
      transition-duration: 0.6s;
      transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    }

    .layered-slideshow__content {
      opacity: 0;
      transform: translateY(0.5lh);
      transition: opacity 0.48s, transform 0.48s;
    }

    .layered-slideshow__panel:not([inert]) .layered-slideshow__content {
      opacity: 1;
      transform: translateY(0);
      transition-delay: 0.24s;
    }
  }

  @media screen and (max-width: 749px) {
    .layered-slideshow__container {
      --button-height: 44px;
      --inactive-tabs-height: calc((var(--total-tabs) - 1) * var(--button-height));
    }

    .layered-slideshow__container:not([size='auto']) {
      --layered-total-height: calc(var(--layered-panel-height-mobile, 260px) + var(--inactive-tabs-height));
      --active-panel-height: var(--layered-panel-height-mobile, 260px);
      min-height: var(--layered-total-height);
      height: var(--layered-total-height);
    }

    .layered-slideshow__container[size='auto'] {
      height: auto;
    }

    .layered-slideshow__tablist {
      grid-template-rows: var(--active-tab);
      grid-template-columns: 1fr;
      grid-auto-flow: row;
    }

    .layered-slideshow__tablist button {
      width: 100%;
      height: var(--button-height);
    }

    .layered-slideshow__panels {
      grid-template-rows: var(--active-tab);
      grid-template-columns: 1fr;
      grid-auto-flow: row;
    }

    .layered-slideshow__panel {
      min-height: var(--button-height);
      width: 100%;
      height: 100%;
      position: relative;
      z-index: calc(var(--total-tabs) - var(--index));
    }

    .layered-slideshow__panel:first-child .layered-slideshow__panel-content {
      width: 100%;
      height: var(--active-panel-height);
      border-top: var(--border-width) solid var(--border-color);
      left: 0;
      right: 0;
      border-left: var(--border-width) solid var(--border-color);
    }

    .layered-slideshow__panel-content {
      position: absolute;
      border: var(--border-width) solid var(--border-color);
      border-radius: var(--radius);
      box-sizing: border-box;
      width: 100%;
      /* Clamp overlap to (button-height - border-width) to prevent visual issues with large radius + border */
      height: calc(var(--active-panel-height) + min(var(--radius) * 2, var(--button-height) - var(--border-width)));
      top: unset;
      left: 0;
      right: 0;
      bottom: 0;
      overflow: hidden;
    }

    .layered-slideshow__panel:not(:first-child) .layered-slideshow__panel-content {
      border-top: none;
    }

    .layered-slideshow__panel:not(:first-child) {
      margin-top: calc(var(--border-width) * -1);
    }

    .layered-slideshow__content {
      padding-inline-start: var(--padding-inline-start, 0px);
      padding-inline-end: var(--padding-inline-end, 0px);
    }

    /* Adjust padding for non-first slides to account for radius overlap at the top (not sides on mobile) */
    .layered-slideshow__panel:not(:first-child) .layered-slideshow__content {
      padding-block-start: calc((var(--radius) * 2) + var(--padding-block-start, 0px));
      padding-inline-start: var(--padding-inline-start, 0px);
    }

    .layered-slideshow__panel--drop-shadow:not(:last-child) .layered-slideshow__panel-content {
      box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.1);
    }
  }
/* END_SECTION:layered-slideshow */

/* START_SECTION:logo (INDEX:43) */
.logo-section {
    width: calc(var(--logo-width) + var(--padding-inline-start) + var(--padding-inline-end));
    max-width: 100%;
    max-height: calc(var(--logo-height, 100%) + var(--padding-block-start) + var(--padding-block-end));
    font-size: var(--logo-height);
    display: flex;

    @media screen and (max-width: 749px) {
      max-height: calc(
        var(--logo-height-mobile, var(--logo-height, 100%)) + var(--padding-block-start) + var(--padding-block-end)
      );
      font-size: var(--logo-height-mobile, var(--logo-height));
      width: calc(
        var(--logo-width-mobile, var(--logo-width)) + var(--padding-inline-start) + var(--padding-inline-end)
      );
    }
  }

  .logo-section--center {
    margin-inline: auto;
  }

  .logo-section--flex-end {
    margin-inline-start: auto;
  }

  .logo-section--flex-start {
    margin-inline-end: auto;
  }

  .logo-section__image-wrapper {
    display: flex;
    width: 100%;
    max-width: 100%;
    max-height: 100%;
  }

  .logo-section__image {
    object-fit: contain;
    width: 100%;
  }
/* END_SECTION:logo */

/* START_SECTION:main-blog-post (INDEX:45) */
.blog-post-comments-container {
    width: 100%;
    max-width: var(--normal-content-width);
    margin: 0 auto;
  }

  .blog-post-comments {
    display: flex;
    flex-direction: column;
    gap: var(--gap-3xl);
  }

  .blog-post-comment__author {
    display: flex;
    align-items: center;
    gap: var(--gap-2xs);
    margin-top: var(--margin-md);
    font-size: var(--font-size--body-sm);
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }

  .blog-post-comments-pagination {
    display: flex;
    justify-content: center;
    gap: var(--gap-2xs);
  }

  .blog-post-comments-pagination,
  .blog-post-comments-pagination a {
    color: var(--color-foreground);
  }

  .blog-post-comments-pagination .current {
    color: var(--color-foreground);
  }

  .blog-post-comments-pagination .current,
  .blog-post-comments-pagination a {
    display: block;
    padding: var(--padding-2xs) var(--padding-xs);
  }

  .blog-post-comments-pagination .current,
  .blog-post-comments-pagination a:hover {
    border-bottom: 1px solid var(--color-foreground);
  }
/* END_SECTION:main-blog-post */

/* START_SECTION:main-blog (INDEX:46) */
/**
   * Blog posts page layout
   */
  .blog-posts {
    --page-content-width: var(--narrow-page-width);
    --page-width: calc(var(--page-content-width) + (var(--page-margin) * 2));
    --columns-gap: 36px;
    --rows-gap: 36px;
  }

  .blog-posts-container {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 1rem;
    width: 100%;
    column-gap: var(--columns-gap);
    row-gap: var(--rows-gap);
  }

  /**
   * Blog post item grid positioning and scaling.
   * Layout is calculated in Liquid based on total article count.
   * Mobile overrides are applied per-item in inline styles for proper specificity.
   */
  .blog-post-item {
    grid-column: span var(--col-span);
  }

  /**
   * When there's no image, the blog post item has a border.
   */
  .blog-post-item {
    border: 1px solid rgb(var(--color-foreground-rgb) / var(--opacity-20));
    padding: 0 1rem 1rem;
  }

  .blog-post-item:has(.blog-post-card__image-container) {
    border: none;
    padding: 0;
  }
/* END_SECTION:main-blog */

/* START_SECTION:main-cart (INDEX:47) */
.cart-page {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0 var(--padding-5xl);
  }

  .cart-page--empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }

  .cart-page--empty .cart-page__title,
  .cart-page--empty .cart-page__more-blocks {
    margin-top: var(--margin-6xl);
  }

  .cart-page__more-blocks {
    width: 100%;
  }

  .cart-page--empty .cart-title {
    text-align: center;
  }

  .cart-page__main {
    grid-column: 1;
  }

  .cart-page__summary {
    padding-top: var(--padding-xl);
  }

  .cart-page__title + .cart-page__items {
    margin-block-start: var(--margin-lg);
  }

  @media screen and (min-width: 750px) {
    .cart-page {
      grid-template-columns: 1fr min(50vw, var(--sidebar-width));
      grid-template-rows: min-content min-content 1fr;
    }

    .cart-page__summary {
      display: grid;
      height: 100%;
      grid-column: 2;
      grid-row: 1 / -1;
      align-self: stretch;
      grid-template-rows: subgrid;
      padding-top: 0;

      /* needed to support blurred effect from hero section */
      position: relative;
    }

    .section--page-width .cart-page:has(.cart-summary--extend) {
      grid-column: 2 / 4;
      grid-template-columns: 1fr minmax(
          var(--sidebar-width),
          calc((100vw - var(--page-width)) / 2 + var(--sidebar-width))
        );
    }
  }

  @media screen and (min-width: 1400px) {
    .cart-page {
      grid-template-columns: 1fr var(--sidebar-width);
    }
  }
/* END_SECTION:main-cart */

/* START_SECTION:marquee (INDEX:51) */
marquee-component {
    display: block;
    width: 100%;
    overflow: hidden;
  }

  .marquee__wrapper {
    display: flex;
    gap: var(--marquee-gap);
    width: fit-content;
    white-space: nowrap;
  }

  .marquee__content {
    min-width: max-content;
    display: flex;
    gap: var(--marquee-gap);
  }

  .marquee__content :is(p, h1, h2, h3, h4, h5, h6) {
    white-space: nowrap;
  }

  .marquee__content .marquee__repeated-items * {
    max-width: none;
  }

  .marquee__repeated-items {
    min-width: max-content;
    display: flex;
    gap: var(--marquee-gap);
    align-items: center;
    justify-content: center;
  }

  .marquee__repeated-items > * {
    align-content: center;
  }

  @media (prefers-reduced-motion: no-preference) {
    marquee-component:not([data-disabled]) .marquee__wrapper {
      animation: marquee-motion var(--marquee-speed) linear infinite var(--marquee-direction);
    }
  }

  @keyframes marquee-motion {
    to {
      transform: translate3d(calc(-50% - (var(--marquee-gap) / 2)), 0, 0);
    }
  }
/* END_SECTION:marquee */

/* START_SECTION:media-with-content (INDEX:52) */
.section--page-width {
    &.media-with-content {
      grid-template-areas: 'margin-left media margin-right' 'margin-left content margin-right';

      @media screen and (min-width: 750px) {
        /* Wide proportion is media 3.5 parts, content 2.5 parts. Which equals 7|5. So divide the central column by 7+5 and multiply accordingly */
        --media-with-content-grid-columns: var(--full-page-grid-margin)
          calc((var(--full-page-grid-central-column-width) / 12) * 7)
          calc((var(--full-page-grid-central-column-width) / 12) * 5) var(--full-page-grid-margin);

        grid-template-areas: 'margin-left media content margin-right';
      }
    }

    &.media-with-content--media-right {
      @media screen and (min-width: 750px) {
        --media-with-content-grid-columns: var(--full-page-grid-margin)
          calc((var(--full-page-grid-central-column-width) / 12) * 5)
          calc((var(--full-page-grid-central-column-width) / 12) * 7) var(--full-page-grid-margin);

        grid-template-areas: 'margin-left content media margin-right';
      }
    }

    &.media-with-content--medium {
      @media screen and (min-width: 750px) {
        --media-with-content-grid-columns: var(--full-page-grid-margin)
          repeat(2, calc(var(--full-page-grid-central-column-width) / 2)) var(--full-page-grid-margin);
      }
    }

    &.media-with-content--narrow.media-with-content--media-right {
      @media screen and (min-width: 750px) {
        --media-with-content-grid-columns: var(--full-page-grid-margin)
          calc((var(--full-page-grid-central-column-width) / 3) * 2)
          calc(var(--full-page-grid-central-column-width) / 3) var(--full-page-grid-margin);
      }
    }

    &.media-with-content--narrow {
      @media screen and (min-width: 750px) {
        --media-with-content-grid-columns: var(--full-page-grid-margin)
          calc(var(--full-page-grid-central-column-width) / 3)
          calc((var(--full-page-grid-central-column-width) / 3) * 2) var(--full-page-grid-margin);
      }
    }
  }

  .section--full-width {
    &.media-with-content--media-right {
      @media screen and (min-width: 750px) {
        --media-with-content-grid-columns: 2.5fr 3.5fr;

        grid-template-areas: 'content media';
      }
    }

    &.media-with-content--medium {
      @media screen and (min-width: 750px) {
        --media-with-content-grid-columns: 1fr 1fr;
      }
    }

    &.media-with-content--narrow {
      @media screen and (min-width: 750px) {
        --media-with-content-grid-columns: 2fr 4fr;
      }
    }

    &.media-with-content--narrow.media-with-content--media-right {
      @media screen and (min-width: 750px) {
        --media-with-content-grid-columns: 4fr 2fr;
      }
    }
  }

  /* Keep the CSS specificity lower assuming that liquid won't assign this class with a full width section */
  .media-with-content.media-with-content--media-extend {
    grid-template-columns: var(--media-with-content-grid-columns);
    grid-template-areas: 'media media media' 'margin-left content margin-right';

    @media screen and (min-width: 750px) {
      grid-template-areas: 'media media content margin-right';
    }
  }

  .media-with-content--media-extend.media-with-content--media-right {
    @media screen and (min-width: 750px) {
      grid-template-areas: 'margin-left content media media';
    }
  }

  .media-with-content--media-right {
    @media screen and (min-width: 750px) {
      grid-template-areas: 'margin-left content media media';
    }
  }

  .media-with-content {
    --media-with-content-grid-columns: var(--full-page-grid-with-margins);

    grid-template-columns: var(--media-with-content-grid-columns);
    grid-template-areas: 'media media media' 'content content content';

    @media screen and (min-width: 750px) {
      --media-with-content-grid-columns: 3.5fr 2.5fr;

      /* Default desktop layout is wide media, on the left, in full page section */
      grid-template-areas: 'media content';
    }

    .media-block {
      grid-area: media;
    }

    .media-with-content__content {
      grid-area: content;
    }

    /* Inner blocks spacing */
    .media-with-content__content > .group-block-content {
      padding-inline: var(--page-margin);
      padding-block: calc(2 * var(--page-margin));

      @media screen and (min-width: 750px) {
        padding-block: var(--page-margin);
      }
    }

    &.section--page-width .media-with-content__content > .group-block-content {
      padding-inline: 0;

      @media screen and (min-width: 750px) {
        padding-inline-start: var(--page-margin);
      }
    }

    &.section--page-width.media-with-content--media-right .media-with-content__content > .group-block-content {
      padding-inline-end: var(--page-margin);
      padding-inline-start: 0;
    }
  }

  .media-with-content[data-shopify-visual-preview] {
    --hero-min-height: 500px;

    min-height: 500px;
  }
/* END_SECTION:media-with-content */

/* START_SECTION:password-footer (INDEX:53) */
.password-footer {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap-sm);
    padding-block: var(--padding-xl);
  }

  .password-footer__powered-by {
    margin: 0;
    display: flex;
    align-items: center;
    gap: var(--padding-xs);
    height: 1em;

    > a {
      display: flex;
    }

    .icon-shopify {
      display: inline;
      height: 1.3em;
      color: var(--color-foreground);
    }
  }

  .password-footer__links {
    display: flex;
    align-items: center;
    gap: var(--gap-2xl);

    @media screen and (max-width: 749px) {
      flex-direction: column;
      gap: var(--gap-sm);
    }
  }

  .password-footer__admin-link {
    margin: 0;
  }

  .password-footer__button {
    height: var(--minimum-touch-target);
    background-color: transparent;
    color: var(--color-primary);
    cursor: pointer;
    text-decoration: underline;

    &:hover {
      color: var(--color-primary-hover);
      text-decoration: none;
    }
  }
/* END_SECTION:password-footer */

/* START_SECTION:password (INDEX:54) */
.section-password {
    flex-grow: 1;
    display: flex;
  }

  .password-content {
    text-align: center;
  }
/* END_SECTION:password */

/* START_SECTION:product-hotspots (INDEX:57) */
/* Section layout */
  .section-product-hotspots {
    position: relative;
  }

  .section-product-hotspots__wrapper {
    display: flex;
    flex-direction: column;
    gap: var(--gap);
    width: 100%;
    height: 100%;
  }

  /* Image container */
  .section-product-hotspots__content {
    position: relative;
    aspect-ratio: var(--ratio, 21 / 9);
    overflow: hidden;
  }

  /* Hide hotspots without products on touch devices (tablets included) */
  @media (hover: none) {
    .hotspot.hotspot--hidden-touch {
      display: none;
    }
  }

  /* Responsive adjustments */
  @media screen and (max-width: 749px) {
    /* Hide dialog on mobile - hotspot opens quick-add modal instead */
    .hotspot .hotspot-dialog {
      display: none;
    }
  }

  /* Hotspot button - positioned element with clickable area */
  .hotspot {
    position: absolute;
    cursor: pointer;
    width: var(--button-size);
    height: var(--button-size);
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    padding: 0;
    font: inherit;
    color: inherit;
    outline: none;
    transition: border-color 0.2s ease-out, box-shadow 0.2s ease-out;
    z-index: var(--layer-flat);
  }

  .hotspot:has(.hotspot-dialog[open]) {
    z-index: var(--layer-raised);
  }

  .hotspot .hotspot-trigger {
    padding: 0;
    border: none;
  }

  .hotspot-dialog__product-content {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: var(--padding-xs);
    padding-inline-start: 0;
    overflow: hidden;
  }

  /* Visual target circle */
  .hotspot-trigger {
    width: var(--hotspot-size);
    height: var(--hotspot-size);
    background: var(--hotspot-bg, rgb(0 0 0 / 0.5));
    border-radius: 50%;
    cursor: pointer;
    position: relative;
    transition: width 0.1s ease-out, height 0.1s ease-out;
  }

  /* On mobile, ensure trigger is tappable */
  @media screen and (max-width: 749px) {
    .hotspot-trigger {
      cursor: pointer;
      -webkit-tap-highlight-color: transparent;
    }
  }

  /* Bullseye using ::after pseudo-element */
  .hotspot-trigger::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc(var(--hotspot-size) * 0.4);
    height: calc(var(--hotspot-size) * 0.4);
    background: var(--hotspot-bullseye, #fff);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    transition: width 0.1s ease-out, height 0.1s ease-out, background 0.1s ease-out;
  }

  /* Bullseye grows on hover or when dialog is open (desktop only) */
  @media screen and (min-width: 750px) {
    .hotspot:hover .hotspot-trigger::after,
    .hotspot:has(.hotspot-dialog[open]) .hotspot-trigger::after {
      width: calc(var(--hotspot-size) * 0.55);
      height: calc(var(--hotspot-size) * 0.55);
      transition: width 0.2s ease-out, height 0.2s ease-out, background 0.2s ease-out;
      transition-delay: 0.2s;
    }
  }

  .hotspots-container {
    position: absolute;
    inset: 0;
    z-index: var(--layer-flat);
    overflow: clip;
  }

  .hotspots__background-image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
  }

  /* Dialog positioning */
  .hotspot .hotspot-dialog {
    position: absolute;
    padding: 0;
    border-radius: var(--style-border-radius-popover);
    border: var(--style-border-popover);
    width: max-content;
    min-width: var(--minimum-width-dialog);
    max-width: var(--maximum-width-dialog);
    box-shadow: var(--shadow-popover);

    &[data-placement*='bottom'] {
      --offset-y: 0px;
      --origin-y: calc(var(--hotspot-size) / 2);
      top: calc((var(--button-size) - var(--hotspot-size)) / 2 + var(--dialog-vertical-offset, 0px));
      bottom: unset;
    }
    &[data-placement*='top'] {
      --offset-y: 0px;
      --origin-y: calc(100% - (var(--hotspot-size) * 0.5));
      top: unset;
      bottom: calc((var(--button-size) - var(--hotspot-size)) * 0.5 - var(--dialog-vertical-offset, 0px));
    }
    &[data-placement*='left'] {
      --offset-x: calc((var(--button-size) - var(--hotspot-size)) * 0.5);
      --origin-x: calc(100% - (var(--hotspot-size) * 0.5));
      left: unset;
      right: 100%;
    }
    &[data-placement*='right'] {
      --offset-x: calc((var(--button-size) - var(--hotspot-size)) * -0.5);
      --origin-x: calc(var(--hotspot-size) * 0.5);
      left: 100%;
      right: unset;
    }
    &[data-placement*='center'] {
      left: 50%;
      translate: -50% 0;
      right: unset;
    }
    &[data-placement*='center'][data-placement*='bottom'] {
      --origin-y: calc(var(--hotspot-size) * 0.5);
      --origin-x: 50%;
      --offset-y: calc((var(--button-size) - var(--hotspot-size)) * -0.5);
      /* stylelint-disable-next-line declaration-property-value-disallowed-list */
      --offset-x: 0;
      top: 100%;
      bottom: unset;
      margin: 0;
    }
    &[data-placement*='center'][data-placement*='top'] {
      --origin-y: calc(100% - (var(--hotspot-size) * 0.5));
      --origin-x: 50%;
      --offset-y: calc((var(--button-size) - var(--hotspot-size)) * 0.5);
      /* stylelint-disable-next-line declaration-property-value-disallowed-list */
      --offset-x: 0;
      bottom: 100%;
    }
  }

  .hotspot .hotspot-dialog:is(:focus, :focus-visible),
  .hotspot .hotspot-dialog__link:is(:focus, :focus-visible) {
    outline: none;
  }

  .hotspot-dialog__product {
    display: grid;
    grid-template-columns: auto 1fr;
  }

  .hotspot-dialog__product-image,
  .hotspot-dialog svg.hotspot-dialog__placeholder-product-image {
    width: var(--width-product-image-dialog);
    height: var(--width-product-image-dialog);
    aspect-ratio: 1;
    padding: var(--padding-product-image-popover, var(--padding-xs));
    object-fit: cover;
    border-radius: var(--style-border-radius-popover);
  }

  .hotspot-dialog__link {
    position: absolute;
    inset: 0;
    z-index: var(--layer-flat);
  }

  .hotspot-dialog__product-title {
    margin-block-end: var(--product-title-gap);
    padding-inline-end: var(--padding-sm);
    min-width: 0;
  }

  .hotspot .hotspot-dialog .hotspot-dialog__sold-out-badge {
    display: flex;
    width: fit-content;
    justify-self: flex-end;
    align-self: flex-end;
    justify-content: center;
    align-items: center;
    font-size: var(--font-body--size);
    padding: var(--padding-2xs) var(--padding-sm);
    background: rgb(var(--color-foreground-rgb) / var(--opacity-10));
    border-radius: var(--border-radius-sm);
    text-transform: uppercase;
    letter-spacing: var(--letter-spacing-sm);
    opacity: var(--opacity-80);
  }

  /* Dialog transitions */
  .hotspot .hotspot-dialog {
    --hotspot-blur: 4px;
    --hotspot-scale: 0.8;
    --hotspot-entry-duration: 0.2s;
    --hotspot-exit-duration: 0.1s;

    /* Firefox doesn't have reverse transitions */
    /* in webkit/chromium we can set a closing attribute as we transition the exit and hook there */
    filter: blur(var(--hotspot-blur));
    opacity: 0;
    transform: scale(var(--hotspot-scale)) translate(0, 0);
    transition-property: display, opacity, filter, transform;
    transition-duration: var(--hotspot-entry-duration);
    transition-timing-function: ease;

    transform: scale(var(--hotspot-scale)) translate(var(--offset-x), var(--offset-y));
    transform-origin: var(--origin-x) var(--origin-y);
    transition-timing-function: cubic-bezier(0.65, -0.49, 0.35, 1.12);

    &[data-closing='true'] {
      transition-duration: var(--hotspot-exit-duration);
      transition-timing-function: ease-out;
      transform: scale(1) translate(0, calc(var(--hotspot-size) * 0.25));
    }

    /* We can only set transition-behavior once we've measured the dialog dimensions */
    &[data-showing='true'] {
      transition-behavior: allow-discrete;
    }
  }

  .hotspot .hotspot-dialog[open][data-showing='true'] {
    opacity: 1;
    transform: scale(1) translate(0, 0);
    filter: blur(0px);
  }

  @starting-style {
    .hotspot .hotspot-dialog[open][data-showing='true'] {
      opacity: 0;
      filter: blur(var(--hotspot-blur));
      transform: scale(var(--hotspot-scale)) translate(var(--offset-x), var(--offset-y));
      transform-origin: var(--origin-x) var(--origin-y);
    }
  }

  /* Safety triangles for dialogs */
  .hotspot .hotspot-dialog::after {
    content: '';
    position: absolute;
    opacity: 0;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: all;
    transition: opacity 0.22s ease-out, translate 0.22s 0.1s ease-out;
    scale: var(--scale-x, 1) var(--scale-y, 1);
    z-index: var(--layer-flat);
  }

  .hotspot-dialog[open]:is([data-placement*='left'], [data-placement*='right'])::after {
    /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
    clip-path: polygon(0 0, 100% 0, 100% 100%);
    width: calc(var(--button-size) / 2 + var(--hotspot-size) * 0.5);
  }

  .hotspot-dialog[open][data-placement*='right']::after {
    right: 100%;
    left: unset;
  }

  .hotspot-dialog[open][data-placement*='left']::after {
    left: 100%;
    right: unset;
    --scale-x: -1;
  }

  .hotspot-dialog[open][data-placement*='top']::after {
    --scale-y: -1;
  }

  .hotspot-dialog[open][data-placement*='center']::after {
    height: calc(var(--button-size) / 2 + var(--hotspot-size) * 0.5);
    width: 100%;
    /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
    clip-path: polygon(0 0, 100% 0, 50% calc(100% - var(--hotspot-size) * 0.25));
    --scale-x: 1;
    --scale-y: 1;
  }

  .hotspot-dialog[open][data-placement*='center'][data-placement*='bottom']::after {
    top: unset;
    bottom: 100%;
    --scale-y: -1;
  }

  .hotspot-dialog[open][data-placement*='center'][data-placement*='top']::after {
    top: 100%;
    bottom: unset;
  }

  /* Quick add button */
  .hotspot-dialog[open] {
    .quick-add {
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      width: auto;
      height: auto;
      position: relative;
      z-index: var(--layer-flat);
    }

    .quick-add__button {
      position: relative;
      padding-block: 0;
      box-shadow: none;
      align-items: center;
      justify-self: flex-end;
      height: fit-content;
      translate: var(--padding-2xs) 0;
      border: none;
      color: var(--color-foreground);
      background-color: var(--color-background);
      overflow: visible;
      pointer-events: all;
      opacity: 1;
      animation: elementSlideInTop var(--animation-speed) var(--animation-easing);
      transition-property: translate;
      transition-duration: var(--animation-speed);
      transition-timing-function: var(--ease-out-cubic);

      &::before {
        content: '';
        position: absolute;
        inset: -2px;
        border-radius: calc(50px + 2px);
        border: 2px solid transparent;
        pointer-events: none;
        transition-property: border-color;
        transition-duration: 0s;
        transition-timing-function: var(--ease-out-cubic);
      }

      &:is(:hover, :focus, :focus-visible, :active) {
        translate: 0 0;
        transition-delay: var(--animation-speed-slow);

        &::before {
          border-color: rgb(var(--color-foreground-rgb) / var(--opacity-15));
          transition-duration: var(--animation-speed);
          transition-delay: var(--animation-speed-slow);
        }
      }
    }
  }
/* END_SECTION:product-hotspots */

/* START_SECTION:product-information (INDEX:58) */
.sticky-add-to-cart__bar {
    position: fixed;
    bottom: 20px;
    left: 50%;
    opacity: 0;
    transform: translateX(-50%) translateY(calc(100% + 40px));
    z-index: calc(var(--layer-sticky) - 1); /* Below sticky header */
    display: block;
    width: 600px;
    border-radius: calc(
      var(--style-border-radius-buttons-primary) + min(var(--padding-sm), var(--style-border-radius-buttons-primary))
    );
    box-shadow: var(--shadow-popover);
    padding: var(--padding-sm);
    /* Layout styling */
    display: flex;
    align-items: center;
    gap: var(--gap-md);

    @starting-style {
      opacity: 0;
      transform: translateX(-50%) translateY(calc(100% + 40px));
    }

    &::before {
      --border: 2px;
      content: '';
      position: absolute;
      inset: calc(var(--border) * -1);
      background: linear-gradient(var(--color-background) 0 100%), linear-gradient(hsl(0 0% 0% / 0.15) 0 100%);
      background-clip: content-box, border-box;
      border: var(--border) solid #0000;
      border-radius: inherit;
      z-index: -1;
      backdrop-filter: blur(20px) saturate(180%) brightness(1.5);
    }
  }

  @media (prefers-reduced-motion: no-preference) {
    .sticky-add-to-cart__bar {
      transition-property: transform, opacity, display;
      transition-duration: 0.3s;
      transition-timing-function: var(--ease-out-quad);
      transition-behavior: allow-discrete;
    }
  }

  .sticky-add-to-cart__bar[data-stuck='true'] {
    transform: translateX(-50%) translateY(0%);
    opacity: 1;
  }

  sticky-add-to-cart:not([data-variant-available='true']) .sticky-add-to-cart__bar {
    opacity: 0;
    transform: translateX(-50%) translateY(calc(100% + 40px));
    display: none;
  }

  .sticky-add-to-cart__info[data-has-image='false'] {
    padding-left: var(--padding-lg);
  }

  .sticky-add-to-cart__image {
    flex-shrink: 0;
    aspect-ratio: 1;
    height: var(--height-buy-buttons);
    overflow: hidden;
    border-radius: var(--style-border-radius-buttons-primary);
    background: var(--color-background-secondary);
  }

  .sticky-add-to-cart__image-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  .sticky-add-to-cart__info {
    flex: 1;
    min-width: 0; /* Allow text truncation */
  }

  .sticky-add-to-cart__title {
    font-size: var(--font-paragraph-medium--size);
    font-weight: var(--font-weight-semibold);
    line-height: var(--font-paragraph--line-height);
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .sticky-add-to-cart__variant {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
    font-size: var(--font-paragraph-small--size);
    margin-top: var(--margin-3xs);
  }

  .sticky-add-to-cart__price {
    font-weight: var(--font-weight-semibold);
  }

  .sticky-add-to-cart__button {
    height: var(--height-buy-buttons);
    position: relative;
  }

  /* Mobile adjustments */
  @media screen and (max-width: 749px) {
    .sticky-add-to-cart__bar {
      bottom: 0;
      width: 100%;
      max-width: none;
      border-radius: 0;

      &::before {
        --border: 1px;
      }
    }

    .sticky-add-to-cart__bar .add-to-cart-text__content {
      display: none;
    }

    .sticky-add-to-cart__info[data-has-image='false'] {
      padding-left: 0;
    }

    .sticky-add-to-cart__title {
      font-size: var(--font-paragraph--size);
    }

    .sticky-add-to-cart__button {
      padding: var(--padding-lg);
    }

    .sticky-add-to-cart__price {
      font-size: var(--font-paragraph-small--size);
    }

    .sticky-add-to-cart__button {
      width: var(--height-buy-buttons);
    }

    sticky-add-to-cart:not([data-variant-available='true']) .add-to-cart-text__content {
      display: initial;
    }

    sticky-add-to-cart:not([data-variant-available='true']) .sticky-add-to-cart__button {
      width: auto;
    }
  }

  /* Small mobile - hide text content and compare price */
  @media screen and (max-width: 389px) {
    .sticky-add-to-cart__bar {
      .compare-at-price {
        display: none;
      }
    }

    .sticky-add-to-cart__title {
      display: none;
    }

    /* For product with only default variant show title */
    .sticky-add-to-cart__info[data-singleton='true'] .sticky-add-to-cart__title {
      display: block;
    }

    /* For single variant show title and variant, truncate both. variant should be identifiable with truncation */
    .sticky-add-to-cart__info[data-single-option='true'] .sticky-add-to-cart__title {
      display: block;
    }

    .sticky-add-to-cart__info[data-single-option='true'] .sticky-add-to-cart__variant {
      display: block;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
  }
/* END_SECTION:product-information */

/* START_SECTION:quick-order-list (INDEX:61) */
.quick-order-list {
    --quantity-selector-width: 124px;
    --image-size: 43px;
    --quantity-header-padding: calc(var(--minimum-touch-target) + var(--gap-sm));
    --quick-order-quantity-column-width: calc(
      var(--quantity-selector-width) + 2 * var(--gap-sm) + 2 * var(--minimum-touch-target)
    );
    --transform-offset-negative: calc(-1 * var(--icon-stroke-width));
    --quick-order-first-column-width: 2fr; /* Takes 2 fractions of available space */
    --quick-order-price-column-width: 1fr; /* Takes 1 fraction */
    --quick-order-total-column-width: 1fr; /* Takes 1 fraction */

    display: flex;
    flex-direction: column;
    gap: var(--gap-sm);
  }

  .quick-order-list__container {
    width: 100%;
  }

  /* Grid container setup */
  .quick-order-list__grid {
    width: 100%;
    display: block; /* Container is block, children use grid */
    contain: layout; /* Isolate layout calculations for performance */
  }

  .quick-order-list__grid-body {
    contain: layout; /* Isolate layout calculations for performance */
  }

  .quick-order-list__grid-header,
  .quick-order-list__grid-row {
    display: grid;
    grid-template-columns:
      var(--quick-order-first-column-width) /* Variant column - takes 2 parts of available space */
      var(--quick-order-quantity-column-width) /* Fixed pixel width for quantity */
      var(--quick-order-price-column-width) /* Price column - takes 1 part */
      var(--quick-order-total-column-width); /* Total column - takes 1 part */
    gap: var(--gap-md);
    align-items: center;
  }

  .quick-order-list__grid-header {
    border-block-end: var(--style-border-width) solid var(--color-border);
    padding-block-end: var(--padding-xl);
    margin-block-end: var(--padding-sm);
    opacity: var(--opacity-85);
    font-weight: normal;
    font-size: var(--font-size--xs);
    letter-spacing: var(--letter-spacing--body-loose);
  }

  /* Add padding to quantity column header to align with content */
  .quick-order-list__grid-header .quick-order-list__grid-cell--quantity {
    padding-inline-start: var(--quantity-header-padding);
  }

  .quick-order-list__grid-row {
    padding-block-start: var(--padding-sm);
    padding-block-end: var(--padding-sm);
    content-visibility: auto;
    contain-intrinsic-size: auto
      calc(2 * var(--padding-sm) + var(--image-size) + var(--minimum-touch-target) + var(--padding-2xl));
  }

  @media screen and (min-width: 750px) {
    .quick-order-list__grid-row {
      contain-intrinsic-size: auto calc(2 * var(--padding-sm) + var(--image-size));
    }
  }

  .quick-order-list__grid-cell--variant {
    text-align: start;
    justify-self: stretch;
  }

  .quick-order-list__grid-cell--quantity {
    display: flex;
    justify-content: flex-start;
    align-items: flex-start;
    justify-self: stretch;
  }

  .quick-order-list__grid-cell--quantity .variant-item__inner-container {
    width: 100%;
    justify-content: flex-start;
  }

  .quick-order-list__grid-cell--price {
    text-align: end;
    justify-self: stretch;
  }

  .quick-order-list__grid-cell--total {
    text-align: end;
    justify-self: stretch;
  }

  .variant-item__image-container,
  .quick-order-list__table-image {
    width: var(--image-size);
    height: auto;
  }

  .quick-order-list .pagination {
    margin-block-start: 0;
    padding-block-start: var(--padding-xl);
    padding-block-end: 0;
  }

  .variant-item__inner-container {
    display: flex;
    align-items: center;
    gap: var(--gap-sm);
  }

  .volume-pricing-info-placeholder {
    width: var(--minimum-touch-target);
    height: var(--minimum-touch-target);
  }

  .variant-item__quantity .quantity-selector {
    display: flex;
    flex: 0 0 var(--quantity-selector-width);
    min-width: var(--quantity-selector-width);
    font-size: var(--font-size--xs);
    height: auto;
  }

  .variant-item__remove {
    background-color: transparent;
    color: var(--color-foreground);
    width: var(--minimum-touch-target);
    height: var(--minimum-touch-target);
    justify-content: center;
    box-shadow: none;
    padding: 0;
  }

  .remove-icon-bottom,
  .remove-icon-top {
    transition: transform var(--animation-speed) var(--animation-easing);
  }

  .variant-item__remove:not(.variant-item__remove--hidden):hover .remove-icon-top {
    transform: translate(var(--transform-offset-negative), var(--icon-stroke-width)) rotate(-15deg);
  }

  .variant-item__remove:not(.variant-item__remove--hidden):is(:hover, :active) .remove-icon-bottom {
    transform: translateY(var(--icon-stroke-width));
  }

  /* Hide remove button with opacity to prevent layout shift */
  .variant-item__remove--hidden {
    opacity: 0;
    pointer-events: none;
    cursor: default;
  }

  .variant-item__name {
    font-weight: var(--font-weight-medium);
  }

  .variant-item__sku {
    font-size: var(--font-size--3xs);
    opacity: var(--opacity-85);
  }

  .variant-item__details {
    display: inline-flex;
    flex-direction: column;
  }

  .variant-item__totals {
    flex: 0 0 auto;
    padding-block-start: var(--padding-2xs);
  }

  /* Compare at price styles */
  .variant-item__discounted-prices {
    display: flex;
    gap: var(--gap-2xs);
    justify-content: flex-end;
  }

  .variant-item__discounted-prices dd {
    margin: 0;
  }

  /* Mobile layout */
  @media screen and (max-width: 749px) {
    .quick-order-list__grid-header,
    .quick-order-list__grid-row {
      grid-template-columns: 1fr auto; /* Variant column and total column on mobile */
      gap: var(--gap-sm);
      max-width: 100%;
      overflow: hidden;
      align-items: flex-start;
    }

    .quick-order-list__grid-header .quick-order-list__grid-cell--total {
      text-align: end;
    }

    .quick-order-list__grid-row {
      margin-block-end: var(--margin-2xl);
      padding-block-end: var(--padding-2xl);
      border-block-end: var(--style-border-width) solid var(--color-border);
    }

    .quick-order-list__grid-row:last-child {
      margin-block-end: 0;
      border-block-end: none;
    }

    .variant-item__inner {
      flex: 1 1 auto;
      padding-inline-end: var(--padding-lg);
    }

    .variant-item__inner-container {
      display: flex;
      gap: var(--gap-md);
      align-items: flex-start;
    }

    .variant-item__details {
      flex: 1;
      display: flex;
      flex-direction: column;
      min-width: 0; /* Allow text to shrink */
    }

    .variant-item__totals {
      flex: 0 0 auto;
      text-align: end;
      padding-block-start: var(--padding-2xs);
    }

    .variant-item__totals .variant-item__total-price {
      font-size: var(--font-size--sm);
      font-weight: var(--font-weight-medium);
    }

    .variant-item__title-container .variant-item__name {
      display: block;
      font-size: var(--font-size--sm);
      line-height: var(--line-height-tight);
      margin: 0;
    }

    .variant-item__mobile-price-container {
      margin-block-end: var(--margin-xs);
    }

    .variant-item__mobile-price {
      font-size: var(--font-size--sm);
      opacity: var(--opacity-85);
      white-space: nowrap;
    }

    /* Mobile compare at price styles */
    .variant-item__discounted-prices--mobile {
      display: flex;
      flex-direction: row;
      align-items: baseline;
      justify-content: flex-start;
      gap: var(--gap-xs);
      margin-block-start: var(--margin-2xs);
      margin-block-end: 0;
    }

    .variant-item__discounted-prices--mobile dd {
      display: inline;
    }

    .variant-item__mobile-quantity {
      display: flex;
      align-items: center;
      gap: 0;
    }

    /* Mobile-only content styles */
    .variant-item__mobile-info {
      display: flex;
      flex-direction: column;
      width: 100%;
    }

    .variant-item__image-container {
      flex: 0 0 var(--image-size);
      width: var(--image-size);
      height: var(--image-size);
    }

    .quick-order-list__table-image {
      width: 100%;
      height: 100%;
    }

    .variant-item__mobile-quantity .quantity-selector {
      display: flex;
      flex: 0 0 var(--quantity-selector-width);
      min-width: var(--quantity-selector-width);
      font-size: var(--font-size--xs);
      margin: 0;
      padding: 0;
    }

    /* Mobile remove button styling */
    .variant-item__remove--mobile {
      background-color: transparent;
      color: var(--color-foreground);
      width: var(--minimum-touch-target);
      height: var(--minimum-touch-target);
      min-width: var(--minimum-touch-target);
      display: flex;
      align-items: center;
      justify-content: center;
      box-shadow: none;
      padding: 0;
      margin: 0;
      flex-shrink: 0;
      border: none;
      cursor: pointer;
    }

    .variant-item__remove--mobile svg {
      width: var(--icon-size-sm);
      height: var(--icon-size-sm);
    }

    .variant-item__remove--mobile:not(.variant-item__remove--hidden):hover {
      opacity: var(--opacity-70);
    }

    .quick-order-list .pagination {
      padding-block-start: var(--padding-2xl);
    }
  }

  .quick-order-list-disabled {
    pointer-events: none;
  }

  .quick-order-list-total {
    background: var(--color-background);
    border-block-start: var(--style-border-width) solid var(--color-border);
  }

  /* Tablet and Desktop styles - sticky footer */
  @media screen and (min-width: 750px) {
    .quick-order-list-total {
      position: sticky;
      inset-block-end: 0;
      z-index: var(--layer-raised);
    }
  }

  .quick-order-list-total__info,
  .quick-order-list-total__confirmation {
    min-height: 8rem;
    padding-block-start: var(--padding-4xl);
  }

  .quick-order-list-total__info {
    align-items: flex-start;
    gap: var(--gap-md);
  }

  .quick-order-list-total__confirmation {
    display: flex;
    gap: var(--gap-2xl);
    align-items: center;
    justify-content: center;
    padding: var(--padding-2xl) var(--padding-xl);
  }

  .quick-order-list-total__column {
    display: flex;
    flex-direction: column;
  }

  .quick-order-list-total__actions {
    display: flex;
  }

  /* Desktop layout - Use CSS Grid to match main table alignment */
  @media screen and (min-width: 750px) {
    .quick-order-list-total__info {
      display: grid;
      grid-template-columns:
        var(--quick-order-first-column-width) /* Variant column - takes 2 parts of available space */
        var(--quick-order-quantity-column-width) /* Fixed pixel width for quantity */
        var(--quick-order-price-column-width) /* Price column - takes 1 part */
        var(--quick-order-total-column-width); /* Total column - takes 1 part */
    }

    .quick-order-list-total__column {
      grid-column: 1;
      display: flex;
      flex-direction: column;
      gap: var(--gap-md);
    }

    .quick-order-list-total__summary {
      grid-column: 2 / 5;
      display: grid;
      grid-template-columns: var(--quick-order-quantity-column-width, 234px) auto;
    }

    .quick-order-list-total__items {
      grid-column: 1;
      justify-self: center;
      text-align: center;
    }

    .quick-order-list-total__price {
      grid-column: 3;
      justify-self: end;
      text-align: end;
    }
  }

  /* Tablet-specific overrides - 750px to 989px */
  @media screen and (min-width: 750px) and (max-width: 989px) {
    .quick-order-list-total__actions {
      flex-direction: column;
    }

    .quick-order-list-total__messages {
      align-items: stretch;
    }

    .quick-order-list__remove-all-button {
      padding-inline: 0;
    }
  }

  .quick-order-list__button.button--full-width {
    width: 100%;
  }

  .quick-order-list__button.button {
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .quick-order-list-total .button--unstyled {
    border: none;
    box-shadow: none;
    background-color: transparent;
    color: var(--color-foreground);
    cursor: pointer;
  }

  .quick-order-list__remove-all-button svg {
    width: var(--icon-size-sm);
    height: var(--icon-size-sm);
    flex-shrink: 0;
  }

  .quick-order-list-total__items span {
    display: block;
    margin-block-end: var(--margin-xs);
  }

  .quick-order-list-total__items .h5 {
    margin: 0;
    letter-spacing: var(--letter-spacing--body-loose);
    opacity: var(--opacity-85);
  }

  .quick-order-list-total__subtotal-value {
    display: block;
    margin-block-end: var(--margin-xs);
    line-height: var(--font-paragraph--line-height);
  }

  /* Ensure text-component displays properly */
  .quick-order-list-total__subtotal-value text-component {
    display: block;
  }

  .quick-order-list-total__subtotal {
    margin: 0;
    letter-spacing: var(--letter-spacing--body-loose);
    opacity: var(--opacity-85);
  }

  .quick-order-list-total__tax-note {
    opacity: var(--opacity-subdued-text);
  }

  .quick-order-list-total__messages {
    display: flex;
    flex-direction: column;
    gap: var(--gap-xs);
  }

  .quick-order-list-total__success,
  .quick-order-list-total__error {
    display: flex;
    align-items: center;
    gap: var(--gap-xs);
  }

  .quick-order-list-total__success .icon-success,
  .quick-order-list-total__error .quick-order-list-total__icon--error {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--icon-size-sm);
    height: var(--icon-size-sm);
    color: inherit;
  }

  .quick-order-list-total__success .icon-success svg,
  .quick-order-list-total__error .quick-order-list-total__icon--error svg {
    width: 100%;
    height: 100%;
  }

  .quick-order-list-total__error:empty,
  .quick-order-list-total__success:empty {
    display: none;
  }

  .quick-order-list-total__info.confirmation-visible {
    display: none;
  }

  .quick-order-list-total__confirmation-text {
    white-space: nowrap;
  }

  .quick-order-list-total__confirmation-buttons {
    display: flex;
    gap: var(--gap-md);
    align-items: center;
  }

  .quick-order-list-total__confirmation button {
    margin: 0;
    white-space: nowrap;
  }

  .quick-order-list__remove-all-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--gap-sm);
  }

  /* Mobile styles */
  @media screen and (max-width: 749px) {
    .quick-order-list-total__info {
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .quick-order-list-total__column {
      order: 3; /* Move column to the end on mobile */
      width: 100%;
      flex: 1 1 auto;
    }

    .quick-order-list-total__actions {
      flex-direction: column;
      width: 100%;
    }

    .quick-order-list-total__messages {
      width: 100%;
      align-items: center;
      margin-block-start: var(--margin-xs);
    }

    .quick-order-list-total__summary {
      order: 1; /* First on mobile */
      display: flex;
      flex-direction: column;
      align-items: center;
      width: 100%;
      gap: var(--gap-md);
    }

    .quick-order-list-total__items {
      text-align: center;
      width: auto;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: var(--gap-xs);
    }

    .quick-order-list-total__items span {
      display: inline;
      margin-block-end: 0;
    }

    .quick-order-list-total__items .h5 {
      display: inline;
    }

    .quick-order-list-total__price {
      text-align: center;
      width: 100%;
    }

    .quick-order-list-total__product-total {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: var(--gap-xs);
    }

    .quick-order-list-total__product-total .quick-order-list-total__subtotal-value {
      display: inline-block;
      margin-block-end: 0;
    }

    .quick-order-list-total__product-total .quick-order-list-total__subtotal {
      display: inline;
    }

    .quick-order-list__button,
    .quick-order-list__remove-all-button {
      width: 100%;
      justify-content: center;
    }

    .quick-order-list-total__confirmation {
      flex-direction: column;
    }

    .quick-order-list-total__tax-note {
      margin-block-start: var(--margin-xs);
    }
  }
/* END_SECTION:quick-order-list */

/* START_SECTION:slideshow (INDEX:66) */
.slideshow-section {
    slideshow-arrows .slideshow-control:first-of-type {
      margin-inline-start: var(--padding-xs);
    }

    slideshow-arrows .slideshow-control:last-of-type {
      margin-inline-end: var(--padding-xs);
    }

    .slideshow--with-hints--mobile-with-hints {
      gap: var(--slideshow-gap, 0);
      grid-column: 1 / -1;
    }

    /* Hide navigation arrows at boundaries for with-hints mode */
    .slideshow--with-hints--mobile-with-hints slideshow-arrows .slideshow-control {
      transition: opacity 0.3s ease;
    }

    /* Override animation for boundary arrows in with-hints mode on hover */
    slideshow-component.slideshow--with-hints--mobile-with-hints:has(
        slideshow-slide:first-child:not([aria-hidden='true'])
      )
      > slideshow-container
      > slideshow-arrows
      .slideshow-control--previous,
    slideshow-component.slideshow--with-hints--mobile-with-hints:has(
        slideshow-slide:last-child:not([aria-hidden='true'])
      )
      > slideshow-container
      > slideshow-arrows
      .slideshow-control--next {
      animation: none;
      opacity: 0;
      pointer-events: none;
    }

    @media screen and (max-width: 749px) {
      .slideshow--with-hints--mobile-with-hints slideshow-slides {
        padding-inline: var(--page-margin);
      }

      .slideshow--with-hints--mobile-with-hints slideshow-slide {
        width: 96%;
      }

      .slideshow--with-hints--mobile-with-hints slideshow-slides {
        gap: min(var(--slideshow-gap, 0), 10px);
      }
    }

    @media screen and (min-width: 750px) {
      .slideshow--with-hints {
        gap: var(--slideshow-gap, 0);
        grid-column: 1 / -1;
      }

      .slideshow--with-hints slideshow-slides {
        padding-inline: var(--page-margin);
        gap: var(--slideshow-gap, 0);
      }

      .slideshow--with-hints slideshow-slide {
        width: calc((100vw - var(--page-margin) * 2));
        overflow: hidden;
      }

      .slideshow--with-hints slideshow-arrows .slideshow-control {
        transition: opacity 0.3s ease;
      }

      slideshow-component.slideshow--with-hints:has(slideshow-slide:first-child:not([aria-hidden='true']))
        > slideshow-container
        > slideshow-arrows
        .slideshow-control--previous,
      slideshow-component.slideshow--with-hints:has(slideshow-slide:last-child:not([aria-hidden='true']))
        > slideshow-container
        > slideshow-arrows
        .slideshow-control--next {
        animation: none;
        opacity: 0;
        pointer-events: none;
      }
    }
  }
/* END_SECTION:slideshow */

/* CSS from block stylesheet tags */
/* START_BLOCK:_accordion-row (INDEX:67) */
.details__icon {
    height: auto;
    margin-inline-end: var(--margin-xs);
  }
/* END_BLOCK:_accordion-row */

/* START_BLOCK:_announcement (INDEX:68) */
.text-block:not(.text-block--full-width).rte,
  .text-block:not(.text-block--full-width).paragraph {
    /* Safari doesn't support pretty, so fallback to balance */
    text-wrap: balance;
    text-wrap: pretty;
  }

  .text-block:not(.text-block--full-width).h1,
  .text-block:not(.text-block--full-width).h2,
  .text-block:not(.text-block--full-width).h3,
  .text-block:not(.text-block--full-width).h4,
  .text-block:not(.text-block--full-width).h5,
  .text-block:not(.text-block--full-width).h6 {
    text-wrap: balance;
  }

  /* Hide underline unless text is using paragraph styles. */
  .text-block:is(.h1, .h2, .h3, .h4, .h5, .h6) a {
    text-decoration-color: transparent;
  }

  .text-block h1,
  .text-block.h1 > * {
    margin-block: var(--font-h1--spacing);
  }

  .text-block h2,
  .text-block.h2 > * {
    margin-block: var(--font-h2--spacing);
  }

  .text-block h3,
  .text-block.h3 > * {
    margin-block: var(--font-h3--spacing);
  }

  .text-block h4,
  .text-block.h4 > * {
    margin-block: var(--font-h4--spacing);
  }

  .text-block h5,
  .text-block.h5 > * {
    margin-block: var(--font-h5--spacing);
  }

  .text-block h6,
  .text-block.h6 > * {
    margin-block: var(--font-h6--spacing);
  }

  .text-block > *:first-child {
    margin-block-start: 0;
  }

  .text-block > *:last-child {
    margin-block-end: 0;
  }

  .text-block--align-center,
  .text-block--align-center > * {
    margin-inline: auto;
  }

  .text-block--align-right,
  .text-block--align-right > * {
    margin-inline-start: auto;
  }
/* END_BLOCK:_announcement */

/* START_BLOCK:_blog-post-card (INDEX:69) */
.blog-post-card {
    display: flex;
    flex-direction: column;
    text-align: var(--text-align);
    column-gap: var(--columns-gap);
  }

  .blog-post-item--horizontal:has(.blog-post-card__image-container) .blog-post-card {
    & > *:first-child {
      flex-basis: 70%;
    }

    & > *:last-child {
      flex-basis: 30%;
    }
  }

  .blog-post-card__content {
    padding-block-start: 0.4rem;
    display: flex;
    flex-direction: column;
  }

  .blog-post-item .blog-post-card__image-container,
  .blog-post-item .blog-post-card__content {
    width: 100%;
  }

  /**
   * Horizontal layout (image left, content right)
   * Applied to hero posts based on total article count
   * Only applies the split layout when an image is actually present
   */
  .blog-post-item--horizontal .blog-post-card {
    flex-direction: row;

    @media screen and (max-width: 749px) {
      flex-direction: column;
    }
  }

  .blog-post-card__content a {
    display: block;
    text-wrap: pretty;
    text-decoration: none;
    padding-block-start: 0.75rem;
  }

  .blog-post-card__content a:hover,
  .blog-post-card__content a:hover [style*='--color: var(--color-primary)'] {
    color: var(--color-primary-hover);
  }

  .blog-post-card__content a:hover [style*='--color: var(--color-foreground-heading)'] {
    color: rgb(var(--color-foreground-heading-rgb) / var(--opacity-subdued-text));
  }

  .blog-post-card__content a:hover [style*='--color: var(--color-foreground)'] {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }
/* END_BLOCK:_blog-post-card */

/* START_BLOCK:_blog-post-content (INDEX:70) */
.blog-post-content {
    max-width: var(--normal-content-width);
    margin: 0 auto;
  }
/* END_BLOCK:_blog-post-content */

/* START_BLOCK:_blog-post-description (INDEX:71) */
.blog-post-card__content-text a {
    color: var(--color-primary);
  }

  .custom-color,
  .custom-color > :is(h1, h2, h3, h4, h5, h6, p, *) {
    color: var(--color);
  }
/* END_BLOCK:_blog-post-description */

/* START_BLOCK:_blog-post-featured-image (INDEX:72) */
.blog-post-featured-image {
    --width: 100%;
    --custom-width: 100%;

    display: block;
    position: relative;
    width: var(--width);
  }

  .blog-post-featured-image.size-style {
    --width: var(--size-style-width, 100%);
  }

  .blog-post-featured-image--height-fit {
    height: fit-content;
  }

  .blog-post-featured-image--height-fill {
    height: 100%;
  }

  .blog-post-featured-image__image {
    aspect-ratio: var(--ratio);
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
  }

  @media screen and (max-width: 749px) {
    .blog-post-featured-image {
      --width: var(--width-mobile, var(--width));
      --custom-width: var(--custom-width-mobile, var(--custom-width));
    }

    .blog-post-featured-image.size-style {
      --width: var(--size-style-width-mobile, var(--size-style-width, 100%));
    }
  }
/* END_BLOCK:_blog-post-featured-image */

/* START_BLOCK:_blog-post-image (INDEX:73) */
.blog-post-card__image {
    width: 100%;
    object-fit: cover;
    object-position: center center;
    height: calc(var(--blog-post-card-img-height) * var(--blog-post-card-scale));
  }

  .blog-post-card__image--small {
    --blog-post-card-img-height: 280px;
  }

  .blog-post-card__image--medium {
    --blog-post-card-img-height: 340px;
  }

  .blog-post-card__image--large {
    --blog-post-card-img-height: 400px;
  }
/* END_BLOCK:_blog-post-image */

/* START_BLOCK:_blog-post-info-text (INDEX:74) */
.blog-post-details {
    display: flex;
    gap: var(--gap-sm);
    font-size: var(--font-paragraph-size);
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
    white-space: nowrap;
    flex-wrap: wrap;
  }

  .blog-post-details > span {
    text-overflow: clip;
    overflow: hidden;
  }
/* END_BLOCK:_blog-post-info-text */

/* START_BLOCK:_card (INDEX:75) */
.card {
    position: relative;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    width: 100%;
    height: 100%;
    border-radius: var(--border-radius, 0);
    border-width: var(--border-width, 0);
    border-style: var(--border-style, none);
    border-color: var(--border-color);
    container-type: inline-size;
  }

  .card__content {
    width: 100%;
    height: 100%;
    position: relative;
    z-index: var(--layer-flat);
    display: flex;
    flex-direction: column;
    aspect-ratio: var(--card-ratio, 1);
  }

  .card__content.background-transparent {
    background-color: transparent;
  }

  /* When card has both image and content, use min-height from container query */
  .card__content--has-min-height {
    min-height: calc(100cqw / var(--card-ratio-numeric));
  }

  .card__inner {
    flex: 1;
  }

  .card__media-wrapper {
    display: flex;
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
  }

  .card__media-wrapper video {
    z-index: var(--layer-raised);
  }

  .card__link {
    position: absolute;
    inset: 0;
    z-index: var(--layer-raised);
  }

  .card__link ~ :is(.card__content, .card__media-wrapper) {
    pointer-events: none;

    :is(a, button, input, textarea, select) {
      pointer-events: auto;
    }
  }

  /* Needs the .card__link ~ to be specific enough to take effect. */
  .card__link ~ .card__content--design-mode {
    pointer-events: auto;
  }
/* END_BLOCK:_card */

/* START_BLOCK:_carousel-content (INDEX:76) */
.carousel-content slideshow-slides {
    --slideshow-gap: var(--carousel-gap);
  }

  .carousel-content slideshow-slides > .card {
    flex: 0 0 auto;
    width: calc(
      (100% - (var(--carousel-gap, 8px) * (var(--carousel-mobile-columns, 2) - 1)) - var(--peek-next-slide-size, 0px)) /
        var(--carousel-mobile-columns, 2)
    );
  }

  @media screen and (min-width: 750px) {
    .carousel-content slideshow-slides > .card {
      width: calc(
        (100% - (var(--carousel-gap, 8px) * (var(--carousel-columns, 4) - 1)) - var(--peek-next-slide-size, 0px)) /
          var(--carousel-columns, 4)
      );
    }
  }

  .carousel-content .slideshow-control[disabled] {
    display: none;
  }

  .carousel-content slideshow-arrows {
    padding-inline: var(--util-page-margin-offset);
  }

  .carousel-content .slideshow-control--next {
    margin-inline-start: auto;
  }
/* END_BLOCK:_carousel-content */

/* START_BLOCK:_cart-products (INDEX:77) */
.cart-page__title + .cart-page__items {
    margin-block-start: var(--margin-lg);
  }
/* END_BLOCK:_cart-products */

/* START_BLOCK:_cart-summary (INDEX:78) */
.cart-summary__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap-2xl);
    container-type: inline-size;
    padding: 0;
    position: sticky;
    top: 0;
    align-self: start;

    @media screen and (min-width: 750px) {
      padding: var(--padding-5xl);
      grid-row: 1 / -1;
    }
  }

  body:has(> #header-group header-component[sticky]) .cart-summary__inner {
    top: var(--header-height, 0);
  }

  .cart-summary {
    @media screen and (max-width: 749px) {
      border: none;
    }

    @media screen and (min-width: 750px) {
      display: grid;
      grid-template-rows: subgrid;
      grid-row: 1 / -1;
    }
  }

  .cart-summary--extend {
    height: 100%;

    @media screen and (min-width: 750px) {
      border-right: none;
      border-top-right-radius: 0;
      border-bottom-right-radius: 0;
    }
  }

  /* If extend is on, only include top and bottom borders when the border radius is 0. */
  .cart-summary--extend:not(.has-border-radius) {
    @media screen and (min-width: 750px) {
      border-top: none;
      border-bottom: none;
    }
  }

  .cart-summary--extend .cart-summary__inner {
    height: 100%;
    padding: var(--padding-md) 0 var(--padding-4xl);

    @media screen and (min-width: 750px) {
      grid-row: 2 / -1;
      padding-inline: var(--page-margin);
      width: var(--sidebar-width);
    }
  }

  /* If extend is off, apply the border radius to the inner summary container */
  .cart-summary__inner.has-border-radius {
    border-radius: var(--border-radius);
  }

  @media screen and (max-width: 749px) {
    .inherit-parent-scheme--mobile {
      --color-background: inherit;
      --color-background-rgb: inherit;
      --color-foreground: inherit;
      --color-foreground-rgb: inherit;
      --color-primary: inherit;
      --color-primary-rgb: inherit;
      --color-primary-hover: inherit;
      --color-primary-hover-rgb: inherit;
      --color-border: inherit;
      --color-border-rgb: inherit;
      --color-shadow: inherit;
      --color-shadow-rgb: inherit;
      --color-foreground-heading: inherit;
      --color-primary-button-text: inherit;
      --color-primary-button-background: inherit;
      --color-primary-button-border: inherit;
      --color-primary-button-hover-text: inherit;
      --color-primary-button-hover-background: inherit;
      --color-primary-button-hover-border: inherit;
      --color-secondary-button-text: inherit;
      --color-secondary-button-background: inherit;
      --color-secondary-button-border: inherit;
      --color-secondary-button-hover-text: inherit;
      --color-secondary-button-hover-background: inherit;
      --color-secondary-button-hover-border: inherit;
      --color-input-text: inherit;
      --color-input-text-rgb: inherit;
      --color-input-background: inherit;
    }
  }
/* END_BLOCK:_cart-summary */

/* START_BLOCK:_cart-title (INDEX:79) */
.cart-title h1 {
    margin-block-end: 0;
    display: inline-flex;
    align-items: center;
    gap: var(--gap-sm);
  }

  .cart-title .cart-bubble {
    width: fit-content;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--style-border-radius-buttons-primary);
    aspect-ratio: auto;
    padding: var(--cart-padding);
  }

  .cart-title .cart-bubble[data-maintain-ratio] {
    width: min(1lh, 26px);
    height: min(1lh, 26px);
  }

  .cart-title .cart-bubble .cart-bubble__background {
    background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10-25));
  }

  .cart-title .cart-bubble__text {
    color: var(--color-foreground);
    font-family: var(--font-paragraph--family);
    font-weight: var(--font-paragraph--weight);
    font-size: clamp(var(--font-size--3xs), 0.75em, var(--font-size--xs));
  }
/* END_BLOCK:_cart-title */

/* START_BLOCK:_collection-image (INDEX:82) */
.collection-image {
    width: var(--image-width);
  }

  .collection-image .collection-image__featured-image {
    aspect-ratio: var(--ratio);
    object-fit: cover;
  }
/* END_BLOCK:_collection-image */

/* START_BLOCK:_collection-link (INDEX:84) */
.collection-links__link {
    --min-font-size: var(--font-size--4xl);
    --max-font-size: var(--font-size--6xl);

    display: flex;
    color: inherit;
    text-decoration: none;
    text-wrap: pretty;
    font-size: clamp(var(--min-font-size), 4.5vw, var(--max-font-size));

    /* When hovering over container, dim non-current links (text layout only) */
    @media (hover: hover) {
      collection-links-component:not([layout='spotlight']) .collection-links__container:hover & {
        opacity: var(--opacity-subdued-text);
      }

      collection-links-component:not([layout='spotlight']) .collection-links__container:hover &[aria-current='true'] {
        opacity: 1;
      }
    }

    [layout='spotlight'] & {
      /* Spotlight layout: dimmed by default */
      opacity: var(--disabled-opacity);

      &[aria-current='true'] {
        opacity: 1;
      }
    }

    .text-block {
      display: inline-block;
    }

    @media screen and (max-width: 749px) {
      --min-font-size: var(--font-size--3xl);
      --max-font-size: var(--font-size--5xl);

      [layout='spotlight'] & {
        white-space: normal;
        scroll-snap-align: start;
        text-wrap: pretty;

        span {
          text-wrap: pretty;
        }
      }
    }
  }

  .collection-links__count {
    font-size: 0.5em;
    opacity: var(--disabled-opacity);
    font-weight: var(--font-paragraph--weight);
  }

  .collection-links__image {
    align-items: center;
    justify-content: center;

    &:not([hidden]) {
      display: flex;
    }

    &[reveal] {
      --offset: 15px;

      position: fixed;
      top: 0;
      left: 0;
      z-index: var(--layer-temporary);
      display: block;
      translate: calc(var(--x) + var(--offset)) calc(var(--y) + var(--offset));
      pointer-events: none;
      width: auto;

      image-block {
        --image-height-basis: 5rem;

        height: var(--image-height);
      }
    }
  }
/* END_BLOCK:_collection-link */

/* START_BLOCK:_featured-blog-posts-card (INDEX:88) */
.featured-blog-posts-card {
    text-align: var(--text-align);
  }

  .featured-blog-posts-card__inner {
    gap: var(--gap);
  }

  .resource-list--grid .resource-list__item {
    min-width: 0;
  }

  /* Editorial layout */
  .resource-list:not(.hidden--desktop) .blog-post-card--flexible-aspect-ratio {
    .featured-blog-posts-card__content {
      --flex-wrap: nowrap;
    }
  }

  @media screen and (max-width: 749px) {
    .resource-list:not(.hidden--desktop) .blog-post-card--flexible-aspect-ratio {
      .featured-blog-posts-card__image,
      .blog-placeholder-svg {
        aspect-ratio: unset;
      }
    }
  }

  .featured-blog-posts-card__inner a,
  .featured-blog-posts-card__inner button {
    pointer-events: auto;
  }

  /* allow all blocks to be selectable in editor preview */
  .shopify-design-mode .featured-blog-posts-card__content * {
    pointer-events: auto;
  }

  .featured-blog-posts-card__content {
    --flex-wrap: wrap;
  }

  .featured-blog-posts-card__content h4 {
    margin: 0;
  }
/* END_BLOCK:_featured-blog-posts-card */

/* START_BLOCK:_featured-blog-posts-image (INDEX:89) */
.featured-blog-posts-card__image {
    width: 100%;
  }

  .featured-blog-posts-card__image .blog-placeholder-svg {
    object-fit: cover;
    width: 100%;
    height: 100%;
  }
/* END_BLOCK:_featured-blog-posts-image */

/* START_BLOCK:_featured-product-gallery (INDEX:91) */
.featured-product-section .card-gallery .quick-add__button {
    position: absolute;
    right: var(--quick-add-offset, var(--padding-sm));
    bottom: var(--quick-add-offset, var(--padding-sm));
  }
/* END_BLOCK:_featured-product-gallery */

/* START_BLOCK:_featured-product (INDEX:94) */
.featured-product-content-top {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--gap-sm);
  }
/* END_BLOCK:_featured-product */

/* START_BLOCK:_footer-social-icons (INDEX:95) */
.social-icons__wrapper {
    display: flex;
    gap: var(--gap-sm);
    flex-wrap: wrap;
    justify-content: center;

    @media screen and (min-width: 750px) {
      flex-wrap: nowrap;
      justify-content: flex-start;
    }
  }
/* END_BLOCK:_footer-social-icons */

/* START_BLOCK:_header-logo (INDEX:96) */
.header-logo {
    display: flex;
    height: 100%;
    font-size: var(--font-size--md);
    font-family: var(--font-family);
    font-weight: var(--font-weight);
    font-style: var(--font-style);
    color: var(--color-foreground);
    justify-content: center;
    align-items: center;
    text-decoration: none;

    &[data-hidden-on-home-page] {
      display: none;

      #header-component:is(
          [sticky='always']:not([data-scroll-direction='none']),
          [sticky='scroll-up'][data-scroll-direction='up']
        )
        & {
        display: flex;
      }
    }

    @media screen and (max-width: 749px) {
      padding: 0;
    }

    @media screen and (min-width: 750px) {
      flex-shrink: 0;
    }

    &:hover {
      text-decoration: none;
    }
  }

  .header-logo__image {
    object-fit: contain;
    height: var(--header-logo-image-height-mobile);
    width: var(--header-logo-image-width-mobile);

    @media screen and (min-width: 750px) {
      height: var(--header-logo-image-height);
      width: var(--header-logo-image-width);
    }
  }

  .header-logo:has(.header-logo__image-container--inverse) .header-logo__image-container--original {
    display: var(--header-logo-display, block);
  }

  .header-logo__image-container--inverse {
    display: var(--header-logo-inverse-display, none);
  }
/* END_BLOCK:_header-logo */

/* START_BLOCK:_header-menu (INDEX:97) */
.header__drawer {
    --header-drawer-min-height: 60px;
    display: flex;
    min-height: var(--header-drawer-min-height);
    align-items: center;
  }

  #header-component[data-menu-style='drawer'] .header__drawer {
    display: flex;
    min-height: var(--header-drawer-min-height);
  }

  @media screen and (min-width: 750px) {
    #header-component[data-menu-style='menu'] .header__drawer {
      display: none;
      min-height: 0;
    }
  }

  .header--compact .header__drawer {
    min-height: var(--minimum-touch-target);
  }

  .menu-list--mobile {
    &.menu-list {
      display: grid;
    }

    & .menu-list__list {
      width: max-content;
      margin-inline: auto;
      gap: var(--menu-horizontal-gap);
    }

    & li {
      width: max-content;
      padding-block: var(--padding-sm);
    }

    & li:first-of-type {
      padding-inline-start: var(--menu-horizontal-gap);
    }

    & li:last-of-type {
      padding-inline-end: var(--menu-horizontal-gap);
    }

    & a {
      color: var(--color-foreground);
    }
  }

  .menu-list__scroll-container {
    position: relative;
    overflow-x: auto;
    mask-image: linear-gradient(to right, transparent, #000 20px, #000 calc(100% - 20px), transparent);
    padding-block: var(--padding-2xs);
  }

  .menu-list {
    --menu-horizontal-gap: var(--gap-xl);
    --menu-vertical-gap: var(--gap-xl);

    display: flex;
    height: 100%;
  }

  .menu-list__list {
    display: flex;
    justify-content: var(--grid-area-alignment);
  }

  .menu-list__list-item {
    flex-shrink: 0;
    white-space: nowrap;
    display: flex;
    align-items: center;
    height: 100%;
  }

  .menu-list__list-item[aria-hidden='true'] {
    visibility: hidden;
  }

  .menu-list__link {
    font-family: var(--menu-top-level-font-family);
    font-style: var(--menu-top-level-font-style);
    font-weight: var(--menu-top-level-font-weight);
    font-size: var(--menu-top-level-font-size);
    line-height: var(--menu-top-level-font-line-height);
    text-transform: var(--menu-top-level-font-case);
    color: var(--menu-top-level-font-color);
    text-decoration: none;
    display: flex;
    flex-direction: column;
    justify-content: center;
    cursor: pointer;
    height: 100%;
    margin-block: 0;

    &::after {
      content: '';
      position: absolute;
      display: none;
      top: var(--header-padding);
      height: var(--box-height);
      left: 0;
      right: 0;
    }

    &[data-safety-box='true']::after {
      display: block;
    }

    &:hover,
    &:focus {
      color: var(--menu-top-level-font-color);
    }

    @media screen and (min-width: 750px) {
      font-size: var(--menu-top-level-font-size-desktop);
    }
  }

  .menu-list__link-title {
    padding-inline: calc(var(--gap-xl) / 2);
  }
  [slot='overflow'] .menu-list__link-title {
    padding-inline: 0;
  }

  .menu-list__list-item:not([slot='overflow']) {
    flex-direction: column;
  }
  .menu-list__list-item:not([slot='overflow'])::after {
    content: '';
    width: 100%;
    height: var(--header-padding);
    margin-bottom: calc(-1 * var(--header-padding));
  }

  [slot='overflow'] > .menu-list__link::after {
    content: none;
  }

  /*
    High specificity selectors to subdue non-hovered links without javascript.
    If the need for js-generated `hovered` and `focused` classes arises for another reason we can simplify these.
  */
  .menu-list:where(:has(.menu-list__list-item:hover)),
  .menu-list:where(:has(.menu-list__list-item:focus-within)),
  .menu-list:where(:has(.menu-list__list-item:not([aria-hidden='true']) .menu-list__link--active)) {
    .menu-list__link {
      color: rgb(var(--menu-top-level-font-color-rgb) / var(--opacity-subdued-text));
    }
  }

  /* stylelint-disable-next-line selector-max-specificity */
  .menu-list:not(:has(.menu-list__list-item:hover)) .menu-list__link--active,
  .menu-list .menu-list__list-item:where(:hover, :focus-within) .menu-list__link,
  .menu-list .menu-list__list-item[slot='overflow'] .menu-list__link[aria-expanded='true'] {
    color: var(--menu-top-level-font-color);
  }

  .overflow-menu::part(list) {
    /* Make sure focus outline is not cut off by overflow hidden */
    --focus-outline-size: calc(var(--focus-outline-offset) + var(--focus-outline-width));

    gap: 0;
    margin-inline: calc(-1 * var(--menu-horizontal-gap) / 2);
  }

  .overflow-menu {
    background-color: transparent;
    padding: var(--focus-outline-size);
    margin: calc(-1 * var(--focus-outline-size));
  }

  /** mega menu **/
  .menu-list__submenu,
  .overflow-menu::part(overflow) {
    --submenu-padding-block-start: var(--padding-3xl);
    --submenu-padding-block-end: var(--padding-3xl);

    background-color: transparent;
  }

  .header__row[style*='--border-bottom-width: 0px'] {
    .menu-list__submenu.color-scheme-matches-parent,
    .overflow-menu.color-scheme-matches-parent::part(overflow) {
      --submenu-padding-block-start: 0px;
    }
  }

  .menu-list__list-item:where(:not([slot='overflow'])) > .menu-list__submenu,
  .overflow-menu::part(overflow) {
    --submenu-content-opacity: 0;
    --submenu-content-animation: opacity calc(var(--submenu-animation-speed) * 0.75) var(--animation-easing);

    visibility: hidden;
    position: absolute;
    width: 100%;
    left: 0;
    top: calc(100% - 1px + var(--border-bottom-width) - (var(--full-open-header-height) - var(--submenu-height)));
    z-index: var(--layer-header-menu);
    padding-inline: var(--padding-inline);
    /* Clip path starts at header height so it doesn't mess with the pointer events in the header */
    clip-path: rect(var(--header-height) 100% var(--full-open-header-height) 0); /* stylelint-disable-line */
    transition: clip-path var(--submenu-animation-speed) var(--ease-out-cubic); /* stylelint-disable-line */
  }

  [data-submenu-overlap-bottom-row] {
    .menu-list__list-item:where(:not([slot='overflow'])) > .menu-list__submenu,
    .overflow-menu::part(overflow) {
      clip-path: rect(var(--top-row-height) 100% var(--full-open-header-height) 0); /* stylelint-disable-line */
    }
  }

  /* Show the submenus on hover */
  .menu-list__list-item:has([aria-expanded='true']) > .menu-list__submenu,
  /* Show the overflow menu when a menu item is hovered */
  .overflow-menu:has([slot="overflow"] [aria-expanded='true'])::part(overflow-list),
  /* Keep the submenus open when they are hovered */
  .menu-list__submenu:is(:hover),
  .overflow-menu::part(overflow):hover {
    --submenu-content-opacity: 1;

    visibility: visible;
  }

  .overflow-menu::part(overflow) {
    --menu-top-level-font-size: var(--font-size--xlarge);

    display: grid;
    grid-template-columns: var(--full-page-grid-with-margins);
  }

  .overflow-menu::part(overflow-list) {
    position: relative;
    display: grid;
    grid-template-columns: minmax(auto, 200px) 1fr;
    grid-template-areas: 'left right';
    grid-template-rows: max-content;
    grid-gap: 0;
    grid-column: 2;
  }

  .menu-list__list-item:is([slot='overflow']) {
    --menu-top-level-font-color: var(--color-foreground);
    --menu-top-level-font-color-rgb: var(--color-foreground-rgb);

    display: contents;
    white-space: normal;

    .menu-list__link {
      grid-area: left;
      grid-row: auto;
      height: min-content;
      font-size: var(--font-size--xl);
      transition: var(--submenu-content-animation);
    }

    .menu-list__submenu {
      visibility: hidden;
      grid-row: 1;
      grid-area: right;
      grid-row-end: span calc(var(--overflow-count) + 1);
      padding-inline-start: var(--menu-horizontal-gap);
    }

    .menu-list__submenu-inner {
      transform: none;
      grid-column: unset;
      padding-block: 0;
    }

    .menu-list__link[aria-expanded='true'] + .menu-list__submenu {
      visibility: visible;
    }
  }

  .header-menu {
    height: 100%;
  }

  .menu-list__submenu-inner {
    position: relative;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
  }

  .menu-list__submenu-inner,
  .overflow-menu::part(overflow-list) {
    padding-block-start: var(--submenu-padding-block-start);
    padding-block-end: var(--submenu-padding-block-end);
    padding-inline: var(--section-padding-inline);
    opacity: var(--submenu-content-opacity);
    transition: var(--submenu-content-animation);
    transform: translateY(calc(var(--full-open-header-height) - var(--submenu-height)));

    /* Make overflow menu scrollable when content exceeds viewport */
    max-height: calc(80vh - var(--header-height));
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
    scrollbar-color: rgb(var(--color-foreground-rgb) / var(--opacity-40)) transparent;
  }

  .mega-menu__link {
    font-family: var(--menu-child-font-family);
    font-style: var(--menu-child-font-style);
    font-weight: var(--menu-child-font-weight);
    font-size: var(--menu-child-font-size);
    line-height: var(--menu-child-font-line-height);
    text-transform: var(--menu-child-font-case);
    color: var(--menu-child-font-color);
    white-space: normal;
    text-decoration: none;
    display: inline-flex;
    padding: var(--padding-2xs) 0;

    &:hover {
      color: var(--menu-child-active-font-color);
    }
  }

  .mega-menu__link--parent {
    font-family: var(--menu-parent-font-family);
    font-style: var(--menu-parent-font-style);
    font-weight: var(--menu-parent-font-weight);
    font-size: var(--menu-parent-font-size);
    line-height: var(--menu-parent-font-line-height);
    text-transform: var(--menu-parent-font-case);
    color: var(--menu-parent-font-color);

    &:hover {
      color: var(--menu-parent-active-font-color);
    }
  }

  @media screen and (max-width: 989px) {
    .mega-menu__content-list-item--hidden-tablet {
      display: none;
    }
  }

  .mega-menu__link:has(.mega-menu__link-image) {
    display: flex;
    flex-direction: column;
    padding-inline: 0;
    padding-block: var(--padding-sm) 0;
  }

  .mega-menu__link-image {
    width: 100%;
    position: relative;
    aspect-ratio: 16 / 9;
    margin-bottom: var(--padding-sm);
    object-fit: cover;
    border-radius: var(--menu-image-border-radius);
  }

  /* Fix alignment for collection image mode links without images */

  /* Target only top-level links (direct children of column > div) in collection image mode */
  .mega-menu__grid:has(.mega-menu__link-image)
    .mega-menu__column
    > div
    > .mega-menu__link:not(:has(.mega-menu__link-image)) {
    display: flex;
    flex-direction: column;
    padding-inline: 0;
    padding-block: var(--padding-sm) 0;
  }

  .mega-menu__grid:has(.mega-menu__link-image)
    .mega-menu__column
    > div
    > .mega-menu__link:not(:has(.mega-menu__link-image))::before {
    content: '';
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    margin-bottom: var(--padding-sm);
    background-color: var(--color-foreground-muted);
    opacity: 0.1;
    border-radius: var(--menu-image-border-radius);
  }

  .mega-menu__grid {
    display: grid;
    grid-template-columns: repeat(var(--menu-columns-tablet), minmax(0, 1fr));
    gap: var(--menu-vertical-gap) var(--menu-horizontal-gap);
    width: 100%;

    @media screen and (min-width: 990px) {
      grid-template-columns: repeat(var(--menu-columns-desktop), minmax(0, 1fr));
    }
  }

  .mega-menu__column {
    grid-column: span 1;
  }

  .mega-menu__column--span-2 {
    grid-column: span 2;
  }

  .mega-menu__column--span-3 {
    grid-column: span 3;
  }

  .mega-menu__column--span-4 {
    grid-column: span 4;
  }

  .mega-menu__column--wide-collection-image {
    grid-column: span 1;

    @media screen and (min-width: 990px) {
      grid-column: span 2;
    }
  }

  .mega-menu__submenu .mega-menu__column--wide-collection-image {
    grid-column: span 1;
  }

  .mega-menu__content-list {
    display: grid;
    justify-content: end;
    gap: var(--menu-vertical-gap) var(--menu-horizontal-gap);
  }

  .mega-menu__content-list--products {
    grid-template-columns: repeat(var(--menu-content-columns-tablet), minmax(0, 1fr));

    @media screen and (min-width: 990px) {
      grid-template-columns: repeat(var(--menu-content-columns-desktop), minmax(0, 1fr));
    }
  }

  .mega-menu__content-list--collections {
    grid-template-columns: repeat(var(--menu-content-columns-tablet), minmax(0, 300px));

    @media screen and (min-width: 990px) {
      grid-template-columns: repeat(var(--menu-content-columns-desktop), minmax(0, 300px));
    }
  }

  .mega-menu__list {
    display: grid;
    grid-template-columns: subgrid;
    grid-column: span var(--menu-columns-tablet);
    gap: var(--menu-vertical-gap) var(--menu-horizontal-gap);

    @media screen and (min-width: 990px) {
      grid-column: span var(--menu-columns-desktop);
    }
  }

  .mega-menu__content {
    grid-column: span var(--menu-content-columns-tablet) / -1;

    @media screen and (min-width: 990px) {
      grid-column: span var(--menu-content-columns-desktop) / -1;
    }
  }

  .menu-list__list-item[slot='overflow'] .section {
    grid-template-columns: 1fr;
  }

  .menu-list__list-item[slot='overflow'] .section .mega-menu__grid {
    grid-column: 1;
  }

  .mega-menu__content-list li {
    white-space: normal;
  }

  /* mega more menu */
  .mega-menu__more-list {
    --menu-child-font-size: var(--font-size--xl);

    width: 200px;
  }

  .mega-menu__submenu {
    /* preserves the inherited grid layout when this submenu wrapper is used */
    display: contents;
  }
/* END_BLOCK:_header-menu */

/* START_BLOCK:_image (INDEX:100) */
.image-block__placeholder {
    height: 100%;
    width: 100%;
    object-fit: cover;
    object-position: center center;
    overflow: hidden;
    position: relative;
  }

  image-block {
    --image-height-basis: 10rem;
    --image-height-small: calc(var(--image-height-basis) * 2);
    --image-height-medium: calc(var(--image-height-basis) * 3);
    --image-height-large: calc(var(--image-height-basis) * 4);

    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: var(--ratio);
    width: 100%;
    max-width: calc(var(--image-height) * var(--ratio));
    height: var(--image-height);
    overflow: hidden;

    @media screen and (min-width: 750px) {
      --image-height-small: calc(var(--image-height-basis) * 2.5);
      --image-height-medium: calc(var(--image-height-basis) * 3.5);
      --image-height-large: calc(var(--image-height-basis) * 4.5);
    }

    @media screen and (max-width: 749px) {
      height: auto;
    }

    &[height='small'] {
      --image-height: var(--image-height-small);
    }

    &[height='medium'] {
      --image-height: var(--image-height-medium);
    }

    &[height='large'] {
      --image-height: var(--image-height-large);
    }

    &[ratio='portrait'] {
      --ratio: 4 / 5;
    }

    &[ratio='square'] {
      --ratio: 1 / 1;

      @media screen and (min-width: 750px) {
        max-width: var(--image-height);
      }
    }

    &[ratio='landscape'] {
      --ratio: 16 / 9;
    }

    img {
      object-fit: cover;
      width: 100%;
      height: auto;
      aspect-ratio: var(--ratio);
      border-radius: var(--border-radius);
    }
  }
/* END_BLOCK:_image */

/* START_BLOCK:_marquee (INDEX:104) */
marquee-component {
    display: block;
    width: 100%;
    overflow: hidden;
    background-color: var(--color-background);
  }

  .marquee__wrapper {
    display: flex;
    gap: var(--marquee-gap);
    width: fit-content;
    white-space: nowrap;
  }

  .marquee__content {
    min-width: max-content;
    display: flex;
    gap: var(--marquee-gap);
  }

  .marquee__content :is(p, h1, h2, h3, h4, h5, h6) {
    white-space: nowrap;
  }

  .marquee__content .marquee__repeated-items * {
    max-width: none;
  }

  .marquee__repeated-items {
    min-width: max-content;
    display: flex;
    gap: var(--marquee-gap);
    align-items: center;
    justify-content: center;
  }

  .marquee__repeated-items > * {
    align-content: center;
  }

  .hero__content-wrapper.layout-panel-flex--column marquee-component {
    --margin-inline: var(--full-page-margin-inline-offset);

    width: -webkit-fill-available;
    min-height: max-content;
  }

  @media (prefers-reduced-motion: no-preference) {
    marquee-component:not([data-disabled]) .marquee__wrapper {
      animation: marquee-motion var(--marquee-speed) linear infinite var(--marquee-direction);
    }
  }

  @keyframes marquee-motion {
    to {
      transform: translate3d(calc(-50% - (var(--marquee-gap) / 2)), 0, 0);
    }
  }
/* END_BLOCK:_marquee */

/* START_BLOCK:_product-details (INDEX:109) */
/* Clear padding on mobile, if not full-width */
  @media screen and (max-width: 749px) {
    .product-information.section--page-width .product-details > .group-block {
      padding-inline: 0;
    }
  }

  .view-product-title {
    display: none;
  }

  /* Container styles */
  .product-details {
    display: flex;
    align-self: start;
    justify-content: center;
  }

  @media screen and (min-width: 750px) {
    .product-details > .group-block {
      height: min-content;
    }

    .full-height--desktop {
      height: 100%;
      max-height: calc(100vh - var(--header-group-height, 0));
      min-height: fit-content;
    }

    .full-height--desktop .group-block {
      align-self: var(--details-position, 'flex-start');
    }
  }
/* END_BLOCK:_product-details */

/* START_BLOCK:_search-input (INDEX:114) */
.search-page-input {
    width: 100%;
    color: var(--color-input-text);
    background-color: var(--color-input-background);
    padding-block: var(--padding-lg);
    padding-inline: calc(var(--icon-size-lg) + var(--margin-xl) * 1.5);
    text-overflow: ellipsis;
    overflow: hidden;
    border-radius: var(--style-border-radius-inputs);
    border: var(--style-border-width-inputs) solid var(--color-input-border);

    @media screen and (max-width: 749px) {
      padding-inline: calc(var(--margin-xs) + var(--icon-size-lg) + var(--padding-md));
    }
  }

  .search-page-input::placeholder {
    color: rgb(var(--color-input-text-rgb) / var(--opacity-subdued-text));
  }

  .search-page-input__parent {
    display: flex;
    flex-direction: column;
    align-items: var(--horizontal-alignment);
  }

  .search-results__no-results {
    opacity: var(--opacity-subdued-text);
  }

  search-page-input-component {
    position: relative;
    width: 100%;
    display: flex;
    top: 0;
    max-width: var(--size-style-width);
    align-items: center;
    background-color: var(--color-background);
    margin: var(--margin-2xl) 0 var(--margin-md);

    @media screen and (max-width: 749px) {
      max-width: 100%;
    }
  }

  search-page-input-component .search__icon,
  search-page-input-component .search__icon:hover,
  search-page-input-component .search__reset-button,
  search-page-input-component .search__reset-button:hover {
    background: transparent;
    position: absolute;
    top: auto;
    width: var(--icon-size-lg);
    height: var(--icon-size-lg);
  }

  search-page-input-component .search__icon svg,
  search-page-input-component .search__reset-button svg {
    width: var(--icon-size-md);
    height: var(--icon-size-md);
  }

  search-page-input-component .search__icon svg {
    color: var(--color-input-text);
  }

  search-page-input-component .search__icon {
    left: var(--margin-lg);

    @media screen and (max-width: 749px) {
      left: var(--margin-md);
    }
  }

  search-page-input-component .search__reset-button {
    border-radius: 100%;
    color: var(--color-input-text);
    right: var(--margin-lg);
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity var(--animation-speed) var(--animation-easing),
      visibility var(--animation-speed) var(--animation-easing);

    @media screen and (max-width: 749px) {
      right: var(--margin-md);
    }
  }

  search-page-input-component:has(.search-page-input:not(:placeholder-shown)) .search__reset-button {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  search-page-input-component .search__reset-button-icon {
    vertical-align: middle;
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--icon-size-lg);
    height: var(--icon-size-lg);
    transition: transform var(--animation-speed) var(--animation-easing);
  }

  search-page-input-component .search__reset-button:active .search__reset-button-icon {
    transform: scale(0.9);
  }

  search-page-input-component .search__reset-button-icon svg {
    width: var(--icon-size-md);
    height: var(--icon-size-md);
  }

  search-page-input-component .search__reset-button--hidden {
    cursor: default;
    opacity: 0;
    transition: opacity var(--animation-speed) var(--animation-easing);
    pointer-events: none;
    visibility: hidden;
  }

  search-page-input-component .search__reset-button-text {
    display: none;
  }
/* END_BLOCK:_search-input */

/* START_BLOCK:_slide (INDEX:115) */
.slide__content {
    height: 100%;
    position: relative;
    z-index: var(--layer-flat);

    @supports (animation-timeline: auto) {
      opacity: 0;
      animation: slide-reveal both linear;
      animation-timeline: var(--slideshow-timeline);
    }

    @media (prefers-reduced-motion) {
      opacity: 1;
      animation: none;
    }
  }

  .slide__content > * {
    margin: auto;
  }

  .slide__content.background-transparent {
    background-color: transparent;
  }

  slideshow-slide > .slide__image-container {
    display: flex;
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: absolute;
  }

  .slide__image-container > .slide__image,
  .slide__image-container > .slide__video,
  .slide__image-container > .slide__video-poster {
    position: relative;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
  }

  .slide__image-container > .slide__video-poster {
    position: absolute;
  }

  /*
   * Force Safari to recalculate the timeline state on timeline refresh (after loop)
   */
  slideshow-component[refreshing-timeline] .slide__content {
    animation: none;
  }

  slideshow-slide .slide__image-container--rounded {
    border-radius: var(--corner-radius, 0);
  }
/* END_BLOCK:_slide */

/* START_BLOCK:_social-link (INDEX:116) */
.social-icons__icon-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
    height: var(--icon-size-lg);
  }

  .social-icons__icon {
    display: flex;
    flex-shrink: 0;
    width: var(--icon-size-lg);
    height: var(--icon-size-lg);
  }

  .social-icons__icon {
    display: none;
  }

  .social-icons__icon-wrapper:has(.social-icons__icon path) {
    width: var(--icon-size-lg);

    .social-icons__icon {
      display: block;
    }

    .social-icons__icon-label {
      display: none;
    }
  }

  /* Disabled state for editor */
  .shopify-design-mode .social-icons__icon-wrapper--disabled {
    opacity: var(--disabled-opacity, 0.5);
    cursor: not-allowed;
  }

  .shopify-design-mode .social-icons__icon-wrapper--disabled a {
    pointer-events: none;
  }
/* END_BLOCK:_social-link */

/* START_BLOCK:accordion (INDEX:118) */
.accordion {
    flex: 1;
    width: 100%;
  }

  .accordion--dividers accordion-custom:not(:first-child) .details {
    border-block-start: var(--style-border-width) solid var(--color-border);
  }

  /* When accordion borders are not set, show fallback borders */
  .accordion--dividers {
    /* stylelint-disable-next-line declaration-property-value-disallowed-list */
    --show-fallback-borders: 0;
  }

  .accordion--dividers:not([class*='color-'])[style*='--border-width: 0'],
  .accordion--dividers:not([class*='color-'])[style*='--border-style: none'] {
    --show-fallback-borders: 1;
  }

  .accordion--dividers accordion-custom:first-child .details {
    border-block-start: calc(var(--style-border-width) * var(--show-fallback-borders)) solid var(--color-border);
  }

  .accordion--dividers accordion-custom:last-child .details {
    border-block-end: calc(var(--style-border-width) * var(--show-fallback-borders)) solid var(--color-border);
  }

  .accordion--dividers .details-content {
    padding-block-end: var(--padding-sm);
  }

  .accordion--caret .icon-plus,
  .accordion--plus .icon-caret {
    display: none;
  }

  /* because we can't pass apply a specific class on a block based on its parent block setting */
  .accordion .details__header {
    font-family: var(--summary-font-family);
    font-style: var(--summary-font-style);
    font-weight: var(--summary-font-weight);
    font-size: var(--summary-font-size);
    line-height: var(--summary-font-line-height);
    text-transform: var(--summary-font-case);
    min-height: var(--minimum-touch-target);
  }
/* END_BLOCK:accordion */

/* START_BLOCK:bokja-collective-invite (INDEX:120) */
.bokja-collective-invite__open {
    background: none;
    border: 0;
    padding: 0;
    margin: 0;
    font: inherit;
    color: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 0.25em;
    text-decoration-thickness: 1px;
  }

  /* Specificity guard (2026-08-12): the dialog renders inside the announcement
     bar's text block, and Horizon's `.text-block > *` sets width: var(--width) at
     the same 0,1,0 specificity - source order gave Horizon the win and the modal
     opened full-width. dialog.bokja-collective-invite is 0,1,1, order-proof.

     Compact centred pop-up (James, 2026-08-12: "it needs to be a pop-up in the
     center of the page").

     TYPE RESET ADDED 2026-08-20 (Malou: "make sure the membership pop up uses the
     same fonts and weights as the rest of the site"). Until now the interior wore
     the announcement BAR's typography: the dialog is a direct child of the slide,
     so base.css `.custom-typography > *` / `.custom-font-size > *` put the bar's
     subheading face, 12px, uppercase and loose tracking ON the dialog and every
     descendant inherited them — the same leak the --panel reset below documents
     and fixes for the drawer origin. Same cure here: the root states the site's
     body register once (Inter via --font-body--family, --bt-body, 400) and each
     element states only its own register. (0,1,1) against the `> *` rules'
     (0,1,0), so it wins in any source order. The bar's typography settings still
     style the one thing that is the bar's: the trigger line
     (.bokja-collective-invite__open), untouched.
     position: fixed + inset 0 + margin auto is the centring, stated rather than
     inherited from the UA modal defaults so nothing in the bar can pull it off
     centre. height: fit-content keeps the panel as tall as its copy; the
     max-height caps it on short screens and the panel scrolls, not the page.
     The width formula is also the small-screen rule: it never touches the edges.

     THE VERTICAL CENTRING FAILED UNTIL 2026-08-20 — measured on preview 188315402568 at
     1280x800 on 2026-08-14: the box sat 480x195 at y=605, on the bottom edge, with used
     margins margin-top 605.3 / margin-bottom 0, so only ONE of the two auto margins survived.
     ROOT CAUSE, isolated 2026-08-20: the dialog is the LAST CHILD of the slide, and base.css
     `.text-block > *:last-child` sets margin-block-end: 0 at (0,2,0), which beats this rule's
     (0,1,1) — the bottom margin the centring depends on never reaches the used value, and the
     surviving top auto margin absorbs all the free space. The companion rule directly below
     restores margin-block-end: auto at higher specificity. Fixed on Malou's ask, 2026-08-20
     ("make sure this pop up is centered on the page") — which is also what James originally
     asked for on 2026-08-12; the earlier note here left it unfixed only because the
     2026-08-14 pass was scoped to the drawer origin. */
  dialog.bokja-collective-invite {
    position: fixed;
    inset: 0;
    margin: auto;
    width: min(30rem, calc(100vw - 2.5rem));
    max-width: 30rem;
    height: fit-content;
    max-height: calc(100vh - 3rem);
    max-height: calc(100dvh - 3rem);
    overflow-y: auto;
    padding: 0;
    border: 1px solid #1a1a1a;
    border-radius: 0;
    background: #fbfbf6;
    color: #1a1a1a;
    font-family: var(--font-body--family);
    font-size: var(--bt-body);
    font-weight: 400;
    line-height: 1.4;
    letter-spacing: normal;
    text-transform: none;
    /* start, not center (Malou, 2026-08-24: "text and buttons in the pop ups all left
       aligned") - logical start so /ar keeps its right edge. Button LABELS inside their
       own boxes stay centred; it is the blocks that rank left. */
    text-align: start;
  }

  /* The centring's missing half (see the note above): base.css `.text-block > *:last-child`
     zeroes margin-block-end at (0,2,0) and the dialog is that last child, so the base rule's
     `margin: auto` loses its bottom half and the box falls to the bottom edge. This selector
     mirrors the offending one — if the markup ever stops making the dialog the last child,
     both die together — at (0,4,1), order-proof against everything in play. :not(--panel)
     keeps the drawer origin out: the panel pins margin: 0 at (0,2,1) and must keep winning
     its own geometry. */
  .text-block > dialog.bokja-collective-invite:last-child:not(.bokja-collective-invite--panel) {
    margin-block-end: auto;
  }

  /* THE SAME DIALOG, OPENED FROM THE ACCOUNT DRAWER: a second right-side panel OVER the
     drawer instead of a centred pop-up (James, 2026-08-14: "it should be the same kind of
     flow, but on the right-hand side in that panel... the drawer should open to another
     drawer over the top of it"). The ANNOUNCEMENT-BAR origin is untouched — it opens this
     dialog without the modifier and gets the centred pop-up he approved on 2026-08-12.

     PRESENTATION ONLY, WHICH IS THE WHOLE REASON IT IS A MODIFIER CLASS. The form, the
     `contact[tags]` value, the success branch and the Klaviyo chain are one flow with one
     element; a second panel-shaped dialog would have been a second capture form, which is
     the thing the standing ruling forbids. So the origin changes the geometry and nothing
     else. assets/bokja-account-collective.js adds the class on open and takes it off on
     close, so the element is never left in the wrong presentation for the next opener.

     SPECIFICITY, stated for the same reason the base rule states its own: (0,2,1) against
     the base rule's (0,1,1), so the modifier wins on specificity alone. That is deliberate
     rather than incidental — both rules live in this one stylesheet, and a reorder must not
     be able to silently swap which geometry applies.

     GEOMETRY LIFTED FROM `.account-drawer__dialog` (snippets/bokja-account-drawer.liquid),
     not re-invented: full block-size, pinned to the inline-end, `var(--sidebar-width)` at
     desktop capped at 95vw, and at phone widths the same bottom sheet at 70dvh the account
     drawer becomes — so the two panels are the same object at both widths. Logical
     properties throughout, so RTL pins to the correct edge exactly as the drawer does.
     `--style-border-drawer` is a :root variable and always resolves; no box-shadow is added,
     because the base pop-up has none and the layer is already read by its own backdrop —
     inventing one here would be a visual-design decision, and those are James's. */
  dialog.bokja-collective-invite.bokja-collective-invite--panel {
    inset-block: 0;
    inset-inline-start: auto;
    inset-inline-end: 0;
    margin: 0;
    inline-size: 100%;
    max-inline-size: 100%;
    block-size: 100%;
    max-block-size: 100%;
    border: 0;
    border-inline-start: var(--style-border-drawer);
  }

  @media screen and (min-width: 750px) {
    dialog.bokja-collective-invite.bokja-collective-invite--panel {
      inline-size: var(--sidebar-width);
      max-inline-size: 95vw;
    }
  }

  /* Phone: the account drawer is a bottom sheet at these widths, so the panel over it is
     one too — full width, 70dvh, sliding up rather than in. */
  @media screen and (max-width: 749px) {
    dialog.bokja-collective-invite.bokja-collective-invite--panel {
      inset-block-start: auto;
      inset-inline: 0;
      block-size: auto;
      max-block-size: 70dvh;
      border: 0;
      border-block-start: var(--style-border-drawer);
    }
  }

  /* The entrance, on Horizon's own keyframes and timing tokens (`move-and-fade`,
     --animation-speed / --animation-easing in base.css) rather than a second animation
     invented here. There is no exit animation to match, and that is a real difference from
     the account drawer: `dialog-closing` is applied by DialogComponent, and this dialog is
     deliberately NOT inside one — it is the announcement bar's element, opened by
     showModal(). Written down rather than worked around. */
  dialog.bokja-collective-invite.bokja-collective-invite--panel[open] {
    --start-x: 100%;
    --end-x: 0px;
    --start-opacity: 1;

    animation: move-and-fade var(--animation-speed) var(--animation-easing) forwards;
  }

  [dir='rtl'] dialog.bokja-collective-invite.bokja-collective-invite--panel[open] {
    --start-x: -100%;
  }

  @media screen and (max-width: 749px) {
    dialog.bokja-collective-invite.bokja-collective-invite--panel[open] {
      --start-x: 0px;
      --end-x: 0px;
      --start-y: 100%;
      --end-y: 0px;
    }
  }

  .bokja-collective-invite::backdrop {
    background: rgb(26 26 26 / 45%);
  }

  .bokja-collective-invite__body {
    padding: 0.75rem 1.75rem 1.75rem;
  }

  @media screen and (max-width: 479px) {
    .bokja-collective-invite__body {
      padding: 0.5rem 1.25rem 1.25rem;
    }
  }

  .bokja-collective-invite__dismiss {
    display: flex;
    justify-content: flex-end;
    padding: 0.5rem 0.5rem 0;
  }

  .bokja-collective-invite__dismiss button {
    background: none;
    border: 0;
    cursor: pointer;
    font-size: 1.5rem;
    line-height: 1;
    padding: 0.25rem 0.5rem;
    color: inherit;
  }

  /* The site's Collective eyebrow register, to the value (bokja-custom.css
     `.bokja-collective__eyebrow` et al: --bt-label / 400 / 0.18em / uppercase /
     line-height 1.35 / opacity 0.54). */
  .bokja-collective-invite__eyebrow {
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    line-height: 1.35;
    opacity: 0.54;
    margin: 0 0 0.75rem;
  }

  /* The site's Collective title voice — Georgia italic at --bt-h2, 400
     (`.bokja-collective-card__title` and the hub headings) — not Inter: this
     dialog IS a Collective surface, and that face is how the site marks them.
     text-transform stated because the h2 sat uppercase for a week and an
     inherited transform is exactly what this pass is curing. The --panel origin
     re-states its own head (Inter 17px, the drawer's register) and adds
     font-style: normal to stay out of the italic. */
  .bokja-collective-invite__head {
    font-family: Georgia, 'Times New Roman', serif;
    font-size: var(--bt-h2);
    font-style: italic;
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.2;
    text-transform: none;
    margin: 0 0 0.75rem;
  }

  /* Lead-paragraph register: --bt-lead is 14px, the same value the 0.875rem it
     replaces resolved to — now tied to the scale instead of restating it. */
  .bokja-collective-invite__dek {
    font-size: var(--bt-lead);
    font-weight: 400;
    line-height: 1.5;
    margin: 0 0 1.25rem;
  }

  .bokja-collective-invite__field {
    display: flex;
    gap: 0;
    border-bottom: 1px solid #1a1a1a;
  }

  .bokja-collective-invite__field input {
    flex: 1 1 auto;
    min-width: 0;
    background: none;
    border: 0;
    padding: 0.6rem 0;
    font: inherit;
    font-size: var(--bt-h3);
    text-align: start;
    color: inherit;
  }

  /* Base.css paints every input::placeholder at the input's own text colour, so
     "Your email" read as already-typed content (Malou, 2026-08-20: "make Your
     email slightly lighter so it's clear that one needs to type there"). 45% of
     currentColor sits between the theme's two existing placeholder registers
     (search input 36%, footer signup 70%) and reads as a prompt in both origins:
     currentColor is the pop-up's #1a1a1a and the panel's --color-foreground. */
  .bokja-collective-invite__field input::placeholder {
    color: color-mix(in srgb, currentColor 45%, transparent);
  }

  .bokja-collective-invite__field input:focus {
    outline: none;
  }

  .bokja-collective-invite__names {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 18px;
    margin-block-end: 4px;
  }
  .bokja-collective-invite__names input {
    min-width: 0;
    background: none;
    border: 0;
    border-bottom: 1px solid rgba(26, 26, 26, 0.35);
    padding: 0.6rem 0;
    font: inherit;
    font-size: var(--bt-h3);
    color: inherit;
    outline: none;
  }
  .bokja-collective-invite__names input::placeholder {
    color: color-mix(in srgb, currentColor 45%, transparent);
  }
  .bokja-collective-invite__names input:focus {
    border-bottom-color: #1a1a1a;
  }
  /* Pills inherit .bokja-signup-address from the footer's stylesheet; here only the
     rhythm inside the dialog. */
  .bokja-collective-invite__form .bokja-signup-address {
    margin-block: 12px 10px;
  }
  /* Step 2 inside the dialog (rules in bokja-footer's stylesheet). v2: it stands where
     the email field stood, so no extra air above; the echoed email takes the field's own
     padding so the names land at the same height the email had. */
  .bokja-collective-invite__form .bokja-signup-step2 {
    margin-top: 0;
  }
  .bokja-collective-invite__form .bokja-signup-back {
    padding: 0.6rem 0 0;
    font-size: var(--bt-h3);
    letter-spacing: 0;
  }

  /* The theme's CTA voice (`.cart__checkout-button`: --bt-label, 0.14em,
     uppercase), on the inline text-button this form uses. */
  .bokja-collective-invite__field button {
    flex: 0 0 auto;
    background: none;
    border: 0;
    cursor: pointer;
    font: inherit;
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    padding: 0 0 0 1rem;
    color: inherit;
  }

  /* The confirm note ("One email to confirm...") was removed on 2026-08-12 with the
     rest of James's trim, element and all. Its locale key stays in place, unused. */
  .bokja-collective-invite__error {
    font-size: 0.75rem;
    line-height: 1.45;
    margin: 0.75rem 0 0;
    font-weight: 400;
  }

  /* ============================================================================================
     THE PANEL'S INTERIOR, IN THE ACCOUNT DRAWER'S OWN REGISTERS (James, 2026-08-14, seventh pass
     on preview 188315402568: "the 'Apply to Join the Collective' part on the right-hand menu,
     you've taken exactly the styling from the pop-up at the bottom of the page. This should be
     restyled to match the rest of the menu.")
     ============================================================================================

     THE PREVIOUS PASS MOVED THE BOX AND NOTHING ELSE. It gave the drawer origin the drawer's
     GEOMETRY (full height, inline-end, var(--sidebar-width)) and left the interior exactly as the
     announcement bar had it, which is what James is describing: a centred pop-up's insides
     wearing a panel's outline. Everything below is scoped to `--panel` for the same reason the
     geometry is: the bar origin keeps the compact centred pop-up he approved on 2026-08-12,
     byte for byte, and `bar_popup_unchanged` + `popup_interior_unchanged` in
     scripts/push-account-drawer-two-path.js are the checks that hold that true.

     CSS ONLY. No element, no class, no attribute and no locale key changed in this pass — the
     customer form tag, the `contact[tags]` value, the email field and the success branch are
     the same markup they were, so the one-flow invariant is untouched and the pop-up rendering
     cannot move (written without their Liquid delimiters ON PURPOSE: a stylesheet block is still
     Liquid source and theme validation rejects a tag inside a CSS comment).

     WHY A TYPE RESET ON THE ROOT IS THE FIRST RULE, AND NOT TIDINESS. The dialog is a DIRECT
     child of the announcement bar's slide, so base.css's `.custom-typography > *` and
     `.custom-font-size > *` set font-family, font-weight, text-transform, letter-spacing,
     line-height and font-size ON THE DIALOG ITSELF from the bar's own block settings, and every
     descendant then inherits them. Measured on the preview before this pass, that is what the
     panel actually rendered: 12px / 500 / uppercase / letter-spacing 0.36px / line-height 1 /
     text-align center, with the dek arriving UPPERCASE at 14px. None of that is the drawer's
     language, and none of it can be fixed element by element — an inherited `text-transform`
     reappears on anything a rule below forgets. So the root states the drawer's body defaults
     once and each element states only what it changes. Specificity is (0,2,1) against those
     `> *` rules' (0,1,0) and against the base pop-up rule's (0,1,1), so it wins on specificity
     alone, in any source order, exactly as the geometry rule above argues for itself.

     THE TOKENS ARE THE DRAWER'S, NOT COPIES OF ITS NUMBERS, and that is checkable rather than
     hopeful: every variable this block reads was resolved at BOTH elements in the rendered
     preview and they agree — --color-background #FDFDFB, --color-foreground rgb(26 26 26),
     --padding-xl 1.25rem, --padding-2xl 1.5rem, --bt-micro 11px, --bt-body 13px, --bt-h3 15px,
     --bt-label 12px, --font-body--family Inter. Note the background is the one value that had to
     move: the base pop-up hard-codes #fbfbf6, the account drawer resolves --color-background to
     #FDFDFB, and "match the rest of the menu" means the drawer's, so the panel takes the token.

     THE LADDER, and the one judgement call in it. The account drawer reads eyebrow 11px uppercase
     -> primary rows 17px sentence case -> secondary rows 13px, under a 13px uppercase panel title
     in the header band. The heading here takes the 17px PRIMARY register rather than that 13px
     title register because it sits directly under an 11px uppercase eyebrow, in the body, and the
     drawer has already resolved that exact stack once: the 2026-08-13 pass turned its welcome line
     into an eyebrow precisely because two tracked uppercase lines at near-identical size were
     competing at the top of the panel. "Apply to join the collective" and "Your application is
     with the collective" are sentences, not labels, and the 13px uppercase register is this
     theme's PANEL-TITLE idiom (`.account-drawer__heading`, `.bokja-locale-sheet__heading`) — the
     name of a surface, not a line of copy inside one.

     THE FIELD IS THE DRAWER'S ROW LANGUAGE: full width, left aligned, one hairline underneath at
     the same 0.5px / foreground-16% the drawer rules its rows with, no box and no fill. The
     BUTTON is deliberately the one filled thing in the panel, and it is not invented here: the
     theme's own drawer CTA is `.cart__checkout-button` in assets/bokja-custom.css ("the Bokja CTA
     voice (uppercase, spaced), still sharp and off-black") — Horizon's primary button with
     border-radius 0, --bt-label, 0.14em, uppercase. That is the precedent a submit in a right-hand
     panel follows, so Apply takes the same treatment, full width, on the theme's own button
     padding and primary-button colour tokens. The bare <button> is styled to that result rather
     than given `class="button"`, because a class on the markup would change the ANNOUNCEMENT
     BAR's pop-up too, and that is the thing this pass must not touch.

     THE SUCCESS STATE NEEDED NO RULES OF ITS OWN. "Received" / "Your application is with the
     collective" / "We will be in touch." render through the SAME three classes as the invite
     copy, so they land in the same three registers by construction — one fewer place to drift. */
  dialog.bokja-collective-invite.bokja-collective-invite--panel {
    font-family: var(--font-body--family);
    font-size: var(--bt-body);
    font-weight: 400;
    line-height: 1.4;
    letter-spacing: normal;
    text-transform: none;
    text-align: start;
    background: var(--color-background);
    color: var(--color-foreground);
  }

  /* The dismiss row becomes the drawer's header band: the same paddings and the same closing
     hairline as `.account-drawer__header`, so the panel opens on the same edge treatment the
     drawer beneath it has. The × keeps its glyph and its markup; only its box is pinned, to
     16px, which is what puts the band at the drawer header's own height. */
  .bokja-collective-invite--panel .bokja-collective-invite__dismiss {
    align-items: center;
    padding: var(--padding-xl);
    border-block-end: 0.5px solid color-mix(in srgb, var(--color-foreground) 16%, transparent);
  }

  .bokja-collective-invite--panel .bokja-collective-invite__dismiss button {
    display: flex;
    align-items: center;
    justify-content: center;
    inline-size: 16px;
    block-size: 16px;
    padding: 0;
    line-height: 1;
  }

  .bokja-collective-invite--panel .bokja-collective-invite__body {
    padding: var(--padding-xl);
  }

  /* Eyebrow: `.bokja-nav__since` / `.account-drawer__welcome--eyebrow`, to the value. */
  .bokja-collective-invite--panel .bokja-collective-invite__eyebrow {
    font-size: var(--bt-micro);
    font-weight: 400;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    line-height: 1.3;
    color: var(--color-foreground);
    opacity: 0.5;
    margin: 0 0 10px;
  }

  /* Heading: the drawer's primary register. 17px is hard-coded for the reason the drawer states
     on its own rows — the --bt-* scale steps 15px straight to 19px, and 19px is the panel-title
     size, so no token sits where this needs to. font-weight is stated because an <h2> otherwise
     takes --font-h2--weight (700) from base.css, which is what it was rendering. */
  .bokja-collective-invite--panel .bokja-collective-invite__head {
    font-family: var(--font-body--family);
    font-size: 17px;
    font-style: normal; /* the base pop-up head went Georgia italic 2026-08-20; the drawer register is upright */
    font-weight: 400;
    letter-spacing: 0.01em;
    line-height: 1.3;
    text-transform: none;
    color: var(--color-foreground);
    margin: 0 0 8px;
  }

  /* Dek: the drawer's body register, muted the way `.account-drawer__empty` mutes supporting
     copy — it is a line about the offer, not an action row. */
  .bokja-collective-invite--panel .bokja-collective-invite__dek {
    font-size: var(--bt-body);
    font-weight: 400;
    letter-spacing: 0.02em;
    line-height: 1.5;
    text-transform: none;
    opacity: 0.6;
    margin: 0 0 22px;
  }

  .bokja-collective-invite--panel .bokja-collective-invite__error {
    font-size: var(--bt-micro);
    font-weight: 400;
    letter-spacing: 0.02em;
    line-height: 1.45;
    text-transform: none;
    margin: 0 0 12px;
  }

  /* The pop-up puts the input and the button on ONE line under a shared 1px rule, which is the
     compact centred form. In the panel they stack: the field takes the full width with the
     drawer's own hairline under it, and the button sits beneath it as a full-width CTA. Block
     layout rather than a column flex — the base rule's `flex: 1 1 auto` on the input then has
     nothing to act on, so there is no growth to reason about. */
  .bokja-collective-invite--panel .bokja-collective-invite__field {
    display: block;
    border-bottom: 0;
  }

  .bokja-collective-invite--panel .bokja-collective-invite__field input {
    display: block;
    inline-size: 100%;
    padding-block: 14px;
    font-family: var(--font-body--family);
    font-size: var(--bt-h3);
    font-weight: 400;
    letter-spacing: 0.01em;
    line-height: 1.3;
    text-align: start;
    text-transform: none;
    border-block-end: 0.5px solid color-mix(in srgb, var(--color-foreground) 16%, transparent);
  }

  .bokja-collective-invite--panel .bokja-collective-invite__field button {
    display: block;
    inline-size: 100%;
    margin-block-start: 20px;
    padding: var(--button-padding-block) var(--button-padding-inline);
    background: var(--color-primary-button-background);
    color: var(--color-primary-button-text);
    border-radius: var(--style-border-radius-buttons-primary);
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.14em;
    line-height: 1.2;
    text-transform: uppercase;
    text-align: center;
  }

  .bokja-collective-invite--panel .bokja-collective-invite__field button:hover {
    opacity: 0.6;
  }

  /* The drawer widens its inline padding at the same breakpoint. */
  @media screen and (min-width: 750px) {
    .bokja-collective-invite--panel .bokja-collective-invite__dismiss,
    .bokja-collective-invite--panel .bokja-collective-invite__body {
      padding-inline: var(--padding-2xl);
    }
  }
/* END_BLOCK:bokja-collective-invite */

/* START_BLOCK:comparison-slider (INDEX:125) */
comparison-slider-component {
    display: block;
  }

  .comparison-slider {
    position: relative;
    overflow: hidden;
    aspect-ratio: var(--ratio);
  }

  .comparison-slider:not(:has(img)) {
    min-width: 25dvh;
  }

  .comparison-slider__container {
    position: relative;
    width: 100%;
    height: 100%;
  }

  /* Container and Layout */
  .comparison-slider__media-wrapper {
    --compare: 50;

    position: relative;
    width: 100%;
    height: 100%;
    display: grid;
    grid-template: 1fr / 1fr;
    overflow: hidden;
  }

  /* Layer Containers */
  .comparison-slider__layer {
    grid-area: 1 / 1;
    position: relative;
    width: 100%;
    height: 100%;
    transition: clip-path var(--transition-duration, 0s) ease-in-out;
  }

  .comparison-slider__layer--after {
    z-index: var(--layer-base);
  }

  /* Before Layer Clipping (inverse of after layer) */
  [data-orientation='horizontal'] .comparison-slider__layer--before {
    /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
    clip-path: inset(0 calc((100 - var(--compare)) * 1%) 0 0);
  }

  [data-orientation='vertical'] .comparison-slider__layer--before {
    /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
    clip-path: inset(0 0 calc(var(--compare) * 1%) 0);
  }

  /* After Layer Clipping */
  [data-orientation='horizontal'] .comparison-slider__layer--after {
    /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
    clip-path: inset(0 0 0 calc(var(--compare) * 1%));
  }

  [data-orientation='vertical'] .comparison-slider__layer--after {
    /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
    clip-path: inset(calc((100 - var(--compare)) * 1%) 0 0 0);
  }

  /* Images and Placeholders */
  .before-image,
  .after-image,
  .comparison-slider__placeholder {
    width: 100%;
    height: 100%;
    object-fit: cover;
    aspect-ratio: var(--ratio);
  }

  .comparison-slider__placeholder {
    position: absolute;
    inset: 0;
  }

  .comparison-slider__placeholder svg {
    width: 100%;
    height: 100%;
    background-color: var(--color-background);
    fill: var(--color-foreground);
  }

  /* Range Input (Hidden but Functional) */
  .cs-slider {
    position: absolute;
    inset: 0;
    z-index: var(--layer-heightened);
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    opacity: 0;
    cursor: inherit;
    appearance: none;
  }

  [data-orientation='horizontal'] .cs-slider {
    cursor: ew-resize;
  }

  [data-orientation='vertical'] .cs-slider {
    cursor: ns-resize;
    writing-mode: vertical-lr;
    direction: rtl;
  }

  /* Range Input Thumb */
  .cs-slider::-webkit-slider-thumb,
  .cs-slider::-moz-range-thumb {
    width: var(--button-size);
    height: var(--button-size);
    border: 0;
    background: transparent;
    cursor: inherit;
    appearance: none;
  }

  /* Range Input Track */
  .cs-slider::-webkit-slider-track,
  .cs-slider::-moz-range-track {
    background: transparent;
    border: 0;
    appearance: none;
  }

  /* Visual Slider Elements */
  .comparison-slider__media-wrapper::before,
  .comparison-slider__media-wrapper::after {
    content: '';
    position: absolute;
    pointer-events: none;
    transition: left var(--transition-duration, 0s) ease-in-out, top var(--transition-duration, 0s) ease-in-out;
    z-index: var(--layer-raised);
  }

  /* Slider Track Line */
  .comparison-slider__media-wrapper::after {
    background: var(--color-background);
    box-shadow: 0 0 12px 0 rgb(0 0 0 / 0.1);
  }

  .comparison-slider__media-wrapper::before {
    background: var(--color-background);
  }

  .comparison-slider__media-wrapper[data-orientation='horizontal']::after {
    inset: 0 auto;
    left: calc(var(--compare) * 1%);
    width: 4px;
    transform: translateX(-50%);
  }

  .comparison-slider__media-wrapper[data-orientation='vertical']::after {
    inset: auto 0;
    top: calc((100 - var(--compare)) * 1%);
    height: 4px;
    transform: translateY(-50%);
  }

  /* Slider Handle */
  .cs-slider__handle {
    position: absolute;
    z-index: var(--layer-heightened);
    pointer-events: none;
    width: var(--button-size);
    height: var(--button-size);
    background: var(--color-background);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 0 12px 0 rgb(0 0 0 / 0.1);
    transition: left var(--transition-duration, 0s) ease-in-out, top var(--transition-duration, 0s) ease-in-out,
      gap 0.2s ease-in-out;
    gap: var(--gap-sm);
    padding: var(--padding-xs);
  }

  .comparison-slider__media-wrapper:hover .cs-slider__handle {
    gap: var(--gap-2xs);
  }

  .cs-slider__chevron {
    display: flex;
    align-items: center;
    justify-content: center;
  }

  [data-orientation='horizontal'] .cs-slider__handle {
    top: 50%;
    left: calc(var(--compare) * 1%);
    transform: translate(-50%, -50%);
    flex-direction: row;
  }

  [data-orientation='vertical'] .cs-slider__handle {
    left: 50%;
    top: calc((100 - var(--compare)) * 1%);
    transform: translate(-50%, -50%) rotate(90deg);
  }

  /* Text Labels */
  .comparison-slider__text {
    position: absolute;
    padding: var(--padding-xs);
    pointer-events: none;
  }

  .comparison-slider__text--with-bg {
    background: var(--text-background-color);
    border-radius: var(--text-corner-radius);
  }

  /* Horizontal: before/after control inline (left/right), position controls block (top/bottom) */
  [data-orientation='horizontal'] .comparison-slider__text--before {
    inset-inline-start: var(--padding-sm);
  }

  [data-orientation='horizontal'] .comparison-slider__text--after {
    inset-inline-end: var(--padding-sm);
  }

  [data-orientation='horizontal'][data-text-position='start'] .comparison-slider__text {
    inset-block-start: var(--padding-sm);
  }

  [data-orientation='horizontal'][data-text-position='end'] .comparison-slider__text {
    inset-block-end: var(--padding-sm);
  }

  /* Vertical: before/after control block (top/bottom), position controls inline (left/right) */
  [data-orientation='vertical'] .comparison-slider__text--before {
    inset-block-start: var(--padding-sm);
  }

  [data-orientation='vertical'] .comparison-slider__text--after {
    inset-block-end: var(--padding-sm);
  }

  [data-orientation='vertical'][data-text-position='start'] .comparison-slider__text {
    inset-inline-start: var(--padding-sm);
  }

  [data-orientation='vertical'][data-text-position='end'] .comparison-slider__text {
    inset-inline-end: var(--padding-sm);
  }
/* END_BLOCK:comparison-slider */

/* START_BLOCK:contact-form-submit-button (INDEX:126) */
.submit-button {
    min-width: max-content;
  }
/* END_BLOCK:contact-form-submit-button */

/* START_BLOCK:contact-form (INDEX:127) */
.contact-form__form {
    display: flex;
    flex-direction: column;
    gap: var(--gap-md);
  }

  .contact-form__form-row {
    display: flex;
    flex-direction: column;
    gap: var(--gap-md);

    @media screen and (min-width: 750px) {
      flex-direction: row;
      align-items: center;
    }
  }

  .contact-form__input {
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    color: var(--color-input-text);
    background-color: var(--color-input-background);
    padding: var(--padding-lg) var(--padding-xl);
    border-radius: var(--style-border-radius-inputs);
    border: var(--style-border-width-inputs) solid var(--color-input-border);
    -webkit-font-smoothing: antialiased;
  }

  .contact-form__input--textarea {
    resize: vertical;
    min-height: var(--input-textarea-min-height);
  }

  .contact-form__error,
  .contact-form__success {
    display: flex;
    align-items: center;
    gap: var(--gap-xs);
  }
/* END_BLOCK:contact-form */

/* START_BLOCK:email-signup (INDEX:129) */
.email-signup-block {
    --arrow-button-size: 58px;
    --arrow-button-size-integrated: 42px;
    --arrow-button-size-small: 20px;
    --arrow-icon-size: 32px;
    --arrow-icon-size-small: 24px;

    min-width: fit-content;

    @media screen and (max-width: 749px) {
      width: 100%;
      min-width: unset;
    }
  }

  .email-signup__heading {
    padding-block: var(--padding-sm);
  }

  .email-signup__form {
    display: flex;
    flex-direction: column;
  }

  .email-signup__input-group {
    display: flex;
    align-items: stretch;
    background-color: transparent;
  }

  .email-signup__input-group:not(.email-signup__input-group--integrated):not(.email-signup__input-group--underline) {
    gap: var(--gap-xs);
    align-items: center;
  }

  .email-signup__input-group:not(.email-signup__input-group--arrow):not(.email-signup__input-group--underline):not(
      .email-signup__input-group--integrated
    ) {
    @media screen and (max-width: 749px) {
      flex-direction: column;
    }
  }

  .email-signup__input-group--integrated {
    border-width: var(--border-width);
    border-radius: var(--border-radius);
    border-style: solid;
    border-color: var(--color-input-border);
    background-color: var(--color-input-background);
  }

  .email-signup__input-group--integrated.email-signup__input-group--no-border {
    border: none;
  }

  .email-signup__input {
    flex: 1;
    min-width: 0;
    border-width: var(--border-width);
    border-radius: var(--border-radius);
    border-style: solid;
    border-color: var(--color-input-border);

    @media screen and (max-width: 749px) {
      width: 100%;
    }
  }

  .email-signup__input-group--integrated .email-signup__input {
    background-color: transparent;
    border: none;
    border-radius: 0;
  }

  .email-signup__input.paragraph {
    color: var(--color-input-text);
    outline-color: var(--color-input-background);
  }

  .email-signup__button {
    white-space: nowrap;
    padding: 0;

    @media screen and (max-width: 749px) {
      width: 100%;
    }
  }

  .email-signup__input,
  .email-signup__button--text {
    padding: var(--padding-lg) var(--padding-3xl);
  }

  .email-signup__input-group--underline {
    --box-shadow-color: var(--color-input-border);
    --box-shadow-multiplier: 1;
    --box-shadow-focused-multiplier: 1.75;

    box-shadow: 0 calc(var(--border-width) * var(--box-shadow-multiplier)) 0 var(--box-shadow-color);
    transition: box-shadow var(--animation-values);
    margin-block-end: calc(var(--border-width) * var(--box-shadow-focused-multiplier));

    &:focus-within {
      --box-shadow-multiplier: var(--box-shadow-focused-multiplier);
      --box-shadow-color: var(--color-input-text);
    }
  }

  .email-signup__input-group .email-signup__input--underline {
    color: var(--color-input-text);
    background-color: transparent;
    padding: 12px 0;
    border: none;
    border-radius: 0;

    &:focus-visible {
      outline: none;
    }
  }

  .email-signup__input::placeholder {
    color: rgb(var(--color-input-text-rgb) / var(--opacity-70));
  }

  .email-signup__input-group .email-signup__input--none {
    color: var(--color-input-text);
    background-color: var(--color-input-background);
    border: none;
  }

  .email-signup__button-icon {
    color: currentcolor;
    padding: 5px;

    @media screen and (max-width: 749px) {
      padding: 0;
      align-self: center;
      justify-self: center;
      width: var(--icon-size-lg);
      height: var(--icon-size-lg);
    }
  }

  .email-signup__button--arrow {
    width: var(--arrow-button-size-small);
    height: var(--arrow-button-size-small);
    padding: 0;

    &:not(.email-signup__button--integrated) {
      width: var(--arrow-button-size);
      height: var(--arrow-button-size);
      display: flex;
      align-items: center;
      justify-content: center;

      > .email-signup__button-icon {
        width: var(--arrow-icon-size);
        height: var(--arrow-icon-size);
        padding: 0;
      }
    }
  }

  .email-signup__button--integrated {
    --button-offset: var(--margin-xs);
    align-self: stretch;
    margin: var(--button-offset);
    flex-shrink: 0;

    @media screen and (max-width: 749px) {
      width: fit-content;
    }

    &.email-signup__button--text {
      padding: 0 var(--padding-3xl);
    }

    &.email-signup__button--text.button-unstyled {
      padding: 0 var(--padding-xl);
    }

    &.button-unstyled {
      border-radius: var(--border-radius);
    }

    > .email-signup__button-icon {
      padding: 0;
    }

    &.email-signup__button--arrow {
      width: var(--arrow-button-size-integrated);
      height: var(--arrow-button-size-integrated);
      align-self: center;
      display: flex;
      align-items: center;
      justify-content: center;

      > .email-signup__button-icon {
        width: var(--arrow-icon-size-small);
        height: var(--arrow-icon-size-small);
      }
    }
  }

  .email-signup__input--underline + .email-signup__button--integrated {
    margin: 0;
    align-self: center;

    &.email-signup__button--text {
      padding-block: 9px;
    }

    &.email-signup__button--text.button-unstyled {
      padding-inline: 0;
      min-width: 44px;
      min-height: 44px;
    }

    &.button-unstyled {
      border-radius: 0;
    }

    &.email-signup__button--arrow {
      width: var(--arrow-button-size-integrated);
      height: var(--arrow-button-size-integrated);
      display: flex;
      align-items: center;
      justify-content: center;

      > .email-signup__button-icon {
        width: var(--arrow-icon-size-small);
        height: var(--arrow-icon-size-small);
      }
    }
  }

  .email-signup__button:not(.button-unstyled) {
    background-color: var(--button-background-color);
    color: var(--button-color);
    text-transform: var(--button-text-case-primary);
  }

  .email-signup__button.button-secondary {
    text-transform: var(--button-text-case-secondary);
  }

  .email-signup__button.button-unstyled {
    background-color: transparent;
    color: var(--color-input-text);
  }

  .email-signup__button.button-unstyled:hover {
    color: rgb(var(--color-input-text-rgb) / var(--opacity-70));
    cursor: pointer;
  }

  .email-signup__message {
    display: flex;
    align-items: center;
    gap: var(--gap-xs);
  }

  .email-signup__message-text {
    margin: 0;
  }
/* END_BLOCK:email-signup */

/* START_BLOCK:filters (INDEX:131) */
.facets-block-wrapper {
    @media screen and (min-width: 750px) {
      margin: var(--facets-margin);
      grid-column: var(--grid-column--desktop);
    }
  }

  .facets-block-wrapper--vertical {
    @media screen and (min-width: 750px) {
      grid-column: var(--grid-column--desktop);
    }
  }

  .facets-toggle {
    --icon-offset: -3px;

    display: flex;
    justify-content: space-between;
    align-items: center;
    height: var(--minimum-touch-target);
    margin: var(--facets-margin);
    padding-block: var(--facets-inner-padding-block);
    padding-inline: var(--facets-inner-padding-inline);

    @media screen and (min-width: 750px) {
      display: none;
    }
  }

  .facets-toggle__wrapper {
    margin-left: var(--icon-offset);
  }

  .facets-toggle__button {
    box-shadow: none;

    @media screen and (min-width: 750px) {
      display: none;
    }
  }

  .filter-count-bubble {
    position: relative;
    width: 20px;
    aspect-ratio: 1;
    border-radius: 50%;
    display: grid;
    line-height: normal;
    place-content: center;
    color: var(--color-foreground);
    border: var(--icon-stroke-width) solid var(--color-background);
  }

  .facets-mobile__title-wrapper .h3 {
    margin-block-end: 0;
    display: inline-flex;
    align-items: center;
    gap: var(--gap-xs);
  }

  .facets-mobile__title-wrapper .filter-count-bubble {
    width: 22px;
    height: 22px;
  }

  .facets-mobile__title-wrapper .filter-count-bubble__text {
    font-size: var(--font-size--xs);
  }

  .filter-count-bubble__background {
    position: absolute;
    inset: 0;
    background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10-25));
    border-radius: var(--style-border-radius-50);
  }

  .filter-count-bubble__text {
    font-size: 11px;
    font-weight: var(--font-paragraph--weight);
    aspect-ratio: 1 / 1;
  }

  .facets-toggle--no-filters {
    @media screen and (max-width: 749px) {
      /* stylelint-disable-next-line declaration-no-important */
      justify-content: unset !important;

      & > .facets-mobile-wrapper {
        width: 100%;
      }
    }
  }

  .facets-block-wrapper--vertical + .facets-toggle {
    @media screen and (max-width: 749px) {
      margin: 0;
    }
  }

  .facets-mobile-wrapper {
    display: flex;
    align-items: center;
    gap: var(--gap-sm);
    justify-content: flex-end;
  }

  .facets-mobile-wrapper--multiple-controls {
    justify-content: space-between;
  }

  @media screen and (min-width: 750px) {
    dialog-component.facets-block-wrapper {
      position: absolute;
      width: 0;
      height: 0;
    }
  }

  .facets {
    --facets-form-horizontal-gap: 20px;
    --facets-horizontal-max-input-wrapper-height: 230px;
    --facets-upper-z-index: var(--layer-raised);
    --facets-open-z-index: var(--layer-heightened);
    --facets-sticky-z-index: var(--layer-sticky);
    --facets-panel-min-width: 120px;
    --facets-panel-height: 300px;
    --facets-grid-panel-width: 300px;
    --facets-clear-padding: var(--padding-md);
    --facets-clear-shadow: 0 -4px 14px 0 rgb(var(--color-foreground-rgb) / var(--facets-low-opacity));
    --facets-input-label-color: rgb(var(--color-input-text-rgb) / var(--opacity-60));
    --facets-clear-all-min-width: 120px;
    --facets-see-results-min-width: 55%;
    --facets-mobile-gap: 22px;
    --facets-low-opacity: 10%;
    --facets-hover-opacity: 75%;

    top: auto;
    bottom: 0;
    height: var(--drawer-height);
    max-height: var(--drawer-height);
    width: var(--drawer-width);
    max-width: var(--drawer-max-width);
    box-shadow: none;
    padding-block: 0;

    &:not(.facets--drawer) {
      @media screen and (min-width: 750px) {
        padding-inline: var(--padding-inline-start) var(--padding-inline-end);
        width: 100%;
        max-width: 100%;
      }
    }
  }

  .facets--horizontal {
    display: none;

    @media screen and (min-width: 750px) {
      padding-block: var(--padding-block-start) var(--padding-block-end);
      display: flex;
      align-items: center;
      position: relative;
      z-index: var(--facets-upper-z-index);
      border: none;
      height: auto;
      top: initial;
      bottom: initial;
      max-height: none;
      width: auto;
      overflow: visible;
    }
  }

  .facets--vertical {
    display: none;

    @media screen and (min-width: 750px) {
      padding-block: 0 var(--padding-block-end);
      display: block;
      position: static;
      top: auto;
      bottom: auto;
      height: auto;
      max-height: none;
      width: auto;
      overflow: visible;
    }
  }

  .facets--drawer {
    border-radius: 0;
    border-right: var(--style-border-drawer);
    box-shadow: var(--shadow-drawer);
    padding-inline: 0;
  }

  .facets--drawer[open] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
  }

  .facets-drawer__form-wrapper {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }

  .facets-drawer__form-wrapper .facets__form {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }

  .facets-drawer__filters {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    position: relative;
  }

  .facets-drawer__filters .facets__filters-wrapper,
  .facets-drawer__filters .filter-remove-buttons,
  .facets-drawer__filters .sorting-filter-component {
    overflow: visible;
  }

  .facets.facets-controls-wrapper {
    @media screen and (min-width: 750px) {
      grid-column: column-1 / column-12;
      color: rgb(var(--color-foreground-rgb) / var(--opacity-70));
      gap: 0 var(--facets-form-horizontal-gap);
      padding-bottom: var(--padding-xs);
    }
  }

  .facets__inputs {
    display: flex;
    flex-direction: column;
    gap: var(--padding-lg);
    width: 100%;
  }

  :is(.facets--drawer, .facets--vertical) .facets__inputs:not(:has(.show-more)) {
    padding-block-end: var(--padding-sm);
  }

  /* Facets - Form */
  .facets__form-wrapper {
    display: flex;
    flex-direction: column;
    color: var(--color-foreground-muted);
    width: 100%;
  }

  .facets--horizontal .facets__form-wrapper {
    @media screen and (min-width: 750px) {
      flex-direction: row;
      height: auto;
    }
  }

  .facets__form {
    display: flex;
    flex-flow: column;
    width: 100%;
    height: 100%;
  }

  .facets--horizontal .facets__form {
    @media screen and (min-width: 750px) {
      flex-flow: row nowrap;
      height: auto;
    }
  }

  .facets:not(.facets--drawer) .facets__filters-wrapper {
    @media screen and (min-width: 750px) {
      margin-inline-end: var(--margin-md);
    }
  }

  .facets--horizontal .facets__filters-wrapper {
    @media screen and (min-width: 750px) {
      max-width: 60%;
      display: flex;
      flex-wrap: wrap;
      column-gap: var(--gap-xl);
      margin-inline-end: 0;
    }
  }

  /* Facets - Summary */
  .facets__summary {
    --variant-picker-swatch-width: 32px;
    --variant-picker-swatch-height: 32px;
    --icon-opacity: 0.5;

    @media screen and (min-width: 750px) {
      --variant-picker-swatch-width: 26px;
      --variant-picker-swatch-height: 26px;
    }

    font-size: var(--font-h5--size);
    display: flex;
    justify-content: space-between;

    &:hover {
      --icon-opacity: 1;
    }
  }

  .facets__filters-wrapper:hover .facets__summary,
  .facets__filters-wrapper:has(.facets__panel[open]) .facets__summary {
    opacity: var(--facets-hover-opacity);
  }

  .facets__filters-wrapper .facets__summary:hover,
  .facets__filters-wrapper .facets__panel[open] .facets__summary {
    opacity: 1;
  }

  .facets--horizontal .facets__summary {
    @media screen and (min-width: 750px) {
      font-size: var(--font-paragraph--size);
      justify-content: flex-start;
      height: var(--minimum-touch-target);
    }
  }

  .facets__summary .icon-caret {
    height: var(--icon-size-xs);
    width: var(--icon-size-xs);
    color: rgb(var(--color-foreground-rgb) / var(--icon-opacity));
    margin-block: var(--margin-2xs);
    transition: color var(--animation-speed) var(--animation-easing);
  }

  .facets--drawer .facets__summary .icon-caret {
    margin-inline-start: var(--margin-2xs);
  }

  /* Facets - Bubble */
  .facets__bubble {
    display: inline-flex;
    font-family: var(--font-paragraph--family);
    font-weight: var(--font-paragraph--weight);
    aspect-ratio: 1 / 1;
  }

  /* Facets - Inputs */
  .facets__inputs-wrapper {
    margin-block: var(--padding-xs) var(--padding-xs);
  }

  .facets__inputs .show-more {
    display: flex;
    flex-direction: column;
    gap: var(--gap-xl);
    margin-block-end: var(--padding-xl);
  }

  .facets:not(.facets--drawer) .facets__inputs-wrapper {
    @media screen and (min-width: 750px) {
      gap: var(--gap-sm);
    }
  }

  .facets--horizontal .facets__inputs .show-more {
    @media screen and (min-width: 750px) {
      display: contents;
    }
  }

  .facets--horizontal .facets__inputs-wrapper {
    @media screen and (min-width: 750px) {
      max-height: var(--facets-horizontal-max-input-wrapper-height);
      scrollbar-width: none;
      -ms-overflow-style: none;
      overflow-x: auto;
      padding: var(--padding-md);
      margin-block: 0;
    }
  }

  .facets--vertical .facets__inputs:has(.show-more) .facets__inputs-wrapper {
    padding-block: var(--padding-sm);
    padding-inline: var(--padding-sm);
    margin-block: calc(var(--padding-sm) * -1);
    margin-inline: calc(var(--padding-sm) * -1);
  }

  @media screen and (max-width: 749px) {
    .facets__inputs:has(.show-more) .facets__inputs-wrapper {
      padding-block: var(--padding-sm);
      padding-inline: var(--padding-sm);
      margin-block: calc(var(--padding-sm) * -1);
      margin-inline: calc(var(--padding-sm) * -1);
    }
  }

  .facets__inputs-wrapper:not(:has(.facets__inputs-list)),
  .facets__inputs-wrapper .facets__inputs-list {
    display: flex;
    gap: var(--facets-mobile-gap);
    flex-direction: column;

    @media screen and (min-width: 750px) {
      gap: var(--gap-sm);
    }
  }

  @media screen and (min-width: 750px) {
    .facets--vertical .facets__inputs-wrapper .facets__inputs-list--swatches {
      gap: var(--gap-sm);
    }

    .facets--horizontal
      .facets__inputs-wrapper
      .facets__inputs-list--swatches:not(.facets__inputs-list--swatches-grid) {
      display: grid;
      grid-template-columns: repeat(var(--swatch-columns, 4), 1fr);
    }
  }

  .facets__inputs-wrapper .facets__inputs-list--swatches {
    --facets-mobile-gap: var(--gap-sm);
  }

  .facets__inputs-wrapper .facets__inputs-list--grid {
    --min-column-width: 20%;

    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(var(--min-column-width), 1fr));
    gap: var(--gap-sm);

    @media screen and (min-width: 750px) {
      --min-column-width: 50px;
    }
  }

  .facets-block-wrapper:not(.facets-block-wrapper--vertical) .facets__inputs-list--grid {
    @media screen and (min-width: 750px) {
      width: var(--facets-grid-panel-width);
    }
  }

  .facets__inputs-wrapper--row:not(:has(.facets__inputs-list)),
  .facets__inputs-wrapper--row .facets__inputs-list {
    flex-wrap: wrap;
    flex-direction: row;
  }

  .facets__inputs .show-more__button {
    --show-more-icon-size: 22px;
    --show-more-gap: 8px;

    gap: var(--show-more-gap);

    @media screen and (min-width: 750px) {
      --show-more-icon-size: 16px;
      --show-more-gap: 6px;
    }
  }

  .facets__inputs .show-more__button .icon-plus {
    width: var(--show-more-icon-size);
    height: var(--show-more-icon-size);

    svg {
      width: var(--icon-size-xs);
      height: var(--icon-size-xs);
    }
  }

  /* Facets - Panel */
  .facets__panel {
    padding: 0 var(--drawer-padding);
  }

  .facets:not(.facets--drawer) .facets__panel,
  .facets-controls-wrapper .facets__panel {
    @media screen and (min-width: 750px) {
      padding: 0;
    }
  }

  .facets--horizontal .facets__panel {
    @media screen and (min-width: 750px) {
      position: relative;
    }
  }

  .facets-mobile-wrapper .facets__panel-content {
    border-radius: var(--style-border-radius-popover);
  }

  .facets-mobile-wrapper {
    --facets-upper-z-index: var(--layer-raised);
    --facets-panel-min-width: 120px;
    --facets-panel-height: 300px;
  }

  .facets--horizontal .facets__panel-content {
    @media screen and (min-width: 750px) {
      border-radius: var(--style-border-radius-popover);
      position: absolute;
      top: 100%;
      width: max-content;
      min-width: var(--facets-panel-min-width);
      max-width: var(--facets-panel-width);
      max-height: var(--facets-panel-height);
      z-index: var(--facets-upper-z-index);
      box-shadow: var(--shadow-popover);
      border: var(--style-border-popover);
      background-color: var(--color-background);
      overflow-y: hidden;
      gap: 0;
    }
  }

  :is(.facets--drawer, .facets--vertical) :is(.facets__item, .sorting-filter)::before {
    content: '';
    display: block;
    height: 0;
    width: calc(100% - var(--drawer-padding) * 2);
    border-top: var(--style-border-width) solid var(--color-border);
    margin: 0 auto;
  }

  @media screen and (min-width: 750px) {
    .facets:not(.facets--drawer) :is(.facets__item, .sorting-filter)::before {
      width: 100%;
    }

    .facets--horizontal .facets__item:not(:first-of-type)::before,
    .facets--horizontal .sorting-filter::before {
      content: none;
    }
  }

  @media screen and (min-width: 750px) {
    .facets--vertical .facets__item:not(:first-of-type)::before,
    .facets--vertical .sorting-filter::before {
      content: '';
    }
  }

  /* Facets - Text */
  .facets__label,
  .facets__clear-all-link,
  .clear-filter {
    text-decoration-color: transparent;
    text-decoration-thickness: 0.075em;
    text-underline-offset: 0.125em;
    transition: text-decoration-color var(--animation-speed) var(--animation-easing);
  }

  .facets__clear-all-link {
    display: none;
    cursor: pointer;
    padding: var(--padding-xs);
    color: var(--button-color);
    transition: text-decoration-color var(--animation-speed) var(--animation-easing),
      color var(--animation-speed) var(--animation-easing);
  }

  .facets__clear-all-link:hover {
    --button-color: var(--color-primary-hover);

    text-decoration: underline;
    text-decoration-color: var(--button-color);
  }

  .facets__clear-all-link--horizontal {
    height: var(--minimum-touch-target);
    padding-inline: var(--facets-form-horizontal-gap);
    min-width: var(--facets-clear-all-min-width);
  }

  .facets__clear-all-link--active {
    display: block;
  }

  .facets__label,
  .products-count-wrapper {
    text-transform: var(--facet-label-transform);
  }

  .clear-filter {
    background-color: transparent;
    box-shadow: none;
    padding: 0;
  }

  .clear-filter:hover {
    text-decoration: underline;
  }

  /* Clear button */
  .facets__clear {
    display: none;
  }

  .facets--horizontal .facets__clear {
    @media screen and (min-width: 750px) {
      width: 100%;
      justify-content: flex-end;
      padding: 0 var(--facets-clear-padding) var(--facets-clear-padding) 0;
      cursor: pointer;
    }
  }

  .facets__clear--active {
    @media screen and (min-width: 750px) {
      display: flex;
    }
  }

  /* Facets - Label */
  .facets__label {
    color: var(--color-foreground);
    cursor: pointer;
    white-space: nowrap;

    @media screen and (min-width: 750px) {
      margin-inline-end: var(--margin-2xs);
    }
  }

  /* Products count */
  .products-count-wrapper {
    display: none;
  }

  .facets--horizontal .products-count-wrapper {
    @media screen and (min-width: 750px) {
      display: flex;
      margin-left: auto;
      flex-shrink: 0;
      align-items: center;
      height: var(--minimum-touch-target);
    }
  }

  /* Mobile specific components */
  .facets__title-wrapper {
    background-color: var(--color-background);
    color: var(--color-foreground);
    position: sticky;
    top: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-block: var(--padding-xs);
    padding-inline-start: var(--drawer-padding);
    padding-inline-end: var(--padding-2xs);
    z-index: var(--facets-sticky-z-index);
  }

  :is(.facets--horizontal, .facets--vertical) .facets__title-wrapper {
    @media screen and (min-width: 750px) {
      display: none;
    }
  }

  .facets-drawer__title {
    --variant-picker-swatch-width: 32px;
    --variant-picker-swatch-height: 32px;

    margin: 0;
    display: flex;
    align-items: center;
    gap: var(--gap-xs);

    @media screen and (min-width: 750px) {
      --variant-picker-swatch-width: 26px;
      --variant-picker-swatch-height: 26px;
    }
  }

  .facets-drawer__close {
    position: relative;
    top: 0;
    right: 0;
    padding: 0;
    cursor: pointer;
  }

  /* Status */
  .facets__status:not(:empty) {
    width: max-content;
    display: flex;
    margin-inline-start: auto;
    font-weight: 500;
    color: var(--color-foreground);
  }

  .facets__panel[open] .facets__status {
    display: none;
  }

  .facets--filters-title {
    margin-block-end: 0;
    color: var(--color-foreground);
    height: fit-content;

    @media screen and (max-width: 749px) {
      display: none;
    }
  }

  .facets--horizontal .facets__panel .facets__status:has(:not(:empty)) {
    @media screen and (min-width: 750px) {
      display: flex;
      margin-inline-start: var(--margin-xs);
      margin-inline-end: var(--margin-xs);
    }
  }

  /* Horizontal filter style */
  .facets--horizontal .facets__form {
    @media screen and (min-width: 750px) {
      gap: 0 var(--facets-form-horizontal-gap);
    }
  }

  /* Facets - Actions */
  .facets__drawer-actions {
    --to-top-gradient-background: linear-gradient(
      to top,
      rgb(var(--color-background-rgb) / var(--opacity-90)),
      rgb(var(--color-background-rgb) / var(--opacity-80)),
      rgb(var(--color-background-rgb) / var(--opacity-40)),
      transparent
    );

    position: sticky;
    bottom: 0;
    z-index: var(--facets-sticky-z-index);
    order: 1;
    display: flex;
    flex-shrink: 0;
    justify-content: space-between;
    align-items: stretch;
    gap: var(--gap-sm);
    padding-block-start: var(--padding-xs);
    padding-block-end: var(--padding-md);
    padding-inline: var(--padding-lg);
    margin-top: auto;
    background-image: var(--to-top-gradient-background);
    background-color: var(--color-background);
  }

  /* Clear all button */
  .facets__clear-all {
    display: none;
    cursor: pointer;
    min-width: var(--facets-clear-all-min-width);
    flex-grow: 1;
    padding-block: var(--padding-lg);
    color: var(--button-color, inherit);
  }

  .facets__clear-all--active {
    display: block;
    opacity: 1;
    transform: translateY(0);
    transition: transform var(--animation-values), opacity var(--animation-values);
  }

  @starting-style {
    .facets__clear-all--active {
      opacity: 0;
      transform: translateY(100%);
    }
  }

  .facets__see-results {
    min-width: var(--facets-see-results-min-width);
    flex-grow: 1;
    padding-block: var(--padding-lg);
  }

  .facets-horizontal-remove {
    display: flex;
    align-items: center;
  }

  .facets-horizontal-remove--active::before {
    content: '';
    border-inline-start: var(--style-border-width) solid var(--color-border);
    height: var(--font-paragraph--size);
    position: absolute;
  }
/* END_BLOCK:filters */

/* START_BLOCK:footer-policy-list (INDEX:134) */
.policy-list-trigger {
    anchor-name: --terms-policies-trigger;
    cursor: pointer;
    font-size: var(--font-size, 0.75rem);
    text-transform: var(--text-transform, none);
  }

  .policy_list {
    li {
      border-radius: calc(var(--style-border-radius-popover) - 8px);

      a {
        color: var(--color-foreground);
        display: inline-block;
        padding: 8px;
        text-align: start;
        width: 100%;
        outline-color: #0000;
        font-size: var(--font-size, 0.75rem);
        text-transform: var(--text-transform, none);
      }

      &:is(:hover, :focus-within) {
        background: rgb(var(--color-foreground-rgb) / 0.15);
      }
    }
  }

  .terms-policies-popover {
    position-anchor: --terms-policies-trigger;
    inset: unset;
    bottom: calc(anchor(top) + 1rem);
    left: anchor(left);
    border-radius: var(--style-border-radius-popover);
    background: linear-gradient(var(--color-background) 0 100%),
      linear-gradient(rgb(var(--color-background-rgb) / 0.15) 0 100%);
    background-clip: padding-box, border-box;
    border: 1px solid #0000;
    box-shadow: var(--shadow-popover);
    padding: 8px;
    margin: 0;
    opacity: 0;
    scale: 0.94;
    translate: 0 6px;
    transform-origin: 3.9em 100%;
  }

  .terms-policies-popover.\:popover-open,
  .terms-policies-popover:popover-open {
    opacity: 1;
    translate: 0 0;
    scale: 1;
  }

  @media screen and (max-width: 749px) {
    .terms-policies-popover {
      left: anchor(center);
      transform: translate(-50%, 0);
      transform-origin: 0% 100%;
    }
  }

  @supports not (position-anchor: --account-button-trigger) {
    .terms-policies-popover {
      bottom: unset;
      top: calc(var(--anchor-top) * 1px);
      left: calc(var(--anchor-left) * 1px);
      transform: translate(0, calc(-100% - 1.25rem));
    }

    @media screen and (max-width: 749px) {
      .terms-policies-popover {
        left: calc((var(--anchor-left) + (var(--anchor-width) / 2)) * 1px);
        transform: translate(-50%, calc(-100% - 1.25rem));
      }
    }
  }

  @media (prefers-reduced-motion: no-preference) {
    .terms-policies-popover {
      transition-property: display, overlay, opacity, scale, translate;
      transition-behavior: allow-discrete;
      transition-duration: 0.3s;
      transition-timing-function: var(--ease-out-quad);
    }

    @starting-style {
      .terms-policies-popover.\:popover-open,
      .terms-policies-popover:popover-open {
        opacity: 0.7;
        translate: 0 6px;
        scale: 0.94;
      }
    }
  }
/* END_BLOCK:footer-policy-list */

/* START_BLOCK:icon (INDEX:136) */
.icon-block {
    display: flex;
    flex-shrink: 0;
  }

  .icon-block__media {
    height: auto;
  }
/* END_BLOCK:icon */

/* START_BLOCK:image (INDEX:137) */
.image-block__placeholder {
    height: 100%;
    width: 100%;
    object-fit: cover;
    object-position: center center;
    overflow: hidden;
    position: relative;
  }

  .placeholder-image {
    position: relative;
    aspect-ratio: var(--ratio);
    overflow: hidden;
  }

  .image-block {
    display: flex;

    /* When the image is nested in a group, section, etc, respect the parent's horizontal alignment */
    justify-content: var(--horizontal-alignment, 'inline-start');
  }

  .image-block--height-fill .image-block__image {
    height: 100%;
  }

  .image-block__image {
    object-fit: cover;
    aspect-ratio: var(--ratio);
  }
/* END_BLOCK:image */

/* START_BLOCK:logo (INDEX:139) */
.logo-block {
    width: calc(var(--logo-width) + var(--padding-inline-start) + var(--padding-inline-end));
    max-width: 100%;
    max-height: calc(var(--logo-height, 100%) + var(--padding-block-start) + var(--padding-block-end));
    font-size: var(--logo-height);
    display: flex;

    @media screen and (max-width: 749px) {
      max-height: calc(
        var(--logo-height-mobile, var(--logo-height, 100%)) + var(--padding-block-start) + var(--padding-block-end)
      );
      font-size: var(--logo-height-mobile, var(--logo-height));
      width: calc(
        var(--logo-width-mobile, var(--logo-width)) + var(--padding-inline-start) + var(--padding-inline-end)
      );
    }
  }

  .logo-block__image-wrapper {
    display: flex;
    width: 100%;
    max-width: 100%;
    max-height: 100%;
  }

  .logo-block__image {
    object-fit: contain;
    width: 100%;
  }
/* END_BLOCK:logo */

/* START_BLOCK:menu (INDEX:140) */
.menu {
    width: 100%;
  }

  .menu:not(:has(.menu__heading--empty)) .details-content {
    margin-block-start: var(--spacing--size);
  }

  .menu__item + .menu__item {
    margin-block-start: var(--spacing--size);
  }

  .menu .menu__heading--empty {
    display: none;
  }

  .menu__heading__default {
    display: contents;
  }

  .menu__heading__accordion {
    display: none;
  }

  @media screen and (max-width: 749px) {
    /* Always show the fallback heading on mobile when accordion is enabled */
    .menu--accordion .menu__heading--empty {
      display: flex;
    }

    .menu--accordion .menu__heading__accordion {
      display: contents;
    }

    .menu--accordion .menu__heading__default {
      display: none;
    }

    .menu--accordion .details-content {
      margin-block-start: var(--spacing--size);
    }

    .menu--accordion .menu__details {
      padding-inline: 0;
    }

    .menu--dividers .menu__details {
      border-block-end: var(--style-border-width) solid var(--color-border);
    }

    .menu--dividers .details-content {
      padding-block-end: var(--padding-sm);
    }
  }
/* END_BLOCK:menu */

/* START_BLOCK:page (INDEX:142) */
.page-block {
    display: flex;
    flex-direction: column;
    max-width: 100%;
    max-height: 100%;
    width: 100%;
    height: auto;
    align-items: flex-start;
  }

  .page-title {
    margin-bottom: var(--margin-xl);
  }
/* END_BLOCK:page */

/* START_BLOCK:payment-icons (INDEX:143) */
.payment-icons {
    width: 100%;
  }

  .payment-icons__list {
    display: flex;
    align-items: center;
    justify-content: var(--alignment);
    flex-wrap: wrap;
    gap: var(--icon-gap);
    margin: 0;
    padding: 0;
  }

  .payment-icons__item {
    display: flex;
    align-items: center;
  }
/* END_BLOCK:payment-icons */

/* START_BLOCK:popup-link (INDEX:144) */
.popup-link__button svg {
    display: inline-block;
    position: relative;
    top: var(--margin-2xs);
  }

  .popup-link__content {
    box-shadow: var(--shadow-popover);
    border: var(--style-border-popover);
    border-radius: var(--style-border-radius-popover);
    background-color: var(--color-background);
    padding: var(--padding-4xl) var(--padding-xl) var(--padding-xl);
    max-width: var(--normal-content-width);
    max-height: var(--modal-max-height);

    @media screen and (min-width: 750px) {
      padding: var(--padding-5xl);
    }
  }

  .popup-link__content[open] {
    animation: modalSlideInTop var(--animation-speed) var(--animation-easing) forwards;
  }

  .popup-link__content.dialog-closing {
    animation: modalSlideOutTop var(--animation-speed) var(--animation-easing) forwards;
  }

  .popup-link__content--drawer {
    position: fixed;
    border-radius: 0;
    width: var(--sidebar-width);
    max-width: 95vw;
    height: 100%;
    margin: 0 0 0 auto;
  }

  /* Needed to ensure the drawer is full height */
  .popup-link__content--drawer:modal {
    max-height: 100dvh;
  }

  .popup-link__close {
    top: var(--margin-2xs);
    right: var(--margin-2xs);
    opacity: 0.8;
    animation: none;
  }
/* END_BLOCK:popup-link */

/* START_BLOCK:product-custom-property (INDEX:147) */
product-custom-property-component {
    display: block;
    width: 100%;
  }

  product-custom-property-component .__heading {
    margin-inline: 0;
    margin-block: 0 var(--padding-sm);
  }

  product-custom-property-component .__heading:has(+ .__description) {
    margin-block-end: var(--padding-2xs);
  }

  product-custom-property-component .__description {
    font-size: min(0.85em, var(--font-paragraph--size));
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
    margin-inline: 0;
    margin-block: 0 var(--padding-md);
  }

  product-custom-property-component .__field {
    position: relative;
  }

  product-custom-property-component .__input-wrapper {
    position: relative;
  }

  product-custom-property-component input,
  product-custom-property-component textarea {
    width: 100%;
    /* stylelint-disable-next-line declaration-no-important */
    color: var(--color-input-text) !important;
  }

  /* Add padding for inputs with counter inside */
  product-custom-property-component .__input-wrapper input {
    padding-bottom: calc(var(--padding-sm) * 3);
  }

  product-custom-property-component .__input-wrapper textarea {
    padding-bottom: calc(var(--padding-sm) * 3);
    scroll-padding-bottom: calc(var(--padding-sm) * 3);
  }

  product-custom-property-component textarea {
    min-height: 80px;
  }

  @supports (resize: vertical) {
    @media (hover: hover) and (pointer: fine) {
      product-custom-property-component textarea {
        resize: vertical; /* stylelint-disable-line */
      }
    }
  }

  product-custom-property-component .__character-label {
    position: absolute;
    left: var(--input-padding-x);
    bottom: var(--padding-sm);
    pointer-events: none;
  }

  product-custom-property-component .__character-count {
    font-style: italic;
    /* stylelint-disable-next-line declaration-no-important */
    color: var(--color-input-text) !important;
  }

  /* We should consolidate input styles that share the same behavior */
  .custom-property__input {
    border: var(--style-border-width-inputs) solid var(--color-input-border);
    border-radius: var(--style-border-radius-inputs);

    /* this is needed to override the styles from field__input */
    box-shadow: none;

    &:is(:hover, :focus) {
      /* this is needed to override the styles from field__input */
      box-shadow: none;
    }

    &:focus {
      /* this is needed to override the styles from field__input */
      outline: var(--focus-outline-width) solid var(--color-input-background);
    }
  }
/* END_BLOCK:product-custom-property */

/* START_BLOCK:product-inventory (INDEX:149) */
.product-inventory__status {
    display: flex;
    align-items: center;
    font-size: var(--font-paragraph--size);
    line-height: var(--font-paragraph--line-height);
    gap: var(--padding-xs);
  }

  .product-inventory__icon,
  .product-inventory__icon svg {
    width: var(--icon-size-sm);
    height: var(--icon-size-sm);
  }

  .product-inventory__icon-low {
    color: var(--color-lowstock);
  }

  .product-inventory__icon-in_stock {
    color: var(--color-instock);
  }

  .product-inventory__icon-out_of_stock {
    color: var(--color-outofstock);
  }

  .product-inventory__icon circle:first-of-type {
    opacity: 0.3;
  }
/* END_BLOCK:product-inventory */

/* START_BLOCK:product-recommendations (INDEX:150) */
.block-resource-list {
    display: flex;
    flex-direction: column;
    row-gap: var(--gap);
    min-width: 0;
    min-height: 0;
    container-type: inline-size;
    container-name: resource-list;
    border-radius: var(--border-radius, 0);
  }

  .product-recommendations-wrapper {
    width: 100%;
  }

  .product-recommendations-wrapper:has(product-recommendations[data-shopify-editor-preview]) {
    width: 100vw;
  }
/* END_BLOCK:product-recommendations */

/* START_BLOCK:review (INDEX:153) */
.rating-wrapper {
    gap: var(--gap-xs);
    min-width: fit-content;
  }

  .rating-color--primary {
    --star-fill-color: var(--color-primary);
    --star-fill-color-rgb: var(--color-primary-rgb);
    --color: var(--color-primary);
  }

  .rating-color--foreground {
    --star-fill-color: var(--color-foreground);
    --star-fill-color-rgb: var(--color-foreground-rgb);
    --color: var(--color-foreground);
  }

  .rating-wrapper,
  .rating {
    display: flex;
    align-items: center;
  }

  .rating-wrapper.justify-right {
    flex-direction: row-reverse;
  }

  .rating {
    gap: var(--gap-3xs);
  }

  .rating-wrapper .rating-count,
  .rating-wrapper .rating-count-separator {
    color: var(--star-fill-color);
    margin: 0;
    white-space: nowrap;
  }

  .rating-count-separator {
    opacity: var(--opacity-20);
    padding-left: calc(var(--padding-xs) / 2);
    padding-right: var(--padding-xs);
  }

  .stars {
    height: var(--star-size);
    fill: var(--empty-star-fill-color);
  }

  .filled-star {
    fill: var(--star-fill-color);
  }
/* END_BLOCK:review */

/* START_BLOCK:social-links (INDEX:155) */
.social-icons__wrapper {
    display: flex;
    gap: var(--gap-sm);
    flex-wrap: wrap;
    justify-content: center;

    @media screen and (min-width: 750px) {
      flex-wrap: nowrap;
      justify-content: flex-start;
    }
  }

  .social-icons__icon-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
    height: var(--icon-size-lg);
  }

  .social-icons__icon {
    display: flex;
    flex-shrink: 0;
    width: var(--icon-size-lg);
    height: var(--icon-size-lg);
  }

  .social-icons__icon {
    display: none;
  }

  .social-icons__icon-wrapper:has(.social-icons__icon path) {
    width: var(--icon-size-lg);

    .social-icons__icon {
      display: block;
    }

    .social-icons__icon-label {
      display: none;
    }
  }

  /* Disabled state for editor */
  .shopify-design-mode .social-icons__icon-wrapper--disabled {
    opacity: var(--disabled-opacity, 0.5);
    cursor: not-allowed;
  }

  .shopify-design-mode .social-icons__icon-wrapper--disabled a {
    pointer-events: none;
  }
/* END_BLOCK:social-links */

/* START_BLOCK:spacer (INDEX:156) */
/* Fill opposite direction */
  .layout-panel-flex--column > .spacer-block {
    width: 100%;
  }

  .layout-panel-flex--row > .spacer-block {
    height: 100%;
  }

  /* Flex - Percent */
  :is(.layout-panel-flex--row, .layout-panel-flex--column) > .spacer-block--size-percent {
    flex: var(--spacer-size);
  }

  /* Flex - Pixel */
  .layout-panel-flex--row > .spacer-block--size-pixel {
    width: var(--spacer-size);
  }

  .layout-panel-flex--column > .spacer-block--size-pixel {
    height: var(--spacer-size);
  }

  /* Mobile */
  @media screen and (max-width: 749px) {
    /* Percent */
    .layout-panel-flex--row:not(.mobile-column) > .spacer-block--size-mobile-percent {
      flex: var(--spacer-size-mobile);
      height: 100%;
    }

    .layout-panel-flex--column > .spacer-block--size-mobile-percent,
    .mobile-column > .spacer-block--size-percent:not(.spacer-block--size-mobile-pixel) {
      width: 100%;
      flex: var(--spacer-size-mobile);
    }

    /* Pixel */
    .layout-panel-flex--row:not(.mobile-column) > .spacer-block--size-mobile-pixel {
      width: var(--spacer-size-mobile);
      height: 100%;
    }

    .layout-panel-flex--column > .spacer-block--size-mobile-pixel,
    .mobile-column > .spacer-block--size-mobile-pixel {
      width: 100%;
      flex: 0;
      height: var(--spacer-size-mobile);
    }
  }
/* END_BLOCK:spacer */

/* START_BLOCK:swatches (INDEX:157) */
product-swatches {
    width: 100%;
    display: flex;
    position: relative;
    overflow: hidden;
    gap: 0;
    flex-shrink: 0;
  }
/* END_BLOCK:swatches */

/* START_BLOCK:video (INDEX:160) */
.placeholder-video {
    aspect-ratio: 5 / 3;
  }
/* END_BLOCK:video */

/* CSS from snippet stylesheet tags */
/* START_SNIPPET:accordion-custom-component (INDEX:161) */
accordion-custom {
    details {
      &::details-content,
      .details-content {
        block-size: 0;
        overflow-y: clip;
        opacity: 0;
        interpolate-size: allow-keywords;
        transition: content-visibility var(--animation-speed-slow) allow-discrete,
          padding-block var(--animation-speed-slow) var(--animation-easing),
          opacity var(--animation-speed-slow) var(--animation-easing),
          block-size var(--animation-speed-slow) var(--animation-easing);
      }

      /* Disable transitions when the content toggle is not caused by the direct user interaction, e.g. opening the filters on mobile. */
      &:not(:focus-within)::details-content,
      &:not(:focus-within) .details-content {
        transition: none;
      }

      &:not([open]) {
        &::details-content,
        .details-content {
          padding-block: 0;
        }
      }

      &[open] {
        &::details-content,
        .details-content {
          opacity: 1;
          block-size: auto;

          @starting-style {
            block-size: 0;
            opacity: 0;
            overflow-y: clip;
          }

          &:focus-within {
            overflow-y: visible;
          }
        }
      }
    }
  }

  accordion-custom[data-disable-on-mobile='true'] summary {
    @media screen and (max-width: 749px) {
      cursor: auto;
    }
  }

  accordion-custom[data-disable-on-desktop='true'] summary {
    @media screen and (min-width: 750px) {
      cursor: auto;
    }
  }
/* END_SNIPPET:accordion-custom-component */

/* START_SNIPPET:add-to-cart-button (INDEX:162) */
.bokja-free-shipping { margin: 10px 0 0; font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: #585856; display: flex; align-items: center; gap: 8px; }
  .bokja-free-shipping__tick { color: #1a1a1a; font-size: 13px; line-height: 1; }
  .bokja-free-shipping--mto { color: #8a5a00; margin-top: 6px; }
/* END_SNIPPET:add-to-cart-button */

/* START_SNIPPET:background-media (INDEX:163) */
@media (prefers-reduced-motion: reduce) {
    video-background-component video {
      display: none;
    }
  }
/* END_SNIPPET:background-media */

/* START_SNIPPET:bento-grid (INDEX:164) */
.bento-box {
    display: grid;
    column-gap: var(--bento-gap);
    row-gap: calc(var(--bento-gap) * 1.5);
    width: 100%;
  }

  .bento-box:has(.collection-card--image-bg) {
    row-gap: var(--bento-gap);
  }

  .bento-box ~ .bento-box {
    padding-block-start: var(--bento-gap);
  }

  @media screen and (max-width: 900px) {
    .bento-box {
      grid-template-columns: repeat(2, 1fr);
    }

    .bento-box__item {
      /* Prevent grid items from overflowing their cells when children have aspect-ratio */
      min-width: 0;
      overflow: hidden;
    }

    .bento-box__item:nth-child(3n + 1) {
      grid-column: span 1;
    }

    .bento-box__item:nth-child(3n + 2) {
      grid-column: span 1;
    }

    .bento-box__item:nth-child(3n + 3) {
      grid-column: span 2;
    }

    /* Ensure last items create a full row */
    .bento-box__item:last-child:nth-child(3n + 5) {
      grid-column: span 1;
    }

    .bento-box__item:last-child:nth-child(3n + 4) {
      grid-column: span 2;
    }
  }

  @media screen and (min-width: 901px) {
    .bento-box {
      grid-template-columns: repeat(12, 1fr);
      grid-template-areas:
        'A A A B B B B B B C C C'
        'D D D D D D E E E F F F'
        'G G G H H H I I I I I I'
        'J J J J K K K K L L L L';
    }

    .bento-box__item:nth-child(1) {
      grid-area: A;
    }

    .bento-box__item:nth-child(2) {
      grid-area: B;
    }

    .bento-box__item:nth-child(3) {
      grid-area: C;
    }

    .bento-box__item:nth-child(4) {
      grid-area: D;
    }

    .bento-box__item:nth-child(5) {
      grid-area: E;
    }

    .bento-box__item:nth-child(6) {
      grid-area: F;
    }

    .bento-box__item:nth-child(7) {
      grid-area: G;
    }

    .bento-box__item:nth-child(8) {
      grid-area: H;
    }

    .bento-box__item:nth-child(9) {
      grid-area: I;
    }

    .bento-box__item:nth-child(10) {
      grid-area: J;
    }

    .bento-box__item:nth-child(11) {
      grid-area: K;
    }

    .bento-box__item:nth-child(12) {
      grid-area: L;
    }

    /* === Overrides for specific item counts === */

    /* Exactly 1 item */
    .bento-box--items-1 {
      grid-template-areas: 'A A A A A A A A A A A A';
    }

    /* Exactly 2 items */
    .bento-box--items-2 {
      grid-template-areas: 'A A A A A A B B B B B B';
    }

    /* Exactly 4 items */
    .bento-box--items-4 {
      grid-template-areas:
        'A A A A B B B B B B B B'
        'C C C C C C C C D D D D';
    }

    /* Exactly 5 items */
    .bento-box--items-5 {
      grid-template-areas:
        'A A A B B B B B B C C C'
        'D D D D D D E E E E E E';
    }

    /* Exactly 7 items */
    .bento-box--items-7 {
      grid-template-areas:
        'A A A B B B B B B C C C'
        'D D D D D D D D D E E E'
        'F F F F F F G G G G G G';
    }

    /* Exactly 8 items */
    .bento-box--items-8 {
      grid-template-areas:
        'A A A B B B B B B C C C'
        'D D D D D D E E E F F F'
        'G G G H H H H H H H H H';
    }

    /* Exactly 10 items */
    .bento-box--items-10 {
      grid-template-areas:
        'A A A B B B B B B C C C'
        'D D D D D D E E E F F F'
        'G G G G G G G G G H H H'
        'I I I J J J J J J J J J';
    }

    /* Exactly 11 items */
    .bento-box--items-11 {
      grid-template-areas:
        'A A A B B B B B B C C C'
        'D D D D D D E E E F F F'
        'G G G H H H I I I I I I'
        'J J J J K K K K K K K K';
    }
  }
/* END_SNIPPET:bento-grid */

/* START_SNIPPET:blog-comment-form (INDEX:165) */
.blog-post-comments__form-container {
    --comment-form-gap: var(--gap-md);

    width: 100%;
    max-width: var(--normal-content-width);
    margin: var(--margin-4xl) auto 0;
  }

  .blog-post-comments__form {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--comment-form-gap);

    @media screen and (min-width: 750px) {
      grid-template-columns: 1fr 1fr;
    }
  }

  .blog-post-comments__form-input {
    padding: var(--padding-lg) var(--padding-xl);
    border: var(--style-border-width-inputs) solid var(--color-input-border);
  }

  .blog-post-comments__form-input--textarea {
    resize: vertical;
    min-height: var(--input-textarea-min-height);
  }

  .blog-post-comments__form-message {
    display: flex;
    align-items: center;
    gap: var(--gap-xs);
  }

  .blog-post-comments__form-body {
    grid-column: 1 / -1;
  }

  .blog-post-comments__form-input:focus-visible {
    outline: var(--focus-outline-width) solid currentcolor;
    outline-offset: var(--focus-outline-offset);
  }

  .blog-post-comments__form-moderated {
    font-size: var(--font-size--xs);
  }

  .blog-post-comments__form-submit {
    margin-block-start: var(--comment-form-gap);
  }
/* END_SNIPPET:blog-comment-form */

/* START_SNIPPET:bokja-account-drawer (INDEX:166) */
.account-drawer { display: contents; }

  /* Side panel pinned to the inline-end, sharp corners — mirrors size-fit/fabric drawers. */
  .account-drawer__dialog {
    position: fixed;
    overflow: hidden;
    border-radius: 0;
    inline-size: 100%;
    block-size: 100%;
    margin-block: 0;
    margin-inline-start: auto;
    margin-inline-end: 0;
    padding: 0;
    border-inline-start: var(--style-border-drawer);
    box-shadow: var(--shadow-drawer);
    background-color: var(--color-background);
  }

  @media screen and (min-width: 750px) {
    .account-drawer__dialog {
      inline-size: var(--sidebar-width);
      max-inline-size: 95vw;
    }
    [dir='rtl'] .account-drawer__dialog.dialog-drawer[open] { --start-x: -100%; }
    [dir='rtl'] .account-drawer__dialog.dialog-drawer[open].dialog-closing { --start-x: 0px; --end-x: -100%; }
  }

  .account-drawer__dialog:modal { max-block-size: 100dvh; overflow-y: hidden; }

  .account-drawer__inner {
    block-size: 100%;
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  .account-drawer__header {
    position: sticky;
    inset-block-start: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: var(--padding-xl);
    background-color: var(--color-background);
    border-block-end: 0.5px solid color-mix(in srgb, var(--color-foreground) 16%, transparent);
  }
  @media screen and (min-width: 750px) {
    .account-drawer__header { padding-inline: var(--padding-2xl); }
  }

  .account-drawer__heading { margin: 0; }

  /* THE PANEL TITLE IS A MICRO-LABEL, NOT A HEADLINE (James, 2026-08-13, fourth pass on the
     preview: "Account is too bold, it should be the same as HOMEWARE or the other menu items").
     Measured in the preview DOM it was 19px / 700 / letter-spacing normal / no transform, i.e.
     louder than every top-nav item in the header that opens it.

     THE TARGET IS `.bokja-mega__top` (snippets/bokja-megamenu.liquid) — HOMEWARE / READY TO WEAR
     / THE COLLECTIVE. Its tokens are reused here rather than retyped as literals, so the two stay
     bound if the nav moves: `var(--bt-nav)` for the size and `var(--color-foreground, #1a1a1a)`
     for the colour, the same fallback the nav writes. The nav's other three values are RAW in its
     own rule — there is no token for them to share — so they are matched by value: weight 500,
     `0.12em` tracking (RELATIVE, not the 1.56px it computes to, so it tracks any change to
     --bt-nav), uppercase. font-family is stated explicitly because the nav item sets none and
     inherits `--font-body--family` (inter_n4); an <h2> that stated none would take
     `--font-h2--family` (inter_n7) from base.css instead and render a different face at the same
     nominal weight. An uppercase micro-heading is already this theme's idiom for a panel:
     `.bokja-locale-sheet__heading` ("LANGUAGE") in sections/bokja-header.liquid.

     `h4` CAME OFF THE MARKUP RATHER THAN BEING OVERRIDDEN HERE, and the reason is the cascade,
     not tidiness. base.css sets the 700 weight through `.h4.h4` — specificity (0,2,0), which is
     EXACTLY the specificity of this selector, so the two only resolve by source order (this
     snippet's <style> happening to come after base.css in the document). That is the fight the
     old `font-size: var(--bt-h2)` line was silently winning, and it is not a thing to build a
     second, louder change on. With the class gone the only competing rule is base.css's bare `h2`
     element selector at (0,0,1), which this beats on SPECIFICITY alone, in any source order.
     Removing the class costs nothing else: every property `.h4.h4` was contributing (family,
     style, weight, size, line-height, tracking, transform, colour) is either re-stated below or
     supplied by that `h2` rule, and the margin is already zeroed by `.account-drawer__heading`
     above, so the `:first-child:is(.h1 ... .h6)` margin rule in base.css was never load-bearing.
     The alternative — keeping `h4` and out-specifying it — is what `.cart-drawer__heading` does in
     assets/bokja-custom.css, and it needs `!important` on all six properties to do it.

     SCOPE, STATED SO IT IS NOT MISTAKEN FOR A LEAK: this heading sits ABOVE the
     `if customer` branch (written without its Liquid delimiters ON PURPOSE — a <style> block is
     still Liquid source, so a tag pasted into a CSS comment opens a branch the parser then never
     sees closed; theme validation caught exactly that here), so it renders for BOTH states, and BOTH
     titles change. That is intended — it is the same panel title in both states, and it was
     wrong in both. It is also the ONLY signed-in change: nothing else in this pass touches
     markup or rules the signed-in branch reaches. The cart drawer is deliberately NOT touched. */
  .account-drawer__header .account-drawer__heading {
    font-family: var(--font-body--family);
    font-size: var(--bt-nav);
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-foreground, #1a1a1a);
    line-height: 1.25;
  }

  .account-drawer__close { flex: 0 0 auto; }

  .account-drawer__body { padding: var(--padding-xl); }
  @media screen and (min-width: 750px) {
    .account-drawer__body { padding-inline: var(--padding-2xl); }
  }

  /* SIGNED IN: the greeting, set like a PDP title. Untouched. */
  .account-drawer__welcome {
    margin-block: 6px 0;
    font-size: var(--bt-h2);
    line-height: 1.3;
    letter-spacing: 0.01em;
    color: var(--color-foreground);
  }

  /* SIGNED OUT ONLY: the welcome line is an EYEBROW, not a second title (James, 2026-08-13,
     third pass on the preview). Measured in the preview DOM it was 19px/400 stacked directly
     under the 19px/700 "Account" heading — two lines at identical size competing for the top
     of the panel. Nothing here is invented: these are the tokens of `.bokja-nav__since` in
     sections/bokja-header.liquid (the "SINCE 2000" micro-label beside the wordmark) — 11px
     var(--bt-micro), 0.22em, uppercase, weight 400, foreground at 0.5 — so the drawer's
     eyebrow is literally the micro-label of the header that opens it. Scoped with a modifier
     applied ONLY inside the signed-out branch, exactly as --secondary was, so the SIGNED-IN
     greeting keeps the 19px treatment and its markup stays byte-identical. */
  .account-drawer__welcome--eyebrow {
    font-size: var(--bt-micro);
    font-weight: 400;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.5;
  }

  /* `.account-drawer__note` was deleted with the two note lines (James, 2026-08-13, second
     pass on the preview: "we don't need a six-digit code, no password", "or 10% of your first
     offer"). Nothing else in this drawer used the class — the signed-in branch has never had a
     note — so the rule went with the markup rather than sitting here unreferenced. */

  /* THE TWO PRIMARY ROWS (James, 2026-08-13, Arket menu reference). Arket's STRUCTURE —
     stacked full-width options, each with a trailing arrow — in this drawer's own idiom:
     hairline rules, no boxes, no fills. Label and arrow only: the explanatory line under each
     row was cut on review the same day. They read primary against the Wishlist / Customer
     service / Contact rows below on size (17px vs 13px), padding and a slightly stronger
     rule. 15px vs 13px was the first attempt and it did not work: two points of separation
     with no weight difference flattened the whole panel into one undifferentiated list
     (James, 2026-08-13, third pass). */
  .account-drawer__primary {
    margin-block-start: 20px;
    border-block-start: 0.5px solid color-mix(in srgb, var(--color-foreground) 16%, transparent);
  }

  .account-drawer__primary-item {
    padding-block-end: 14px;
    border-block-end: 0.5px solid color-mix(in srgb, var(--color-foreground) 16%, transparent);
  }
  .account-drawer__primary-item[hidden] { display: none; }

  .account-drawer__primary-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    inline-size: 100%;
    padding-block: 16px 0;
    font-family: var(--font-body--family);
    /* HARD-CODED, and deliberately: the --bt-* scale steps 15px (--bt-h3) straight to 19px
       (--bt-h2), and --bt-h2 is the drawer heading's own size, so a token would either leave
       the rows at the 15px that failed review or tie them with "Account". 17px is the only
       value between them; no token fits. */
    font-size: 17px;
    line-height: 1.3;
    letter-spacing: 0.01em;
    color: var(--color-foreground);
    text-decoration: none;
    text-align: start;
    cursor: pointer;
  }
  .account-drawer__primary-row:hover { opacity: 0.6; }

  /* THE COMPONENT AROUND ROW 1 MUST BE INVISIBLE AS A BOX. James owns the visual design and this
     pass changes BEHAVIOUR ONLY, so `shopify-account` contributes no layout of its own: the host
     is a plain block, and the component's own trigger — exposed as the documented CSS part
     `signed-out-avatar` (https://shopify.dev/docs/api/storefront-web-components/components/shopify-account)
     — is flattened to a full-width, unpadded, unbordered box so the slotted <a> keeps the exact
     17px-label-and-arrow row it had as a bare link. Horizon's own instance in
     snippets/header-actions.liquid needs the opposite (a 44px round avatar), which is why its
     `&:not(:defined)` sizing is NOT copied down here; that snippet renders a header this theme
     does not use, so its stylesheet never bundles and none of it is inherited. */
  .account-drawer__account {
    display: block;
    inline-size: 100%;
  }

  .account-drawer__account::part(signed-out-avatar) {
    display: block;
    inline-size: 100%;
    min-inline-size: 0;
    block-size: auto;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: none;
    color: inherit;
    text-align: start;
  }

  /* The sheet's own tokens, mapped to the drawer's palette and type. These are the SAME variable
     names Horizon feeds the component in snippets/header-actions.liquid — copied because that
     snippet never renders on this storefront, so nothing would otherwise set them and the sheet
     would open in Shopify's defaults beside a Bokja panel. Values resolve against the drawer's
     own colour scheme, the `color-` class the dialog above carries (written without its Liquid
     delimiters ON PURPOSE, the same trap the heading rule below records: a stylesheet block is
     still Liquid source, and theme validation rejects an output tag inside a CSS comment).

     THE SHEET WEARS THIS DRAWER'S PANEL GEOMETRY, AND IT TAKES AN UNDOCUMENTED CSS PART TO DO IT
     (James, 2026-08-14, having asked twice: the sheet "opens as a pop-up over the top" and should
     be inside the panel). The two rules that deliver it are at the end of this block. First, the
     documented surface and why it is not enough — measured in the preview's shadow root, Shopify's
     own rule for the sheet on desktop is:

       @media (min-width: 751px) { .dialog {
         inset-block-start: var(--shopify-account-dialog-position-top);
         inset-inline-end:  var(--app-page-spacing);
         border-radius:     var(--shopify-account-radius-dialog);
         width: var(--app-width); max-width: 360px; } }

     Only two of those four values are ours. `--app-page-spacing` (20px) and `--app-width` (360px)
     are declared INSIDE the component's shadow root on `#shopify-element-wrapper`, so a value set
     out here is shadowed by the component's own declaration and never reaches the rule — proved in
     the render: setting `--app-width: 25rem` on this host left the sheet at 360px. And `max-width:
     360px` is a literal in Shopify's stylesheet, so the drawer's 25rem is unreachable even if that
     variable were ours. There is no documented variable for the sheet's height, its horizontal
     position or its backdrop at all. The documented list is closed and it is here:
       https://shopify.dev/docs/api/storefront-web-components/components/shopify-account
     and one CSS part — `signed-out-avatar` — which is the trigger, not the sheet.

     THE COMPONENT CARRIES A SECOND PART, `part="dialog"`, and it does exactly what James asked for:
     `::part(dialog)` with the sidebar width, 100dvh and inset-inline-end 0 renders the sheet as a
     full-height right-hand panel on the drawer's own geometry (measured 400x749 at x=1112, against
     360x332 at x=1132 without it). It is NOT in the reference above, and Shopify states it
     "controls this component and can update it independently of your theme"
     (https://shopify.dev/docs/storefronts/themes/customer-engagement/account-component).

     IT IS SHIPPED ANYWAY, ON JAMES'S DECISION (2026-08-14, the second time he asked for it), and
     the reason it is his call to make rather than a build detail to refuse is the SHAPE OF THE
     FAILURE. This is a CSS part selector and nothing else. If Shopify renames or removes the part,
     the selector simply stops matching: the declarations are dropped, the sheet falls back to
     Shopify's own 360px pop-up, and SIGN-IN STILL WORKS — the same flow, the same fields, the same
     result, in a smaller box. There is no state to desynchronise and nothing to throw. That is why
     the earlier "recorded, not shipped" position was the wrong trade: it spent a real, repeated
     product request to avoid a cosmetic regression.
     THE LIMIT OF THE DECISION, so it is not read as a general licence: GEOMETRY AND BACKGROUND
     ONLY, through the part. Position, size, radius, background — nothing that assumes an internal
     element, a class name or a DOM shape, and no JavaScript touching the shadow root at all. That
     ban is unchanged and still has its own tripwire in the push script.

     Closing the drawer as the sheet opens is not the way round it either: the sheet's <dialog>
     lives in a shadow root INSIDE this drawer's <dialog>, so it is torn down with its ancestor —
     closing the drawer while the sheet was open measured the sheet at 0x0. The `open` event fires
     too late to reorder that, which is the note already recorded on the row above.

     So: pin the two geometry values that ARE ours, and correct the two colours that derive wrong.
     `--shopify-account-dialog-position-top` was previously left unset, which makes the whole
     declaration invalid at computed-value time and drops `inset-block-start` to its initial
     `auto`; the 0 it happened to resolve to was incidental, and 0 is what lines the sheet's top
     edge up with the drawer's. `--shopify-account-radius-dialog` derives as radius-base * 1.75 and
     is only square today because `--style-border-radius-popover` is 0 — stated outright so the
     sheet cannot round if that setting ever changes. The two text tokens derive to `#000000`
     rather than to this theme's foreground, measured in the render; every other derived token
     (border, subdued text, card and control backgrounds, shadow, accent) already resolves from the
     background and text tokens fed below and is left alone. */
  .account-drawer__account {
    --shopify-account-font-heading: var(--font-heading--family);
    --shopify-account-font-body: var(--font-body--family);
    --shopify-account-font-body-weight: var(--font-body--weight);
    --shopify-account-radius-base: var(--style-border-radius-popover);
    --shopify-account-radius-button: var(--style-border-radius-buttons-primary);
    --shopify-account-radius-button-small: var(--style-border-radius-buttons-primary);
    --shopify-account-radius-input: var(--style-border-radius-buttons-primary);
    --shopify-account-color-background: var(--color-background);
    --shopify-account-color-text: var(--color-foreground);
    --shopify-account-color-accent: var(--color-primary-button-background);
    --shopify-account-color-accent-text: var(--color-primary-button-text);
    --shopify-account-dialog-position-top: 0px;
    --shopify-account-radius-dialog: 0;
    --shopify-account-color-card-text: var(--color-foreground);
    --shopify-account-color-control-text: var(--color-foreground);

    /* THE REGISTER PASS (James's word, 2026-08-14, on category (a) of
       docs/SIGNIN-FLOW-AUDIT-2026-08-14.md in the hub). Three of that audit's misses were put
       to the documented surface — the sheet's own H2, the 16px content inset, and the filled
       grey chip behind the close X where this drawer has a bare one.

       THE ANSWER WAS TAKEN FROM THE COMPONENT, NOT FROM THE REFERENCE PAGE. All 29 documented
       `--shopify-account-*` variables were set in turn on a live preview render of this sheet,
       and all 44 elements inside it — nested shadow roots included — were diffed before and
       after each one. That method is the deliverable as much as the result, because the
       reference lists what a variable is FOR and never says which pixel it reaches.

       THE TRAP IT CAUGHT, and it is the reason colours here are compared as RENDERED PIXELS
       rather than as computed strings: setting ANY of four colour variables re-serialises the
       close button's background from `color(srgb 0.858627 0.858627 0.851961 / 0.4)` to
       `oklab(0.890789 -0.000610173 0.00222224 / 0.4)`. Those are the SAME COLOUR — both paint
       241,241,240 over white — so a string diff reports four working levers where there is at
       most one. The first pass read exactly that and was wrong. Every colour verdict below was
       re-taken by painting the value into a 1x1 canvas and reading the bytes back.

       WHAT IS REACHABLE, and it corrects the audit on one row.
         - HEADING WEIGHT and CASE are reachable, and only those two. `-font-heading-weight`
           moves the H2 off 700; `-font-heading-transform` — which this block never set, so the
           sheet was rendering `none` — moves it to uppercase. 500 and uppercase are the
           drawer's own panel-title values, matched by value the same way that rule matches the
           megamenu's. The diff for both is ONE element out of 44: the H2 itself.
         - THE CLOSE BUTTON'S FILL is reachable after all, through
           `-color-background-subdued`, and the audit's "no entry for any of them" is wrong on
           this row. `transparent` removes the chip and changes ONE element out of 44 — the
           button's own background. Its ink stays `--color-foreground`, so the X is a bare
           14px-idiom mark on the drawer's paper, which is what this panel does.

       WHAT IS NOT, stated so it is not re-attempted:
         - HEADING SIZE (18px against this drawer's 13px) and TRACKING (`normal` against
           0.12em). No documented variable touches either; the sweep moved neither, and there
           is no `-font-heading-size` or `-font-heading-spacing` in the list of 29.
         - THE CONTENT INSET. The sheet's own padding is `32px 16px 16px` with a 16px header
           band, against this drawer's 24px body inset, and NOT ONE of the 29 moved it. The
           value comes from `--app-page-spacing`, which is declared INSIDE the component's
           shadow root — set on this host it has no effect, measured, exactly as the
           `--app-width` finding above records for the sheet's width.
       Both gaps stay open on purpose. Shadow-root JS is still banned and no part selector
       reaches inside the sheet, so the honest outcome is a recorded limit, not a hack. */
    --shopify-account-font-heading-weight: 500;
    --shopify-account-font-heading-transform: uppercase;
    --shopify-account-color-background-subdued: transparent;
  }

  /* THE PANEL. James's decision, 2026-08-14, argued in full at the top of this block: the sheet
     takes this drawer's geometry through the undocumented `::part(dialog)`, and it is shipped
     because the failure is graceful — if the part name ever changes the selector stops matching,
     the sheet reverts to Shopify's 360px pop-up, and sign-in is untouched.

     GEOMETRY AND BACKGROUND ONLY. Every declaration here is position, size, radius or background;
     none of them names an element, a class or a structure inside the component.

     `max-inline-size` IS LOAD-BEARING, not belt-and-braces. Shopify's own rule for the sheet is
     `width: var(--app-width); max-width: 360px`, both of them in the shadow stylesheet, and
     `--app-width` is declared INSIDE the shadow root so a value set on the host never reaches it.
     Overriding `inline-size` alone would therefore still clamp at 360px; the cap has to be lifted
     by the same rule that sets the width. 95vw is the drawer's own cap, matched.

     The values are the drawer's tokens, not literals — `--sidebar-width` (25rem) and
     `--color-background` both inherit through the shadow boundary from the host, which sits inside
     the drawer's `color-` scheme, so the sheet and the panel behind it cannot drift apart. Square
     corners are stated here as well as through `--shopify-account-radius-dialog` above, because the
     token feeds Shopify's rule and this overrides it; both have to say 0 or the sheet rounds.

     Phone: the bottom sheet, matching the drawer above and the collective panel — full width,
     70dvh, pinned to the bottom edge. The animation is left to the component. */
  .account-drawer__account::part(dialog) {
    inset-block: 0;
    inset-inline-start: auto;
    inset-inline-end: 0;
    inline-size: var(--sidebar-width);
    max-inline-size: 95vw;
    block-size: 100dvh;
    max-block-size: 100dvh;
    margin: 0;
    border-radius: 0;
    background: var(--color-background);
  }

  @media screen and (max-width: 749px) {
    .account-drawer__account::part(dialog) {
      inset-block-start: auto;
      inset-block-end: 0;
      inset-inline: 0;
      inline-size: 100%;
      max-inline-size: 100%;
      block-size: auto;
      max-block-size: 70dvh;
    }
  }

  .account-drawer__primary-arrow {
    display: inline-flex;
    flex: 0 0 auto;
    inline-size: 18px;
    block-size: 18px;
  }
  .account-drawer__primary-arrow svg { display: block; inline-size: 100%; block-size: 100%; }
  [dir='rtl'] .account-drawer__primary-arrow { transform: scaleX(-1); }

  .account-drawer__section { margin-block-start: 24px; }

  .account-drawer__subhead {
    margin: 0 0 6px;
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-foreground);
    opacity: 0.6;
  }

  .account-drawer__order {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding-block: 11px;
    text-decoration: none;
    color: var(--color-foreground);
    border-block-end: 0.5px solid color-mix(in srgb, var(--color-foreground) 12%, transparent);
  }
  .account-drawer__order:hover { opacity: 0.6; }

  .account-drawer__order-main { display: flex; flex-direction: column; gap: 2px; }
  .account-drawer__order-side { display: flex; flex-direction: column; gap: 2px; text-align: end; }

  .account-drawer__order-name { font-size: var(--bt-body); font-weight: 500; }
  .account-drawer__order-total { font-size: var(--bt-body); }
  .account-drawer__order-date,
  .account-drawer__order-status { font-size: var(--bt-micro); opacity: 0.6; }

  .account-drawer__empty {
    margin-block: 4px 0;
    font-size: var(--bt-body);
    opacity: 0.6;
  }

  .account-drawer__details { font-size: var(--bt-body); }
  .account-drawer__detail { margin-block: 0 2px; }
  .account-drawer__detail--muted { opacity: 0.6; }

  .account-drawer__more {
    display: inline-block;
    margin-block-start: 8px;
    font-size: var(--bt-micro);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.6;
    text-decoration: underline;
    text-underline-offset: 3px;
  }
  .account-drawer__more:hover { opacity: 0.9; }

  .account-drawer__address {
    font-style: normal;
    font-size: var(--bt-body);
    line-height: 1.6;
    color: rgba(26, 26, 26, 0.75);
    margin: 0 0 6px;
  }
  .account-drawer__phone-row {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-block-start: 10px;
  }
  .account-drawer__phone-row input[type='tel'] {
    flex: 1;
    min-width: 0;
    background: none;
    border: none;
    border-block-end: 1px solid rgba(26, 26, 26, 0.3);
    font-family: inherit;
    font-size: var(--bt-body);
    padding: 8px 0;
    outline: none;
    color: var(--color-foreground);
  }
  .account-drawer__phone-row input[type='tel']:focus {
    border-block-end-color: var(--color-foreground);
  }
  .account-drawer__wa {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: var(--bt-label);
    letter-spacing: 0.04em;
    cursor: pointer;
    white-space: nowrap;
  }
  .account-drawer__wa input {
    accent-color: #1a1a1a;
    width: 15px;
    height: 15px;
    margin: 0;
  }
  .account-drawer__wa-save {
    margin-block-start: 10px;
    background: none;
    border: 1px solid rgba(26, 26, 26, 0.5);
    padding: 5px 14px;
    font-family: inherit;
    font-size: var(--bt-label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    cursor: pointer;
    color: var(--color-foreground);
  }
  .account-drawer__wa-save:disabled { opacity: 0.5; cursor: default; }
  .account-drawer__wa-saved {
    margin: 6px 0 0;
    font-size: var(--bt-label);
    color: rgba(26, 26, 26, 0.6);
  }

  .account-drawer__rows {
    display: block;
    margin-block-start: 26px;
    border-block-start: 0.5px solid color-mix(in srgb, var(--color-foreground) 16%, transparent);
  }

  /* Signed out only: the primary block already closes on a rule, so the nav drops its own
     top border (two hairlines 22px apart read as a mistake) and keeps the gap as the break.
     Scoped with a modifier so the SIGNED-IN drawer renders byte-identical to before. */
  .account-drawer__rows--secondary {
    margin-block-start: 22px;
    border-block-start: 0;
  }

  .account-drawer__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    inline-size: 100%;
    padding-block: 14px;
    font-family: var(--font-body--family);
    font-size: var(--bt-body);
    letter-spacing: 0.02em;
    color: var(--color-foreground);
    text-decoration: none;
    border-block-end: 0.5px solid color-mix(in srgb, var(--color-foreground) 12%, transparent);
    text-align: start;
  }
  .account-drawer__row:hover { opacity: 0.6; }

  .account-drawer__row-count {
    font-size: var(--bt-micro);
    opacity: 0.6;
  }

  .account-drawer__logout {
    display: inline-block;
    margin-block-start: 22px;
    font-size: var(--bt-micro);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.55;
    text-decoration: none;
  }
  .account-drawer__logout:hover { opacity: 0.85; text-decoration: underline; }

  /* Phone: bottom sheet, mirrors the house drawers. */
  @media screen and (max-width: 749px) {
    .account-drawer__dialog {
      inset-block-start: auto;
      inset-block-end: 0;
      inset-inline: 0;
      inline-size: 100%;
      max-inline-size: 100%;
      block-size: auto;
      max-block-size: 70dvh;
      margin: 0;
      border-inline-start: none;
      border-block-start: var(--style-border-drawer);
    }
    .account-drawer__dialog:modal { max-block-size: 70dvh; }
    .account-drawer__inner { max-block-size: 70dvh; }
    .account-drawer__dialog.dialog-drawer[open] { --start-x: 0px; --end-x: 0px; --start-y: 100%; --end-y: 0px; }
    .account-drawer__dialog.dialog-drawer[open].dialog-closing { --start-x: 0px; --end-x: 0px; --start-y: 0px; --end-y: 100%; }
  }
/* END_SNIPPET:bokja-account-drawer */

/* START_SNIPPET:bokja-archive-gallery (INDEX:167) */
.bokja-archive {
    max-inline-size: var(--page-width, 1400px);
    margin-inline: auto;
    padding: clamp(40px, 6vw, 96px) clamp(16px, 4vw, 56px);
  }
  .bokja-archive__intro {
    text-align: center;
    margin-block-end: clamp(32px, 5vw, 72px);
  }
  .bokja-archive__title {
    margin: 0 0 12px;
    font-size: var(--bt-h1);
    font-weight: 400;
    letter-spacing: 0.02em;
    color: var(--color-foreground, #1a1a1a);
  }
  .bokja-archive__dek {
    max-inline-size: 56ch;
    margin-inline: auto;
    font-size: var(--bt-body);
    line-height: 1.65;
    opacity: 0.7;
    color: var(--color-foreground, #1a1a1a);
  }
  /* Natural-ratio masonry — the gallery feel, distinct from the uniform 4:5 shop grid. */
  .bokja-archive__gallery {
    column-count: 3;
    column-gap: clamp(16px, 2.4vw, 40px);
  }
  @media (max-width: 990px) { .bokja-archive__gallery { column-count: 2; } }
  @media (max-width: 600px) { .bokja-archive__gallery { column-count: 2; column-gap: 14px; } }
  .bokja-archive__piece {
    display: block;
    break-inside: avoid;
    margin-block-end: clamp(26px, 3.2vw, 56px);
    text-decoration: none;
    color: inherit;
  }
  .bokja-archive__img {
    display: block;
    inline-size: 100%;
    block-size: auto;
  }
  .bokja-archive__img--placeholder {
    aspect-ratio: 4 / 5;
    background: var(--color-border, rgba(26, 26, 26, 0.06));
  }
  .bokja-archive__name {
    display: block;
    margin-block-start: 12px;
    font-size: var(--bt-label);
    letter-spacing: 0.02em;
    opacity: 0.8;
    transition: opacity 140ms ease;
  }
  .bokja-archive__piece:hover .bokja-archive__name { opacity: 1; }
/* END_SNIPPET:bokja-archive-gallery */

/* START_SNIPPET:bokja-card-quick-add (INDEX:170) */
.bokja-card-quick-add {
    position: absolute;
    /* Keep the requested physical upper-right position; text still follows the locale. */
    right: 0;
    top: 0;
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
    inline-size: 44px;
    block-size: 44px;
    padding: 4px;
    border: 0;
    border-radius: 0;
    color: var(--color-foreground);
    background: transparent;
    cursor: pointer;
  }
  .bokja-card-quick-add > span {
    display: grid;
    place-items: center;
    inline-size: 20px;
    block-size: 20px;
    background: rgb(255 255 255 / 50%);
    border: 0;
  }
  /* Bottom-right corner (product cards): the 20px tile sits 6px in from the photo's right and bottom edges, so
     its centre lines up with the wishlist heart's column (each surface nudges `right` to match its heart). */
  .bokja-card-quick-add--bottom {
    top: auto;
    bottom: 0;
    align-items: flex-end;
    padding: 6px;
    z-index: 2;
  }
  .bokja-card-quick-add--bottom[data-bokja-qa-measure]:not([style*='top']) { visibility: hidden; }
  .bokja-card-quick-add:focus-visible { outline: 2px solid currentColor; outline-offset: -2px; }
  .bokja-card-quick-add:disabled { cursor: wait; opacity: 0.55; }
  .bokja-card-add-status { font-size: var(--bt-label); margin-block: 8px 0; }
  .bokja-card-add-status:empty { display: none; }
/* END_SNIPPET:bokja-card-quick-add */

/* START_SNIPPET:bokja-cart-drawer (INDEX:171) */
.cart-drawer {
    --cart-drawer-padding: var(--padding-xl) var(--padding-xl);
    --cart-drawer-padding-desktop: var(--padding-xl) var(--padding-2xl);
  }

  .cart-drawer__dialog {
    position: fixed;
    overflow: hidden;
    border-radius: 0;
    width: 100%;
    height: 100%;
    /* Logical so the side drawer mirrors in RTL (sits on the left in Arabic). */
    margin-block: 0;
    margin-inline-start: auto;
    margin-inline-end: 0;
    padding: 0;
    border-inline-start: var(--style-border-drawer);
    box-shadow: var(--shadow-drawer);
    background-color: var(--color-background);

    @media screen and (min-width: 750px) {
      width: var(--sidebar-width);
      max-width: 95vw;
    }
  }

  /* RTL desktop: the panel is on the left, so slide it in from the left edge. */
  @media screen and (min-width: 750px) {
    [dir='rtl'] .cart-drawer__dialog.dialog-drawer[open] {
      --start-x: -100%;
    }
    [dir='rtl'] .cart-drawer__dialog.dialog-drawer[open].dialog-closing {
      --start-x: 0px;
      --end-x: -100%;
    }
  }

  /* Keep the drawer full height while open. */
  .cart-drawer__dialog:modal {
    max-height: 100dvh;
    overflow-y: hidden;
  }

  .cart-drawer__inner {
    height: 100%;
    overflow: hidden;
  }

  .cart-drawer__content {
    /* Flex child of the component column (header / content / summary footer):
       min-height 0 lets it shrink so the summary below always fits; the old
       height calc(100% - header) ignored the footer and pushed it out. */
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 0;
    background-color: var(--color-background);
    flex-grow: 1;
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  .cart-drawer__header {
    background-color: var(--color-background);
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: var(--cart-drawer-padding);
    position: sticky;
    top: 0;
    z-index: 1;

    @media screen and (min-width: 750px) {
      padding-inline: var(--cart-drawer-padding-desktop);
    }
  }

  .cart-drawer__heading {
    display: flex;
    align-items: center;
    gap: var(--gap-xs);
    margin-bottom: 0;
  }

  .cart-drawer__close-button {
    margin-inline-end: calc(var(--padding-sm) * -1);
    top: var(--margin-sm);
  }

  .cart-drawer__items {
    display: flex;
    flex-direction: column;
    /* Clear the Cart/Wishlist tab bar above so the first product isn't stuck under it (James). */
    padding-block-start: 20px;
    padding-inline: var(--cart-drawer-padding);
    /* flex 0 0 auto + visible, NOT overflow-y auto (Malou, 2026-08-24: "the recently
       viewed items are overlapping the items in the cart"): inside the content flex
       column, overflow!=visible gave this box min-height 0, so when the drawer overfilled
       the ITEMS were the part that crushed - to a scrollbar-thin sliver under the recents
       strip, which has no overflow and refuses to shrink. Items now keep their natural
       height and .cart-drawer__content (already overflow-y auto) is the single scroll
       surface for items + recents together; the summary's own stickiness is untouched. */
    flex: 0 0 auto;
    overflow-y: visible;

    @media screen and (min-width: 750px) {
      padding-inline: var(--cart-drawer-padding-desktop);
    }
  }

  .cart-drawer__items .cart-items__table-row {
    padding-bottom: var(--gap-xl);
    border-bottom: var(--style-border-width) solid var(--color-border);
    margin-bottom: var(--gap-xl);
  }

  .cart-drawer__items .cart-items__table-row:last-child {
    border-bottom: none;
    padding-block-end: 0;
    margin-block-end: 0;
  }

  .cart-drawer__summary {
    --cart-drawer-summary-padding: var(--padding-lg);

    /* A true footer, not a sticky overlay (Malou, 2026-08-24): sticky-bottom
       inside the scroll surface painted the summary OVER the pair/recents
       strips at drawer open. As the last flex row of the component column it
       is always visible and never covers content; the top border is the
       scroll edge the content disappears under. */
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap-xl);
    padding: var(--cart-drawer-summary-padding);
    border-block-start: var(--style-border-width) solid var(--color-border);
    background-color: var(--color-background);

    @media screen and (min-width: 750px) {
      --cart-drawer-summary-padding: var(--padding-2xl);
    }
  }

  .cart-drawer__summary .cart__summary-totals:not(:has(.cart__subtotal-container:empty)) {
    border-block-start: var(--style-border-width) solid var(--color-border);
    padding-block-start: var(--padding-2xl);
  }

  .cart-drawer__heading--empty {
    display: flex;
    justify-content: center;
  }

  /* Horizon's stock empty-cart layout centres the whole drawer vertically (it was
     designed for a lone heading + button). Our Cart/Wishlist tabs live inside the
     same container, so the empty state must top-align like the non-empty state.
     The --empty class is server-rendered on the DIALOG element (not .cart-drawer);
     the :has() rule covers the client-side emptied case. */
  .cart-drawer--empty .cart-drawer__inner {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    height: 100dvh;
  }

  .cart-drawer--empty .cart-drawer__content {
    text-align: center;
    min-height: auto;
    justify-content: flex-start;
  }

  .cart-drawer:not(:has(.cart-form)) .cart-drawer__content {
    justify-content: flex-start;
  }

  /* Phone: bottom sheet. Slides up from the bottom edge, sized to its
     contents (capped), instead of the desktop side panel. */
  @media screen and (max-width: 749px) {
    .cart-drawer__dialog {
      inset-block-start: auto;
      inset-block-end: 0;
      inset-inline: 0;
      width: 100%;
      max-width: 100%;
      height: auto;
      max-height: 85dvh;
      margin: 0;
      border-inline-start: none;
      border-top: var(--style-border-drawer);
    }

    .cart-drawer__dialog:modal {
      max-height: 85dvh;
    }

    /* Sheet geometry (2026-08-24, replacing the inner-scrolls design): the sheet
       is a capped flex column - header / scrolling content / summary footer - so
       the summary never paints over the strips the way the sticky overlay did.
       The earlier nested-flex failure ("content grew past the capped inner and
       pushed the summary off the bottom") was a missing min-height:0 chain: the
       component and the content BOTH declare it now, so the content is the part
       that shrinks and scrolls while header and Checkout always fit. A short
       cart still gives a short sheet (inner is height:auto, only capped). */
    .cart-drawer__inner {
      display: flex;
      flex-direction: column;
      height: auto;
      max-height: 85dvh;
      overflow: hidden;
    }

    .cart-drawer__inner > .cart-items-component {
      height: auto;
      min-height: 0;
      flex: 1 1 auto;
    }

    .cart-drawer__items {
      height: auto;
      overflow: visible;
    }

    /* Drive the open/close animation along Y instead of X. */
    .cart-drawer__dialog.dialog-drawer[open] {
      --start-x: 0px;
      --end-x: 0px;
      --start-y: 100%;
      --end-y: 0px;
    }

    .cart-drawer__dialog.dialog-drawer[open].dialog-closing {
      --start-x: 0px;
      --end-x: 0px;
      --start-y: 0px;
      --end-y: 100%;
    }
  }
  /* Recently-viewed strip (injected by the script below from the localStorage store). Styled here
     because the bokja-recently-viewed section it is fetched from does not load its own CSS on this
     page. Clean image, no scrim (brand rule). */
  .bokja-recents {
    padding: var(--cart-drawer-padding);
    border-block-start: var(--style-border-width) solid var(--color-border);

    @media screen and (min-width: 750px) {
      padding-inline: var(--cart-drawer-padding-desktop);
    }
  }
  [data-bokja-recents][hidden] { display: none; }
  [data-bokja-cart-pair][hidden] { display: none; }
  [data-bokja-cart-complete][hidden] { display: none; }
  /* 2026-09-18 (James): the checkout button the same black as Apple Pay and Google Pay beside it */
  .cart-drawer__summary .cart__checkout-button { background: #000 !important; border-color: #000 !important; color: #fff !important; }
  /* 2026-09-18 (James): no "Taxes calculated at checkout" line: the checkout adds none, and the truthful
     duties wording follows Bokja's decision. */
  .cart-drawer__summary .cart-totals__tax-note { display: none; }
  /* 2026-09-18 (James): on phones the sticky summary took 251 of 564px and hid the strips behind it.
     Taller sheet, tighter summary; Checkout stays pinned and everything scrolls behind it. */
  @media screen and (max-width: 749px) {
    .cart-drawer__dialog, .cart-drawer__dialog:modal, .cart-drawer__inner { max-height: 100dvh; }
    /* 2026-09-18 (James): the scroll-hint fade masked the payment buttons under the pinned summary */
    .cart-drawer__content, .cart-drawer__items { -webkit-mask-image: none !important; mask-image: none !important; }
    .cart-drawer__summary { --cart-drawer-summary-padding: 12px; gap: 8px; padding-bottom: max(8px, env(safe-area-inset-bottom, 8px)); }
    .cart-drawer__summary .cart-totals:not(:has(.cart-totals__original-container:empty)) { padding-block-start: 10px; }
    .cart-drawer__summary .cart-totals { gap: 2px; }
    .cart-drawer__summary .cart-totals__total { font-size: var(--bt-card); }
    .cart-drawer__summary .cart__ctas { gap: 8px; }
    .cart-drawer__summary .cart__ctas .cart__checkout-button { height: 48px; }
  }
  /* 2026-09-18 (James): cart line thumbnails show the whole image at its own ratio, no crop */
  .cart-drawer__items .cart-items__media-container { aspect-ratio: auto; }
  .cart-drawer__items .cart-items__media-image { aspect-ratio: auto; object-fit: contain; height: auto; }
  .bokja-cart-complete__head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin: 0 0 12px; }
  .bokja-cart-complete__head .bokja-recents__heading { margin: 0; }
  .bokja-cart-complete__all { appearance: none; border: 1px solid var(--color-foreground); background: transparent; color: var(--color-foreground); border-radius: 0; font: inherit; font-size: var(--bt-label); letter-spacing: 0.12em; text-transform: uppercase; padding: 8px 14px; cursor: pointer; white-space: nowrap; flex: 0 0 auto; }
  .bokja-cart-complete__all:disabled { opacity: 0.5; cursor: default; }
  .bokja-recents__heading {
    margin: 0 0 12px;
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.6;
  }
  .bokja-recents__row {
    display: grid;
    /* 2026-09-18 (James): tiles the SAME width as the cart thumbnail column (cart-products.liquid
       uses clamp(2.5rem, 15cqi, 7.5rem)); .bokja-recents is the container for the cqi unit */
    grid-template-columns: repeat(auto-fill, minmax(max(clamp(2.5rem, 15cqi, 7.5rem), 4.5rem), 1fr));   /* fill the row; never narrower than a whole word (James, 2026-09-18) */
    gap: var(--bokja-gap);
    margin: 0;
    padding: 0;
    list-style: none;
  }
  .bokja-recents__cell { margin: 0; position: relative; }
  .bokja-recents__add {
    position: absolute;
    inset-block-start: 6px;
    inset-inline-end: 6px;
    inline-size: 24px;
    block-size: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0.5px solid color-mix(in srgb, var(--color-foreground) 30%, transparent);
    border-radius: 0;
    background: var(--color-background);
    color: var(--color-foreground);
    font-size: 15px;
    line-height: 1;
    cursor: pointer;
    opacity: 0.9;
    transition: background 150ms ease, color 150ms ease, opacity 150ms ease;
  }
  .bokja-recents__add:hover { background: var(--color-foreground); color: var(--color-background); opacity: 1; }
  .bokja-recents__add.is-adding { opacity: 0.4; pointer-events: none; }
  .bokja-recents__item {
    display: flex;
    flex-direction: column;
    gap: 5px;
    text-decoration: none;
    color: var(--color-foreground);
  }
  .bokja-recents { container-type: inline-size; }
  .bokja-recents__thumb {
    display: block;
    aspect-ratio: auto;
    overflow: hidden;
    background: var(--color-background);
  }
  .bokja-recents__img { width: 100%; height: auto; object-fit: contain; display: block; }
  .bokja-recents__name {
    font-size: min(var(--bt-card), 11px);   /* 2026-09-18 (James): smaller before clipping, never half a letter */
    line-height: 1.25;
    letter-spacing: 0.01em;
    overflow-wrap: normal;
    hyphens: manual;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .bokja-recents__price { font-family: var(--font-body--family); font-size: var(--bt-card); font-weight: 400; letter-spacing: 0.01em; color: var(--bokja-price-ink); }

  /* One price per line (James, 05-08): the stock cart row printed the unit price large
     under the title AND the line total at the right — the same number twice at qty 1.
     Keep only the right-hand line total, sized like a card price, quiet. */
  .cart-drawer__content .cart-items__unit-price-wrapper { display: none; }
  .cart-drawer__content .cart-items__price { font-size: var(--bt-card); font-weight: 400; }

  /* Cart | Wishlist tabs (Arket-style hub). Active = the site's underline tab (a thin currentColor
     border-block-end, same language as the category strip + the swatch chip). */
  .bokja-drawer-tabs {
    display: flex;
    gap: 26px;
    flex: 0 0 auto;
    padding-inline: var(--cart-drawer-padding);
    padding-block: 4px 0;
    border-block-end: var(--style-border-width) solid var(--color-border);

    @media screen and (min-width: 750px) {
      padding-inline: var(--cart-drawer-padding-desktop);
    }
  }
  .bokja-drawer-tab {
    appearance: none;
    border: 0;
    background: transparent;
    cursor: pointer;
    margin: 0 0 -1px;
    padding: 0 0 10px;
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    letter-spacing: 0.04em;
    color: var(--color-foreground);
    opacity: 0.45;
    border-block-end: 1px solid transparent;
    transition: opacity 150ms ease, border-color 150ms ease;
  }
  .bokja-drawer-tab.is-active { opacity: 1; border-block-end-color: var(--color-foreground); }
  .bokja-drawer-tab:focus-visible { outline: 2px solid var(--color-foreground); outline-offset: 2px; }

  /* Panel toggle: on the wishlist tab, hide the cart parts (items + recents + summary) and show the
     wishlist panel. The cart layout is untouched on the cart tab. */
  .bokja-wishlist-panel { display: none; flex: 1 1 auto; padding: var(--cart-drawer-padding); }
  @media screen and (min-width: 750px) {
    .bokja-wishlist-panel { padding-inline: var(--cart-drawer-padding-desktop); }
  }
  .cart-drawer__content.is-wishlist > .cart-drawer__items,
  .cart-drawer__content.is-wishlist > .bokja-cart-pair,
  .cart-drawer__content.is-wishlist > .bokja-recents,
  .cart-drawer__content.is-wishlist + .cart-drawer__summary { display: none; }
  .cart-drawer__content.is-wishlist > .bokja-wishlist-panel { display: block; }

  .bokja-wishlist-panel__empty {
    margin: 8px 0 0;
    font-size: var(--bt-micro);
    letter-spacing: 0.02em;
    color: var(--color-foreground);
    opacity: 0.55;
  }
  .bokja-wishlist-items { list-style: none; margin: 0; padding: 0; }
  .bokja-wishlist-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding-block: 14px;
    border-block-end: var(--style-border-width) solid var(--color-border);
  }
  .bokja-wishlist-item:last-child { border-block-end: 0; }
  .bokja-wishlist-item__main {
    display: flex;
    gap: 12px;
    flex: 1 1 auto;
    min-width: 0;
    text-decoration: none;
    color: var(--color-foreground);
  }
  .bokja-wishlist-item__thumb {
    flex: 0 0 auto;
    inline-size: 60px;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    background: var(--color-background);
  }
  .bokja-wishlist-item__img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .bokja-wishlist-item__text { display: flex; flex-direction: column; gap: 4px; min-width: 0; padding-block-start: 2px; }
  .bokja-wishlist-item__name { font-size: var(--bt-card); line-height: 1.25; }
  .bokja-wishlist-item__price { font-family: var(--font-body--family); font-size: var(--bt-card); font-weight: 400; letter-spacing: 0.01em; color: var(--bokja-price-ink); }
  .bokja-wishlist-item__remove {
    appearance: none;
    border: 0;
    background: transparent;
    cursor: pointer;
    color: var(--color-foreground);
    opacity: 0.45;
    padding: 2px;
    flex: 0 0 auto;
    line-height: 0;
    transition: opacity 150ms ease;
  }
  .bokja-wishlist-item__remove:hover { opacity: 1; }
  .bokja-wishlist-item__remove svg { width: 13px; height: 13px; display: block; }

  /* Item actions: a quiet "+" add-to-cart (Arket-style) next to the remove. */
  .bokja-wishlist-item__actions { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; padding-block-start: 2px; }
  .bokja-wishlist-item__add {
    appearance: none;
    cursor: pointer;
    inline-size: 28px;
    block-size: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0.5px solid color-mix(in srgb, var(--color-foreground) 35%, transparent);
    border-radius: 0;
    background: transparent;
    color: var(--color-foreground);
    font-size: 17px;
    line-height: 1;
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease, opacity 150ms ease;
  }
  .bokja-wishlist-item__add:hover {
    background: var(--color-foreground);
    color: var(--color-background);
    border-color: var(--color-foreground);
  }
  .bokja-wishlist-item__add.is-adding { opacity: 0.45; pointer-events: none; }

  /* Empty cart carries the Cart | Wishlist hub; top-alignment lives in the
     .cart-drawer--empty rules above (the old overrides here used
     .cart-drawer.cart-drawer--empty, which never matched — the --empty class is
     on the dialog, not .cart-drawer — so the stock centering won and the tabs
     sat mid-drawer). On the Wishlist tab the empty-cart block hides. */
  .bokja-drawer-empty-cart { padding: 44px var(--cart-drawer-padding) 24px; text-align: center; }
  @media screen and (min-width: 750px) {
    .bokja-drawer-empty-cart { padding-inline: var(--cart-drawer-padding-desktop); }
  }
  .cart-drawer__content.is-wishlist > [data-bokja-cart-part] { display: none; }
/* END_SNIPPET:bokja-cart-drawer */

/* START_SNIPPET:bokja-consent-scrim (INDEX:179) */
/* The layer is VISUAL ONLY (pointer-events: none): it never intercepts a click, so it can never
     block Shopify's banner whatever the stacking order (2026-09-18: v1 sat above the bar, which the theme keeps at z-index 90, and
     locked the site). Interaction is blocked instead by switching off pointer events on every
     direct child of <body> except Shopify's banner and preferences dialog. */
  /* The veil: house off-white, soft blur, the page still legible behind it (James: "a really nice
     white", as on maisonmargiela.com). */
  #bokja-consent-scrim { position: fixed; inset: 0; background: rgba(251, 251, 246, 0.86); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); z-index: 2147483000; pointer-events: none; }
  #bokja-consent-scrim[hidden] { display: none; }
  html.bokja-consent-pending { overflow: hidden; }
  html.bokja-consent-pending body > *:not(#shopify-pc__banner):not(#shopify-pc__prefs):not(#bokja-consent-scrim) { pointer-events: none; }
  html.bokja-consent-pending #shopify-pc__banner, html.bokja-consent-pending #shopify-pc__prefs { pointer-events: auto; }
  /* The box. The bar is Shopify's banner already restyled by assets/bokja-custom.css as a quiet
     bottom bar at z-index 90 (James, 2026-08-05). While the veil is up it is lifted above the veil
     and centred as a clear box, keeping the bar's own type and buttons; the moment consent is
     answered the html class drops and it is the bar again (or gone). Specificity beats the bar's
     own !important rules because every selector here starts with html.bokja-consent-pending. */
  html.bokja-consent-pending #shopify-pc__banner.shopify-pc__banner__dialog {
    inset: auto !important; left: 50% !important; top: 50% !important; bottom: auto !important; transform: translate(-50%, -50%) !important;
    width: calc(100% - 32px) !important; max-width: 560px !important; padding: 0 !important;
    background: #FBFBF6 !important; border: 1px solid #1a1a1a !important; z-index: 2147483647 !important;
  }
  html.bokja-consent-pending #shopify-pc__banner .shopify-pc__banner__wrapper { flex-direction: column !important; align-items: stretch !important; gap: 20px !important; padding: 32px !important; }
  html.bokja-consent-pending #shopify-pc__banner .shopify-pc__banner__body h2 { font-size: 12px !important; opacity: 0.7; margin-bottom: 10px !important; }
  html.bokja-consent-pending #shopify-pc__banner .shopify-pc__banner__body p { font-size: 14px !important; line-height: 1.55 !important; color: #1a1a1a !important; max-width: none; }
  html.bokja-consent-pending #shopify-pc__banner .shopify-pc__banner__btns { justify-content: flex-start !important; flex-wrap: wrap !important; gap: 12px !important; }
  html.bokja-consent-pending #shopify-pc__banner .shopify-pc__banner__btns button { font-size: 12px !important; padding: 13px 22px !important; }
  html.bokja-consent-pending #shopify-pc__banner .shopify-pc__banner__btn-manage-prefs { order: 1 !important; margin-left: auto !important; }
  html.bokja-consent-pending #shopify-pc__prefs { z-index: 2147483647 !important; }
/* END_SNIPPET:bokja-consent-scrim */

/* START_SNIPPET:bokja-cut-recommend (INDEX:182) */
/* Parent buy-column owns the vertical rhythm (flex row-gap); no margin here. */
  .bokja-adore { margin: 0; }

  .bokja-adore__heading {
    font-size: var(--bt-label);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.75;
    margin-block: 0 8px;
  }

  .bokja-adore__row {
    display: flex;
    gap: 10px;
    list-style: none;
    margin: 0;
    padding: 0;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }

  .bokja-adore__item { margin: 0; flex: 0 0 auto; inline-size: 92px; min-inline-size: 0; }

  .bokja-adore__link { display: block; text-decoration: none; color: var(--color-foreground); }

  /* RTW garments keep the shoot's 2:3 so full-length shots keep their feet
     (James 2026-08-08, extending his 2026-08-06 card rule to this strip). */
  .bokja-adore__item.is-rtw .bokja-adore__thumb { aspect-ratio: 2 / 3; }

  .bokja-adore__thumb {
    display: block;
    aspect-ratio: 1 / 1;
    border: 1px solid var(--color-foreground);
    border-radius: 0;
    overflow: hidden;
    background: var(--color-background);
    position: relative;
  }

  /* Sold out: a quiet dim only. NEVER a strikethrough across a product image - the strike
     belongs on the size pills alone (James, 2026-07-06). */
  .bokja-adore__item.is-sold-out .bokja-adore__thumb { opacity: 0.55; }

  .bokja-adore__label {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    overflow-wrap: anywhere;
    margin-block-start: 6px;
    font-size: var(--bt-label);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    line-height: 1.3;
    opacity: 0.85;
  }

  .bokja-adore__price {
    display: block;
    margin-block-start: 2px;
    font-family: var(--font-body--family);
    font-size: var(--bt-card);
    font-weight: 400;
    letter-spacing: 0.01em;
    color: var(--bokja-price-ink);
  }

  .bokja-adore__viewall {
    margin-block-start: 10px;
    font-size: var(--bt-label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-foreground);
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
    background: none;
    border: 0;
    padding: 0;
  }
/* END_SNIPPET:bokja-cut-recommend */

/* START_SNIPPET:bokja-dimensions-overlay (INDEX:185) */
.bokja-product-media-stack__frame {
    position: relative;
  }

  .bokja-dim-toggle {
    /* Hidden until the JS marks the frame ready (.bokja-dim-ready below). A product reached via
       the client-side swap from a non-product page has no per-page dimensions JS loaded, so an
       always-visible toggle would be inert (clicking it does nothing); keep it hidden there. The
       dimensions still read as text in the details column either way. */
    display: none;
    position: absolute;
    inset-block-end: 14px;
    inset-inline-end: 14px;
    z-index: 3;
    appearance: none;
    cursor: pointer;
    border: 0.5px solid color-mix(in srgb, var(--color-foreground) 30%, transparent);
    background: color-mix(in srgb, var(--color-background) 86%, transparent);
    color: var(--color-foreground);
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    line-height: 1;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 7px 12px;
    transition: background 180ms ease, color 180ms ease, border-color 180ms ease;
  }

  /* The JS adds .bokja-dim-ready once it has initialised this frame, which is proof its behaviour
     (the canvas gate, the cm/in units, open/close) is actually wired up. Revealing the toggle only
     then is what stops it appearing inert on a swapped-in product whose per-page JS never loaded.
     The .bokja-dim-unavailable rule below is declared AFTER this, so an art-shot still wins and
     hides the toggle at equal specificity. */
  .bokja-product-media-stack__frame.bokja-dim-ready .bokja-dim-toggle {
    display: block;
  }

  .bokja-product-media-stack__frame.is-dim-open .bokja-dim-toggle {
    background: var(--color-foreground);
    color: var(--color-background);
    border-color: var(--color-foreground);
  }

  /* Art-directed (dark-backdrop) shots can't carry a clean measurement bracket; the JS
     adds .bokja-dim-unavailable to the frame so neither the toggle nor the overlay show.
     The piece's dimensions remain as text in the details column. */
  .bokja-product-media-stack__frame.bokja-dim-unavailable .bokja-dim-toggle,
  .bokja-product-media-stack__frame.bokja-dim-unavailable .bokja-dim {
    display: none;
  }

  .bokja-dim {
    --dim-left: 16%;
    --dim-right: 84%;
    --dim-top: 18%;
    --dim-bottom: 86%;
    /* Outward breathing room so the bracket sits just off the piece, never on it. */
    --dim-gap: 4px;
    /* A soft hairline, not solid black: reads as a quiet measurement guide and hides the uneven
       sub-pixel antialiasing a 1px black line shows at fractional device-pixel ratios (James). */
    --dim-stroke: color-mix(in srgb, var(--color-foreground) 52%, transparent);
    /* One device-pixel hairline for ALL lines (set precisely by the JS to 1 device px); the 1px
       fallback covers the no-JS / pre-layout state. */
    --dim-hairline: 1px;
    position: absolute;
    inset: 0;
    z-index: 2;
    opacity: 0;
    pointer-events: none;
    transition: opacity 240ms ease;
  }

  .bokja-product-media-stack__frame.is-dim-open .bokja-dim {
    opacity: 1;
  }

  .bokja-dim__line {
    position: absolute;
    background: var(--dim-stroke);
  }

  /* Width: horizontal line just below the base, end ticks pointing down (away
     from the piece) so the bracket never sits on the photo. */
  .bokja-dim__line--width {
    top: calc(var(--dim-bottom) + var(--dim-gap));
    left: var(--dim-left);
    right: calc(100% - var(--dim-right));
    height: var(--dim-hairline);
  }

  .bokja-dim__line--width::before,
  .bokja-dim__line--width::after {
    content: "";
    position: absolute;
    top: 0;
    width: var(--dim-hairline);
    height: 7px;
    background: var(--dim-stroke);
  }
  .bokja-dim__line--width::before { left: 0; }
  .bokja-dim__line--width::after { right: 0; }

  /* Height: vertical line just outside the side, end ticks pointing out. */
  .bokja-dim__line--height {
    left: calc(var(--dim-right) + var(--dim-gap));
    top: var(--dim-top);
    bottom: calc(100% - var(--dim-bottom));
    width: var(--dim-hairline);
  }

  .bokja-dim__line--height::before,
  .bokja-dim__line--height::after {
    content: "";
    position: absolute;
    left: 0;
    width: 7px;
    height: var(--dim-hairline);
    background: var(--dim-stroke);
  }
  .bokja-dim__line--height::before { top: 0; }
  .bokja-dim__line--height::after { bottom: 0; }

  /* 3D: lift the height line up the depth diagonal so its base meets the diagonal's
     far corner instead of the box corner, and the three lines trace a 3D corner
     (base -> recede up the diagonal -> rise). The diagonal is 30px at 45deg, so its
     far end is ~21.2px right and up. Drop the base tick: the diagonal's end-tick
     already marks that corner. */
  .bokja-dim--3d {
    --depth: 40px;
  }

  .bokja-dim--3d .bokja-dim__line--height {
    transform: translate(var(--depth), calc(-1 * var(--depth)));
  }

  /* No ticks at the internal junctions (the box corner where width meets the
     diagonal, and the lift corner where the diagonal meets height): the bracket
     flows width -> diagonal -> height as one clean shape, ticks only at the two
     free ends. */
  .bokja-dim--3d .bokja-dim__line--height::after,
  .bokja-dim--3d .bokja-dim__line--width::after {
    display: none;
  }

  /* Depth: a clean diagonal off the bottom corner, between the horizontal and the
     vertical, receding up and to the right. No end-ticks: it connects the width
     line to the lifted height line as one continuous shape. Its length is
     --depth * sqrt(2) so its far end lands exactly where the height line lifts to. */
  .bokja-dim__depth {
    position: absolute;
    left: calc(var(--dim-right) + var(--dim-gap));
    top: calc(var(--dim-bottom) + var(--dim-gap));
    width: calc(var(--depth, 40px) * 1.4142);
    height: var(--dim-hairline);
    background: var(--dim-stroke);
    transform-origin: left center;
    transform: rotate(-45deg);
  }

  .bokja-dim__label {
    position: absolute;
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    line-height: 1;
    letter-spacing: 0.04em;
    color: color-mix(in srgb, var(--color-foreground) 78%, transparent);
    background: color-mix(in srgb, var(--color-background) 82%, transparent);
    padding: 2px 5px;
    white-space: nowrap;
  }

  /* Labels are clamped to stay WITHIN the photo. A wide piece fills the frame, so the natural
     label spot (just outside the bracket) would run off the image edge; min()/clamp() pull it back
     to sit against the edge instead (its translucent background keeps it legible over the piece). */
  .bokja-dim__label--width {
    top: min(calc(var(--dim-bottom) + var(--dim-gap) + 7px), calc(100% - 24px));
    left: clamp(32px, calc((var(--dim-left) + var(--dim-right)) / 2), calc(100% - 32px));
    transform: translateX(-50%);
  }

  .bokja-dim__label--height {
    left: min(calc(var(--dim-right) + var(--dim-gap) + 9px), calc(100% - 60px));
    top: clamp(14px, calc((var(--dim-top) + var(--dim-bottom)) / 2), calc(100% - 14px));
    transform: translateY(-50%);
  }

  /* The lift opens a gap between the piece and the height line; sit the height
     label in it, right-aligned just inside the lifted line. */
  .bokja-dim--3d .bokja-dim__label--height {
    left: calc(var(--dim-right) + var(--dim-gap) + var(--depth));
    transform: translate(calc(-100% - 4px), calc(-50% - var(--depth)));
  }

  /* Depth label sits in the same gap, by the diagonal's far end (the lift corner). */
  .bokja-dim__label--depth {
    left: calc(var(--dim-right) + var(--dim-gap) + var(--depth));
    top: calc(var(--dim-bottom) + var(--dim-gap) - var(--depth));
    transform: translate(calc(-100% - 4px), -50%);
  }
/* END_SNIPPET:bokja-dimensions-overlay */

/* START_SNIPPET:bokja-drawer-styles (INDEX:186) */
/* The component is rendered as a sibling of the PDP media/details inside the
     product grid. Without this it becomes a grid item and forces the buy column
     into a second row (huge empty gap above it). display:contents removes its
     box from the grid; the dialog is position:fixed/top-layer so it is fine. */
  .fabric-drawer { display: contents; }

  .fabric-drawer__dialog {
    position: fixed;
    overflow: hidden;
    border-radius: 0;
    inline-size: 100%;
    block-size: 100%;
    margin-block: 0;
    margin-inline-start: auto;
    margin-inline-end: 0;
    padding: 0;
    border-inline-start: var(--style-border-drawer);
    box-shadow: var(--shadow-drawer);
    background-color: var(--color-background);
  }

  @media screen and (min-width: 750px) {
    .fabric-drawer__dialog {
      inline-size: var(--sidebar-width);
      max-inline-size: 95vw;
    }
    /* RTL desktop: panel sits on the left, slide it in from the left edge. */
    [dir='rtl'] .fabric-drawer__dialog.dialog-drawer[open] { --start-x: -100%; }
    [dir='rtl'] .fabric-drawer__dialog.dialog-drawer[open].dialog-closing { --start-x: 0px; --end-x: -100%; }
  }

  .fabric-drawer__dialog:modal { max-block-size: 100dvh; overflow-y: hidden; }

  .fabric-drawer__inner {
    block-size: 100%;
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  .fabric-drawer__header {
    position: sticky;
    inset-block-start: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--padding-xl);
    background-color: var(--color-background);
  }
  @media screen and (min-width: 750px) {
    .fabric-drawer__header { padding-inline: var(--padding-2xl); }
  }

  .fabric-drawer__heading { margin: 0; }
  /* Match the size-fit drawer: the base .h4 class makes this ~28px, too big for the panel. (James, 2026-06-30) */
  .fabric-drawer__header .fabric-drawer__heading {
    font-size: var(--bt-h2);
    line-height: 1.25;
  }

  .fabric-drawer__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--gap-md, 12px);
    list-style: none;
    margin: 0;
    padding: var(--padding-xl);
  }
  @media screen and (min-width: 750px) {
    .fabric-drawer__grid { grid-template-columns: repeat(3, 1fr); padding-inline: var(--padding-2xl); }
  }

  .fabric-drawer__cell { margin: 0; }

  .fabric-drawer__thumb {
    display: block;
    aspect-ratio: 3 / 4;
    border-radius: 0;
    overflow: hidden;
    background: var(--color-background);
    position: relative;
  }
  /* The drawer shows the WHOLE piece — each product's full main photo, letterboxed on the
     off-white background (contain), not the tight square crop the small strip thumbnail uses.
     Once a product carries a dedicated swatch crop, pass prefer:'main' from the drawer so the
     drawer keeps showing the whole piece rather than the fabric crop. */
  .fabric-drawer__thumb .bokja-swatch-fill { object-fit: contain; }
  .fabric-drawer__cell.is-current .fabric-drawer__thumb { outline: 2px solid var(--color-foreground); outline-offset: 1px; }

  .fabric-drawer__img { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; }

  /* Sold out: a quiet dim only. NEVER a strikethrough across a product image - the strike
     belongs on the size pills alone (James, 2026-07-06). */
  .fabric-drawer__cell.is-sold-out .fabric-drawer__thumb { opacity: 0.55; }

  .fabric-drawer__label {
    display: block;
    margin-block-start: 6px;
    font-size: var(--bt-label);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    text-align: start;
    color: var(--color-foreground);
    opacity: 0.8;
  }

  /* Phone: bottom sheet, slide on Y (mirrors the cart drawer). */
  @media screen and (max-width: 749px) {
    .fabric-drawer__dialog {
      inset-block-start: auto;
      inset-block-end: 0;
      inset-inline: 0;
      inline-size: 100%;
      max-inline-size: 100%;
      block-size: auto;
      max-block-size: 85dvh;
      margin: 0;
      border-inline-start: none;
      border-block-start: var(--style-border-drawer);
    }
    .fabric-drawer__dialog:modal { max-block-size: 85dvh; }
    .fabric-drawer__inner { max-block-size: 85dvh; }
    .fabric-drawer__dialog.dialog-drawer[open] { --start-x: 0px; --end-x: 0px; --start-y: 100%; --end-y: 0px; }
    .fabric-drawer__dialog.dialog-drawer[open].dialog-closing { --start-x: 0px; --end-x: 0px; --start-y: 0px; --end-y: 100%; }
  }
/* END_SNIPPET:bokja-drawer-styles */

/* START_SNIPPET:bokja-enquire-cta (INDEX:188) */
/* Sold-out state line: quiet text row above the request CTA, mirroring the CTA's own
     label-left / price-right rhythm. Not a box - the single boxed element below it is the CTA. */
  .bokja-soldout-line {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    margin: 0 0 10px;
    font-size: var(--bt-label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-foreground);
  }
  .bokja-soldout-line__state { opacity: 0.65; }
  .bokja-soldout-line__price { opacity: 0.9; }
/* END_SNIPPET:bokja-enquire-cta */

/* START_SNIPPET:bokja-fabric-swatches (INDEX:189) */
/* Collection-card swatch row ONLY — the PDP fabric strip now renders through the shared
     .bokja-discover family strip (bokja-family-strip), so it matches the print/shape strips. */
  /* Card swatches: small COLOUR squares (not image thumbnails), kept on a SINGLE line so the row is
     one line tall beside the name - never as tall as the name + price. The "+N" sits inline. */
  .bokja-fabrics--card { margin-block: 8px 0; display: flex; align-items: center; gap: 6px; }

  /* Hover-line variant: lives in the card caption's price grid cell as the RTW hover
     swap, overlaying the price exactly — no card-row margin, chips directly in the flex
     (no list markup in this mode). */
  .bokja-fabrics--hoverline { margin-block: 0; gap: 4px; }
  .bokja-fabrics--hoverline .bokja-fabrics__swatch.is-dimmed { opacity: 0.55; }

  .bokja-fabrics__row {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 4px;
    list-style: none;
    margin: 0;
    padding: 0;
  }
  .bokja-fabrics__item { margin: 0; position: relative; }

  .bokja-fabrics__swatch {
    display: block;
    inline-size: 14px;
    block-size: 14px;
    border-radius: 0;
    overflow: hidden;
    position: relative;
    background: var(--color-background);
    padding: 0;
  }
  a.bokja-fabrics__swatch { cursor: pointer; }
  span.bokja-fabrics__swatch { cursor: default; }

  .bokja-fabrics__img { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; }

  /* The swatch is a SOFT-blurred, HEAVILY-cropped zoom into the lower-centre of the variant's OWN
     photo (option E), so it reads as a calm wash of the real fabric colours (no colour chosen by
     hand). transform-origin center 72% zooms PAST the backdrop into the garment body; the big scale
     hides the blur's faded edges; the hairline keeps pale fabrics defined. */
  .bokja-colour-swatch {
    display: block;
    inline-size: 100%;
    block-size: 100%;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 0 0 0.5px color-mix(in srgb, var(--color-foreground) 22%, transparent);
  }
  .bokja-colour-swatch__img {
    position: absolute;
    inset: 0;
    inline-size: 100%;
    block-size: 100%;
    object-fit: cover;
    filter: blur(2px);
    transform: scale(8);
    transform-origin: center 72%;
  }
  .bokja-colour-swatch--none { background: var(--color-background); }

  /* Selected indicator = a quiet underline TAB beneath the current chip - the site's own
     active-state language (the category strip + Collective filters use a thin currentColor
     border-block-end under the active item). NOT a box: the old 2px outline read as a "weird black
     line". Drawn as an absolute ::after on the item so it never shifts the row and is never clipped
     by the chip's overflow:hidden. */
  .bokja-fabrics__item.is-current::after {
    content: "";
    position: absolute;
    inset-inline: 0;
    inset-block-start: 100%;
    margin-block-start: 3px;
    block-size: 1px;
    background: var(--color-foreground);
  }

  /* Sold out: a quiet dim only. NEVER a strikethrough across a product image - the strike
     belongs on the size pills alone (James, 2026-07-06). */
  .bokja-fabrics__item.is-sold-out .bokja-fabrics__swatch { opacity: 0.55; }

  /* Quiet "+N": a muted, un-underlined count, not a second emphatic element competing with the
     swatches. It still reads as "more", just without the heavy underline. */
  .bokja-fabrics__more {
    font-size: var(--bt-micro);
    letter-spacing: 0.04em;
    text-transform: none;
    color: color-mix(in srgb, var(--color-foreground) 55%, transparent);
    text-decoration: none;
    cursor: pointer;
    margin-block-start: 0;
    display: inline-block;
    white-space: nowrap;
  }

  /* Phones: the row sits below the name/price, so give it a touch more air between chips and keep
     it from feeling crammed. (Count is already trimmed to 3 + "+N" above.) */
  @media screen and (max-width: 749px) {
    .bokja-fabrics--card { gap: 8px; }
    .bokja-fabrics__row { gap: 5px; }
  }
/* END_SNIPPET:bokja-fabric-swatches */

/* START_SNIPPET:bokja-family-strip (INDEX:191) */
/* Shared "explore the family" strip — fabric, print AND shape axes all render through this
     so they read as one set (the old split: fabric = 40px swatches, discover = 92px thumbs).
     Parent buy-column owns the vertical rhythm (flex row-gap); no margin here. */
  .bokja-discover { margin: 0; }

  .bokja-discover__heading {
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.75;
    margin-block: 0 8px;
  }

  /* The per-thumbnail names read as cramped, truncated clutter under the swatches, so hide them
     (the swatch's button keeps an aria-label, so it stays accessible). */
  .bokja-discover__label { display: none; }

  .bokja-discover__row {
    display: flex;
    gap: 10px;
    list-style: none;
    margin: 0;
    padding: 0;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .bokja-discover__row::-webkit-scrollbar {
    display: none;
  }

  .bokja-discover__item { margin: 0; flex: 0 0 auto; inline-size: 60px; min-inline-size: 0; }

  .bokja-discover--quick-add .bokja-discover__item { position: relative; inline-size: 92px; }
  .bokja-discover--quick-add .bokja-discover__thumb { aspect-ratio: 4 / 5; }

  .bokja-discover__link { display: block; text-decoration: none; color: var(--color-foreground); }
  button.bokja-discover__link { inline-size: 100%; padding: 0; border: 0; background: none; text-align: start; cursor: pointer; font: inherit; }

  .bokja-discover__thumb {
    display: block;
    aspect-ratio: 1 / 1;
    border-radius: 0;
    overflow: hidden;
    background: var(--color-background);
    position: relative;
  }

  /* The current piece (fabric axis only) gets the same quiet 2px frame the chooser used —
     not a colour fill (brand: typographic/structural differentiation only). */
  .bokja-discover__item.is-current .bokja-discover__thumb {
    outline: 2px solid var(--color-foreground);
    outline-offset: 4px;
  }

  .bokja-discover__img { inline-size: 100%; block-size: 100%; object-fit: cover; object-position: top; display: block; }
  /* object-position top: when these thumbs crop, they crop top-down (James 2026-08-08) -
     keeps heads/subjects, loses the excess from the bottom, never the centre-chop. */

  /* Sold out: a quiet dim only. NEVER a strikethrough across a product image - the strike
     belongs on the size pills alone (James, 2026-07-06). */
  .bokja-discover__item.is-sold-out .bokja-discover__thumb { opacity: 0.55; }

  .bokja-discover__label {
    display: none;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    overflow-wrap: anywhere;
    margin-block-start: 6px;
    font-size: var(--bt-label);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    text-align: start;
    line-height: 1.3;
    opacity: 0.8;
  }
/* END_SNIPPET:bokja-family-strip */

/* START_SNIPPET:bokja-freeship-bar (INDEX:192) */
.bokja-freeship {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
    margin-block-end: var(--gap-xl);
  }

  .bokja-freeship:empty {
    display: none;
  }

  .bokja-freeship__text {
    margin: 0;
    font-size: var(--bt-micro);
    letter-spacing: 0.02em;
    line-height: 1.3;
    color: var(--color-foreground);
    opacity: 0.7;
  }

  .bokja-freeship__text.is-qualified,
  .bokja-freeship__text--complimentary {
    opacity: 1;
  }

  .bokja-freeship__track {
    position: relative;
    inline-size: 100%;
    block-size: 2px;
    background: color-mix(in srgb, var(--color-foreground) 14%, transparent);
    overflow: hidden;
  }

  .bokja-freeship__fill {
    position: absolute;
    inset-block: 0;
    inset-inline-start: 0;
    background: var(--color-foreground);
    transition: inline-size 320ms ease;
  }

  .bokja-freeship__quote {
    margin: 0;
    font-size: var(--bt-micro);
    letter-spacing: 0.02em;
    line-height: 1.3;
    color: var(--color-foreground);
    opacity: 0.55;
  }

  @media (prefers-reduced-motion: reduce) {
    .bokja-freeship__fill {
      transition: none;
    }
  }
/* END_SNIPPET:bokja-freeship-bar */

/* START_SNIPPET:bokja-megamenu (INDEX:197) */
/* ============================== Desktop click drawer ============================== */
  .bokja-mega { display: flex; }
  .bokja-mega__bar {
    display: flex;
    align-items: center;
    gap: clamp(18px, 1.8vw, 26px);
    margin: 0;
    padding: 0;
    list-style: none;
  }
  /* Panels are position:fixed (slide in from the inline-start edge), so the item needs no
     positioning context — keep it static. The panel stays a DOM child of the item, which keeps
     it inside [data-bokja-mega] so a click on it never counts as an outside-click close. */
  .bokja-mega__item { position: static; }

  /* Non-current sides dim to half strength (James 2026-08-06); interaction restores. */
  .bokja-mega__top--dim { opacity: 0.5; }
  .bokja-mega__top--dim:hover,
  .bokja-mega__top--dim:focus-visible,
  .bokja-mega__item.is-open .bokja-mega__top--dim { opacity: 1; }

  .bokja-mega__top {
    display: inline-flex;
    align-items: center;
    padding-block: 6px;
    font-size: var(--bt-nav);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-weight: 500;
    color: var(--color-foreground, #1a1a1a);
    text-decoration: none;
    cursor: pointer;
    transition: opacity 140ms ease;
  }
  .bokja-mega__top:hover { opacity: 0.7; }
  .bokja-mega__item.is-open > .bokja-mega__top { opacity: 1; }

  /* The drawer: a fixed-width column (the groups) that SLIDES OUT from the inline-start edge on
     click, then FOLDS WIDER (a second column) only when a group is clicked. Vertical, narrow,
     click-driven — nothing reveals or resizes on hover. overflow:hidden clips the items column
     until the drawer is widened. */
  .bokja-mega__panel {
    --bokja-mega-groups-w: clamp(186px, 15vw, 222px);
    --bokja-mega-items-w: clamp(200px, 17vw, 250px);
    position: fixed;
    inset-inline-start: 0;
    inset-inline-end: auto;
    /* Panel top = the mega bar's own measured bottom (--bokja-mega-panel-top, set in JS),
       so the open drawer never covers the bar word you just clicked (James, 2026-08-05).
       Falls back to the header var if JS has not run. */
    inset-block-start: var(--bokja-mega-panel-top, var(--bokja-header-height, 64px));
    /* Full page height: the drawer spans from the header underside to the very bottom of the
       viewport, so when it folds out it goes top-to-bottom with the menu items at the top and quiet
       whitespace filling the rest (the column background = panel background). */
    inset-block-end: 0;
    z-index: 18;
    display: flex;
    align-items: stretch;
    overflow: hidden;
    inline-size: var(--bokja-mega-groups-w);
    background: var(--color-background, #FBFBF6);
    border-inline-end: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.14));
    border-block-end: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.14));
    box-shadow: 14px 0 44px -32px rgba(26, 26, 26, 0.55);
    visibility: hidden;
    pointer-events: none;
    transform: translateX(-100%);
    transition: transform 320ms cubic-bezier(0.22, 0.61, 0.36, 1), inline-size 300ms cubic-bezier(0.22, 0.61, 0.36, 1), visibility 0s linear 320ms;
  }
  [dir='rtl'] .bokja-mega__panel {
    transform: translateX(100%);
    box-shadow: -14px 0 44px -32px rgba(26, 26, 26, 0.55);
  }
  .bokja-mega__item.is-open .bokja-mega__panel {
    visibility: visible;
    pointer-events: auto;
    transform: translateX(0);
    transition: transform 320ms cubic-bezier(0.22, 0.61, 0.36, 1), inline-size 300ms cubic-bezier(0.22, 0.61, 0.36, 1), visibility 0s;
  }
  /* Folds wider once a group is clicked (the items column comes into view). */
  .bokja-mega__panel.has-active-group {
    inline-size: calc(var(--bokja-mega-groups-w) + var(--bokja-mega-items-w));
  }

  /* While a panel is open, lift the whole header above any sticky sub-nav section (collection
     strips sit at z-index 29, above the header's resting 20). Only while open. */
  .bokja-nav:has(.bokja-mega__item.is-open) { z-index: 40; }

  /* Level 2 — the groups: a vertical list in a fixed-width column. */
  .bokja-mega__groups {
    flex: 0 0 var(--bokja-mega-groups-w);
    inline-size: var(--bokja-mega-groups-w);
    margin: 0;
    padding: clamp(22px, 2.4vw, 34px) 30px;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 1px;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .bokja-mega__group {
    position: relative;
    display: block;
    inline-size: 100%;
    text-align: start;
    margin: 0;
    padding: 9px 0;
    background: none;
    border: 0;
    font-family: inherit;
    font-size: var(--bt-nav);
    letter-spacing: 0.04em;
    color: var(--color-foreground, #1a1a1a);
    /* Solid (James 2026-09-22, "make sure the text is actually black, it's starting to look grey"):
       was 0.62 at rest / 0.9 on hover; now full at rest, hover dips like the menu row words. */
    opacity: 1;
    cursor: pointer;
    text-decoration: none;
    transition: opacity 140ms ease;
  }
  .bokja-mega__group:hover { opacity: 0.7; }
  .bokja-mega__group.is-active { opacity: 1; }
  /* The Collective's tag views mark which filter is on (James, 2026-08-08). */
  .bokja-mega__group--link.is-current { opacity: 1; font-weight: 500; }
  /* Expandable groups carry a chevron that flips when their items are open. */
  .bokja-mega__group[aria-expanded]::after {
    content: '';
    position: absolute;
    inset-inline-end: 0;
    inset-block-start: 50%;
    inline-size: 6px;
    block-size: 6px;
    margin-block-start: -4px;
    border-inline-end: 1.4px solid currentColor;
    border-block-start: 1.4px solid currentColor;
    transform: rotate(45deg);
    opacity: 0.5;
    transition: transform 180ms ease;
  }
  [dir='rtl'] .bokja-mega__group[aria-expanded]::after { transform: rotate(225deg); }
  .bokja-mega__group[aria-expanded='true']::after { transform: rotate(45deg) translate(2px, 2px); opacity: 0.9; }
  .bokja-mega__group--all {
    margin-block-end: 10px;
    text-transform: uppercase;
    font-size: var(--bt-label);
    letter-spacing: 0.16em;
    opacity: 1; /* was 0.5; solid with the group words (James 2026-09-22) */
  }
  /* A quiet subtitle inside a groups column (e.g. "Collaborations" above the collab links). */
  .bokja-mega__subhead {
    display: block;
    margin-block: 16px 4px;
    text-transform: uppercase;
    font-size: var(--bt-label);
    letter-spacing: 0.16em;
    color: var(--color-foreground, #1a1a1a);
    opacity: 0.4;
  }

  /* Level 3 — the items of the active group. The column has its width but is clipped by the
     panel until the panel folds wider; the active list shows. */
  .bokja-mega__items {
    flex: 0 0 var(--bokja-mega-items-w);
    inline-size: var(--bokja-mega-items-w);
    border-inline-start: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.1));
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .bokja-mega__item-list {
    margin: 0;
    padding: clamp(22px, 2.4vw, 34px) 30px;
    list-style: none;
    display: none;
  }
  .bokja-mega__item-list.is-active { display: block; }
  .bokja-mega__item-list a {
    display: block;
    padding-block: 7px;
    font-size: var(--bt-nav);
    letter-spacing: 0.03em;
    color: var(--color-foreground, #1a1a1a);
    opacity: 0.72;
    text-decoration: none;
    white-space: nowrap;
    transition: opacity 140ms ease;
  }
  .bokja-mega__item-list a:hover { opacity: 1; }

  @media (prefers-reduced-motion: reduce) {
    .bokja-mega__panel,
    [dir='rtl'] .bokja-mega__panel { transform: none; opacity: 0; transition: opacity 120ms ease, inline-size 1ms, visibility 0s linear 120ms; }
    .bokja-mega__item.is-open .bokja-mega__panel { opacity: 1; transition: opacity 120ms ease, inline-size 1ms, visibility 0s; }
  }

  /* Desktop only — phones get the burger + accordion below. */
  @media screen and (max-width: 749px) {
    .bokja-mega { display: none; }
  }

  /* ============================== Mobile drill-down ============================== */
  /* Tap a category and its sub-list SLIDES IN, replacing the view (a back row returns up a level),
     so you go straight in instead of scrolling a long expanded accordion. Smaller, quieter type
     than before. Lives inside the burger drawer (hidden >=750px). */
  .bokja-mega-m { position: relative; flex: 1; min-block-size: 66vh; overflow: hidden; }
  @media screen and (min-width: 750px) { .bokja-mega-m { display: none; } }
  /* Fill via absolute inset:0 (NOT block-size:100%): the nav's height comes from flex/min-height,
     not an explicit height, so a `height:100%` chain resolves to auto (0) and the panels collapse
     to an empty box. inset:0 stretches to the nav's used height regardless. */
  .bokja-mega-m__stage { position: absolute; inset: 0; }
  /* Card stack: every panel in the current path sits at translateX(0) (opaque, z-ordered by depth
     via an inline z-index), so the child covers its parent. Drilling in slides the new card over
     the parent (100% -> 0); backing slides the top card out (0 -> 100%), revealing the parent
     beneath. Panels not in the path park off the inline-end edge (clipped by the nav's overflow). */
  .bokja-mega-m__panel {
    position: absolute;
    inset-block: 0;
    inset-inline: 0;
    margin: 0;
    padding: 2px 0 0;
    list-style: none;
    overflow-y: auto;
    overscroll-behavior: contain;
    background: var(--color-background, #FBFBF6);
    transform: translateX(100%);
    visibility: hidden;
    transition: transform 280ms cubic-bezier(0.22, 0.61, 0.36, 1), visibility 0s linear 280ms;
  }
  .bokja-mega-m__panel.is-in {
    transform: translateX(0);
    visibility: visible;
    transition: transform 280ms cubic-bezier(0.22, 0.61, 0.36, 1), visibility 0s;
  }
  [dir='rtl'] .bokja-mega-m__panel { transform: translateX(-100%); }
  [dir='rtl'] .bokja-mega-m__panel.is-in { transform: translateX(0); }
  @media (prefers-reduced-motion: reduce) {
    .bokja-mega-m__panel { transition: visibility 0s linear 0s; }
    .bokja-mega-m__panel.is-in { transition: visibility 0s; }
  }

  .bokja-mega-m__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    inline-size: 100%;
    min-block-size: 44px;
    margin: 0;
    padding: 11px 2px;
    background: none;
    border: 0;
    border-block-end: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.08));
    font-family: inherit;
    font-size: var(--bt-nav);
    letter-spacing: 0.02em;
    color: var(--color-foreground, #1a1a1a);
    text-align: start;
    text-decoration: none;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  /* The Collective's tag views mark which filter is on (James, 2026-08-08). */
  .bokja-mega-m__row.is-current { font-weight: 500; }
  /* Root level: the three sections — a touch larger, uppercase, but quieter spacing than before. */
  .bokja-mega-m__row--root {
    font-size: var(--bt-nav);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    padding-block: 15px;
  }
  /* A forward chevron on rows that drill deeper (the data-go buttons); plain links have none. */
  .bokja-mega-m__row[data-go]::after {
    content: '';
    flex: 0 0 auto;
    inline-size: 6px;
    block-size: 6px;
    border-inline-end: 1.3px solid currentColor;
    border-block-start: 1.3px solid currentColor;
    transform: rotate(45deg);
    opacity: 0.4;
  }
  .bokja-mega-m__row--all {
    text-transform: uppercase;
    font-size: var(--bt-label);
    letter-spacing: 0.14em;
    opacity: 0.55;
    margin-block-end: 6px;
  }
  /* Quiet subtitle inside a mobile panel (e.g. "Collaborations"). */
  .bokja-mega-m__subhead {
    display: block;
    margin-block: 16px 2px;
    padding: 4px 2px;
    text-transform: uppercase;
    font-size: var(--bt-label);
    letter-spacing: 0.14em;
    color: var(--color-foreground, #1a1a1a);
    opacity: 0.5;
  }

  /* Back row: the current category as a quiet header with a leading chevron; tap to go up a level. */
  .bokja-mega-m__back {
    display: flex;
    align-items: center;
    gap: 11px;
    inline-size: 100%;
    min-block-size: 44px;
    margin: 0 0 4px;
    padding: 11px 2px;
    background: none;
    border: 0;
    border-block-end: 0.5px solid var(--color-border, rgba(26, 26, 26, 0.14));
    font-family: inherit;
    font-size: var(--bt-label);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-weight: 500;
    color: var(--color-foreground, #1a1a1a);
    text-align: start;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  .bokja-mega-m__back::before {
    content: '';
    flex: 0 0 auto;
    inline-size: 7px;
    block-size: 7px;
    border-inline-start: 1.4px solid currentColor;
    border-block-end: 1.4px solid currentColor;
    transform: rotate(45deg);
    opacity: 0.7;
  }
/* END_SNIPPET:bokja-megamenu */

/* START_SNIPPET:bokja-pair-note (INDEX:198) */
.bokja-pair-note {
    margin-block: 18px 4px;
  }
  .bokja-pair-note__link {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    text-decoration: none;
    color: var(--color-foreground);
  }
  .bokja-pair-note__thumb {
    width: 64px;
    height: 64px;
    object-fit: cover;
    display: block;
  }
  .bokja-pair-note__text {
    display: flex;
    flex-direction: column;
    gap: 3px;
  }
  .bokja-pair-note__label {
    font-size: var(--bt-label);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(26, 26, 26, 0.6);
  }
  .bokja-pair-note__cta {
    font-size: var(--bt-body);
    text-decoration: underline;
    text-underline-offset: 3px;
  }
/* END_SNIPPET:bokja-pair-note */

/* START_SNIPPET:bokja-preorder-badge (INDEX:199) */
/* DRAFT STYLING - James signs off. Quiet uppercase mark in the top-start corner of the
     media frame, same label rhythm as the PDP state line (.bokja-soldout-line__state).
     The card renderers all give the media frame position: relative (the images are pinned
     absolute inside it); card-gallery gets .is-preorder for the same reason. */
  .bokja-preorder-mark {
    position: absolute;
    z-index: 3;
    inset-block-start: 7px;
    inset-inline-start: 10px;
    inset-block-end: auto;
    inset-inline-end: auto;
    font-size: var(--bt-label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    line-height: 1;
    color: var(--color-foreground);
    opacity: 0.75;
    background: none;
    pointer-events: none;
  }

  /* card-gallery only sets position: relative for the "1/1" mark (.is-one-of-one, in
     bokja-custom.css). The pre-order mark needs the same containing block, so the card
     renderer adds .is-preorder. Kept here with the rest of the pre-order CSS so the whole
     state is one file to review or remove. */
  .card-gallery.is-preorder { position: relative; }
/* END_SNIPPET:bokja-preorder-badge */

/* START_SNIPPET:bokja-product-details (INDEX:203) */
/* The cut/print/fabric drawers are rendered inside the product grid (above) and reuse the
     .fabric-drawer class. display:contents keeps each drawer wrapper OUT of the grid, so it
     never creates a phantom second row that drops the buy column to the bottom-right (a huge
     empty gap above it). The same rule lives in bokja-fabric-drawer, but that snippet's CSS
     only ships when the fabric drawer renders (a product with fabric_siblings); the cut/print
     drawers render far more often (any product with cut_siblings/print_siblings), so the rule
     must also live here, on a snippet that is always present on a PDP. */
  .fabric-drawer { display: contents; }

  /* RTW size selector (Muse pattern): pills, selected = filled, none struck out. */
  .bokja-sizes { margin: 0; }
  .bokja-sizes__label {
    display: block;
    font-size: var(--bt-label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.65;
    margin-block-end: 8px;
  }
  .bokja-sizes__row { display: flex; flex-wrap: wrap; gap: 6px; }
  .bokja-sizes__pill {
    appearance: none;
    cursor: pointer;
    border: 0.5px solid color-mix(in srgb, var(--color-foreground) 40%, transparent);
    border-radius: 0;
    background: transparent;
    color: var(--color-foreground);
    font-family: var(--font-body--family);
    font-size: var(--bt-body);
    letter-spacing: 0.04em;
    padding: 8px 12px;
    min-inline-size: 44px;
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
  }
  .bokja-sizes__pill.is-selected {
    background: var(--color-foreground);
    color: var(--color-background);
    border-color: var(--color-foreground);
  }

  /* DRAFT STYLING — James signs off (design is his).
     Out-of-stock pills are no longer inert: since the SAP sync went live they resolve to
     alter-down or enquire, so they stay clickable and only read quieter. No strike (a strike
     never goes across an image, James 2026-07-06).

     An ALTER-DOWN pill carries NO visual treatment of its own - it is styled exactly like a
     buyable size, because it is one. James, 2026-08-07 night: "just let people buy it." The
     hidden _requested_size property is the only trace of the alteration anywhere. (A dashed
     border was drafted and removed: with the explanatory copy gone it was an unexplained mark.)

       .is-unavailable  - nothing larger left, opens the request route: muted */
  .bokja-sizes__pill.is-unavailable { opacity: 0.4; cursor: pointer; }
  .bokja-sizes__pill.is-unavailable.is-selected {
    background: transparent;
    color: var(--color-foreground);
    border-color: var(--color-foreground);
    opacity: 0.75;
  }

  /* Scarcity line: a quiet row above the CTA, same label rhythm as the sold-out state line.
     Not a box - the single boxed element in the buy column is the CTA. It sits outside
     .bokja-product-details__actions because that block becomes the fixed bottom bar on phones.
     (There is no alter-down note: James, 2026-08-07 night, "just let people buy it".) */
  .bokja-stock-line {
    margin: 0 0 8px;
    font-size: var(--bt-label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-foreground);
    opacity: 0.75;
  }
  /* The two CTA wrappers must not become boxes: .bokja-product-details__actions is a grid on
     desktop and the FIXED BOTTOM BAR (flex row) on phones, and its existing rules target
     product-form-component / the CTA anchors directly. display:contents keeps those elements
     as the direct layout children, so the bar is byte-for-byte the layout it was before the
     wrappers existed. */
  .bokja-product-details__actions > [data-bokja-cta] { display: contents; }

  /* Hidden must mean hidden. Author display rules have silently defeated [hidden] on this
     build before (the cushions top-gap hotfix, 2026-08-06), so state it explicitly - and this
     one has to outrank the display:contents above. */
  .bokja-stock-line[hidden],
  .bokja-product-details__actions > [data-bokja-cta][hidden],
  .bokja-product-details__actions > [hidden] { display: none; }

  .bokja-sizes__note {
    margin-block: 8px 0;
    font-size: var(--bt-micro);
    letter-spacing: 0.04em;
    color: var(--color-foreground);
    opacity: 0.55;
  }

  /* Prototype: the selected size's waist in the visitor's unit, sat under the pills.
     A concrete "≈ 24–27 in waist" reads as more reassuring than the alpha band alone. */
  .bokja-sizes__measure {
    margin-block: 10px 0;
    font-size: var(--bt-label);
    letter-spacing: 0.03em;
    color: var(--color-foreground);
    opacity: 0.7;
  }
  .bokja-sizes__measure[hidden] { display: none; }
  .bokja-sizes__measure [data-bokja-measure-value] { font-weight: 500; }

  /* Quiet "Size & Fit guide" link under the size pills: a text link, no button chrome. */
  .bokja-size-fit-link {
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
    display: inline-block;
    margin-block-start: 10px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--color-foreground);
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    letter-spacing: 0.04em;
    text-decoration: underline;
    text-underline-offset: 3px;
    opacity: 0.8;
  }
  .bokja-size-fit-link:hover { opacity: 1; }
  .bokja-size-fit-link:focus-visible { outline: 2px solid var(--color-foreground); outline-offset: 3px; }

  /* Price-on-request enquire CTA: the primary button reuses the add-to-cart style
     (.bokja-product-details__cta--add); the secondary channel is a quiet underlined
     text link beneath it. */
  .bokja-enquire__alt {
    display: inline-block;
    margin-block-start: 12px;
    color: var(--color-foreground);
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    letter-spacing: 0.04em;
    text-decoration: underline;
    text-underline-offset: 3px;
    opacity: 0.8;
  }
  .bokja-enquire__alt:hover { opacity: 1; }
  .bokja-enquire__alt:focus-visible { outline: 2px solid var(--color-foreground); outline-offset: 3px; }

  .bokja-unit-toggle {
    display: inline-flex;
    vertical-align: middle;
    margin-inline-start: 8px;
    border: 0.5px solid color-mix(in srgb, var(--color-foreground) 25%, transparent);
  }

  .bokja-unit-toggle__btn {
    appearance: none;
    cursor: pointer;
    border: 0;
    background: transparent;
    color: var(--color-foreground);
    font-family: var(--font-body--family);
    font-size: var(--bt-micro);
    line-height: 1;
    letter-spacing: 0.08em;
    text-transform: lowercase;
    padding: 4px 7px;
    transition: background 150ms ease, color 150ms ease;
  }

  .bokja-unit-toggle__btn + .bokja-unit-toggle__btn {
    border-inline-start: 0.5px solid color-mix(in srgb, var(--color-foreground) 25%, transparent);
  }

  .bokja-unit-toggle__btn.is-active {
    background: var(--color-foreground);
    color: var(--color-background);
  }

  /* Wishlist save control: a quiet "Save" with a heart that FILLS once saved. Secondary to the
     add-to-bag CTA (no button chrome). Lives here while saving is PDP-only; moves to a global sheet
     when the collection-card hearts land. */
  .bokja-save {
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-block-start: 14px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--color-foreground);
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    line-height: 1;
  }
  .bokja-save__icon { inline-size: 16px; block-size: 16px; display: block; flex: 0 0 auto; }
  .bokja-save__icon path { fill: none; stroke: currentColor; stroke-width: 1.4; transition: fill 160ms ease; }
  .bokja-save.is-saved .bokja-save__icon path { fill: currentColor; }
  .bokja-save__label { line-height: 1; }
  .bokja-save:focus-visible { outline: 2px solid var(--color-foreground); outline-offset: 3px; }

  /* Header variant: the heart sits where the price used to (top-right of the title row), icon only.
     The title is single-line (nowrap + ellipsis), so centring aligns the heart with the name. */
  .bokja-save--header {
    margin-block-start: 0;
    align-self: center;
    flex: 0 0 auto;
    gap: 0;
    padding: 2px;
    margin-inline-end: -2px;
  }
  .bokja-save--header .bokja-save__icon { inline-size: 19px; block-size: 19px; }

  /* Phones: the heart alone, no "Save"/"Saved" label (James), with a comfortable tap target. */
  @media screen and (max-width: 749px) {
    .bokja-save__label { display: none; }
    .bokja-save { gap: 0; padding: 4px; margin-inline-start: -4px; }
    .bokja-save__icon { inline-size: 20px; block-size: 20px; }
  }

  /* Guest sign-in nudge after a save: quiet, bottom-centre, off-white + hairline (no dark block,
     brand rule), sharp corners. localStorage already saved the item, so dismissing loses nothing. */
  .bokja-wishlist-toast {
    position: fixed;
    inset-block-end: 22px;
    inset-inline: 0;
    margin-inline: auto;
    inline-size: max-content;
    max-inline-size: calc(100% - 32px);
    z-index: 1000;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 12px 16px;
    background: var(--color-background);
    color: var(--color-foreground);
    border: 0.5px solid color-mix(in srgb, var(--color-foreground) 22%, transparent);
    box-shadow: 0 2px 18px rgba(26, 26, 26, 0.1);
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    letter-spacing: 0.02em;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 280ms ease, transform 280ms ease;
  }
  .bokja-wishlist-toast.is-in { opacity: 1; transform: translateY(0); }
  .bokja-wishlist-toast__link {
    color: var(--color-foreground);
    text-decoration: underline;
    text-underline-offset: 3px;
    white-space: nowrap;
  }
  .bokja-wishlist-toast__close {
    appearance: none;
    border: 0;
    background: transparent;
    cursor: pointer;
    color: var(--color-foreground);
    font-size: 18px;
    line-height: 1;
    padding: 0 0 0 4px;
  }
/* END_SNIPPET:bokja-product-details */

/* START_SNIPPET:bokja-product-media-stack (INDEX:204) */
/* One-of-a-kind "1/1" pencil mark, pinned to the TOP-RIGHT of the hero image (mobile +
     desktop). The hand-drawn mark is the accepted exception to the no-overlay rule. Top-right
     keeps it clear of the price (details column) and the Dimensions toggle (hero bottom-right).
     pointer-events:none so it never blocks the hero select button or the dimensions toggle. */
  .bokja-product-media-stack__one-of-one {
    position: absolute;
    z-index: 3;
    inset-block-start: 12px;
    inset-inline-end: 14px;
    font-family: 'Caveat', cursive;
    font-weight: 600;
    font-size: 28px;
    line-height: 1;
    letter-spacing: 0;
    text-transform: none;
    color: var(--color-foreground);
    opacity: 0.55;
    transform: rotate(-8deg);
    pointer-events: none;
  }
  /* Only the hero shows the mark; a promoted thumbnail would otherwise inherit it. */
  .bokja-product-media-stack__frame:not([data-bokja-hero]) .bokja-product-media-stack__one-of-one {
    display: none;
  }

  /* Click-to-enlarge thumbnails (desktop). The select button fills its frame and
     is the click / keyboard target; promoting it sets [data-bokja-hero], and the
     positional layout (bokja-custom.css) renders the hero frame in the big slot.
     No scrim or effect over the photo (brand rule): a quiet outline on the FRAME,
     never on the image. */
  .bokja-product-media-stack__select {
    position: absolute;
    inset: 0;
    z-index: 1;
    appearance: none;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
  }

  /* The hero is already big: no select target there, and the dimensions overlay
     belongs to it. On any non-hero frame, suppress the dimensions overlay + toggle
     so they only ever show on the full-product shot. */
  .bokja-product-media-stack__frame[data-bokja-hero] .bokja-product-media-stack__select {
    display: none;
  }

  .bokja-product-media-stack__frame:not([data-bokja-hero]) .bokja-dim,
  .bokja-product-media-stack__frame:not([data-bokja-hero]) .bokja-dim-toggle {
    display: none;
  }

  /* No dimensions on a close-up (James, 05-08): the lines anchor to the full-product
     silhouette and cannot register on a detail crop. bokja-pdp.js flags the hero frame
     is-closeup-hero when a close-up image is swapped in. */
  .bokja-product-media-stack__frame.is-closeup-hero .bokja-dim,
  .bokja-product-media-stack__frame.is-closeup-hero .bokja-dim-toggle {
    display: none;
  }

  /* No resting or hover lines on the thumbnails (keep the images clean, house
     rule). The 1-big-3-small layout already reads as a clickable gallery, and the
     pointer cursor signals it for mouse users. Keyboard users still get a focus
     ring, which only appears during keyboard navigation, never on mouse browsing. */
  .bokja-product-media-stack__select:focus-visible {
    outline: 2px solid var(--color-foreground);
    outline-offset: -2px;
  }

  /* Mobile keeps the native swipe carousel: no click-to-reorder there, and the hero-mirror
     thumbnail is hidden (the hero figure is already slide 1, so the mirror would duplicate it). */
  @media screen and (max-width: 989px) {
    .bokja-product-media-stack__select {
      display: none;
    }
    .bokja-product-media-stack__frame--hero-mirror {
      display: none;
    }
  }

  /* Elegant load: the box is already reserved (aspect-ratio 4/5, background set), so
     instead of the photo POPPING in, it fades up from the neutral background. The JS adds
     .bokja-media-fade to <html> only AFTER it has marked already-decoded images .is-loaded,
     so a cached hero never flashes; a cold image fades in as it arrives. No JS / reduced
     motion = instant (no fade), and the layout never moves either way. */
  .bokja-product-media-stack__image {
    transition: opacity 450ms ease;
    /* The hero is click-to-zoom. A real click with the tiniest mouse movement would otherwise
       start the browser's NATIVE image drag, which eats the click (so the zoom never dismisses)
       and can leave the page locked with the cursor stuck. Disable native dragging on every
       gallery image; the per-element draggable="false" below covers Firefox too. */
    -webkit-user-drag: none;
    user-select: none;
  }
  html.bokja-media-fade .bokja-product-media-stack__image {
    opacity: 0;
    /* FAIL-OPEN backstop. The fade hides every image and relies on JS to add .is-loaded to
       reveal it — but a cached image swapped in via innerHTML fires NO load event, and the
       JS safety net only runs on the first page load, so a swapped-in image could stay
       invisible forever (the intermittent "empty media column"). This per-element animation
       forces it visible by ~1.2s no matter what, so the gallery is NEVER left blank. The
       normal path (.is-loaded below) cancels the animation, so a healthy load still fades. */
    animation: bokjaMediaReveal 0.01s linear 1.2s forwards;
  }
  html.bokja-media-fade .bokja-product-media-stack__image.is-loaded { opacity: 1; animation: none; }
  /* A SWAPPED-IN hero must not fade up: the product swap is an instant cut, not a dissolve
     (Malou 2026-08-20). `.is-cut` is added by bokja-product-swap.liquid alongside `.is-loaded`
     at the moment the old snapshot is removed, and kills the 450ms transition above for that
     one element — otherwise the fade the swap just stopped doing would happen here instead.
     Scoped to the class, so a FIRST page load still fades up exactly as before. */
  html.bokja-media-fade .bokja-product-media-stack__image.is-cut { opacity: 1; animation: none; transition: none; }
  /* The swap crossfade overlay holds the OLD gallery snapshot and fades out via its own
     opacity; keep its (already-decoded) image fully opaque so the fade-in never touches it. */
  html.bokja-media-fade .bokja-swap-overlay .bokja-product-media-stack__image { opacity: 1; animation: none; }
  @keyframes bokjaMediaReveal { to { opacity: 1; } }
  @media (prefers-reduced-motion: reduce) {
    .bokja-product-media-stack__image { transition: none; }
    html.bokja-media-fade .bokja-product-media-stack__image { opacity: 1; animation: none; }
  }

  /* Inspect zoom: a second click on the already-active hero magnifies it at the click point.
     Desktop only (mobile uses native pinch); click again, Escape, or click away to exit.
     No scrim or overlay box (brand rule) - just the photo, larger; the frame clips the rest. */
  @media (min-width: 990px) {
    .bokja-product-media-stack__frame[data-bokja-hero] .bokja-product-media-stack__image {
      cursor: zoom-in;
      transition: transform 200ms ease, opacity 450ms ease;
    }
    .bokja-product-media-stack__frame[data-bokja-hero] .bokja-product-media-stack__image.is-zoomed {
      transform: scale(2.3);
      cursor: zoom-out;
      position: relative;
      z-index: 3;
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .bokja-product-media-stack__frame[data-bokja-hero] .bokja-product-media-stack__image { transition: opacity 450ms ease; }
  }

  .bokja-visually-hidden {
    position: absolute !important;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    border: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
  }
/* END_SNIPPET:bokja-product-media-stack */

/* START_SNIPPET:bokja-search-inline (INDEX:210) */
/* ============================================================================================
     BOKJA INLINE SEARCH - small persistent field + solid full-width drop panel (Arket model).
     ============================================================================================ */
  .bokja-search {
    --bokja-search-hairline: color-mix(in srgb, var(--color-foreground) 14%, transparent);
    --bokja-search-fill: color-mix(in srgb, var(--color-foreground) 5%, transparent);
    /* The bar itself is a constant light-grey box (no focus outline) - James 2026-06-17. */
    --bokja-search-box: color-mix(in srgb, var(--color-foreground) 7%, transparent);
    position: static;
    display: inline-flex;
    align-items: center;
  }
  .bokja-search__form {
    position: static;
    width: auto;
    margin: 0;
  }

  /* ---- Resting bar: magnifier + quiet field, subtle fill, sharp corners (house style) ---- */
  .bokja-search__bar {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    inline-size: clamp(168px, 15vw, 224px);
    padding: 5px 12px;
    background: var(--bokja-search-box);
    border: 0.5px solid transparent;
    border-radius: 0;
    transition: background 160ms ease, border-color 160ms ease;
  }
  /* Focus keeps the same grey box - no outline swap (James 2026-06-17). */
  .bokja-search:focus-within .bokja-search__bar {
    background: var(--bokja-search-box);
    border-color: transparent;
  }
  .bokja-search__icon {
    flex: 0 0 auto;
    display: inline-flex;
    inline-size: 15px;
    block-size: 15px;
    color: color-mix(in srgb, var(--color-foreground) 55%, transparent);
  }
  .bokja-search__icon svg { inline-size: 100%; block-size: 100%; display: block; }

  /* Specificity guard (2026-08-10): the input also carries Horizon's `search-input`
     class, and search-modal.liquid sets `font-size: clamp(20px, 2.4vw, 30px)` on
     `input.search-input` for the full-screen modal. Both selectors were 0,1,1, so
     source order in the compiled bundle decided it and the modal won, rendering the
     header field at 30px. Scoping to .bokja-search makes it 0,2,1 and order-proof.
     The mobile rule below already did this; desktop never got the same guard. */
  .bokja-search input.bokja-search__input,
  .bokja-search .bokja-search__input:is(:focus, :focus-visible, :hover) {
    flex: 1 1 auto;
    min-inline-size: 0;
    inline-size: 100%;
    border: 0;
    border-radius: 0;
    background: transparent;
    padding: 0;
    margin: 0;
    font-family: var(--font-body--family);
    font-size: var(--bt-nav);
    letter-spacing: 0.04em;
    line-height: 1.2;
    color: var(--color-foreground);
    outline: none;
    box-shadow: none;
    appearance: none;
    -webkit-appearance: none;
    text-overflow: ellipsis;
  }
  .bokja-search__input::placeholder {
    color: color-mix(in srgb, var(--color-foreground) 45%, transparent);
    letter-spacing: 0.08em;
  }
  .bokja-search__input::-webkit-search-cancel-button,
  .bokja-search__input::-webkit-search-decoration { -webkit-appearance: none; display: none; }

  /* "Clear" - a quiet uppercase text link (not a circular icon button). */
  .bokja-search__reset {
    flex: 0 0 auto;
    cursor: pointer;
    padding: 0;
    margin-inline-start: 8px;
    background: transparent;
    border: 0;
    color: var(--color-foreground);
    opacity: 0.55;
    font-family: var(--font-body--family);
    font-size: var(--bt-micro);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    transition: opacity 160ms ease;
  }
  .bokja-search__reset:hover { opacity: 1; }
  .bokja-search__reset[hidden] { display: none; }
  .bokja-search__reset svg,
  .bokja-search__reset-icon { display: none; }

  /* Mobile-only controls - both hidden on desktop, where the persistent bar is the affordance. */
  .bokja-search__mclose { display: none; }
  .bokja-search__mtoggle { display: none; }

  /* ---- The dropped panel: fixed, full-bleed, SOLID, sits directly under the header ---- */
  .bokja-search__panel {
    display: none;
    position: fixed;
    inset-inline: 0;
    inset-block-start: var(--bokja-search-top, 64px);
    z-index: 19;
    background: var(--color-background);
    border-block-end: 0.5px solid var(--bokja-search-hairline);
    box-shadow: 0 18px 40px -36px color-mix(in srgb, var(--color-foreground) 50%, transparent);
  }
  /* Arket: an empty focus shows just the bar; the sheet appears once the field has text. */
  .bokja-search:focus-within:has(.bokja-search__input:not(:placeholder-shown)) .bokja-search__panel {
    display: block;
  }
  .bokja-search__results {
    max-block-size: min(72dvh, 620px);
    overflow-y: auto;
    padding: clamp(18px, 2vw, 30px) clamp(20px, 4vw, 64px) clamp(22px, 3vw, 40px);
    margin-inline: auto;
    max-inline-size: 1440px;
    scrollbar-width: none;
  }
  .bokja-search__results::-webkit-scrollbar { display: none; }

  /* Quiet the matched-term highlight: Shopify's styled_text wraps it in <mark> (browser-yellow). */
  .bokja-search__panel mark {
    background: transparent;
    color: inherit;
    font-weight: 600;
  }

  /* Never show the recently-viewed block inside the panel. */
  .bokja-search__panel .recently-viewed-wrapper { display: none; }

  /* Section titles ("Products", "Suggestions") - quiet uppercase with breathing room. */
  .bokja-search__panel .predictive-search-results__title {
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    font-weight: 400;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: color-mix(in srgb, var(--color-foreground) 55%, transparent);
    margin-block: 4px 14px;
  }

  /* Query suggestions: quiet chips, sharp corners. */
  .bokja-search__panel .predictive-search-results__wrapper-queries {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 26px;
    padding: 0;
    list-style: none;
  }
  .bokja-search__panel .predictive-search-results__card--query { display: inline-flex; }
  .bokja-search__panel .predictive-search-results__pill {
    display: inline-flex;
    align-items: center;
    padding: 7px 13px;
    background: var(--bokja-search-fill);
    border: 0;
    border-radius: 0;
    color: var(--color-foreground);
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    letter-spacing: 0.02em;
    text-decoration: none;
    transition: background 140ms ease;
  }
  .bokja-search__panel .predictive-search-results__pill:hover,
  .bokja-search__panel .predictive-search-results__card--query[aria-selected='true'] .predictive-search-results__pill {
    background: color-mix(in srgb, var(--color-foreground) 11%, transparent);
  }

  /* Products: a clean, even grid of 4:5 cards. */
  .bokja-search__panel .predictive-search-results__products { margin: 0; }
  .bokja-search__panel .predictive-search-results__wrapper-products {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: clamp(12px, 1.6vw, 22px);
    margin: 0;
    padding: 0;
    list-style: none;
  }
  .bokja-search__panel .predictive-search-results__card--product { margin: 0; }
  /* Match the quiet collection-card text size: the default resource-card title/price used the larger
     body size (16px), which read inconsistent with the grid (James, 2026-06-17). */
  .bokja-search__panel .predictive-search-results__card--product .resource-card__title,
  .bokja-search__panel .predictive-search-results__card--product .resource-card__subtext,
  .bokja-search__panel .predictive-search-results__card--product .resource-card__content [class*='price'] {
    font-size: var(--bt-card);
    line-height: 1.3;
  }

  /* No-results line. */
  .bokja-search__panel .predictive-search-results__no-results {
    padding: 6px 0 12px;
    color: color-mix(in srgb, var(--color-foreground) 70%, transparent);
    font-size: var(--bt-micro);
  }

  /* "View all results" - a quiet centred link, shown only when there are results. */
  .bokja-search__footer {
    display: none;
    padding: 0 clamp(20px, 4vw, 64px) clamp(20px, 3vw, 38px);
    text-align: center;
  }
  .bokja-search:has([data-search-results]):not(:has(.predictive-search-results__no-results)) .bokja-search__footer {
    display: block;
  }
  .bokja-search__viewall {
    margin: 0 auto;
    background: transparent;
    border: 0;
    box-shadow: none;
    color: var(--color-foreground);
    font-family: var(--font-body--family);
    font-size: var(--bt-label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
  }

  /* ---- The 750-1100 stub is GONE (Malou 2026-08-18). It rendered a 36px pill: not a search
     bar, not an icon, and the only control in the header drawn as neither. The band now runs
     the phone model below - loupe at rest, full-width strip on tap - so the field has exactly
     two states at every width. The `is-mopen` open state was already width-agnostic (it pins to
     the header's MEASURED bottom via --bokja-search-top), which is why this is a breakpoint
     move rather than a second implementation. ---- */

  /* ============================================================================================
     PHONES AND TABLET (<=1100px): the loupe ONLY at rest; the field opens BELOW the header
     (James, 2026-08-08; band widened from 749 to 1100 by Malou, 2026-08-18).
     ============================================================================================
     The bar is not merely narrowed here - the whole form is display:none until the loupe is
     tapped. The previous model kept a 36px bar mounted with `inline-size: 0` on the input, but
     the input still carries `flex: 1 1 auto`, so it grew back into the bar's ~5px of slack and
     painted the first glyph of the "Search" placeholder; the 36px box also overlapped the
     absolutely-centred birds mark by ~16px at 390w. Nothing is mounted now, so neither can
     happen, and the engine has no focusable input to grab on init.

     TEAR-GUARD (assets/bokja-custom.css, #header-group): NO transforms and no transform-class
     will-change on the header or its ancestors - that would make the group the containing block
     for its fixed descendants and swallow the mega drawer. This field is `position: fixed` on a
     DESCENDANT of the header, which is exactly what the results panel already does. */
  @media screen and (max-width: 1100px) {
    /* ---- Closed: one loupe, sized and weighted like the account / wishlist icons beside it ---- */
    .bokja-search__form { display: none; }
    .bokja-search__mtoggle {
      position: relative;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      inline-size: 21px;
      block-size: 21px;
      margin: 0;
      padding: 0;
      border: 0;
      background: none;
      color: var(--color-foreground);
      cursor: pointer;
      -webkit-tap-highlight-color: transparent;
    }
    /* A 39px touch target without a 39px layout box (a padded button would shift the utilities row). */
    .bokja-search__mtoggle::after { content: ''; position: absolute; inset: -9px; }
    .bokja-search__mtoggle-icon { display: inline-flex; inline-size: 21px; block-size: 21px; }
    .bokja-search__mtoggle-icon svg { inline-size: 100%; block-size: 100%; display: block; }
    .bokja-search__mtoggle:focus { outline: none; }
    .bokja-search__mtoggle:focus-visible { outline: 2px solid var(--color-foreground); outline-offset: 3px; }

    /* ---- Open: a full-width strip pinned directly under the header. --bokja-search-top is the
       header's MEASURED bottom (script above), so it tracks the announcement + nav as one unit. ---- */
    .bokja-search.is-mopen .bokja-search__form {
      display: flex;
      flex-direction: column;
      position: fixed;
      inset-inline: 0;
      inset-block-start: var(--bokja-search-top, 116px);
      z-index: 20;
      inline-size: auto;
      max-block-size: calc(100dvh - var(--bokja-search-top, 116px));
      background: var(--color-background);
      border-block-end: 0.5px solid var(--bokja-search-hairline);
    }
    .bokja-search.is-mopen .bokja-search__bar {
      display: flex;
      flex: 0 0 auto;
      inline-size: auto;
      gap: 9px;
      margin: 10px var(--bokja-edge, 14px);
      padding: 10px 12px;
      justify-content: flex-start;
      background: var(--bokja-search-box);
      border-color: transparent;
    }
    .bokja-search.is-mopen .bokja-search__input {
      inline-size: auto;
      flex: 1 1 auto;
      font-size: 16px; /* keeps iOS from zooming the viewport on focus */
    }
    /* :not([hidden]) is load-bearing. The engine toggles the `hidden` ATTRIBUTE on this button
       (empty field = hidden), and `.bokja-search.is-mopen .bokja-search__reset` (0,3,0) outranks
       the base `.bokja-search__reset[hidden]` (0,2,0) - so a bare display rule here resurrects
       "Clear" on an empty field. Same class of bug as the [hidden] filtered grid, 2026-08-06. */
    .bokja-search.is-mopen .bokja-search__reset:not([hidden]) { display: inline-flex; }
    .bokja-search.is-mopen .bokja-search__mclose {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      flex: 0 0 auto;
      inline-size: 20px;
      block-size: 20px;
      margin-inline-start: 8px;
      padding: 0;
      background: none;
      border: 0;
      cursor: pointer;
      color: var(--color-foreground);
      opacity: 0.7;
      -webkit-tap-highlight-color: transparent;
    }
    .bokja-search.is-mopen .bokja-search__mclose .svg-wrapper {
      display: inline-flex;
      inline-size: 13px;
      block-size: 13px;
    }
    .bokja-search.is-mopen .bokja-search__mclose svg { inline-size: 100%; block-size: 100%; display: block; }
    .bokja-search.is-mopen .bokja-search__mclose:focus { outline: none; }
    .bokja-search.is-mopen .bokja-search__mclose:focus-visible { outline: 2px solid var(--color-foreground); outline-offset: 2px; }

    /* Results flow UNDER the open field inside the same strip (they are a fixed sheet of their own
       on desktop). Shown on TYPED TEXT alone, not :focus-within - a tap inside the sheet on touch
       moves focus and would otherwise collapse it mid-scroll. */
    .bokja-search.is-mopen .bokja-search__panel {
      position: static;
      inset: auto;
      flex: 1 1 auto;
      min-block-size: 0;
      z-index: auto;
      border-block-end: 0;
      box-shadow: none;
    }
    .bokja-search.is-mopen:has(.bokja-search__input:not(:placeholder-shown)) .bokja-search__panel {
      display: flex;
      flex-direction: column;
    }
    .bokja-search.is-mopen .bokja-search__results {
      flex: 1 1 auto;
      min-block-size: 0;
      max-block-size: none;
      margin-inline: 0;
      max-inline-size: none;
      padding: 2px var(--bokja-edge, 14px) 16px;
    }
    .bokja-search.is-mopen .bokja-search__footer {
      flex: 0 0 auto;
      padding: 0 var(--bokja-edge, 14px) 18px;
    }
    .bokja-search__panel .predictive-search-results__wrapper-products {
      grid-template-columns: repeat(2, 1fr);
    }
  }
/* END_SNIPPET:bokja-search-inline */

/* START_SNIPPET:bokja-shipping-note (INDEX:212) */
.bokja-shipping-note {
    margin: 10px 0 0;
    font-size: var(--bt-micro);
    letter-spacing: 0.02em;
    line-height: 1.4;
    color: var(--color-foreground);
    opacity: 0.6;
  }
/* END_SNIPPET:bokja-shipping-note */

/* START_SNIPPET:bokja-signup-ack (INDEX:213) */
/* Box tokens mirror dialog.bokja-collective-invite (blocks/bokja-collective-invite.liquid):
     same paper, same hairline, same centred column — the two pop-ups are one conversation,
     apply and acknowledge. This one renders inside the footer, not the announcement bar's
     text block, so it does not need the invite's specificity guard against
     `.text-block > *:last-child`. */
  dialog.bokja-signup-ack {
    position: fixed;
    inset: 0;
    margin: auto;
    width: min(30rem, calc(100vw - 2.5rem));
    max-width: 30rem;
    height: fit-content;
    max-height: calc(100vh - 3rem);
    max-height: calc(100dvh - 3rem);
    overflow-y: auto;
    padding: 0;
    border: 1px solid #1a1a1a;
    border-radius: 0;
    background: #fbfbf6;
    color: #1a1a1a;
    font-family: var(--font-body--family);
    font-size: var(--bt-body);
    font-weight: 400;
    line-height: 1.4;
    letter-spacing: normal;
    text-transform: none;
    /* start, not center (Malou, 2026-08-24) - see the invite dialog's twin note. */
    text-align: start;
  }

  dialog.bokja-signup-ack::backdrop {
    background: rgba(26, 26, 26, 0.35);
  }

  .bokja-signup-ack__dismiss {
    position: absolute;
    top: 0.5rem;
    inset-inline-end: 0.5rem;
  }

  .bokja-signup-ack__dismiss button {
    background: none;
    border: 0;
    padding: 0.5rem;
    font: inherit;
    font-size: 1.25rem;
    line-height: 1;
    color: inherit;
    cursor: pointer;
  }

  .bokja-signup-ack__body {
    padding: 2.5rem 2rem 2.25rem;
    display: flex;
    flex-direction: column;
    /* start ranks the SIGN IN button and Continue browsing on the text edge
       (Malou, 2026-08-24). */
    align-items: start;
    gap: 0.75rem;
  }

  .bokja-signup-ack__eyebrow {
    margin: 0;
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
  }

  .bokja-signup-ack__head {
    margin: 0;
    /* The site's Collective title voice, same as the invite head (Malou, 2026-08-24:
       "apply the italic georgia to all the pop up titles"). */
    font-family: Georgia, 'Times New Roman', serif;
    font-size: var(--bt-h2);
    font-style: italic;
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.2;
    /* Rhythm matched to the invite dialog (Malou, 2026-08-24: "is the spacing between
       the sentences the same?" - it was not: invite measured 6/7px eyebrow-head-dek,
       this dialog 12/12 from the column's uniform gap). Negative starts tighten just
       the title cluster; everything below keeps the 0.75rem column gap. */
    margin-block-start: -6px;
  }
  .bokja-signup-ack__dek,
  .bokja-signup-ack__member {
    margin: 0;
    max-width: 24rem;
  }

  /* After the margin: 0 reset above, or it loses on order (the 12px column gap minus
     this = the invite's measured 7px head-dek). */
  .bokja-signup-ack__dek {
    margin-block-start: -5px;
  }

  .bokja-signup-ack__member {
    margin-top: 0.5rem;
  }

  /* Shared by the sign-in ANCHOR and the signed-in confirmation's Continue BUTTON —
     `background: none` and `font: inherit` are the button's UA chrome reset and inert
     on the anchor; the font-size/spacing lines below re-state their register on top. */
  .bokja-signup-ack__signin {
    display: inline-block;
    margin-top: 0.75rem;
    padding: 0.7rem 1.6rem;
    border: 1px solid #1a1a1a;
    background: none;
    font: inherit;
    color: inherit;
    text-decoration: none;
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.12em;
    cursor: pointer;
  }

  .bokja-signup-ack__signin:hover {
    background: #1a1a1a;
    color: #fbfbf6;
  }

  /* Quiet on purpose: underlined text, not a second bordered button. Sign in is the only
     control here that changes what happens next, so it stays the one thing that looks like a
     button; this is an exit, and an exit should be findable, not loud. */
  .bokja-signup-ack__continue {
    margin-top: 1.25rem;
  }

  .bokja-signup-ack__continue button {
    background: none;
    border: 0;
    padding: 0;
    font: inherit;
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 0.25em;
    text-decoration-thickness: 1px;
    cursor: pointer;
    opacity: 0.7;
  }

  .bokja-signup-ack__continue button:hover {
    opacity: 1;
  }

  /* Floating-window wait state: while the small sign-in window is open over the site,
     the member question and its button yield to one quiet instruction. */
  .bokja-signup-ack__waiting {
    display: none;
    margin: 0.5rem 0 0;
    max-width: 24rem;
    font-style: italic;
  }

  dialog.is-waiting .bokja-signup-ack__member,
  dialog.is-waiting .bokja-signup-ack__account,
  /* Scoped to `dialog.is-waiting`, NOT `dialog.bokja-signup-ack.is-waiting`: since
     2026-08-21 this content is MOVED into whichever dialog is already open (the membership
     pop-up) rather than shown in its own, so a selector naming this dialog's class would
     stop matching exactly when the visitor is looking at it. See openAck() in
     assets/bokja-signup-ack.js. */
  dialog.is-waiting .bokja-signup-ack__signin {
    display: none;
  }

  dialog.is-waiting .bokja-signup-ack__waiting {
    display: block;
  }
/* END_SNIPPET:bokja-signup-ack */

/* START_SNIPPET:bokja-size-fit-drawer (INDEX:214) */
.size-fit-drawer { display: contents; }

    /* Side drawer: pin full-height to the inline-end and slide in from the edge,
       same as the fabric ("view all") drawer — they share fabric-drawer-component.
       Without these rules the dialog falls back to base.css .dialog-modal centring
       (it still slides on x via .dialog-drawer, so it reads as "slides in, lands
       centred"). Mirrors bokja-fabric-drawer.liquid. */
    .size-fit-drawer__dialog {
      position: fixed;
      overflow: hidden;
      border-radius: 0;
      inline-size: 100%;
      block-size: 100%;
      margin-block: 0;
      margin-inline-start: auto;
      margin-inline-end: 0;
      padding: 0;
      border-inline-start: var(--style-border-drawer);
      box-shadow: var(--shadow-drawer);
      background-color: var(--color-background);
    }

    @media screen and (min-width: 750px) {
      .size-fit-drawer__dialog {
        inline-size: var(--sidebar-width);
        max-inline-size: 95vw;
      }
      /* RTL desktop: panel sits on the left, slide it in from the left edge. */
      [dir='rtl'] .size-fit-drawer__dialog.dialog-drawer[open] { --start-x: -100%; }
      [dir='rtl'] .size-fit-drawer__dialog.dialog-drawer[open].dialog-closing { --start-x: 0px; --end-x: -100%; }
    }

    .size-fit-drawer__dialog:modal { max-block-size: 100dvh; overflow-y: hidden; }

    /* The inner is the scroll container; the header sticks to its top edge. */
    .size-fit-drawer__inner {
      block-size: 100%;
      overflow-y: auto;
      overscroll-behavior: contain;
    }

    .size-fit-drawer__header {
      position: sticky;
      inset-block-start: 0;
      z-index: 1;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      padding: var(--padding-xl);
      background-color: var(--color-background);
      border-block-end: 0.5px solid color-mix(in srgb, var(--color-foreground) 16%, transparent);
    }
    @media screen and (min-width: 750px) {
      .size-fit-drawer__header { padding-inline: var(--padding-2xl); }
    }

    .size-fit-drawer__heading { margin: 0; }
    /* The base .h4 class renders this ~28px — oversized in a ~400px panel where the labels are 12px and
       the content 13px. Step it down to a drawer-appropriate title; the 2-class selector beats .h4. (James, 2026-06-30) */
    .size-fit-drawer__header .size-fit-drawer__heading {
      font-size: var(--bt-h2);
      line-height: 1.25;
    }

    .size-fit-drawer__close { flex: 0 0 auto; }

    /* The dialog now has zero padding (it's the full-height panel), so the content
       column carries its own gutters — matches the fabric drawer's grid padding. */
    .size-fit-drawer__body { padding: var(--padding-xl); }
    @media screen and (min-width: 750px) {
      .size-fit-drawer__body { padding-inline: var(--padding-2xl); }
    }

    .size-fit-drawer__intro {
      margin-block: 0 16px;
      font-size: var(--bt-body);
      line-height: 1.5;
      letter-spacing: 0.01em;
      color: var(--color-foreground);
      opacity: 0.75;
      max-inline-size: 52ch;
    }

    .size-fit-drawer__fit { margin-block: 0 4px; }

    .size-fit-drawer__section { margin-block-start: 22px; }

    .size-fit-drawer__section-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      margin-block-end: 8px;
    }

    .size-fit-drawer__subhead {
      margin: 0 0 8px;
      font-family: var(--font-body--family);
      font-size: var(--bt-label);
      font-weight: 400;
      text-transform: uppercase;
      letter-spacing: 0.1em;
      color: var(--color-foreground);
      opacity: 0.6;
    }
    .size-fit-drawer__section-head .size-fit-drawer__subhead { margin: 0; }

    /* Two narrow tables (size conversion + body measurements), each full-width with
       fixed columns so neither overflows the panel — this is what removes the
       horizontal scroll the single 9-column table forced. */
    .size-fit-drawer__table {
      inline-size: 100%;
      table-layout: fixed;
      border-collapse: collapse;
      font-family: var(--font-body--family);
      font-size: var(--bt-body);
      letter-spacing: 0.01em;
    }

    .size-fit-drawer__table th,
    .size-fit-drawer__table td {
      padding: 9px 6px;
      text-align: center;
      white-space: nowrap;
      border-block-end: 0.5px solid color-mix(in srgb, var(--color-foreground) 12%, transparent);
    }

    /* Size label column narrower + start-aligned; gives the data columns the room. */
    .size-fit-drawer__table th:first-child,
    .size-fit-drawer__table td:first-child { inline-size: 18%; }

    .size-fit-drawer__table thead th {
      font-weight: 400;
      text-transform: uppercase;
      letter-spacing: 0.06em;
      font-size: var(--bt-label);
      color: var(--color-foreground);
      opacity: 0.6;
    }

    .size-fit-drawer__band,
    .size-fit-drawer__table tbody th[scope="row"] {
      text-align: start;
      font-weight: 500;
    }

    /* cm/in: show one unit at a time, driven by data-unit on the body. */
    .size-fit-drawer__body[data-unit="cm"] .u-in { display: none; }
    .size-fit-drawer__body[data-unit="in"] .u-cm { display: none; }

    /* Highlight the conversion column for the visitor's market (server-set). Quiet
       tonal wash + slightly heavier weight — no colour fill (brand rule). */
    .size-fit-drawer__body[data-region="eu"] [data-region-col="eu"],
    .size-fit-drawer__body[data-region="uk"] [data-region-col="uk"],
    .size-fit-drawer__body[data-region="us"] [data-region-col="us"],
    .size-fit-drawer__body[data-region="it"] [data-region-col="it"],
    .size-fit-drawer__body[data-region="fr"] [data-region-col="fr"] {
      background: color-mix(in srgb, var(--color-foreground) 6%, transparent);
    }
    .size-fit-drawer__body[data-region="eu"] td[data-region-col="eu"],
    .size-fit-drawer__body[data-region="uk"] td[data-region-col="uk"],
    .size-fit-drawer__body[data-region="us"] td[data-region-col="us"],
    .size-fit-drawer__body[data-region="it"] td[data-region-col="it"],
    .size-fit-drawer__body[data-region="fr"] td[data-region-col="fr"] {
      font-weight: 500;
    }

    .size-fit-drawer__note {
      margin-block: 6px 0;
      font-size: var(--bt-micro);
      line-height: 1.5;
      color: var(--color-foreground);
      opacity: 0.7;
      max-inline-size: 52ch;
    }

    .size-fit-drawer__prov {
      margin-block: 12px 0;
      font-size: var(--bt-micro);
      letter-spacing: 0.02em;
      font-style: italic;
      color: var(--color-foreground);
      opacity: 0.55;
    }

    /* Phone: bottom sheet, slide on Y (mirrors the cart + fabric drawers). */
    @media screen and (max-width: 749px) {
      .size-fit-drawer__dialog {
        inset-block-start: auto;
        inset-block-end: 0;
        inset-inline: 0;
        inline-size: 100%;
        max-inline-size: 100%;
        block-size: auto;
        max-block-size: 85dvh;
        margin: 0;
        border-inline-start: none;
        border-block-start: var(--style-border-drawer);
      }
      .size-fit-drawer__dialog:modal { max-block-size: 85dvh; }
      .size-fit-drawer__inner { max-block-size: 85dvh; }
      .size-fit-drawer__dialog.dialog-drawer[open] { --start-x: 0px; --end-x: 0px; --start-y: 100%; --end-y: 0px; }
      .size-fit-drawer__dialog.dialog-drawer[open].dialog-closing { --start-x: 0px; --end-x: 0px; --start-y: 0px; --end-y: 100%; }
    }
/* END_SNIPPET:bokja-size-fit-drawer */

/* START_SNIPPET:bokja-swatch-image (INDEX:216) */
/* Shared fill rule for every swatch/thumbnail image, whichever source won. */
  .bokja-swatch-fill {
    inline-size: 100%;
    block-size: 100%;
    object-fit: cover;
    display: block;
  }

  /* "Image to come" placeholder: a quiet monochrome glyph centred in the cell,
     no fill, no colour, so it reads as pending rather than decorative. */
  .bokja-swatch-needed {
    display: flex;
    align-items: center;
    justify-content: center;
    inline-size: 100%;
    block-size: 100%;
    color: var(--color-foreground);
    opacity: 0.4;
    background: var(--color-background);
  }
/* END_SNIPPET:bokja-swatch-image */

/* START_SNIPPET:button (INDEX:219) */
.link {
    text-decoration: none;
    text-decoration-color: currentcolor;

    &:hover {
      color: var(--color-primary-hover);
      text-decoration-color: transparent;
    }
  }
/* END_SNIPPET:button */

/* START_SNIPPET:buy-buttons-styles (INDEX:220) */
.buy-buttons-block {
    --buy-button-preferred-width: 185px;

    width: 100%;
  }

  .product-form-buttons {
    display: flex;
    flex-wrap: wrap;
  }

  .product-form-buttons:not(:has(.quantity-rules)) {
    gap: calc(var(--gap-sm) / 2);

    @media screen and (min-width: 750px) {
      gap: var(--gap-sm);
    }
  }

  .product-form-buttons
    > *:not(.quantity-selector-wrapper, .quantity-rules, .quantity-label, .volume-pricing, .product-form-text__error) {
    flex: 1 1 var(--buy-button-preferred-width, 0);
    min-width: fit-content;
  }

  .product-form-buttons--stacked
    > *:not(.quantity-selector-wrapper, .quantity-rules, .quantity-label, .volume-pricing, .product-form-text__error) {
    flex-basis: 51%;
  }

  .product-form-buttons button {
    width: 100%;
    padding-block: var(--padding-lg);
  }

  .quantity-selector {
    flex-grow: 0;
    flex-shrink: 0;
    height: var(--height-buy-buttons);
  }

  .quantity-label {
    flex: 1 0 100%;
    width: 100%;
    font-size: var(--font-size--sm);
    margin-block-end: var(--gap-xs);
  }

  .quantity-label__cart-count {
    color: var(--color-foreground-secondary);
  }

  .quantity-rules {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    row-gap: calc(var(--gap-xs) / 2);
    flex: 1 0 100%;
    width: 100%;
    font-size: var(--font-size--xs);
    color: var(--color-foreground-secondary);
    margin-block-start: var(--gap-xs);
    margin-block-end: var(--gap);
  }

  .product-form-buttons:has(~ .volume-pricing .volume-pricing__title) .quantity-rules {
    margin-block-end: var(--gap-md);
  }

  .quantity-rules__item {
    position: relative;
    display: inline-block;
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }

  .quantity-rules__item:not(:last-child) {
    padding-right: var(--padding-xl);
    margin-right: var(--margin-2xs);
  }

  .quantity-rules__item:not(:last-child)::after {
    content: '•';
    position: absolute;
    inset-inline-end: 0.5rem;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.5em;
    line-height: 0;
  }

  .add-to-cart-button {
    height: var(--height-buy-buttons);
    text-transform: var(--button-text-case-primary);
  }

  .add-to-cart-button.button-secondary {
    text-transform: var(--button-text-case-secondary);
  }

  .product-form-text__error {
    display: flex;
    flex: 1 0 100%;
    align-items: flex-start;
    gap: var(--gap-xs);
    margin-block-end: var(--gap-xs);
  }

  .product__pickup-availabilities {
    width: 100%;
  }

  .pickup-availability__column {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
  }

  .pickup-availability__row {
    display: flex;
    gap: var(--padding-xs);
  }

  .pickup-availability__dialog-row {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
  }

  .pickup-availability__header-container {
    padding-block-end: var(--padding-2xl);
  }

  .pickup-location__wrapper {
    display: flex;
    flex-direction: column;
    padding-block: var(--padding-2xl);
    border-top: 1px solid var(--color-border);
    gap: var(--padding-xs);
  }

  .pickup-location__address-wrapper {
    display: flex;
    flex-direction: column;
    gap: var(--padding-md);
  }

  .pickup-location__dialog {
    padding: var(--padding-2xl);
    position: fixed;
    border-radius: 0;
    width: var(--sidebar-width);
    max-width: 95vw;
    height: 100%;
    margin: 0 0 0 auto;
    border: var(--style-border-drawer);
    box-shadow: var(--shadow-drawer);
    background-color: var(--color-background);
  }

  .pickup-location__dialog:modal {
    max-height: 100dvh;
  }

  .pickup-location__text-sm {
    font-size: var(--font-size--sm);
    margin: 0;
  }

  .pickup-location__text-xs {
    font-size: var(--font-size--xs);
    margin: 0;
  }

  .pickup-location__button {
    width: fit-content;
    color: var(--color-primary);
    font-size: var(--font-size--xs);
    font-family: var(--font-body--family);
    padding: 0;
    cursor: pointer;
    margin-block: var(--margin-xs);
  }

  .pickup-location__button:hover {
    color: var(--color-primary-hover);
  }

  .pickup-location__h4 {
    margin: 0;
  }

  .pickup-location__text-bold {
    font-size: var(--font-size--md);
    font-weight: 600;
    margin: 0;
  }

  .pickup-location__availability-wrapper {
    display: flex;
    align-items: center;
    gap: var(--gap-xs);
    font-family: var(--font-paragraph--family);
  }

  .pickup-location__address {
    font-style: normal;
  }

  .pickup-location__close-button {
    top: calc(var(--padding-2xl) - (var(--icon-size-xs) / 2));
    right: calc(var(--padding-2xl) - var(--icon-size-xs));
  }

  .volume-pricing {
    display: block;
    width: 100%;
    margin-bottom: var(--gap);
  }

  .volume-pricing:not(:has(.volume-pricing__title)) {
    margin-top: 0;
    margin-bottom: 0;
  }

  .volume-pricing__title {
    display: block;
    margin-block-end: var(--gap-sm);
    font-size: var(--font-size--sm);
    font-weight: var(--font-body--weight);
    color: var(--color-foreground);
  }

  .volume-pricing__table {
    width: 100%;
  }

  .volume-pricing__row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-block: var(--padding-sm);
    padding-inline: var(--padding-md);
    font-size: var(--font-size--sm);
  }

  .volume-pricing__row--even {
    background: rgb(var(--color-foreground-rgb) / var(--opacity-5));
  }

  .volume-pricing__row--odd {
    background: var(--color-background);
  }

  .volume-pricing__collapsible-wrapper {
    block-size: 0;
    overflow-y: clip;
    opacity: 0;
    interpolate-size: allow-keywords;
    transition: opacity var(--animation-speed-slow) var(--animation-easing),
      block-size var(--animation-speed-slow) var(--animation-easing);
  }

  .volume-pricing__toggle {
    width: 100%;
    padding-bottom: 0;
    padding-inline: 0;
    text-align: left;
    color: var(--color-foreground-secondary);
    font-size: var(--font-size--xs);
    cursor: default;
    margin-block-start: 0;
    pointer-events: none;
  }

  button.volume-pricing__toggle {
    /* Need the extra specificity to override .product-form-buttons button */
    padding-block: var(--padding-sm);
  }

  .volume-pricing__toggle-text {
    cursor: pointer;
    display: inline-block;
    pointer-events: auto;
  }

  .volume-pricing__show-less {
    display: none;
  }

  .volume-pricing--expanded .volume-pricing__collapsible-wrapper {
    opacity: 1;
    block-size: auto;

    @starting-style {
      block-size: 0;
      opacity: 0;
      overflow-y: clip;
    }
  }

  .volume-pricing--expanded .volume-pricing__show-more {
    display: none;
  }

  .volume-pricing--expanded .volume-pricing__show-less {
    display: inline;
  }

  /* Accelerated checkout styles — co-located here so they compile on pages
     where the quick-add modal can display buy buttons (e.g. collection pages). */
  .accelerated-checkout-block[data-shopify-visual-preview] {
    width: 300px;
  }

  more-payment-options-link {
    font-size: smaller;
  }

  more-payment-options-link a {
    --button-color: var(--color-primary);
  }

  more-payment-options-link a:hover {
    --button-color: var(--color-primary-hover);
  }

  .shopify-payment-button__more-options[aria-hidden='true'] {
    display: none;
  }
/* END_SNIPPET:buy-buttons-styles */

/* START_SNIPPET:card-gallery (INDEX:221) */
.card-gallery {
    overflow: hidden;
    container-type: inline-size; /* Make card-gallery a container */
    container-name: card-gallery-container; /* Optional: name the container */
  }

  .card-gallery__placeholder svg {
    height: 100%;
    width: 100%;
  }

  .card-gallery svg {
    aspect-ratio: var(--gallery-aspect-ratio, var(--ratio));
  }

  .product-card-gallery__title-placeholder {
    padding: var(--padding-md);
    font-size: var(--font-size--2xl);
    line-height: var(--line-height--display-loose);
    word-break: break-word;
    color: var(--color-foreground);
    background-color: rgb(var(--color-foreground-rgb) / var(--opacity-5));
    aspect-ratio: var(--gallery-aspect-ratio);
    border-radius: var(--product-corner-radius);
    display: -webkit-box;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .product-card-gallery__title-placeholder a {
    color: var(--color-foreground);
  }

  @media screen and (min-width: 750px) {
    .product-grid[data-product-card-size='extra-large'] .product-card-gallery__title-placeholder {
      padding: var(--padding-3xl);
      font-size: var(--font-size--3xl);
    }

    .product-grid[data-product-card-size='large'] .product-card-gallery__title-placeholder {
      padding: var(--padding-2xl);
      font-size: var(--font-size--2xl);
    }

    .product-grid[data-product-card-size='medium'] .product-card-gallery__title-placeholder {
      padding: var(--padding-xl);
      font-size: var(--font-size--xl);
    }

    .product-grid[data-product-card-size='small'] .product-card-gallery__title-placeholder {
      padding: var(--padding-sm);
      font-size: var(--font-size--lg);
    }

    .product-grid[data-product-card-size='extra-large']
      .card-gallery.card-gallery--badge-top-right
      .product-card-gallery__title-placeholder {
      padding-right: calc(var(--padding-3xl) + 50px);
    }

    .product-grid[data-product-card-size='large']
      .card-gallery.card-gallery--badge-top-right
      .product-card-gallery__title-placeholder {
      padding-right: calc(var(--padding-2xl) + 50px);
    }

    .product-grid[data-product-card-size='medium']
      .card-gallery.card-gallery--badge-top-right
      .product-card-gallery__title-placeholder {
      padding-right: calc(var(--padding-xl) + 50px);
    }

    .product-grid[data-product-card-size='small']
      .card-gallery.card-gallery--badge-top-right
      .product-card-gallery__title-placeholder {
      padding-right: calc(var(--padding-sm) + 50px);
    }

    .product-grid[data-product-card-size='extra-large']
      .card-gallery.card-gallery--badge-top-left
      .product-card-gallery__title-placeholder {
      padding-top: calc(var(--padding-3xl) + 40px);
    }

    .product-grid[data-product-card-size='large']
      .card-gallery.card-gallery--badge-top-left
      .product-card-gallery__title-placeholder {
      padding-top: calc(var(--padding-2xl) + 40px);
    }

    .product-grid[data-product-card-size='medium']
      .card-gallery.card-gallery--badge-top-left
      .product-card-gallery__title-placeholder {
      padding-top: calc(var(--padding-xl) + 40px);
    }

    .product-grid[data-product-card-size='small']
      .card-gallery.card-gallery--badge-top-left
      .product-card-gallery__title-placeholder {
      padding-top: calc(var(--padding-sm) + 40px);
    }

    .product-grid[data-product-card-size='extra-large']
      .card-gallery.card-gallery--badge-bottom-left
      .product-card-gallery__title-placeholder {
      padding-bottom: calc(var(--padding-3xl) + 40px);
    }

    .product-grid[data-product-card-size='large']
      .card-gallery.card-gallery--badge-bottom-left
      .product-card-gallery__title-placeholder {
      padding-bottom: calc(var(--padding-2xl) + 40px);
    }

    .product-grid[data-product-card-size='medium']
      .card-gallery.card-gallery--badge-bottom-left
      .product-card-gallery__title-placeholder {
      padding-bottom: calc(var(--padding-xl) + 40px);
    }

    .product-grid[data-product-card-size='small']
      .card-gallery.card-gallery--badge-bottom-left
      .product-card-gallery__title-placeholder {
      padding-bottom: calc(var(--padding-sm) + 40px);
    }
  }

  @media screen and (max-width: 749px) {
    .product-card-gallery__title-placeholder {
      font-size: var(--font-size--xl);
      padding: var(--padding-md);
    }

    .product-grid[data-product-card-size]
      .card-gallery.card-gallery--badge-top-right
      .product-card-gallery__title-placeholder {
      padding-right: calc(var(--padding-sm) + 50px);
    }

    .product-grid[data-product-card-size]
      .card-gallery.card-gallery--badge-top-left
      .product-card-gallery__title-placeholder {
      padding-top: calc(var(--padding-sm) + 40px);
    }

    .product-grid[data-product-card-size]
      .card-gallery.card-gallery--badge-bottom-left
      .product-card-gallery__title-placeholder {
      padding-bottom: calc(var(--padding-sm) + 40px);
    }
  }

  [product-grid-view='zoom-out'] .card-gallery .product-card-gallery__title-placeholder {
    /* stylelint-disable-next-line declaration-no-important */
    padding: var(--padding-xs) !important;
    font-size: var(--font-size--xs);
  }

  [product-grid-view='zoom-out'] .card-gallery .slideshow-control {
    min-width: auto;
  }

  ul[product-grid-view='zoom-out'] .product-grid__card .card-gallery {
    display: block;
  }

  [product-grid-view='zoom-out']
    .card-gallery
    > :is(quick-add-component, .product-badges, slideshow-component > slideshow-controls) {
    display: none;
  }

  ul[product-grid-view='zoom-out'] .card-gallery > img {
    display: block;
  }

  .card-gallery slideshow-arrows .slideshow-control {
    /* Align icons with quick-add button */
    padding-inline: var(--padding-xl);

    @container (max-width: 249px) {
      padding-inline: 0 var(--padding-sm);
    }
  }

  /*
   * Card galleries preview the next or previous images on 'pointerenter', so we
   * try to kick load them beforehand (they are lazy loaded otherwise).
   */
  .card-gallery
    :is(
      slideshow-slide:has(+ slideshow-slide[aria-hidden='false']),
      slideshow-slide[aria-hidden='false'] + slideshow-slide
    ) {
    content-visibility: auto;

    slideshow-component[actioned] & {
      content-visibility: visible;
    }
  }
/* END_SNIPPET:card-gallery */

/* START_SNIPPET:cart-bubble (INDEX:222) */
.cart-bubble {
    --cart-padding: 0.2em;

    position: relative;
    width: 20px;
    aspect-ratio: 1;
    border-radius: 50%;
    border-width: 0;
    display: flex;
    line-height: normal;
    align-items: center;
    justify-content: center;
    color: var(--color-primary-button-text);
    padding-inline: var(--cart-padding);
  }

  .cart-bubble[data-maintain-ratio] {
    aspect-ratio: 1;
  }

  .cart-bubble[data-maintain-ratio] .cart-bubble__background {
    border-radius: var(--style-border-radius-50);
  }

  .cart-bubble__background {
    position: absolute;
    inset: 0;
    background-color: var(--color-primary-button-background);
    border-radius: var(--style-border-radius-lg);
  }

  .cart-bubble__text {
    font-size: var(--font-size--3xs);
    z-index: var(--layer-flat);
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
  }
/* END_SNIPPET:cart-bubble */

/* START_SNIPPET:cart-items-component (INDEX:223) */
.cart-items-component {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
  }

  @media screen and (prefers-reduced-motion: no-preference) {
    html:active-view-transition-type(empty-cart-drawer) {
      .cart-items-component {
        view-transition-name: cart-drawer-content;
      }
    }

    html:active-view-transition-type(empty-cart-page) {
      .cart-items-component {
        view-transition-name: cart-page-content;
      }
    }
  }

  ::view-transition-old(cart-page-content) {
    animation: cart-page-content-old var(--animation-speed-fast) var(--animation-easing) forwards;
  }

  @keyframes cart-page-content-old {
    from {
      opacity: 1;
    }
    to {
      opacity: 0;
      filter: blur(4px);
    }
  }

  ::view-transition-old(cart-drawer-content) {
    transform-origin: 50% 33%;
    animation: cart-contents-old var(--spring-d280-b0-duration) var(--spring-d280-b0-easing) forwards;
  }

  ::view-transition-new(cart-drawer-content) {
    transform-origin: top center;
    animation: cart-contents-new var(--spring-d280-b0-duration) var(--spring-d280-b0-easing) forwards;
  }

  @keyframes cart-contents-old {
    to {
      scale: 0.92;
      opacity: 0;
    }
  }

  @keyframes cart-contents-new {
    from {
      scale: 1.05;
      translate: 0 128px;
      filter: blur(1px);
      opacity: 0;
    }
  }
/* END_SNIPPET:cart-items-component */

/* START_SNIPPET:cart-products (INDEX:224) */
.cart-items {
    --cart-item-media-width-min: 2.5rem;
    --cart-item-media-width-max: 7.5rem;

    container-name: cart-items;
    container-type: inline-size;
    width: 100%;
  }

  .cart-items-disabled {
    pointer-events: none;
  }

  .cart-page--empty .cart-items__wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-block-start: 0;
    text-align: center;
  }

  .cart-drawer:not(:has(.cart-form)) .cart-items__wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
  }

  .cart-items__table {
    width: 100%;
    border-spacing: 0;
  }

  .cart-items__table * {
    margin: 0;
  }

  .cart-items__table-row {
    --cart-item-price-width: 6rem;

    display: grid;
    grid-template-columns: clamp(2.5rem, 15cqi, 7.5rem) minmax(0, 1fr) minmax(var(--cart-item-price-width), auto);
    grid-template-areas:
      'media details price'
      'media quantity price'
      'media error error';
    column-gap: var(--gap-md);
    align-items: start;
    padding-bottom: var(--cart-items-gap);
    margin-bottom: var(--margin-lg);
  }

  /* Cart drawer: separate grid areas for variants and unit price */
  .cart-drawer .cart-items__table-row--full-width-variants {
    grid-template-columns: clamp(2.5rem, 15cqi, 7.5rem) minmax(0, 1fr) auto;
    grid-template-rows: repeat(4, min-content) 1fr;
    grid-template-areas:
      'media details price'
      'media variants variants'
      'media unit_price unit_price'
      'media quantity quantity'
      'media error error';

    .cart-items__details {
      display: contents;
    }

    .cart-items__product-info {
      grid-area: details;
    }

    .cart-items__variants-wrapper {
      grid-area: variants;

      &:empty {
        display: none;
      }

      p {
        margin: 0;
      }
    }

    .cart-items__unit-price-wrapper {
      grid-area: unit_price;
      font-size: var(--font-size--sm);
    }

    .cart-items__price {
      min-width: auto;
      width: max-content;
    }
  }

  .cart-items__table-row.cart-items__nested-line td:first-child {
    width: 60%;
    justify-self: right;
  }

  html:active-view-transition-type(page-navigation) .cart-items__table-row {
    /* stylelint-disable-next-line declaration-no-important */
    view-transition-name: none !important;
  }

  .cart-items__table-row.removing {
    overflow: hidden;
    animation: removeRow calc(var(--animation-speed) * 2) var(--animation-easing) forwards;
    animation-delay: var(--animation-speed);
  }

  @keyframes removeRow {
    0% {
      height: var(--row-height);
    }

    100% {
      opacity: 0;
      height: 0;
      padding-bottom: 0;
      margin-bottom: 0;
      border-color: transparent;
    }
  }

  .cart-items__table-row:last-child {
    padding-bottom: 0;
  }

  .cart-items--dividers .cart-items__table-row {
    border-bottom: 1px solid var(--color-border);
    margin-bottom: var(--cart-items-gap);
  }

  .cart-items--dividers .cart-items__table-row:has(+ .cart-items__nested-line) {
    border-bottom: none;
    margin-bottom: 0;
  }

  .cart-items--dividers .cart-items__table-row:last-of-type {
    border-block-end: none;
    padding-block-end: 0;
    margin-bottom: 0;
  }

  .cart-items__details {
    grid-area: details;
    color: rgb(var(--color-foreground-rgb) / var(--opacity-70));
  }

  .cart-items__details > * + *,
  .cart-items__bundle li {
    margin-block-start: var(--margin-3xs);
  }

  .cart-items__details * {
    font-size: var(--font-size--sm);
  }

  .cart-items__details a {
    text-decoration: none;
  }

  .cart-items__title {
    font-size: var(--font-size--md);
    color: var(--color-foreground);
    text-transform: var(--product-title-case);
    display: block;
    margin-block-start: calc((var(--font-size--md) - 1lh) / 2);
  }

  .cart-items__variants {
    display: block;
  }


  .cart-items__variant {
    display: inline;
  }

  .cart-items__variant dt,
  .cart-items__variant dd {
    display: inline;
    margin: 0;
  }

  .cart-items__quantity {
    grid-area: quantity;
    margin-block-start: var(--margin-xs);
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: var(--gap-xs);
    width: fit-content;
  }

  .cart-items__quantity-controls {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: var(--gap-xs);
    width: fit-content;
  }

  .cart-items__quantity-controls > .volume-pricing-info {
    margin-inline-start: calc(-1 * var(--minimum-touch-target) - var(--gap-xs));
  }

  .cart-items__quantity .quantity-selector {
    display: inline-flex;
    font-size: var(--font-size--sm);
    height: auto;
  }

  .cart-items__remove {
    background-color: transparent;
    color: var(--color-foreground);
    width: var(--minimum-touch-target);
    height: var(--minimum-touch-target);
    justify-content: center;
    box-shadow: none;
    padding: 0;
  }

  .cart-items__media {
    grid-area: media;
    padding: 0;
  }
  .bokja-mto { margin: 4px 0 0; font-size: 11px; line-height: 1.35; letter-spacing: 0.06em; text-transform: uppercase; color: #8a5a00; }
  .cart-items__price {
    grid-area: price;
    min-height: unset;
    min-width: var(--cart-item-price-width);
    text-align: end;
    display: block;
    font-size: var(--font-size--sm);
    line-height: var(--line-height);
  }


  .cart-items__price-unit {
    font-size: var(--font-size--xs);
    padding-block-start: var(--padding-2xs);
  }

  .cart-items__media-container {
    display: flex;
    aspect-ratio: var(--ratio);
    position: relative;
    width: 100%;
    overflow: hidden;
  }

  .cart-items__media-image {
    aspect-ratio: inherit;
    object-fit: cover;
    object-position: center center;
    width: 100%;
    height: auto;
  }

  .cart-items__empty-button {
    margin-top: var(--margin-md);
    padding-inline: var(--padding-4xl);
    padding-block: var(--padding-lg);
  }

  /* Error message */
  .cart-items__error {
    display: flex;
    align-items: flex-start;
    width: 100%;
    grid-area: error;
    margin-block-start: var(--margin-xs);
    opacity: 1;
    overflow: hidden;
    transform: translateY(0);
    transition: opacity var(--drawer-animation-speed) var(--animation-easing),
      transform var(--drawer-animation-speed) var(--animation-easing);

    @starting-style {
      opacity: 0;
      transform: translateY(-0.5rem);
    }
  }

  .cart-item__error {
    display: flex;
    align-items: flex-start;
    width: 100%;
    font-size: var(--font-size--sm);
    padding-block: var(--padding-2xs);
  }

  .cart-item__error .svg-wrapper {
    flex-shrink: 0;
    width: var(--icon-size-xs);
    height: var(--icon-size-xs);
    margin-inline: var(--margin-3xs) var(--margin-xs);
    margin-block-start: var(--margin-3xs);
  }

  @container cart-items (min-width: 720px) {
    /* Cart page: original layout */
    .cart-items__table-row {
      --cart-item-price-width: 6rem;

      grid-template-columns: 7.5rem 1fr 1fr minmax(var(--cart-item-price-width), auto);
      grid-template-rows: min-content 1fr;
      grid-template-areas:
        'media details quantity price'
        'media details error error';
    }

    .cart-items__quantity,
    .cart-items__price {
      grid-area: initial;
    }

    .cart-items__quantity {
      margin-top: 0;
    }

    .cart-items__price {
      min-height: var(--minimum-touch-target);
      display: flex;
      flex-direction: column;
      align-items: flex-end;
    }

    /* Cart drawer: separate areas for variants and unit price */
    .cart-drawer .cart-items__table-row--full-width-variants {
      grid-template-rows: min-content min-content min-content 1fr;
      grid-template-areas:
        'media details quantity price'
        'media variants variants variants'
        'media unit_price unit_price unit_price'
        'media error error error';

      .cart-items__quantity,
      .cart-items__price {
        grid-area: initial;
      }
    }
  }

  .cart__subtotal-container,
  .cart__total-container {
    display: flex;
    flex-direction: column;
  }

  .cart__total-container {
    row-gap: var(--gap-2xs);

    &.cart__total-container--has-installments {
      row-gap: var(--gap-xs);
    }
  }

  .cart__subtotal-container:empty {
    display: none;
  }

  .cart__summary-totals {
    display: flex;
    flex-direction: column;
    gap: var(--gap-xl);
    width: 100%;
    border-block-start: none;

    &:has(> :first-child:not(.cart__subtotal-container, .cart__total-container)) {
      padding-block-start: 0;
      border-block-start: none;
    }

    @media screen and (min-width: 750px) {
      padding-block-start: 0;
    }
  }

  .cart__subtotal-container,
  .cart__subtotal-container * {
    font-size: var(--font-size--sm);
  }

  .cart__total {
    font-weight: var(--font-weight-bold);
  }

  .cart__total-label {
    font-size: var(--font-size--sm);
  }

  .cart__total-value {
    font-size: var(--font-size--xl);

    @media screen and (max-width: 749px) {
      font-size: var(--font-size--lg);
    }
  }

  .cart-primary-typography {
    font-family: var(--cart-primary-font-family);
    font-style: var(--cart-primary-font-style);
    font-weight: var(--cart-primary-font-weight);
  }

  .cart-secondary-typography {
    font-family: var(--cart-secondary-font-family);
    font-style: var(--cart-secondary-font-style);
    font-weight: var(--cart-secondary-font-weight);
  }

  .cart__ctas {
    width: 100%;
    display: grid;
    gap: var(--checkout-button-gap);
    grid-auto-flow: row;
    grid-template-columns: 1fr;
  }

  .cart__additional-checkout-buttons {
    width: 100%;
  }

  shopify-accelerated-checkout-cart {
    --shopify-accelerated-checkout-inline-alignment: center;
    --shopify-accelerated-checkout-button-border-radius: var(--style-border-radius-buttons-primary);
    --shopify-accelerated-checkout-row-gap: var(--checkout-button-gap, 10px);
  }

  /* Remove animation */
  .remove-icon-bottom,
  .remove-icon-top {
    transition: transform var(--animation-speed) var(--animation-easing);
  }

  .cart-items__remove:hover .remove-icon-top {
    transform: translate(calc(-1 * var(--icon-stroke-width)), var(--icon-stroke-width)) rotate(-15deg);
  }

  .cart-items__remove:is(:hover, :active) .remove-icon-bottom {
    transform: translateY(var(--icon-stroke-width));
  }

  .cart-items__table-row.removing .remove-icon-bottom {
    transform: translateY(0);
  }

  .cart-items__table-row.removing .remove-icon-top {
    animation: removeButtonClickedIconTop var(--animation-speed) var(--animation-easing) forwards;
  }

  @keyframes removeButtonClickedIconTop {
    50% {
      transform: translate(0, calc(-1 * var(--icon-stroke-width)));
    }

    100% {
      transform: translate(0, 0);
    }
  }

  .cart-items__properties {
    display: block;
    margin-block-start: var(--margin-2xs);
  }

  .cart-items__property {
    display: block;
  }

  .cart-items__properties dt,
  .cart-items__properties dd {
    display: inline;
    margin: 0;
    overflow-wrap: break-word;
  }

  @media screen and (min-width: 750px) {
    .cart-items .quantity-selector {
      --quantity-selector-width: 105px;
      height: var(--button-size-md);
      width: var(--quantity-selector-width);
    }

    .cart-items .quantity-selector button {
      width: var(--button-size-md);
      height: var(--button-size-md);
    }

    .cart-items .quantity-selector input {
      max-width: calc(var(--quantity-selector-width) - var(--button-size-md) * 2);
    }
  }

  @media screen and (prefers-reduced-motion: no-preference) {
    html:active-view-transition-type(empty-cart-drawer) {
      .cart-items__empty-button,
      .cart__checkout-button {
        view-transition-name: cart-drawer-primary-action;

        & > .button-text {
          view-transition-name: cart-drawer-primary-action-text;
        }
      }
    }
  }

  ::view-transition-old(cart-drawer-primary-action-text),
  ::view-transition-new(cart-drawer-primary-action-text) {
    height: 100%;
    object-fit: none;
    overflow: clip;
    overflow-clip-margin: 1em;
  }

  ::view-transition-old(cart-drawer-primary-action-text) {
    animation: cart-drawer-primary-action-text var(--animation-speed) var(--animation-easing) reverse forwards;
  }
  ::view-transition-new(cart-drawer-primary-action-text) {
    animation: cart-drawer-primary-action-text var(--animation-speed) var(--animation-easing) forwards;
  }

  ::view-transition-old(cart-drawer-primary-action),
  ::view-transition-new(cart-drawer-primary-action) {
    height: 100%;
  }

  ::view-transition-group(cart-drawer-primary-action-text),
  ::view-transition-group(cart-drawer-primary-action) {
    animation-duration: var(--spring-d300-b0-duration);
    animation-timing-function: var(--spring-d300-b0-easing);
  }

  @keyframes cart-drawer-primary-action-text {
    from {
      filter: blur(3px);
      opacity: 0;
    }
    to {
      filter: none;
      opacity: 1;
    }
  }
/* END_SNIPPET:cart-products */

/* START_SNIPPET:cart-summary (INDEX:225) */
.cart-actions {
    display: flex;
    flex-direction: column;
    gap: 0;
    border-block: 1px solid var(--color-border);
    padding-block: 0;
    margin-block-start: var(--margin-3xs);
  }

  .cart-actions__divider {
    border-block-start: 1px solid var(--color-border);
  }

  .cart-totals:not(:has(.cart-actions)) {
    margin-block-start: var(--margin-3xs);
    border-block-start: 1px solid var(--color-border);
    padding-block-start: var(--margin-xl);
  }

  .cart-totals__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  .cart-totals__tax-note {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }

  .cart-totals__tax-note small {
    font-size: var(--font-size--2xs);
  }

  .cart-discounts {
    list-style: none;
    padding: 0;
    margin: 0;
  }

  .cart-discounts__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  .cart-discounts__label {
    display: flex;
    align-items: center;
    gap: var(--gap-2xs);
  }

  .cart-discounts__label svg {
    width: var(--icon-size-sm);
    height: var(--icon-size-sm);
    display: inline-block;
  }

  .cart-totals__original-container,
  .cart-totals__container {
    display: flex;
    flex-direction: column;
  }

  .cart-totals__container {
    row-gap: var(--gap-2xs);

    &.cart-totals__container--has-installments {
      row-gap: var(--gap-xs);
    }
  }

  .cart-totals__original-container:empty {
    display: none;
  }

  .cart-totals {
    display: flex;
    flex-direction: column;
    gap: var(--gap-xl);
    width: 100%;
    border-block-start: none;

    &:has(> :first-child:not(.cart-totals__original-container, .cart-totals__container)) {
      padding-block-start: 0;
      border-block-start: none;
    }

    @media screen and (min-width: 750px) {
      padding-block-start: 0;
    }
  }

  .cart-totals__original-container,
  .cart-totals__original-container * {
    font-size: var(--cart-font-size--sm);
  }

  .cart-totals__total {
    align-items: baseline;
    font-weight: var(--font-weight-bold);
  }

  .cart-totals__total-label {
    font-size: var(--cart-font-size--sm);
  }

  .cart-totals__total-value {
    font-size: var(--cart-font-size--xl);

    @media screen and (max-width: 749px) {
      font-size: var(--font-size--lg);
    }
  }

  .cart-totals__installments {
    color: var(--color-foreground);
    font-size: var(--font-size--2xs);
  }

  .cart-note {
    width: 100%;
  }

  @starting-style {
    .cart-note[open-by-default-on-desktop][open-by-default-on-mobile] .details-content {
      block-size: auto;
      opacity: 1;
      overflow-y: visible;
    }
  }

  .cart-note__inner {
    padding-block: var(--padding-2xs) var(--padding-sm);
  }

  .cart-note__summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  .cart-note__summary:hover {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }

  .cart-note__label {
    display: flex;
    align-items: flex-start;
    gap: var(--gap-2xs);
    font-size: var(--font-size--2xs);
    font-weight: 500;
  }

  .cart-note__instructions {
    color: var(--color-input-text);
    background-color: var(--color-input-background);
    border-width: var(--style-border-width-inputs);
    border-color: var(--color-input-border);
    transition: box-shadow var(--animation-speed) ease;
    box-shadow: var(--input-box-shadow);
    min-height: 5.5rem;
    min-width: 100%;
    max-width: 100%;
    font-size: var(--font-size--sm);
    padding: max(4px, calc(var(--style-border-radius-inputs) * (1 - cos(45deg))));
  }

  .cart-totals__icon {
    height: var(--icon-size-xs);
    width: var(--icon-size-xs);
    margin: 0;
  }

  .cart__ctas {
    width: 100%;
    display: grid;
    gap: var(--checkout-button-gap);
    grid-auto-flow: row;
    grid-template-columns: 1fr;
  }

  .cart__ctas .cart__checkout-button {
    width: 100%;
    height: clamp(25px, var(--height-buy-buttons), 55px);
    padding-inline: var(--padding-4xl);
  }

  .cart-drawer__summary .cart-totals:not(:has(.cart-totals__original-container:empty)) {
    border-block-start: var(--style-border-width) solid var(--color-border);
    padding-block-start: var(--padding-2xl);
  }

  .cart-drawer__summary .cart-note {
    @media screen and (min-width: 750px) {
      margin-block-start: var(--margin-3xs);
    }
  }

  .cart-discount__input {
    background-color: var(--color-input-background);
    color: var(--color-input-text);
    border-width: var(--style-border-width-inputs);
    border-color: var(--color-input-border);
    border-style: solid;
    border-radius: var(--style-border-radius-inputs);
    padding: var(--padding-sm) var(--padding-md);
    height: 100%;
    flex-grow: 1;
    min-width: 0;
    font-size: var(--font-size--sm);
  }

  .cart-discount__input::placeholder {
    color: rgb(var(--color-input-text-rgb) / var(--opacity-subdued-text));
  }

  .cart-discount__pill-code {
    overflow: hidden;
    max-width: 100px;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin: 0;
  }

  .cart-discount {
    width: 100%;
  }

  .cart-discount__codes {
    display: none;
    gap: var(--padding-xs);
    flex-wrap: wrap;
    list-style: none;
    padding-inline: 0;
    margin: 0;
  }

  .cart-discount__codes:has(.cart-discount__pill) {
    display: flex;
  }

  .cart-discount__button {
    height: 100%;
  }

  .cart-discount__content {
    height: calc(var(--button-size) + var(--padding-2xs) + var(--padding-sm));
  }

  .cart-discount__pill {
    display: flex;
    color: var(--color-foreground);
    gap: var(--padding-xs);
    align-items: center;
    padding: var(--padding-xs) var(--padding-sm);
    border-radius: var(--style-border-radius-pills);
    background-color: var(--color-input-background);
    text-transform: uppercase;
  }

  .cart-discount__form {
    display: flex;
    gap: var(--padding-md);
    align-items: center;
    height: 100%;
    padding-block: var(--padding-2xs) var(--padding-sm);
  }

  :is(.cart-discount__pill-remove, .cart-discount__pill-remove:hover) {
    --close-icon-opacity: 0.4;

    color: var(--color-foreground);
    background-color: transparent;
    pointer-events: all;
    cursor: pointer;
    height: 100%;
  }

  .cart-discount__error {
    display: flex;
    align-items: center;
    width: 100%;
    padding-block: var(--padding-2xs) var(--padding-sm);
  }

  .cart-discount__error .svg-wrapper {
    flex-shrink: 0;
    width: var(--icon-size-xs);
    height: var(--icon-size-xs);
    margin-inline: var(--margin-3xs) var(--margin-xs);
  }

  .cart-discount__error-text {
    margin-block-start: var(--margin-3xs);
  }

  .cart-discount__summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  .cart-discount__summary:hover {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }

  .cart-discount__label {
    display: flex;
    align-items: flex-start;
    gap: var(--gap-2xs);
    font-size: var(--font-size--2xs);
    font-weight: 500;
  }

  @media screen and (min-width: 750px) {
    .cart-summary--extend {
      height: 100%;
    }
  }
/* END_SNIPPET:cart-summary */

/* START_SNIPPET:collection-card (INDEX:227) */
.collection-card {
    --fixed-card-height: var(--height-small);

    flex: 1 1 var(--card-width-small);
  }

  .collection-card > svg {
    height: 100%;
    width: 100%;
    aspect-ratio: var(--ratio);
  }

  .collection-card--image-bg .collection-card__inner {
    height: 100%;
  }

  .collection-card__inner {
    gap: var(--gap);

    a,
    button {
      pointer-events: auto;
    }
  }

  /* allow all blocks to be selectable in editor preview */
  .shopify-design-mode .collection-card__content * {
    pointer-events: auto;
  }

  .collection-card__content {
    max-width: 100%;
    --flex-wrap: wrap;
  }

  /* Nested image block rules */

  .collection-card.collection-card--image-bg {
    aspect-ratio: var(--ratio);
  }

  .collection-card.collection-card--image-bg .collection-card__content {
    padding: var(--padding-lg);
  }

  .collection-card--image-height-fixed {
    height: 100%;
  }

  /* Bento layout rules */
  .collection-card--image-height-fixed .collection-card__image {
    height: var(--fixed-card-height);
    width: 100%;
  }

  .collection-card--image-height-fixed.collection-card--image-bg {
    height: var(--fixed-card-height);
    aspect-ratio: unset;
  }

  .collection-card__image .resource-image__image {
    object-fit: cover;
    width: 100%;
    height: 100%;
    max-width: 100%;
  }

  .collection-card--image-bg .collection-card__image {
    position: absolute;
    width: 100%;
    height: 100%;
  }

  .collection-card__image svg {
    height: 100%;
    width: 100%;
  }

  .resource-list:not(.hidden--desktop) .collection-card--flexible-aspect-ratio {
    &.collection-card.collection-card--image-bg,
    &.collection-card .placeholder-svg {
      aspect-ratio: 99;
    }
  }
/* END_SNIPPET:collection-card */

/* START_SNIPPET:divider (INDEX:229) */
.divider {
    align-self: stretch;
    display: flex;
    align-items: center;
    justify-content: var(--divider-justify-content);
  }

  .divider__line {
    border-bottom: var(--divider-border-thickness) solid var(--color-border);
    border-right: var(--divider-border-thickness) solid var(--color-border);
    border-radius: calc(var(--style-border-radius-sm) * var(--divider-border-rounded));
    flex-basis: var(--divider-flex-basis);
    min-height: var(--divider-flex-basis);
  }
/* END_SNIPPET:divider */

/* START_SNIPPET:editorial-blog-grid (INDEX:230) */
.editorial-blog__grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    grid-auto-rows: 1fr;
    gap: var(--gap-xl);

    .shopify-block {
      height: 100%;
    }
  }

  .editorial-blog__spacer {
    aspect-ratio: 1;
  }

  @media screen and (max-width: 749px) {
    .editorial-blog__grid {
      display: flex;
      flex-direction: column;
      gap: var(--gap-2xl);
    }

    .editorial-blog__spacer {
      display: none;
    }

    /* Mobile layout - also horizontally mirrored from collection grid */
    .editorial-blog__item-0 {
      width: 66%;
      align-self: flex-end; /* Originally flex-start, now flex-end */
    }

    .editorial-blog__item-1 {
      width: 83%;
      align-self: flex-start; /* Originally flex-end, now flex-start */
    }

    .editorial-blog__item-2 {
      width: 83%;
      align-self: flex-end; /* Originally flex-start, now flex-end */
    }

    .editorial-blog__item-3 {
      width: 100%;
      align-self: center; /* Stays centered */
    }
  }
/* END_SNIPPET:editorial-blog-grid */

/* START_SNIPPET:editorial-collection-grid (INDEX:231) */
.editorial-collection__grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    grid-auto-rows: 1fr;
    gap: var(--gap-xl);

    .resource-list__item,
    .collection-card {
      height: 100%;
    }
  }

  .editorial-collection__spacer {
    aspect-ratio: 1;
  }

  @media screen and (max-width: 749px) {
    .editorial-collection__grid {
      display: flex;
      flex-direction: column;
      gap: var(--gap-2xl);
    }

    .editorial-collection__spacer {
      display: none;
    }

    .editorial-collection__item-0 {
      width: 66%;
      align-self: flex-start;
      aspect-ratio: 4 / 5;
    }

    .editorial-collection__item-1 {
      width: 83%;
      align-self: flex-end;
      aspect-ratio: 5 / 5;
    }

    .editorial-collection__item-2 {
      width: 83%;
      align-self: flex-start;
      aspect-ratio: 8 / 6;
    }

    .editorial-collection__item-3 {
      width: 100%;
      align-self: center;
      aspect-ratio: 8 / 6;
    }
  }
/* END_SNIPPET:editorial-collection-grid */

/* START_SNIPPET:editorial-product-grid (INDEX:232) */
.editorial-product__grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    grid-auto-rows: 1fr;
    gap: var(--gap-xl);

    /* Make the aspect ratio super high on width, then increase the height of
     * slideshow containers until they fill all the available space */
    .card-gallery {
      /* stylelint-disable-next-line declaration-no-important */
      --gallery-aspect-ratio: 99 !important;
    }

    .card-gallery,
    slideshow-component,
    slideshow-container,
    slideshow-slides,
    .product-media__image {
      height: 100%;
    }
  }

  .editorial-product__spacer {
    aspect-ratio: 1;
  }

  @media screen and (max-width: 749px) {
    .editorial-product__grid {
      display: flex;
      flex-direction: column;
      gap: var(--gap-2xl);
    }

    .editorial-product__spacer {
      display: none;
    }

    .editorial-product__item-0 {
      width: 83%;
      align-self: flex-start;
      aspect-ratio: 7 / 6;
    }

    .editorial-product__item-1 {
      width: 83%;
      align-self: flex-end;
      aspect-ratio: 4 / 5;
    }

    .editorial-product__item-2 {
      width: 66%;
      align-self: flex-start;
      aspect-ratio: 5 / 5;
    }

    .editorial-product__item-3 {
      width: 100%;
      aspect-ratio: 8 / 6;
    }
  }
/* END_SNIPPET:editorial-product-grid */

/* START_SNIPPET:filter-remove-buttons (INDEX:233) */
/* Facets - Remove buttons */
  .facets-remove {
    --variant-picker-swatch-width: 20px;
    --variant-picker-swatch-height: 20px;

    display: none;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--gap-xs);
    padding: 0 var(--drawer-padding);
    margin: 0;

    @media screen and (min-width: 750px) {
      --variant-picker-swatch-width: 16px;
      --variant-picker-swatch-height: 16px;

      gap: var(--gap-2xs);
    }
  }

  .facets-remove:has(facet-remove-component) {
    display: flex;
    margin-block-start: var(--margin-2xs);
    margin-block-end: var(--margin-md);
  }

  .facets:not(.facets--drawer) .facets-remove--mobile-and-vertical {
    @media screen and (min-width: 750px) {
      padding: 0;
    }
  }

  .facets--horizontal .facets-remove--mobile-and-vertical {
    @media screen and (min-width: 750px) {
      display: none;
    }
  }

  .facets-remove__pill {
    .svg-wrapper,
    .swatch {
      flex-shrink: 0;
    }
  }

  .facets--horizontal .facets-remove {
    @media screen and (min-width: 750px) {
      display: none;
    }
  }
/* END_SNIPPET:filter-remove-buttons */

/* START_SNIPPET:gift-card-recipient-form-styles (INDEX:237) */
.recipient-form {
    --options-border-radius: var(--variant-picker-button-radius);
    --options-border-width: var(--variant-picker-button-border-width);

    display: flex;
    flex-direction: column;
    padding-bottom: var(--padding-2xl);
  }

  .recipient-form__send-to {
    padding: 0;
    margin-block-end: var(--margin-xs);
  }

  .gift-card-form-option {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--gap-sm);
    padding: 0;
    border: none;
  }

  .gift-card-form-option__button-label {
    display: flex;
    align-items: center;
    position: relative;
    padding-block: var(--padding-sm);
    padding-inline: var(--padding-lg);
    border: var(--style-border-width) solid var(--color-variant-border);
    border-radius: var(--options-border-radius);
    border-width: var(--options-border-width);
    overflow: clip;
    justify-content: center;
    min-width: auto;
    background-color: var(--color-variant-background);
    color: var(--color-variant-text);
    transition: background-color var(--animation-speed) var(--animation-easing),
      border-color var(--animation-speed) var(--animation-easing);

    &:hover {
      background-color: var(--color-variant-hover-background);
      border-color: var(--color-variant-hover-border);
      color: var(--color-variant-hover-text);
    }
  }

  .gift-card-form-option__button-label:has(:focus-visible) {
    --variant-picker-stroke-color: var(--color-foreground);

    border-color: var(--color-foreground);
    outline: var(--focus-outline-width) solid var(--color-foreground);
    outline-offset: var(--focus-outline-offset);
  }

  .gift-card-form-option__button-label:has(:checked) {
    color: var(--color-selected-variant-text);
    background-color: var(--color-selected-variant-background);
    border-color: var(--color-selected-variant-border);
    transition: background-color var(--animation-speed) var(--animation-easing),
      border-color var(--animation-speed) var(--animation-easing);

    &:hover {
      background-color: var(--color-selected-variant-hover-background);
      border-color: var(--color-selected-variant-hover-border);
      color: var(--color-selected-variant-hover-text);
    }
  }

  .gift-card-form-option__button-label input {
    position: absolute;
    inset: 0;
    opacity: 0;
    margin: 0;
    cursor: pointer;
    width: 100%;
    height: 100%;
  }

  .recipient-fields {
    display: flex;
    flex-direction: column;
    gap: var(--gap-sm);
    transition: opacity 0.3s var(--animation-easing);
    padding-block-start: var(--padding-xl);
  }

  .recipient-fields[hidden] {
    display: none;
  }

  .field--send-on {
    display: flex;
    flex-direction: column;
  }

  .recipient-form__message {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: var(--gap-sm);
    margin-top: var(--margin-sm);
  }

  .recipient-form-field-label {
    position: absolute;
    left: var(--padding-sm);
    bottom: var(--padding-sm);
    font-style: italic;
    color: var(--color-input-text);
  }

  .recipient-fields__textarea {
    min-height: 5.5rem;
    overflow-y: auto;

    /* Space for the character count */
    padding-bottom: calc(var(--padding-sm) * 3);
    scroll-padding-bottom: calc(var(--padding-sm) * 3);
  }

  .recipient-fields__input {
    flex-grow: 1;
    transition: background-color var(--animation-speed) ease, border-color var(--animation-speed) ease;
    padding: var(--input-padding);
    background-color: var(--color-input-background);
    color: var(--color-input-text);
    text-align: left;
    font-size: var(--font-paragraph--size);
    border: var(--style-border-width-inputs) solid var(--color-input-border);
    border-radius: var(--style-border-radius-inputs);

    &:autofill {
      background-color: var(--color-input-background);
      color: var(--color-input-text);
    }

    &:is(:focus, :hover) {
      background-color: var(--color-input-hover-background);
    }

    &:is(:focus) {
      outline-color: var(--color-input-background);
    }
  }

  /* Date picker calendar icon
   * Safari doesn't show the icon and Firefox correctly applies the color from the input field.
   * Webkit browsers need the mask-image trick to use the correct icon color.
   */
  .field--send-on .recipient-fields__input::-webkit-calendar-picker-indicator {
    cursor: pointer;
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24' %3E%3Cg%3E%3Cpath d='M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-image: none;
    background-color: currentColor;
    mask-type: match-source;
  }

  /* For Webkit browsers - text cursor for input area */
  .field--send-on .recipient-fields__input::-webkit-datetime-edit {
    cursor: text;
  }

  .field--send-on .recipient-fields__input::-webkit-datetime-edit-year-field,
  .field--send-on .recipient-fields__input::-webkit-datetime-edit-month-field,
  .field--send-on .recipient-fields__input::-webkit-datetime-edit-day-field {
    /* Override the disabled color */
    color: var(--color-input-text);
  }

  /* Fallback for other browsers */
  .field--send-on .recipient-fields__input {
    cursor: text;
  }

  /* For Firefox - entire field is clickable, so show pointer */
  @supports (-moz-appearance: none) {
    .field--send-on .recipient-fields__input {
      cursor: pointer;
    }
  }
/* END_SNIPPET:gift-card-recipient-form-styles */

/* START_SNIPPET:grid-density-controls (INDEX:239) */
.column-options-wrapper {
    --icon-offset: -3px;

    display: flex;
    gap: var(--gap-sm);
    min-width: fit-content;
    justify-content: flex-end;
    height: var(--minimum-touch-target);
    align-items: center;
    margin-right: var(--icon-offset);
  }

  .column-options-wrapper:only-child {
    margin-left: auto;
  }

  .facets__form-wrapper > .column-options-wrapper:first-child {
    margin-left: auto;
  }

  .facets .column-options-wrapper {
    display: none;

    @media screen and (min-width: 750px) {
      display: flex;
    }
  }

  .column-options {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gap-xs);
    margin: 0;
    padding: 0;
    border: none;

    @media screen and (min-width: 750px) {
      gap: var(--gap-2xs);
    }
  }

  .column-options__option {
    display: none;
    position: relative;
  }

  .column-options__option:has(.column-picker-mobile--single),
  .column-options__option:has(.column-picker-mobile--double) {
    @media screen and (max-width: 749px) {
      display: flex;
    }
  }

  .column-options__option:has(.column-picker--default),
  .column-options__option:has(.column-picker--zoom-out) {
    @media screen and (min-width: 750px) {
      display: flex;
    }
  }

  /* Override base rule for grid density controls - only when visible */
  .column-options-wrapper .column-options__option:has(input[type="radio"]):has(.column-picker-mobile--single),
  .column-options-wrapper .column-options__option:has(input[type="radio"]):has(.column-picker-mobile--double) {
    @media screen and (max-width: 749px) {
      display: flex;
    }
  }

  .column-options-wrapper .column-options__option:has(input[type="radio"]):has(.column-picker--default),
  .column-options-wrapper .column-options__option:has(input[type="radio"]):has(.column-picker--zoom-out) {
    @media screen and (min-width: 750px) {
      display: flex;
    }
  }

  .column-options__legend {
    padding: 0;
    margin: 0;
  }

  .column-options__option-input {
    /* this is a repeating pattern a bit with the variant picker buttons */

    /* remove the checkbox from the page flow */
    position: absolute;

    /* set the dimensions to match those of the label */
    inset: 0;

    /* hide it */
    opacity: 0;
    margin: 0;
    padding: 0;
    width: auto;
    height: auto;
    aspect-ratio: unset;
    border: none;
    border-radius: 0;
    background: transparent;
    appearance: auto;
    display: block;
    cursor: pointer;
  }

  .column-picker {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
    padding: var(--padding-2xs);
    border-radius: var(--style-border-radius-xs);
    transition: background-color var(--animation-speed) ease, color var(--animation-speed) ease;
  }

  .column-options__option:hover .column-picker {
    background-color: rgb(var(--color-foreground-rgb) / var(--opacity-5));
  }

  .column-options__option-input:checked ~ .column-picker {
    color: rgb(var(--color-foreground-rgb));
    background-color: rgb(var(--color-foreground-rgb) / var(--opacity-5));
  }
/* END_SNIPPET:grid-density-controls */

/* START_SNIPPET:group (INDEX:240) */
.group-block__link {
    position: absolute;
    inset: 0;
  }

  .group-block__link ~ :is(.group-block-content, .group-block__media-wrapper) {
    pointer-events: none;

    :is(a, button, input, textarea, select) {
      pointer-events: auto;
    }
  }

  /* Needs the .group-block__link ~ to be specific enough to take effect. */
  .group-block__link ~ .group-block-content--design-mode {
    pointer-events: auto;
  }
/* END_SNIPPET:group */

/* START_SNIPPET:header-actions (INDEX:241) */
.header {
    --account-offset-top: calc(
      var(--header-group-height) + (var(--header-height) * var(--transparent-header-offset-boolean))
    );

    &[data-sticky-state='active'] {
      --account-offset-top: calc(var(--header-height) - 1px);
    }
  }

  .account-button {
    /* Remove the background color from the color scheme, we want to inherit the color of the header */
    background: transparent;
  }

  .account-button__icon,
  .account-button__text {
    color: var(--color-account-icon);
    transition: color var(--header-content-transition-timing);
    -webkit-font-smoothing: antialiased;
  }

  shopify-account {
    --shopify-account-font-heading: var(--font-heading--family);
    --shopify-account-font-heading-weight: var(--font-heading--weight);
    --shopify-account-font-body: var(--font-body--family);
    --shopify-account-font-body-weight: var(--font-body--weight);
    --shopify-account-radius-base: var(--style-border-radius-popover);
    --shopify-account-radius-button: var(--style-border-radius-buttons-primary);
    --shopify-account-radius-button-small: var(--style-border-radius-buttons-primary);
    --shopify-account-radius-input: var(--style-border-radius-buttons-primary);
    --shopify-account-color-background: var(--color-background);
    --shopify-account-color-text: var(--color-foreground);
    --shopify-account-color-accent: var(--color-primary-button-background);
    --shopify-account-color-accent-text: var(--color-primary-button-text);
    --shopify-account-dialog-position-top: var(--account-offset-top);

    &:not(:defined) {
      min-width: 44px;
      height: 44px;
      display: flex;
      justify-content: center;
      align-items: center;
      /* Match the line height of the other buttons */
      line-height: normal;
    }
  }

  .account-button__fallback {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background-color: var(--shopify-account-color-accent, #0a142f);
  }

  .account-button--text shopify-account {
    color: inherit;
  }

  .cart-drawer {
    --cart-drawer-padding: var(--padding-xl) var(--padding-xl);
    --cart-drawer-padding-desktop: var(--padding-xl) var(--padding-2xl);

    @media screen and (min-width: 750px) {
      margin-inline-end: calc(var(--gap-xs) * -1);
    }
  }

  @media screen and (min-width: 750px) {
    .cart-drawer--text {
      display: flex;
      align-items: center;
    }
  }

  .cart-drawer__dialog {
    position: fixed;
    overflow: hidden;
    border-radius: 0;
    width: 100%;
    height: 100%;
    margin: 0 0 0 auto;
    padding: 0;
    border-left: var(--style-border-drawer);
    box-shadow: var(--shadow-drawer);
    background-color: var(--color-background);

    @media screen and (min-width: 750px) {
      width: var(--sidebar-width);
      max-width: 95vw;
    }
  }

  /* Needed to ensure the drawer is full height */
  .cart-drawer__dialog:modal {
    max-height: 100dvh;
    overflow-y: hidden;
  }

  .cart-drawer__inner {
    height: 100%;
    overflow: hidden;
  }

  .cart-drawer__content {
    height: calc(100% - var(--header-height));
    display: flex;
    flex-direction: column;
    padding: 0;
    background-color: var(--color-background);
    flex-grow: 1;
    overflow-y: auto;
  }

  .cart-drawer__heading {
    display: flex;
    align-items: center;
    gap: var(--gap-xs);
    margin-bottom: 0;
  }

  .cart-drawer__close-button {
    margin-right: calc(var(--padding-sm) * -1);
    top: var(--margin-sm);

    @media screen and (max-width: 749px) {
      top: var(--margin-2xs);
    }
  }

  .cart-drawer--empty .cart-drawer__content {
    text-align: center;
    min-height: auto;
  }

  .cart-drawer--empty .cart-drawer__heading {
    margin-bottom: var(--margin-md);
  }

  .cart-drawer__items .cart-items__table-row {
    padding-bottom: var(--gap-xl);
    border-bottom: var(--style-border-width) solid var(--color-border);
    margin-bottom: var(--gap-xl);
  }

  .cart-drawer__items .cart-items__table-row:has(+ .cart-items__nested-line) {
    border-bottom: none;
    margin-bottom: 0;
  }

  .cart-drawer__items .cart-items__table-row:last-child {
    border-bottom: none;
  }

  .cart-drawer__summary {
    --cart-drawer-summary-padding: var(--padding-lg);

    position: sticky;
    bottom: 0;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap-xl);
    padding: var(--cart-drawer-summary-padding);
    margin-top: auto;
    background-color: var(--color-background);
    /* stylelint-disable-next-line color-named */
    mask-image: linear-gradient(to bottom, transparent, black var(--cart-drawer-summary-padding));

    @media screen and (min-width: 750px) {
      --cart-drawer-summary-padding: var(--padding-2xl);
    }
  }

  .cart-drawer__dialog[cart-summary-sticky='false'] .cart-drawer__summary {
    position: static;
    mask-image: none;
  }

  .cart-drawer__dialog[cart-summary-sticky='false'] .cart-drawer__items {
    overflow: unset;
  }

  .cart-actions summary {
    padding-inline: 0;
    padding-block: var(--padding-sm);
    line-height: 1.2;
    min-height: var(--minimum-touch-target);
  }

  .cart-drawer__summary .cart__summary-totals:not(:has(.cart__subtotal-container:empty)) {
    border-block-start: var(--style-border-width) solid var(--color-border);
    padding-block-start: var(--padding-2xl);
  }

  .cart-drawer__summary .cart-note {
    @media screen and (min-width: 750px) {
      margin-block-start: var(--margin-3xs);
    }
  }

  .cart-drawer__heading--empty {
    display: flex;
    justify-content: center;
  }

  .cart-drawer__items {
    display: flex;
    flex-direction: column;
    padding-inline: var(--cart-drawer-padding);
    overflow-y: auto;

    @media screen and (min-width: 750px) {
      padding-inline: var(--cart-drawer-padding-desktop);
    }
  }

  .cart-drawer__items .cart-items__table-row {
    padding-bottom: var(--gap-xl);
    border-bottom: var(--style-border-width) solid var(--color-border);
    margin-bottom: var(--gap-xl);
  }

  .cart-drawer__items .cart-items__table-row:last-child {
    border-bottom: none;
    padding-block-end: 0;
    margin-block-end: 0;
  }

  .cart-drawer--empty .cart-drawer__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100dvh;
    margin-top: 0;
  }

  .cart-drawer:not(:has(.cart-form)) .cart-drawer__content {
    justify-content: center;
  }

  .cart-drawer__header {
    background-color: var(--color-background);
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: var(--cart-drawer-padding);
    border-bottom: var(--style-border-width) solid none;
    position: sticky;
    top: 0;
    z-index: 1;

    @media screen and (min-width: 750px) {
      padding-inline: var(--cart-drawer-padding-desktop);
    }
  }

  .cart-drawer--empty .cart-drawer__header {
    justify-content: right;
    border-bottom: none;
    padding-bottom: 0;
  }

  .cart-drawer--empty .cart-drawer__heading {
    text-align: center;
  }

  header-actions {
    display: flex;

    @media screen and (max-width: 749px) {
      justify-self: flex-end;
    }
  }

  @media screen and (min-width: 750px) {
    .header-actions--text {
      gap: var(--gap-xl);
    }

    .header-actions__text-style {
      font-size: var(--header-actions-font-size);
      font-family: var(--header-actions-font-family);
      font-weight: var(--header-actions-font-weight);
      text-transform: var(--header-actions-text-case);
    }
  }

  #header-component[data-menu-style='drawer'] header-actions {
    justify-self: flex-end;
  }

  .header__column--right header-actions {
    margin-inline-start: calc(var(--gap-md) * -1);
  }

  .header-actions__cart-icon {
    --cart-bubble-size: 20px;
    --cart-bubble-top: 4.5px;
    --cart-bubble-right: 2.5px;

    position: relative;
  }

  .header-actions__cart-icon .cart-bubble {
    position: absolute;
    width: var(--cart-bubble-size, 20px);
    top: var(--cart-bubble-top);
    right: var(--cart-bubble-right);
  }

  @media screen and (min-width: 750px) {
    .header-actions__cart-icon--text.header-actions__cart-icon .cart-bubble {
      position: relative;
      top: 0;
    }
  }

  .cart-drawer__heading .cart-bubble {
    width: fit-content;
    border-radius: var(--style-border-radius-buttons-primary);
    aspect-ratio: auto;
    padding: var(--cart-padding);
  }

  .cart-drawer__heading .cart-bubble[data-maintain-ratio] {
    width: min(1lh, 22px);
    height: min(1lh, 22px);
  }

  .header-actions__cart-icon .cart-bubble__text,
  .cart-drawer__heading .cart-bubble__text {
    font-family: var(--font-paragraph--family);
    font-weight: var(--font-paragraph--weight);
  }

  .header-actions__cart-icon.header-actions__cart-icon--has-cart svg {
    /* Create donut mask where the cart bubble sits */
    mask: radial-gradient(
      calc(var(--cart-bubble-size) + 2px) at calc(100% - var(--cart-bubble-right)) var(--cart-bubble-top),
      transparent 45.45%,
      #fff 45.45%,
      #fff 100%
    );
  }

  .cart-drawer__heading .cart-bubble .cart-bubble__background {
    background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10-25));
  }

  .cart-drawer__heading .cart-bubble__text {
    color: var(--color-foreground);
    font-size: clamp(var(--font-size--3xs), 0.75em, var(--font-size--xs));
  }

  .cart-bubble.cart-bubble--animating .cart-bubble__background {
    animation: grow var(--animation-speed) var(--animation-easing);
  }

  .cart-bubble--animating .cart-bubble__text {
    --start-y: -1em;
    --start-opacity: 1;
    /* Set initial transform state before animation starts */
    transform: translate(0, var(--start-y, -1em));
    opacity: var(--start-opacity, 1);
    animation: move-and-fade var(--animation-speed) var(--animation-easing);
  }

  cart-icon:has(.cart-bubble__text-count:empty) {
    --cart-bubble-size: 10px;
    --cart-bubble-top: 9px;
    --cart-bubble-right: 9px;

    .svg-wrapper {
      --cart-bubble-top: 4px;
      --cart-bubble-right: 4px;
    }
  }

  @media screen and (min-width: 750px) {
    cart-icon.header-actions__cart-icon--text:has(.cart-bubble__text-count:empty) {
      --cart-bubble-right: 2.5px;
    }
  }

  @media screen and (prefers-reduced-motion: no-preference) {
    html:active-view-transition-type(empty-cart-drawer) {
      .cart-drawer__close-button {
        view-transition-name: cart-drawer-close-button;
      }
    }
  }

  :active-view-transition {
    .cart-drawer__header,
    .cart-drawer__content {
      background: transparent;
    }
  }

  ::view-transition-old(cart-drawer-content) {
    transform-origin: 50% 33%;
    animation: cart-contents-old var(--spring-d280-b0-duration) var(--spring-d280-b0-easing) forwards;
  }

  ::view-transition-new(cart-drawer-content) {
    transform-origin: top center;
    animation: cart-contents-new var(--spring-d280-b0-duration) var(--spring-d280-b0-easing) forwards;
  }

  @keyframes cart-contents-old {
    to {
      scale: 0.92;
      opacity: 0;
    }
  }

  @keyframes cart-contents-new {
    from {
      scale: 1.05;
      translate: 0 128px;
      filter: blur(1px);
      opacity: 0;
    }
  }
  .header-actions__text {
    display: flex;
    align-items: center;
  }

  @media screen and (min-width: 750px) {
    .header-actions__cart-icon--text {
      display: flex;
      align-items: center;
      gap: var(--gap-xs);
    }

    .header__column--right .header-actions--text {
      margin-inline-start: 0;
    }
  }
/* END_SNIPPET:header-actions */

/* START_SNIPPET:header-drawer (INDEX:242) */
.header__icon--menu {
    position: initial;
  }

  .menu-drawer-container .header__icon--summary {
    color: var(--color-foreground);
    display: flex;
    justify-content: center;
    align-items: center;
    padding: var(--padding-lg);
  }

  .header__icon--summary .header-drawer-icon {
    margin: auto;
    width: var(--icon-size-xs);
    height: var(--icon-size-xs);
  }

  .menu-drawer__featured-content {
    z-index: var(--layer-base);
    container-type: inline-size;
  }

  .menu-drawer__featured-content--childlist {
    z-index: var(--layer-flat);
  }

  .menu-drawer__featured-content-list {
    display: flex;
    gap: 1em;
    overflow-x: auto;
    padding-block-end: var(--padding-lg);
  }

  .menu-drawer__featured-content-list-item {
    flex: 0 0 auto;
  }

  .menu-drawer__featured-content-list-item--product {
    width: 35cqi;
  }

  .menu-drawer__featured-content-list-item--collection img.resource-card__image {
    width: 80cqi;
  }

  .menu-drawer__featured-content-list-item:first-child {
    margin-inline-start: var(--margin-xl);
  }

  .menu-drawer__featured-content-list-item:last-child {
    margin-inline-end: var(--margin-xl);
  }

  .menu-drawer__navigation {
    padding: 0;

    @media screen and (min-width: 750px) {
      margin-top: var(--drawer-header-desktop-top);
    }
  }

  details:not(.menu-open) .header__icon--menu .header-drawer-icon--close {
    display: none;
  }

  details.menu-open .header__icon--menu .header-drawer-icon--close {
    @media screen and (min-width: 750px) {
      display: none;
    }
  }

  details.menu-open .header__icon--menu .header-drawer-icon--open {
    display: none;

    @media screen and (min-width: 750px) {
      display: flex;
    }
  }

  .menu-drawer {
    position: fixed;
    transform: translateX(-100%);
    visibility: hidden;
    height: var(--drawer-height);
    width: var(--drawer-width);
    max-width: var(--drawer-max-width);
    z-index: var(--layer-menu-drawer);
    left: 0;
    top: 0;
    padding: 0;
    background-color: var(--color-background);
    overflow: auto;
    display: flex;
    border-right: var(--style-border-drawer);
    box-shadow: var(--shadow-drawer);
    flex-direction: column;

    @media screen and (min-width: 750px) {
      width: 25rem;
    }
  }

  /* When opening a submenu we don't want the first-level menu to be scrollable, so we reset the overflow  */
  .menu-drawer.menu-drawer--has-submenu-opened {
    overflow: initial;
  }

  .menu-drawer__backdrop {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100dvh;
    backdrop-filter: brightness(0.75);
    z-index: var(--layer-heightened);
    opacity: 0;
    transition: opacity var(--drawer-animation-speed) ease;

    .menu-open & {
      opacity: 1;
    }
  }

  .menu-drawer,
  details[open] > .menu-drawer__submenu {
    transition: transform var(--drawer-animation-speed) ease, visibility var(--drawer-animation-speed) ease,
      opacity var(--drawer-animation-speed) ease;
  }

  .menu-open > .menu-drawer,
  .menu-open > .menu-drawer__submenu:not(.menu-drawer__menu--childlist) {
    transform: translateX(0);
    visibility: visible;
    opacity: 1;
    display: flex;
    flex-direction: column;
  }

  .menu-drawer__inner-container {
    position: relative;
    height: 100%;
  }

  .menu-drawer__navigation-container {
    display: grid;
    grid-template-rows: 1fr auto;
    align-content: space-between;
    overflow-y: auto;
    height: 100%;
  }

  .menu-drawer__inner-submenu {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow-y: auto;

    @media screen and (min-width: 750px) {
      margin-top: var(--drawer-header-desktop-top);
    }
  }

  .menu-drawer__nav-buttons {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }

  .menu-drawer__menu {
    --menu-drawer-inline-padding: calc(var(--padding-sm) + 7px);

    list-style: none;
    padding-inline: var(--drawer-padding);
    margin-inline: 0;
    margin-block-start: 0;
  }

  .menu-drawer__menu--grid {
    display: grid;
    width: 100%;
    grid-template-columns: 1fr 1fr;
    gap: var(--padding-sm);
    padding-inline-end: var(--menu-drawer-inline-padding);
    padding-block-start: var(--padding-xs);
  }

  .menu-drawer__menu--childlist:not(.menu-drawer__menu--grid) {
    flex-grow: 1;
  }

  .menu-drawer__menu.has-submenu,
  .menu-drawer__menu--childlist:not(:has(.menu-drawer__animated-element)) {
    margin-block-end: var(--margin-xs);

    @media screen and (min-width: 750px) {
      margin-block-end: 2.5rem;
    }
  }

  .menu-drawer__list-item--divider {
    border-block-end: 1px solid var(--color-border);
  }

  .menu-drawer__list-item--deep:not(.menu-drawer__list-item--divider) .menu-drawer__menu {
    margin-block-start: -0.3rem;
  }

  .menu-drawer__list-item--flat.menu-drawer__list-item--divider .menu-drawer__menu {
    margin-block-start: -0.4rem;
  }

  .menu-drawer__menu-container--divider {
    border-block-end: 1px solid var(--color-border);
  }

  .menu-drawer__menu > .menu-drawer__list-item {
    display: flex;
    min-height: calc(2 * var(--padding-lg) + var(--icon-size-xs));
  }

  .menu-drawer__list-item--deep .menu-drawer__list-item,
  .menu-drawer__list-item--flat .menu-drawer__list-item {
    min-height: auto;
  }

  .menu-drawer__menu .menu-drawer__list-item--flat {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    margin-block-end: var(--margin-md);
  }

  .menu-drawer__menu--childlist .menu-drawer__list-item--flat {
    margin-block-end: var(--margin-sm);

    @media screen and (min-width: 750px) {
      margin-block-end: var(--margin-lg);
    }
  }

  .menu-drawer__menu--childlist .menu-drawer__list-item--flat.menu-drawer__list-item--divider {
    margin-block-end: 0;
  }

  .menu-drawer__list-item--flat .menu-drawer__menu--childlist {
    width: 100%;
    padding-inline: 0;
  }

  .menu-drawer-container[open] .menu-drawer__animated-element {
    animation: menu-drawer-nav-open var(--drawer-animation-speed) ease-in-out;
    animation-delay: calc(var(--drawer-animation-speed) + (var(--menu-drawer-animation-index) - 1) * 0.1s);
    animation-fill-mode: backwards;
  }

  .menu-drawer__menu accordion-custom .details-content--no-animation {
    animation: none;
    visibility: visible;
    opacity: 1;
    transform: translateX(0);
    transition: none;
  }

  .menu-drawer__menu details,
  .menu-drawer__menu-item,
  .menu-drawer__menu accordion-custom {
    width: 100%;
  }

  .menu-drawer__list-item--divider .menu-drawer__menu-item:not(.menu-drawer__menu-item--child) {
    min-height: calc(2 * var(--padding-lg) + var(--icon-size-xs));
  }

  .menu-drawer__menu-item--mainlist {
    min-height: calc(2 * var(--padding-lg) + var(--icon-size-xs));
    font-family: var(--menu-top-level-font-family);
    font-style: var(--menu-top-level-font-style);
    font-weight: var(--menu-top-level-font-weight);
    font-size: var(--menu-top-level-font-size);
    line-height: var(--menu-top-level-font-line-height);
    text-transform: var(--menu-top-level-font-case);
    color: var(--menu-top-level-font-color);
    justify-content: space-between;

    &:hover {
      color: var(--menu-top-level-font-color);
    }
  }

  .menu-drawer__menu-item--parent {
    font-family: var(--menu-parent-font-family);
    font-style: var(--menu-parent-font-style);
    font-weight: var(--menu-parent-font-weight);
    font-size: var(--menu-parent-font-size);
    line-height: var(--menu-parent-font-line-height);
    text-transform: var(--menu-parent-font-case);
    color: var(--menu-parent-font-color);

    &:hover {
      color: var(--menu-parent-font-color);
    }
  }

  .menu-drawer__menu-item--child {
    font-family: var(--menu-child-font-family);
    font-style: var(--menu-child-font-style);
    font-weight: var(--menu-child-font-weight);
    font-size: var(--menu-child-font-size);
    line-height: var(--menu-child-font-line-height);
    text-transform: var(--menu-child-font-case);
    color: var(--menu-child-font-color);

    &:hover {
      color: var(--menu-child-font-color);
    }
  }

  .menu-drawer__menu--childlist summary.menu-drawer__menu-item {
    display: flex;
    width: 100%;
    padding-inline-end: 0;
  }

  .menu-drawer__list-item--deep .menu-drawer__menu,
  .menu-drawer__menu--grandchildlist {
    padding-inline: 0;
  }

  .menu-drawer__list-item--deep .menu-drawer__menu {
    padding-block-end: 0.5rem;
  }

  .menu-drawer__list-item--deep.menu-drawer__list-item--divider .menu-drawer__menu {
    padding-block-end: 0.3rem;
  }

  .menu-drawer__list-item--flat.menu-drawer__list-item--divider .menu-drawer__menu--grandchildlist {
    padding-block-end: 0.5rem;
  }

  .menu-drawer__menu-item {
    display: flex;
    padding: var(--padding-2xs) 0;
    position: relative;
    text-decoration: none;
    justify-content: space-between;
    align-items: center;
  }

  .menu-drawer__menu-item:has(> .menu-drawer__link-image) {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    row-gap: var(--padding-3xs);
    padding: 0;
  }

  .menu-drawer__link-image {
    width: 100%;
    position: relative;
    aspect-ratio: 16 / 9;
    object-fit: cover;
  }

  /* Fix alignment for collection image mode links without images in drawer */

  /* Target menu items in grids that have images */
  .menu-drawer__menu--grid:has(.menu-drawer__link-image) .menu-drawer__menu-item:not(:has(> .menu-drawer__link-image)) {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    row-gap: var(--padding-3xs);
    padding: 0;
  }

  .menu-drawer__menu--grid:has(.menu-drawer__link-image)
    .menu-drawer__menu-item:not(:has(> .menu-drawer__link-image))::before {
    content: '';
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    background-color: var(--color-foreground-muted);
    opacity: 0.1;
    border-radius: var(--menu-image-border-radius);
  }

  .menu-drawer__close-button {
    position: relative;
    right: auto;
    top: auto;
    width: fit-content;
    height: fit-content;
    color: inherit;
    padding: var(--padding-lg);
  }

  .menu-drawer__back-button {
    display: flex;
    width: 100%;
    padding: var(--padding-md) var(--padding-xl);
    border: none;
    align-items: center;
    color: var(--color-foreground);
    background-color: transparent;
    text-align: left;
    text-decoration: none;
    white-space: nowrap;
    overflow-x: hidden;
    line-height: 1.2;
    box-shadow: none;
  }

  .menu-drawer__menu-item-text {
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /** Styles when the country selector is hidden */
  .menu-drawer .language-selector:not(.menu-drawer__submenu *) {
    width: fit-content;
    padding-inline-start: 0;

    .localization-form__select {
      text-align: left;
    }
  }

  .menu-drawer__menu-item > .svg-wrapper {
    width: fit-content;
    height: fit-content;
    margin: 0;
    padding-block: var(--padding-lg);
    padding-inline-start: var(--padding-xl);
    flex-shrink: 0;
  }

  .menu-drawer__list-item--divider .menu-drawer__menu-item > .svg-wrapper {
    padding-block: var(--padding-md);
  }

  .menu-drawer svg {
    width: var(--icon-size-xs);
    height: var(--icon-size-xs);
  }

  .menu-drawer__submenu {
    position: absolute;
    width: 100%;
    top: 0;
    height: 100dvh;
    left: 0;
    background-color: var(--color-background);
    z-index: var(--layer-flat);
    transform: translateX(-5%);
    visibility: hidden;
    overflow-y: auto;
    opacity: 0;
  }

  .menu-drawer__back-button > .svg-wrapper {
    margin-right: var(--padding-md);
    width: var(--icon-size-xs);
    height: var(--icon-size-xs);
  }

  .menu-drawer__utility-links {
    display: flex;
    flex-direction: column;
    padding: 0;
    margin-block: auto var(--padding-sm);
    margin-inline-start: var(--padding-xl);
    background-color: rgb(var(--color-foreground) 0.03);
  }

  .menu-drawer__account {
    display: inline-flex;
    align-items: center;
    gap: var(--gap-xs);
    text-decoration: none;
    height: 44px;
    font-size: 1.4rem;
    color: rgb(var(--color-foreground));
  }

  .menu-drawer__account svg {
    height: var(--icon-size-sm);
    width: var(--icon-size-sm);
  }

  .menu-drawer__account shop-user-avatar {
    --shop-avatar-size: 2.4rem;

    margin-right: 0.55rem;
    margin-left: -0.45rem;
  }

  .menu-drawer__link-image,
  .menu-drawer__featured-product-image,
  .menu-drawer__featured-collection-image,
  .menu-drawer__featured-collection-link::before {
    border-radius: var(--menu-image-border-radius);
  }

  @keyframes menu-drawer-nav-open {
    0% {
      visibility: hidden;
      opacity: 0;
      transform: translateX(-0.5rem);
    }

    100% {
      visibility: visible;
      opacity: 1;
      transform: translateX(0);
    }
  }

  @keyframes menu-drawer-subnav-open {
    0% {
      visibility: visible;
      opacity: 1;
      transform: translateX(0);
    }

    100% {
      visibility: hidden;
      opacity: 0;
      transform: translateX(-1rem);
    }
  }

  /* Drawer Localization Styles */
  .drawer-localization__button .icon-flag {
    width: var(--menu-localization-font-size, var(--icon-size-sm));
    height: var(--menu-localization-font-size, var(--icon-size-sm));
    clip-path: circle(50%); /* stylelint-disable-line */
    background-position: center;
    background-size: cover;
    margin-inline-end: 4px;
    position: relative;
  }

  .drawer-localization__button .icon-flag::after {
    content: '';
    position: absolute;
    inset: 0;
    box-shadow: inset 0 0 var(--size-shadow) var(--color-shadow);
    border-radius: 50%;
  }

  .drawer-localization .country-filter {
    padding-block: 8px;
  }

  .drawer-localization .drawer-localization__button {
    display: flex;
    padding: 0;
    position: relative;
    text-decoration: none;
    height: 44px;

    &:hover {
      color: var(--color-foreground);
    }
  }

  .drawer-localization .drawer-localization__button .icon-caret {
    width: fit-content;
    height: fit-content;
    margin: 0;
    padding: var(--padding-xl) var(--padding-xl) var(--padding-xl) var(--padding-xs);
  }

  .menu-drawer__localization:not(drawer-localization-component) .language-selector {
    font-family: var(--menu-localization-font);
    font-size: var(--menu-localization-font-size);
  }

  .menu-drawer__localization .language-selector.h5 {
    padding-inline-start: 0;
  }

  .drawer-localization {
    display: contents;
    color: var(--color-foreground);
  }

  .drawer-localization localization-form-component {
    position: relative;
    height: 100%;
  }

  .drawer-localization .mobile-localization,
  .drawer-localization .drawer-localization__button--label {
    display: flex;
    gap: var(--gap-xs);
    margin-block: 0;
    align-items: center;
  }

  .drawer-localization__button--label.h6 {
    font-family: var(--menu-localization-font);
  }

  .drawer-localization img {
    width: var(--icon-size-sm);
  }

  .drawer-localization .localization-button__icon,
  .drawer-localization .localization-button__icon svg {
    width: var(--icon-size-xs);
    height: var(--icon-size-xs);
  }

  .drawer-localization summary.is-disabled {
    pointer-events: none;
  }

  .drawer-localization .localization-wrapper {
    width: 100%;
  }

  .drawer-localization .localization-form {
    display: flex;
    flex-direction: column;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
  }

  .drawer-localization .localization-form > * {
    padding-inline: var(--padding-xl);
  }

  .drawer-localization .language-selector .svg-wrapper.icon-caret {
    transform: translateY(-50%) rotate(0deg);
  }

  .drawer-localization .language-selector .svg-wrapper.icon-caret svg {
    transform: none;
  }
/* END_SNIPPET:header-drawer */

/* START_SNIPPET:jumbo-text (INDEX:247) */
.jumbo-text__container {
    width: 100%;
  }

  footer .jumbo-text__container {
    pointer-events: none;
  }

  jumbo-text {
    display: block;
    font-family: var(--font-family, inherit);
    font-style: var(--font-style, normal);
    color: var(--color, inherit);
    font-weight: var(--font-weight, inherit);
    letter-spacing: var(--letter-spacing, -0.02em);
    line-height: var(--line-height, 1);
    opacity: 0;
    visibility: hidden;
    text-align: var(--text-align);
    text-box: var(--text-trim, trim-end cap text);
    text-transform: var(--text-transform, none);
    transition: opacity 0.3s ease;
    width: 100%;
    margin-left: var(--margin-left-nudge, 0);
    margin-right: var(--margin-right-nudge, 0);
    overflow: visible;
  }

  jumbo-text.ready {
    opacity: 1;
    visibility: visible;
  }

  jumbo-text[data-cap-text='true'] {
    /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
    text-box-edge: cap text;
  }

  .jumbo-text-line {
    display: inline-flex;
    white-space: pre;
  }

  @media (prefers-reduced-motion: no-preference) {
    /* Blur effect */
    .ready[data-text-effect='blur'] {
      filter: blur(20px);
      opacity: 0.5;
      scale: 1.05;
      transition: filter 1.6s var(--animation-timing-fade-in), opacity 1.3s var(--animation-timing-fade-in),
        scale 1.6s var(--animation-timing-fade-in);
    }

    .jumbo-text-visible[data-text-effect='blur'] {
      filter: blur(0);
      opacity: 1;
      scale: 1;
    }

    /* Reveal effect */
    .ready[data-text-effect='reveal'] {
      overflow: hidden;
    }

    .ready[data-text-effect='reveal'] .jumbo-text-line {
      transform: translateY(100%);
    }

    .jumbo-text-visible[data-text-effect='reveal'] .jumbo-text-line {
      transition: transform 0.5s var(--animation-timing-fade-in) calc(var(--line-index) * 0.05s);
      transform: translateY(0);
    }

    .jumbo-text-visible[data-text-effect='reveal'] {
      overflow: visible;
      transition: overflow 0s linear 0.75s;
    }
  }
/* END_SNIPPET:jumbo-text */

/* START_SNIPPET:list-filter (INDEX:250) */
.facets input:checked + label {
    font-weight: 500;
  }

  .facets .checkbox .icon-checkmark {
    transition: border-color 0.2s ease, background-color 0.2s ease;
  }

  .facets .checkbox:not(.checkbox--disabled):hover .icon-checkmark {
    border-color: rgb(var(--color-foreground-rgb) / var(--opacity-40-60));
    background-color: rgb(var(--color-foreground-rgb) / var(--opacity-5));
  }

  /* Hover state for checked checkboxes - targeting via adjacent sibling */
  .facets .checkbox:not(.checkbox--disabled):hover .checkbox__input:checked + .checkbox__label .icon-checkmark {
    background-color: rgb(var(--color-foreground-rgb) / var(--opacity-85));
  }

  .facets .checkbox:not(.checkbox--disabled):hover .checkbox__label-text {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-90));
  }

  .facets .checkbox .checkbox__label-text {
    transition: color 0.2s ease, font-weight 0.2s ease;
  }

  /* Pill style */
  .facets__pill-label {
    --pill-label-padding-inline: var(--padding-xs);
    --pill-label-border-radius: var(--style-border-radius-md);
    --pill-label-border-width: var(--variant-picker-button-border-width);
    --pill-label-height: var(--button-size-md);
    --pill-label-focus-outline-color: var(--color-foreground);
    --pill-label-color: var(--color-foreground);
    --pill-label-color-rgb: var(--color-foreground-rgb);
    --pill-label-background-color: var(--color-background);
    --pill-label-background-color-rgb: var(--color-background-rgb);
    --pill-label-border-opacity: var(--facets-low-opacity);

    display: inline-flex;
    position: relative;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 0 var(--pill-label-border-width) rgb(var(--pill-label-color-rgb) / var(--opacity-10-25));
    border-radius: var(--pill-label-border-radius);
    height: var(--pill-label-height);
    width: 100%;
    padding-inline: var(--pill-label-padding-inline);
    color: rgb(var(--pill-label-color-rgb));
    background-color: rgb(var(--pill-label-background-color-rgb));
    cursor: pointer;
    transition: color var(--animation-speed) var(--animation-easing),
      background-color var(--animation-speed) var(--animation-easing);
    outline-color: var(--pill-label-focus-outline-color);

    &:hover {
      --pill-label-border-opacity: 100%;
    }
  }

  .facets__pill-input {
    &:checked + .facets__pill-label {
      --pill-label-color-rgb: var(--color-background-rgb);
      --pill-label-background-color-rgb: var(--color-foreground-rgb);
      --pill-label-border-opacity: 0;

      font-weight: 500;
    }

    &:disabled + .facets__pill-label {
      opacity: var(--disabled-opacity);
      cursor: not-allowed;

      &:hover {
        --pill-label-border-opacity: var(--facets-low-opacity);
      }
    }
  }

  .facets__status-wrapper {
    display: flex;
    align-items: center;
  }

  .facets--drawer .facets__status-wrapper {
    @media screen and (max-width: 749px) {
      gap: var(--gap-3xs);
    }
  }

  .facets--vertical .facets__status-wrapper {
    gap: var(--gap-xs);
  }

  .facets--horizontal .facets__status-wrapper {
    gap: 0;
  }

  .facets__pill-input:disabled + .facets__pill-label svg {
    position: absolute;
    top: 0;
    left: 0;
    border-radius: var(--style-border-radius-md);
  }

  .facets__pill-label svg line {
    stroke-width: 1.5px;
    stroke: rgb(var(--color-foreground-rgb) / var(--facets-low-opacity));
  }

  .facets__pill-wrapper {
    position: relative;
  }

  .facets__pill-input {
    position: absolute;
    inset: 0;
    margin: 0;
    padding: 0;
    width: auto;
    height: auto;
    aspect-ratio: unset;
    border: none;
    border-radius: 0;
    background: transparent;
    appearance: auto;
    display: block;
    opacity: 0;
    cursor: pointer;
  }

  /* Swatches */
  .facets__status--swatches {
    display: none;
  }

  .facets__swatch-wrapper {
    display: flex;
  }

  .variant-option__swatch-wrapper {
    position: relative;
    overflow: visible;
    border-radius: var(--options-border-radius);
  }

  .variant-option--swatches-disabled {
    pointer-events: none;
    cursor: not-allowed;
  }

  .variant-option--swatches-disabled .variant-option__swatch-wrapper {
    overflow: hidden;
  }

  .facets--horizontal .facets__status--swatches {
    @media screen and (min-width: 750px) {
      display: flex;
    }
  }

  .facets--horizontal .sorting-filter .facets__status {
    @media screen and (min-width: 750px) {
      display: none;
    }
  }

  .facets__status--swatches .swatch {
    width: calc(var(--variant-picker-swatch-width) / 1.5);
    height: calc(var(--variant-picker-swatch-height) / 1.5);
  }

  .facets__status--swatches .swatch + .swatch {
    margin-left: calc(var(--variant-picker-swatch-width) / -3);
    outline: 1px solid rgb(var(--color-background-rgb));
  }

  .facets__inputs-wrapper .facets__inputs-list--images {
    display: grid;
    grid-template-columns: repeat(var(--image-columns), 125px);
    gap: var(--gap-sm);
  }

  .facets--drawer .facets__inputs-wrapper .facets__inputs-list--images {
    grid-template-columns: repeat(3, 1fr);

    @media screen and (min-width: 750px) {
      grid-template-columns: repeat(4, 1fr);
    }
  }

  .facets--vertical .facets__inputs-wrapper .facets__inputs-list--images {
    grid-template-columns: repeat(2, 1fr);
  }

  .facets--drawer .facets__inputs-list--images {
    padding-top: var(--padding-xs);
  }

  .facets__image-wrapper {
    aspect-ratio: 1/1;
    width: 100%;
    padding: var(--padding-xs);
    position: relative;
    overflow: hidden;
  }

  .facets__image-wrapper img {
    height: 100%;
    width: 100%;
    object-fit: contain;
    border-radius: calc(var(--border-radius) / 2);
  }

  .facets__image-label {
    width: 100%;
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    padding-block-end: var(--padding-xs);
    cursor: pointer;
  }

  .facets__inputs-list-item--disabled .facets__image-label {
    cursor: not-allowed;
  }

  .facets__inputs-list-item:not(.facets__inputs-list-item--disabled) .facets__image-label:hover {
    font-weight: 500;
  }

  /* Filter-specific variant-option styles */
  .facets__inputs-list--swatches-grid .variant-option__button-label--has-swatch:hover .swatch {
    --focus-outline: var(--focus-outline-width) solid rgb(var(--color-foreground-rgb) / var(--opacity-35-55));

    outline: var(--focus-outline);
    outline-offset: var(--focus-outline-offset);
  }

  .facets__inputs-list--swatches-grid .variant-option__button-label:has(:focus-visible) .swatch {
    --focus-outline: var(--focus-outline-width) solid currentcolor;

    outline: var(--focus-outline);
    outline-offset: var(--focus-outline-offset);
  }

  .facets__inputs-list--swatches-grid .variant-option__button-label:has(:focus-visible) {
    outline: none;
  }

  .facets__inputs-list--swatches-grid .variant-option__button-label--has-swatch:hover {
    outline: none;
  }

  .facets__inputs-list--swatches-grid .variant-option__button-label--has-swatch:has(:checked) {
    --focus-outline: none;
  }

  .facets__inputs-list--swatches-grid .variant-option__button-label--has-swatch:has(:checked) .swatch {
    outline: var(--focus-outline);
    outline-offset: var(--focus-outline-offset);
  }

  .facets__inputs-list--swatches .variant-option__button-label {
    --color-variant-text: var(--color-foreground);
  }

  .facets__inputs-list--swatches {
    --variant-picker-swatch-width: 32px;
    --variant-picker-swatch-height: 32px;

    @media screen and (min-width: 750px) {
      --variant-picker-swatch-width: 26px;
      --variant-picker-swatch-height: 26px;
    }
  }

  .facets--vertical .facets__inputs-wrapper .facets__inputs-list--swatches-grid {
    gap: var(--gap-sm);
  }

  .facets--vertical .facets__inputs-list--swatches .facets__inputs-list-item {
    display: flex;
  }

  .facets__inputs-wrapper .facets__inputs-list--swatches-grid {
    --columns: 2;

    display: grid;
    grid-template-columns: repeat(var(--columns), 1fr);
  }

  .facets__inputs-wrapper .facets__inputs-list--swatches-grid .variant-option--swatches {
    cursor: pointer;
    overflow: visible;
  }

  .facets__inputs-list-item--disabled .variant-option--swatches {
    cursor: not-allowed;
  }

  .facets__inputs-wrapper .facets__inputs-list--swatches-grid label {
    cursor: pointer;
    word-break: break-word;
    white-space: normal;
  }

  .facets__inputs-list--swatches-grid .facets__inputs-list-item--disabled label {
    cursor: not-allowed;
  }

  .facets__inputs-list-item--disabled .variant-option__button-label {
    cursor: not-allowed;
  }

  .facets__inputs-wrapper
    .facets__inputs-list--swatches-grid
    .variant-option__button-label--has-swatch:has(input[type='checkbox']) {
    align-items: center;
    overflow: visible;
    justify-content: flex-start;
    display: flex;
    width: 100%;
    flex-basis: unset;
    gap: var(--gap-sm);
  }

  .facets__inputs-wrapper .facets__inputs-list--swatches-grid .variant-option__button-label:has(:checked) {
    color: rgb(var(--color-foreground-rgb));
    background-color: rgb(var(--color-background-rgb));
    font-weight: 500;
    transition: font-weight 0.2s ease;
  }

  .facets .variant-option--swatches {
    --options-border-radius: var(--variant-picker-swatch-radius);

    width: auto;
  }

  .facets__inputs-list-item:not(.facets__inputs-list-item--disabled) .variant-option__button-label:hover {
    font-weight: 500;
  }

  /* Variant option images (filters) */
  .variant-option--images {
    --image-facet-border-width: var(--variant-picker-button-border-width);
    --image-facet-border-opacity: var(--facets-low-opacity);
    --image-facet-border-radius: var(--style-border-radius-xs);

    position: relative;
    border-radius: var(--image-facet-border-radius);
    box-shadow: inset 0 0 0 var(--image-facet-border-width)
      rgb(var(--color-foreground-rgb) / var(--image-facet-border-opacity));

    &:hover {
      --image-facet-border-opacity: 100%;
    }

    &:has(input:checked) {
      font-weight: 500;
      transition: font-weight 0.2s ease;
    }

    &:has(input:checked):hover {
      --image-facet-border-width: calc(var(--variant-picker-button-border-width) + 0.5px);
    }

    &:has(input:focus-visible) {
      outline: var(--focus-outline-width) solid currentcolor;
      outline-offset: var(--focus-outline-offset);
    }
  }

  .variant-option--images input {
    /* remove the checkbox from the page flow */
    position: absolute;

    /* set the dimensions to match those of the label */
    inset: 0;

    /* hide it */
    opacity: 0;
    margin: 0;
    padding: 0;
    width: 100%;
    height: 100%;
    aspect-ratio: unset;
    border: none;
    border-radius: 0;
    background: transparent;
    appearance: auto;
    display: block;
    cursor: pointer;
  }

  .facets__inputs-list-item--disabled .variant-option--images {
    --image-facet-border-opacity: 0;

    opacity: var(--disabled-opacity);
    cursor: not-allowed;

    &:hover {
      --image-facet-border-opacity: 0;
    }

    img {
      opacity: var(--disabled-opacity);
    }

    input,
    label,
    .facets__image-label {
      cursor: not-allowed;
    }

    .facets__image-wrapper {
      border: var(--style-border-width) solid rgb(var(--color-foreground-rgb) / var(--opacity-30));
      border-radius: var(--image-facet-border-radius);
    }
  }

  /* Position disabled-svg */
  .variant-option--images svg {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    width: 100%;
    height: 100%;
    stroke-width: var(--border-width);
    stroke: rgb(var(--color-foreground-rgb) / var(--opacity-5));
  }

  /* Position label text and handle overflow */
  .facets__inputs-list-item,
  .variant-option--images {
    min-width: 0;
  }

  /* Safari < 16.4 outline border-radius workaround - filter-specific */
  @supports not (background-color: rgb(from red 150 g b / alpha)) {
    .facets__inputs-list--swatches-grid .variant-option__button-label--has-swatch:hover .swatch {
      outline: none;
      position: relative;
      overflow: visible;
    }

    .facets__inputs-list--swatches-grid .variant-option__button-label--has-swatch:hover .swatch::after {
      content: '';
      position: absolute;
      inset: calc(-1 * var(--focus-outline-offset));
      border: var(--focus-outline);
      border-radius: var(--focus-outline-radius, 50%);
      background-color: transparent;
      display: inherit;
    }
  }
/* END_SNIPPET:list-filter */

/* START_SNIPPET:localization-form (INDEX:251) */
/* Localization */
  localization-form-component {
    display: flex;
    width: var(--width, auto);

    @media screen and (min-width: 750px) {
      position: relative;
    }
  }

  localization-form-component[data-show-filter='false'] .country-selector-form__wrapper {
    padding-block-start: var(--padding-xs);
  }

  .localization-form {
    width: 100%;
  }

  localization-form-component .button:is(:not(.country-filter__reset-button)) {
    --button-color: var(--color-primary);
    --button-background-color: var(--language-button-background-color, var(--color-background));
    --button-border-color: var(--language-button-border-color, var(--color-border));

    text-decoration-color: transparent;
    text-decoration-thickness: 0.075em;
    text-underline-offset: 0.125em;
    transition: text-decoration-color var(--animation-speed) var(--animation-easing);
  }

  localization-form-component .button:is(:not(.country-filter__reset-button)):hover,
  .localization-form__list-item:hover,
  .localization-form__list-item:focus {
    --button-color: var(--color-primary-hover);

    background-color: rgb(var(--color-primary-hover-rgb) / var(--opacity-8));
  }

  .localization-form__list-item[aria-current='true'] {
    --button-color: var(--color-primary-active);

    background-color: rgb(var(--color-primary-hover-rgb) / var(--opacity-10));
  }

  .localization-form__list-item-disabled {
    pointer-events: none;
  }

  .localization-form__list-item:focus-visible {
    outline: none;
  }

  localization-form-component .localization-selector {
    display: flex;
    align-items: center;
    gap: var(--margin-2xs);
  }

  localization-form-component .country-filter__search-icon {
    left: 8px;
    right: auto;
    color: var(--color-foreground-muted);
    pointer-events: none;
  }

  .country-filter__search-icon .svg-wrapper svg {
    width: var(--icon-size-sm);
    height: var(--icon-size-sm);
  }

  .disclosure {
    width: 100%;
  }

  .localization-form__list {
    position: relative;
    width: 100%;
    padding-block: 0 var(--padding-xs);
    font-size: var(--font-size-lg);
    scroll-padding: var(--padding-xs) 0;
    overflow-y: auto;
    white-space: nowrap;

    /* Hide scrollbar which would cause extra right padding in Safari */
    scrollbar-width: none;

    &::-webkit-scrollbar {
      display: none;
    }
  }

  .localization-form__list-item:not([hidden]) {
    margin-block-end: var(--margin-3xs);
    display: flex;
    gap: var(--margin-sm);
    padding: 8px;
    border-radius: 8px;
    line-height: var(--font-line-height-md);
    align-items: center;
    text-align: start;
    cursor: pointer;
    transition: background-color var(--animation-speed) var(--animation-easing);

    .country {
      flex: 1;
      color: var(--color-foreground);
    }

    &:hover {
      background-color: rgb(var(--color-foreground-rgb) / var(--opacity-8));
    }

    &[aria-current='true'] {
      .country {
        font-weight: 500;
      }
    }
  }

  .localization-form__list-item#no-results-message {
    grid-template-columns: 1fr;
    text-align: center;
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }

  .is-searching .localization-form__list-item .country {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-80));
  }

  .localization-form__list-item .country mark {
    font-weight: 500;
    background: none;
    color: var(--color-foreground);
  }

  .country-filter {
    position: relative;
    padding: var(--padding-xs);
    border-bottom: var(--style-border-width) solid transparent;
    transition: border-color var(--animation-values);
  }

  .country-filter.is-scrolled {
    border-color: var(--color-border);
  }

  .country-selector-form__wrapper {
    overflow-y: auto;
    max-height: 100%;
    flex-grow: 1;
  }

  .language-selector {
    display: flex;
    gap: var(--gap-xs);
    padding: var(--padding-md) var(--padding-lg);
    position: relative;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }

  .language-selector__label {
    flex-shrink: 0;
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }

  .localization-form__select {
    border: none;
    color: var(--color-foreground);
    appearance: none;
    background-color: var(--color-input-background);
    padding-block: var(--padding-3xs);
    padding-inline: var(--padding-xs) calc(var(--icon-size-xs) + var(--padding-xs));
    text-align: right;
    cursor: pointer;
    max-width: 40vw;
    text-overflow: ellipsis;
    field-sizing: content;

    &:focus-visible {
      outline: var(--focus-outline-width) solid currentcolor;
    }

    &:focus {
      outline: none;
    }
  }

  #header-component[transparent] localization-form-component .localization-form .localization-form__select {
    background-color: transparent;
  }

  .localization-form__select option {
    background-color: var(--color-input-background);
    color: var(--color-input-text);
  }

  .language-selector .svg-wrapper.icon-caret {
    width: var(--icon-size-xs);
    height: var(--icon-size-xs);
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
  }

  .language-selector--collapse-space {
    padding-inline-end: var(--padding-2xs);
  }

  .language-selector--collapse-space .localization-form__select {
    padding-inline-end: var(--icon-size-xs);
  }

  .language-selector--collapse-space .svg-wrapper.icon-caret {
    right: 0;
  }

  .localization-form .icon-checkmark {
    width: var(--icon-size-xs);
    height: var(--icon-size-xs);
  }

  .localization-form .svg-wrapper.icon-checkmark {
    visibility: hidden;
  }

  .localization-form__list-item[aria-current='true'] .svg-wrapper.icon-checkmark {
    visibility: visible;
  }

  .country-filter__input {
    width: 100%;
    height: 44px;
    font-size: var(--font-size-lg);
    padding: var(--padding-md) var(--padding-lg) var(--padding-md) calc(var(--margin-md) + var(--padding-xl));
    border: 1px solid var(--color-foreground);
    color: var(--color-input-text);
    background-color: var(--color-input-background);
    outline-offset: -1px;

    @media screen and (min-width: 750px) {
      height: 36px;
    }
  }

  .country-filter__input::placeholder {
    color: inherit;
  }

  .country-filter .field {
    position: relative;
  }

  .country-filter .field__label {
    font-size: var(--font-size-lg);
    left: var(--margin-2xl);
    top: var(--margin-xl);
    pointer-events: none;
    position: absolute;
  }

  .country-filter__input:focus ~ .field__label,
  .country-filter__input:not(:placeholder-shown) ~ .field__label,
  .country-filter__input:-webkit-autofill ~ .field__label {
    font-size: var(--font-size-xs);
    top: var(--margin-xs);
  }

  .country-filter .field__button:not([hidden]) {
    display: flex;
    height: fit-content;
    position: absolute;
    padding: 0;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    align-items: center;
    background-color: transparent;
    color: var(--color-input-text);
    border: 0;
  }

  input[type='search']::-webkit-search-cancel-button {
    appearance: none;
  }

  .country-selector__close-button {
    display: none;
  }
/* END_SNIPPET:localization-form */

/* START_SNIPPET:media (INDEX:252) */
.media-block {
    overflow: hidden;
    position: relative;

    @media screen and (min-width: 750px) {
      min-height: var(--media-height);
    }
  }

  .media-block__media {
    height: var(--media-height-mobile, auto);
    object-fit: var(--image-position, 'cover');
    object-position: center center;
    width: 100%;

    @media screen and (min-width: 750px) {
      height: 100%;
      position: absolute;
    }
  }

  deferred-media[class].media-block__media
    :is(.deferred-media__poster-button img, .deferred-media__poster-button ~ video) {
    object-fit: var(--video-position, 'cover');
  }

  /* This is to support corner radius on video and align the video to the center of the block */
  .media-block__placeholder {
    height: 100%;
    width: 100%;
    object-fit: cover;
    object-position: center center;
    overflow: hidden;
    position: relative;
  }

  .media-block__media--video {
    display: flex;
    align-items: center;
    justify-content: center;

    @media screen and (max-width: 749px) {
      --media-height-mobile: auto;
    }
  }
/* END_SNIPPET:media */

/* START_SNIPPET:overlay (INDEX:257) */
.overlay {
    position: absolute;
    inset: 0;
    z-index: var(--overlay-layer);
    pointer-events: none;
    border-radius: var(--overlay-border-radius, 0);
  }

  .overlay--solid {
    background: var(--overlay-color);
  }

  .overlay--gradient {
    background: linear-gradient(var(--overlay-direction), var(--overlay-color), var(--overlay-color--end));
  }
/* END_SNIPPET:overlay */

/* START_SNIPPET:pagination-controls (INDEX:258) */
.pagination {
    --pagination-size: 36px;
    --pagination-inset: 2px;
    --pagination-radius: 6;

    display: flex;
    justify-content: center;
    padding: var(--padding-xl) var(--padding-sm);
    margin-top: var(--padding-xl);
    position: relative;
  }

  .pagination__list {
    display: flex;
    gap: 0;
    align-items: center;
    list-style: none;
    margin: 0;
    padding: 0;
    position: relative;
  }

  .pagination__item {
    width: var(--pagination-size);
    aspect-ratio: 1;
    display: grid;
    place-items: center;
  }

  .pagination__link {
    display: grid;
    place-items: center;
    color: var(--color-foreground);
    text-decoration: none;
    width: 100%;
    height: 100%;
    user-select: none;
    position: relative;
    outline-color: var(--color-foreground);
    -webkit-tap-highlight-color: transparent;
    font-size: var(--font-size--md);
    font-weight: var(--font-weight-normal);
    border-radius: calc(var(--pagination-radius) * 1px);
    transition: color var(--hover-transition-duration) var(--hover-transition-timing),
      opacity var(--hover-transition-duration) var(--hover-transition-timing);
  }

  .pagination__link:focus-visible {
    outline: 2px solid var(--color-foreground);
    outline-offset: 2px;
  }

  .pagination__link--current {
    color: var(--color-background);
    font-weight: var(--font-weight-medium);
    cursor: default;
  }

  .pagination__link--gap {
    cursor: default;
    pointer-events: none;
  }

  .pagination__link--arrow {
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .pagination__link--disabled {
    opacity: 0.3;
    cursor: not-allowed;
    pointer-events: none;
  }

  .pagination__link svg {
    width: 0.5rem;
    height: 0.75rem;
    flex-shrink: 0;
  }

  .pagination__item--mobile-only {
    display: none;
  }

  /* Fallback for browsers without anchor positioning support */
  @supports not (anchor-name: --pagination-active) {
    .pagination__link:not(.pagination__link--gap)::before {
      content: '';
      position: absolute;
      inset: var(--pagination-inset);
      border-radius: calc(var(--pagination-radius) * 1px);
      background: rgb(var(--color-foreground-rgb) / var(--opacity-10));
      z-index: -1;
      opacity: 0;
      transition: background var(--hover-transition-duration) var(--hover-transition-timing),
        opacity var(--hover-transition-duration) var(--hover-transition-timing);
    }

    .pagination__link[aria-current='page']::before {
      background: var(--color-foreground);
      opacity: 1;
    }

    .pagination__link:hover:not([aria-current='page'], .pagination__link--gap, .pagination__link--disabled)::before {
      opacity: 1;
    }
  }

  /* Modern approach with anchor positioning */
  @supports (anchor-name: --pagination-active) {
    .pagination__list::before {
      content: '';
      z-index: -1;
      position: absolute;
      width: calc(var(--pagination-size) - (2 * var(--pagination-inset)));
      aspect-ratio: 1;
      pointer-events: none;
      opacity: 0;
      border-radius: calc(var(--pagination-radius) * 1px);
      background: rgb(var(--color-foreground-rgb) / var(--opacity-10));
      transition: left var(--hover-transition-duration) var(--hover-transition-timing),
        top var(--hover-transition-duration) var(--hover-transition-timing);
    }

    /* Hide hover indicator on touch devices */
    @media (hover: none) and (pointer: coarse) {
      .pagination__list::before {
        content: unset;
      }
    }

    .pagination__list:has(
        .pagination__link:is(:hover, :focus-visible):not(.pagination__link--gap, .pagination__link--disabled))::before {
      opacity: 1;
    }

    /* Style current page directly */
    .pagination__link[aria-current='page']::before {
      content: '';
      position: absolute;
      inset: var(--pagination-inset);
      border-radius: calc(var(--pagination-radius) * 1px);
      background: var(--color-foreground);
      z-index: -1;
    }

    .pagination__list
      .pagination__item:has(
        .pagination__link:is(:hover, :focus-visible):not(.pagination__link--gap, .pagination__link--disabled)) {
      anchor-name: --pagination-hover;
    }

    /* Position hover indicator using anchor */
    .pagination__list::before {
      position-anchor: --pagination-hover;
      left: calc(anchor(left) + var(--pagination-inset));
      top: calc(anchor(top) + var(--pagination-inset));
    }

    .pagination__item:has(+ .pagination__item--gap) .pagination__link::after,
    .pagination__item--gap + .pagination__item .pagination__link::after {
      position: absolute;
      content: '';
      pointer-events: auto;
    }

    .pagination__item:has(+ .pagination__item--gap) .pagination__link::after {
      inset: 0 -50% 0 100%;
    }

    .pagination__item--gap + .pagination__item .pagination__link::after {
      inset: 0 100% 0 -50%;
    }
  }

  @media screen and (max-width: 749px) {
    .pagination {
      --pagination-size: 44px;
      --pagination-inset: 5px;

      padding: var(--padding-lg) var(--padding-sm);
    }

    .pagination__link {
      font-size: var(--font-size--sm);
    }

    .pagination__item--mobile-hide {
      display: none;
    }

    .pagination__item--mobile-only {
      display: grid;
    }

    .pagination__item:has(.pagination__link--gap) {
      width: calc(var(--pagination-size) * 0.5);
    }
  }
/* END_SNIPPET:pagination-controls */

/* START_SNIPPET:password-layout-styles (INDEX:259) */
.password-main-content {
    flex: 1;
    display: flex;
    flex-direction: column;
  }

  .password-dialog {
    max-width: 100vw;
    max-height: 100svh;
    width: 100vw;
    height: 100svh;
    border: none;
    transition: opacity var(--animation-values), display var(--animation-speed) allow-discrete,
      overlay var(--animation-speed) allow-discrete;

    &::backdrop {
      display: none;
    }
  }

  .password-dialog[open] {
    opacity: 1;
    top: 0;
    left: 0;
  }

  @starting-style {
    .password-dialog[open] {
      opacity: 0;
    }
  }

  .password-dialog:not([open]) {
    opacity: 0;
  }

  @starting-style {
    .password-dialog:not([open]) {
      opacity: 1;
    }
  }

  .password-dialog__close-button {
    cursor: pointer;
  }

  .password-dialog__header {
    position: absolute;
    top: 0;
    right: 0;
    padding: var(--padding-lg);
    z-index: var(--layer-raised);
  }

  .password-dialog__content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: var(--padding-lg);
    height: 100%;
    transition: transform var(--animation-values);
  }

  .password-dialog__content .email-signup__message {
    padding-block-start: var(--padding-xl);
  }

  .password-dialog[open] .password-dialog__content {
    transform: translateY(0);
  }

  @starting-style {
    .password-dialog[open] .password-dialog__content {
      transform: translateY(1em);
    }
  }

  .password-dialog:not([open]) .password-dialog__content {
    transform: translateY(1em);
  }

  @starting-style {
    .password-dialog:not([open]) .password-dialog__content {
      transform: translateY(0);
    }
  }

  .storefront-password-form {
    max-width: 400px;
    width: 100%;
  }

  .email-signup__input-group,
  .password-dialog__submit-button {
    width: 100%;

    @media screen and (min-width: 750px) {
      width: auto;
    }
  }
/* END_SNIPPET:password-layout-styles */

/* START_SNIPPET:predictive-search-styles (INDEX:263) */
/* Shared predictive search styles (used by both predictive-search and predictive-search-empty sections) */
  .predictive-search-dropdown {
    display: flex;
    flex-direction: column;
    position: relative;
    top: 0;
    left: 0;
    right: 0;
    z-index: var(--layer-base);
  }

  .predictive-search-results__title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: var(--font-size--body-md);
    font-weight: 500;
    margin-block: var(--margin-sm) var(--margin-xs);
    width: 100%;
    text-transform: var(--title-case);

    &:first-of-type {
      margin-block-start: 0;
    }

    @media screen and (max-width: 749px) {
      margin-block: var(--margin-lg) var(--margin-sm);
    }
  }

  .predictive-search-results__no-results {
    animation-delay: 100ms;
    transition: opacity var(--animation-speed-medium) var(--animation-timing-fade-in);
  }

  .predictive-search-results__no-results:last-child {
    margin-block: var(--margin-lg);
    text-align: center;
  }

  /* Predictive search section styles */
  input[type='search']::-webkit-search-decoration {
    -webkit-appearance: none; /* stylelint-disable-line */
  }

  .search-action .predictive-search {
    z-index: calc(var(--layer-header-menu) + 2);
  }

  .search-action .search-modal .predictive-search {
    z-index: var(--layer-window-overlay);
  }

  .header__column--right .predictive-search-form__content-wrapper {
    right: 0;
    left: unset;
  }

  .search-modal .predictive-search-form__content-wrapper {
    width: 100%;

    @media screen and (min-width: 750px) {
      height: fit-content;
    }
  }
  .dialog-modal .predictive-search-form__header-inner {
    @media screen and (min-width: 750px) {
      border: 0;
    }
  }

  .search-modal__content .predictive-search-form__content {
    max-height: var(--modal-max-height);
  }

  .predictive-search:has(.predictive-search-dropdown) .search-input {
    outline-color: transparent;
  }

  .predictive-search:has(.predictive-search-dropdown) .predictive-search-form__header-inner:focus-within {
    border-top-color: transparent;
    border-right-color: transparent;
    border-left-color: transparent;

    @media screen and (max-width: 749px) {
      border-bottom-color: transparent;
    }
  }

  .predictive-search:has(.predictive-search-dropdown[aria-expanded='true'])
    .predictive-search-form__header-inner:focus-within {
    border-top-color: transparent;
    border-right-color: transparent;
    border-left-color: transparent;
    border-radius: var(--search-border-radius);

    @media screen and (max-width: 749px) {
      border-radius: var(--style-border-radius-inputs);
    }
  }

  .dialog-modal .predictive-search-form__header {
    border: 0;
    border-radius: 0;
    background-color: var(--color-background);
    border-bottom: var(--style-border-width) solid var(--color-border);

    @media screen and (min-width: 750px) {
      padding: var(--padding-2xs) var(--padding-2xs) 0;
      border-bottom: var(--search-border-width) solid var(--color-border);
    }

    @media screen and (max-width: 749px) {
      transition: box-shadow 0.2s ease;
      box-shadow: none;
    }
  }

  .search-action .predictive-search:has(.predictive-search-dropdown) .predictive-search-form__header:focus-within {
    border-radius: var(--search-border-radius) var(--search-border-radius) 0 0;
    transition: box-shadow var(--animation-speed) var(--animation-easing);
    background-color: var(--color-background);

    @media screen and (max-width: 749px) {
      border-radius: var(--style-border-radius-inputs) var(--style-border-radius-inputs) 0 0;
    }
  }

  @media screen and (max-width: 749px) {
    .dialog-modal .predictive-search__close-modal-button {
      padding-inline-start: var(--margin-xs);
      margin-inline-start: 0;
    }
  }

  .dialog-modal[open] {
    @media screen and (max-width: 749px) {
      border-radius: 0;
    }
  }

  .dialog-modal .predictive-search-form__header:has(.predictive-search-form__header-inner:focus-within) {
    @media screen and (min-width: 750px) {
      border-bottom-color: transparent;
    }
  }

  @media screen and (max-width: 749px) {
    .dialog-modal {
      .predictive-search__reset-button-icon {
        display: none;
      }

      .predictive-search__reset-button-text {
        display: block;
      }

      .predictive-search-form__content {
        /* The parent has overflow auto, we want to prevent a double scrollbar during animation */
        max-height: 100%;
      }

      .predictive-search-form__content-wrapper {
        box-shadow: none;
      }

      .predictive-search-form__header {
        box-shadow: none;
      }

      .predictive-search-form__footer {
        padding-block: var(--padding-2xl);
      }
    }
  }

  .predictive-search-results__pill {
    font-weight: 500;
    white-space: nowrap;
    color: var(--color-foreground);
    transition: background-color var(--animation-speed-medium) var(--animation-timing-hover),
      box-shadow var(--animation-speed-medium) var(--animation-timing-bounce),
      transform var(--animation-speed-medium) var(--animation-timing-bounce);
    margin: 2px;

    &:hover {
      transform: scale(1.03);
      box-shadow: 0 2px 5px rgb(0 0 0 / var(--opacity-8));
    }
  }

  .predictive-search-results__pill mark {
    background-color: transparent;
    font-weight: 200;
    color: rgb(var(--color-foreground-rgb) / var(--opacity-80));
  }

  .predictive-search-results__pill:focus,
  .predictive-search-results__pill:hover,
  .predictive-search-results__card--query:is([aria-selected='true'], :focus-within) .predictive-search-results__pill {
    --pill-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-8));

    background-color: var(--pill-background-color);
    outline: var(--border-width-sm) solid var(--color-border);
    border: var(--border-width-sm);
    text-decoration: none;
  }

  .predictive-search-results__wrapper.predictive-search-results__wrapper-queries {
    margin-bottom: var(--margin-lg);
    padding-inline: var(--padding-xl);
    gap: var(--gap-2xs);
  }

  .predictive-search-results__card {
    --title-font-size: var(--font-size--md);
    --title-margin-block: var(--margin-xs);

    flex: 0 0 auto;
    scroll-snap-align: start;
    scroll-margin-block: calc(var(--title-font-size) + var(--title-margin-block) + var(--padding-sm))
      calc(var(--padding-xl) + var(--button-padding-block) * 2);
    transition: transform var(--animation-speed-medium) var(--animation-timing-default),
      background-color var(--animation-speed-medium) var(--animation-timing-hover),
      border-color var(--animation-speed-medium) var(--animation-timing-hover);

    &:nth-last-child(3) {
      scroll-snap-align: end;
    }

    &:active {
      transform: scale(0.97);
      transition: transform 100ms var(--animation-timing-active);
    }
  }

  .recently-viewed-wrapper .predictive-search-results__card {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  }

  .recently-viewed-wrapper.removing .predictive-search-results__card {
    opacity: 0;
    transform: translateY(-10px);
    pointer-events: none;
  }

  .predictive-search-results__card--product,
  .recently-viewed-wrapper .predictive-search-results__card--product {
    &:active {
      transform: scale(0.97);
      transition: transform 100ms var(--animation-timing-active);
    }

    &:hover {
      background-color: var(--card-bg-hover);
      border-radius: var(--product-corner-radius);
      padding: calc(var(--padding-2xs) + 2px);
      margin: calc((var(--padding-2xs) + 2px) * -1);
    }

    &:is([aria-selected='true'].keyboard-focus, &:focus-visible, &:has(.resource-card:focus-visible)) {
      background-color: var(--card-bg-hover);
      padding: calc(var(--padding-2xs) + 1px);
      margin: calc((var(--padding-2xs) + 1px) * -1);
      outline: var(--border-width-sm) solid var(--color-border);
      border-radius: calc(var(--product-corner-radius) + 1px);
      border-color: var(--card-border-focus);
    }
  }

  .predictive-search-results__card:not(.predictive-search-results__card--product) {
    padding: var(--padding-sm);
    border: var(--border-width-sm) solid var(--color-border);
    border-radius: var(--card-corner-radius);
    width: 60cqi;
    content-visibility: visible;

    @media screen and (min-width: 750px) {
      width: 27.5cqi;
    }

    &:hover {
      border-color: var(--card-border-hover);
      background-color: var(--card-bg-hover);
    }

    &[aria-selected='true'].keyboard-focus {
      border-color: var(--card-border-hover);
      background-color: var(--card-bg-hover);
    }

    &:active {
      transform: scale(0.97);
      transition: transform var(--animation-speed-medium) var(--animation-timing-active);
    }
  }

  @keyframes search-element-scale-in {
    0% {
      transform: scale(0.95);
      opacity: 0;
    }

    40% {
      opacity: 1;
    }

    100% {
      transform: scale(1);
      opacity: 1;
    }
  }

  @keyframes search-element-scale-out {
    0% {
      transform: scale(1);
      opacity: 1;
    }

    100% {
      transform: scale(0.95);
      opacity: 0;
    }
  }

  @keyframes search-element-slide-in-top {
    from {
      margin-top: calc(var(--modal-top-margin) + var(--padding-sm));
      opacity: 0;
    }

    to {
      margin-top: var(--modal-top-margin);
      opacity: 1;
    }
  }

  @keyframes search-element-slide-out-top {
    from {
      margin-top: var(--modal-top-margin);
      opacity: 1;
    }

    to {
      margin-top: calc(var(--modal-top-margin) + var(--padding-sm));
      opacity: 0;
    }
  }

  @keyframes content-slide {
    from {
      transform: translateY(var(--slide-from, 0));
      opacity: var(--slide-opacity-from, 1);
    }

    to {
      transform: translateY(var(--slide-to, 0));
      opacity: var(--slide-opacity-to, 1);
    }
  }

  .predictive-search-results__list {
    --slide-width: 27.5%;
    --slideshow-gap: var(--gap-md);

    /* Make space for the outline to be visible */
    padding-block-start: var(--border-width-sm);
  }

  .predictive-search-results__list slideshow-arrows {
    @media screen and (max-width: 749px) {
      display: none;
    }
  }

  .predictive-search-results__no-results,
  .predictive-search-results__wrapper,
  .predictive-search-results__wrapper-products .predictive-search-results__card {
    animation: search-element-slide-up var(--animation-speed-medium) var(--animation-timing-bounce) backwards;
  }

  slideshow-slide .resource-card {
    /* stylelint-disable-next-line declaration-no-important */
    animation-delay: 0ms !important;
  }

  .predictive-search-results__list,
  .predictive-search-results__wrapper {
    animation-duration: var(--animation-speed-medium);
  }

  .predictive-search-results__wrapper-queries {
    animation-delay: 50ms;
  }

  .predictive-search-results__list:nth-of-type(2) {
    animation-delay: 150ms;
  }

  .predictive-search-results__list:nth-of-type(3) {
    animation-delay: 200ms;
  }

  .predictive-search-results__list:nth-of-type(4) {
    animation-delay: 250ms;
  }

  .predictive-search-results__list:last-child {
    margin-block-end: 0;
  }

  [data-resource-type] {
    /* stylelint-disable-next-line declaration-no-important */
    animation-delay: 0ms !important;
  }

  .predictive-search-results__no-results.removing,
  .predictive-search-results__wrapper.removing {
    animation: search-element-slide-down var(--animation-speed-medium) var(--animation-timing-fade-out) forwards;
  }

  .predictive-search-results__card.removing {
    animation: fadeOut var(--animation-speed-medium) var(--animation-timing-fade-out) forwards;
  }

  .predictive-search-results__wrapper {
    transition: opacity var(--animation-speed-medium) var(--animation-timing-fade-in);
  }

  @keyframes search-element-slide-up {
    from {
      opacity: 0;
      transform: translateY(8px);
    }

    to {
      opacity: 1;
      transform: translateY(0);
    }
  }

  @keyframes search-element-slide-down {
    from {
      opacity: 1;
      transform: translateY(0);
    }

    to {
      opacity: 0;
      transform: translateY(8px);
    }
  }

  .predictive-search-results__card--query {
    transition: transform var(--animation-speed-medium) var(--animation-timing-bounce);
    transform-origin: center;

    &:active {
      transform: scale(0.97);
    }
  }

  /* Products list styles */
  .predictive-search-results__products {
    padding-inline: var(--padding-xl);
  }

  .recently-viewed-wrapper {
    display: grid;
    grid-template-rows: auto auto;
    max-height: 1000px;
    opacity: 1;
    overflow: visible;
    transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    transform-origin: top center;
    transform: translateY(0);
  }

  .recently-viewed-wrapper.removing {
    max-height: 0;
    opacity: 0;
    transform: translateY(-10px);
    transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),
      transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    pointer-events: none;
  }

  .predictive-search-results__clear.button-unstyled {
    color: var(--color-foreground);
    opacity: 0.68;
    transition: opacity var(--animation-speed-medium) var(--animation-easing);
    padding: 0;
    margin-left: var(--margin-sm);

    &:hover {
      opacity: 1;
    }
  }

  .recently-viewed-wrapper.removing .predictive-search-results__card {
    transition: none;
    transform: none;
    opacity: 1;
  }

  .recently-viewed-wrapper > * {
    transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  }

  .predictive-search-results__wrapper-products .predictive-search-results__card:nth-child(1) {
    animation-delay: 30ms;
  }

  .predictive-search-results__wrapper-products .predictive-search-results__card:nth-child(2) {
    animation-delay: 60ms;
  }

  .predictive-search-results__wrapper-products .predictive-search-results__card:nth-child(3) {
    animation-delay: 90ms;
  }

  .predictive-search-results__wrapper-products .predictive-search-results__card:nth-child(4) {
    animation-delay: 120ms;
  }

  .predictive-search-results__wrapper-products .predictive-search-results__card:nth-child(n + 5) {
    animation-delay: 150ms;
  }

  .predictive-search-results__wrapper-products {
    animation-delay: 50ms;
  }

  /* Resource carousel styles */
  .predictive-search-results__wrapper {
    display: flex;
    overflow-x: auto;
    overflow-y: hidden;
    padding-block-end: var(--padding-sm);
    padding-inline: 0;
    scroll-snap-type: x mandatory;
    scroll-padding: 0 var(--padding-xl);
    scrollbar-width: none;
    -ms-overflow-style: none;

    &::-webkit-scrollbar {
      display: none;
    }
  }

  .predictive-search-results__wrapper slideshow-slides {
    --gutter-slide-width: var(--padding-xl);

    /* Add padding to prevent hover animations from being clipped in slideshow
       15px accommodates:
       - Scale effect (9px on each side from 1.03 scale)
       - Lift effect (4px upward movement)
       - Shadow (15px spread with -5px offset)
       Using 16px for better alignment with our spacing scale */
    padding-block: var(--padding-xl);
    margin-block: calc(-1 * var(--padding-xl));
    gap: var(--gap-md);
  }

  .predictive-search-results__resource-header {
    display: flex;
    padding-inline: var(--padding-xl);
    justify-content: space-between;
    align-items: center;
    height: 32px;
  }

  .predictive-search-results__resource-header .svg-wrapper {
    width: var(--icon-size-xs);
  }

  .predictive-search-results__wrapper-products {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    padding-block-end: var(--padding-sm);
    gap: var(--gap-md);
    transition: height var(--animation-speed-medium) var(--animation-easing);

    @container (min-width: 550px) {
      grid-template-columns: repeat(4, 1fr);
    }
  }

  .predictive-search-results__wrapper-products:last-child {
    padding-block-end: var(--padding-lg);

    @media screen and (min-width: 750px) {
      padding-block-end: var(--padding-sm);
    }
  }

  .predictive-search-results__resource-header .predictive-search-results__title {
    margin-block-end: 0;
  }

  .predictive-search-results__resource-header:has(slideshow-controls) .predictive-search-results__title {
    margin-block-end: 0;
  }

  .predictive-search-results__resource-header slideshow-controls {
    @media screen and (max-width: 749px) {
      display: none;
    }
  }
/* END_SNIPPET:predictive-search-styles */

/* START_SNIPPET:price-filter (INDEX:264) */
/* Price filter */
  .price-facet {
    container-type: inline-size;
    display: flex;
    flex-direction: column;
  }
  .price-facet--horizontal {
    min-width: 360px;
  }

  .price-facet__inputs-wrapper {
    display: flex;
    flex-direction: row;
    padding: var(--style-border-width-inputs);
    gap: calc(var(--gap-sm) + (var(--style-border-width-inputs) * 2));
  }

  @container (max-width: 199px) {
    .price-facet__inputs-wrapper {
      flex-wrap: wrap;
    }
  }

  .price-facet__input {
    width: 100%;
    text-align: right;
    padding-left: calc(2.5 * var(--input-padding-x));
  }

  .price-facet__input::placeholder {
    color: var(--facets-input-label-color);
  }

  .price-facet__separator {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-paragraph--size);
  }

  .price-facet__highest-price {
    padding: var(--padding-xs) 0 var(--padding-sm);
  }

  .price-facet__highest-price--horizontal {
    padding: 0 var(--padding-md) var(--padding-xs);
  }

  .price-facet__label {
    top: 0;
    left: 0;
    color: var(--facets-input-label-color);
    padding: var(--input-padding-y) var(--input-padding-x);
    transform: none;
  }
/* END_SNIPPET:price-filter */

/* START_SNIPPET:product-badges-styles (INDEX:266) */
.product-badges {
    --badge-inset: max(var(--padding-xs), calc((var(--border-radius) + var(--padding-xs)) * (1 - cos(45deg))));

    position: absolute;
    z-index: var(--layer-flat);
  }

  .product-badges--bottom-left {
    bottom: calc(var(--badge-inset) + var(--padding-block-start));
    left: calc(var(--badge-inset) + var(--padding-inline-start));
  }

  .product-badges--top-left {
    top: calc(var(--badge-inset) + var(--padding-block-start));
    left: calc(var(--badge-inset) + var(--padding-inline-start));
  }

  .product-badges--top-right {
    top: calc(var(--badge-inset) + var(--padding-block-start));
    right: calc(var(--badge-inset) + var(--padding-inline-start));
  }

  .product-badges__badge {
    --badge-font-size: var(--font-size--xs);

    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: var(--color-foreground);
    background: var(--color-background);
    font-size: var(--badge-font-size);
    font-family: var(--badge-font-family);
    font-weight: var(--badge-font-weight);
    text-transform: var(--badge-text-transform);
    border-radius: var(--badge-border-radius);
  }

  .product-badges__badge--rectangle {
    padding-block: var(--badge-rectangle-padding-block);
    padding-inline: var(--badge-rectangle-padding-inline);
  }
/* END_SNIPPET:product-badges-styles */

/* START_SNIPPET:product-card (INDEX:267) */
.product-card__placeholder-image svg {
    height: 100%;
  }

  .product-card__content slideshow-component {
    --cursor: pointer;
  }

  @media screen and (max-width: 749px) {
    .product-card slideshow-arrows .slideshow-control {
      display: none;
    }
  }
/* END_SNIPPET:product-card */

/* START_SNIPPET:product-grid (INDEX:268) */
.product-grid {
    --product-grid-gap: var(--product-grid-gap-mobile);
    --mobile-columns: 2; /* Default value */

    isolation: isolate;

    @media screen and (min-width: 750px) {
      --product-grid-gap: var(--product-grid-gap-desktop);
    }
  }

  .product-grid slideshow-arrows .slideshow-control {
    display: none;

    @media screen and (min-width: 750px) {
      display: grid;
    }
  }

  /* This triggers iOS < 16.4 */
  @supports not (background-color: rgb(from red 150 g b / alpha)) {
    /* Force aspect ratio to auto for iOS < 16.4 since it's not compatible with the infinite pagination */
    .product-grid .product-media,
    .product-grid .product-media-container {
      aspect-ratio: auto;
    }
  }

  .main-collection-grid {
    grid-column: var(--grid-column--mobile);
    padding: var(--grid--margin--mobile);

    @media screen and (min-width: 750px) {
      grid-column: var(--grid-column--desktop);
      padding: var(--padding-block-start) var(--padding-inline-end) var(--padding-block-end) var(--padding-inline-start);
    }
  }

  .main-collection-grid__empty {
    padding-block: var(--padding-6xl);
    padding-inline: var(--page-margin);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--padding-sm);
  }

  .main-collection-grid__empty-title {
    margin: 0;
  }
/* END_SNIPPET:product-grid */

/* START_SNIPPET:product-information-content (INDEX:269) */
.product-information {
    gap: var(--gap) 0;
  }

  /* Base grid layout */
  .product-information__grid {
    display: grid;
    grid-template-columns: subgrid;
    grid-column: 1 / -1;
  }

  /* Default column positions */
  .product-details {
    order: 1;
  }

  .product-information__media {
    order: 0;
    width: 0;
    min-width: 100%;
  }

  .product-information__media .product-media-gallery__placeholder-image {
    width: 100%;
    height: 100%;
  }

  /* Mobile styles */
  @media screen and (max-width: 749px) {
    .product-information__media {
      grid-column: 1 / -1;
    }

    .product-details {
      grid-column: 2 / 3;
    }
  }

  /* Desktop styles */
  @media screen and (min-width: 750px) {
    .product-information__grid {
      grid-column: 2;
    }

    /* Position when there is no media */
    .product-information__grid.product-information--media-none {
      .product-details {
        width: var(--narrow-content-width);
        margin: 0 auto;
      }
    }

    /* Position when there is media */
    .product-information__grid:not(.product-information--media-none) {
      /* Media on the left side */
      &.product-information--media-left {
        grid-template-columns: 1fr min(50vw, var(--sidebar-width));

        .product-information__media {
          padding-right: calc(var(--gap, 0) / 2);
        }

        .product-details {
          padding-left: calc(var(--gap, 0) / 2);
        }

        &:has(.media-gallery--extend) {
          grid-column: 1 / 3;
        }
      }

      /* Media on the right side */
      &.product-information--media-right {
        grid-template-columns: min(50vw, var(--sidebar-width)) 1fr;

        .product-information__media {
          padding-left: calc(var(--gap, 0) / 2);
          order: 1;
        }

        .product-details {
          padding-right: calc(var(--gap, 0) / 2);
          order: 0;
        }

        &:has(.media-gallery--extend) {
          grid-column: 2 / -1;
        }
      }

      /* Equal width columns */
      &.product-information__grid--half,
      &.product-information__grid--half:has(.media-gallery--extend) {
        grid-column: 1 / -1;
        grid-template-columns:
          var(--full-page-grid-margin) calc(var(--full-page-grid-central-column-width) / 2) calc(
            var(--full-page-grid-central-column-width) / 2
          )
          var(--full-page-grid-margin);

        &.product-information--media-left {
          .product-information__media {
            grid-column: 2 / 3;

            &:has(.media-gallery--extend) {
              grid-column: 1 / 3;
            }
          }

          .product-details {
            grid-column: 3 / 4;
          }
        }

        &.product-information--media-right {
          .product-information__media {
            grid-column: 3 / 4;

            &:has(.media-gallery--extend) {
              grid-column: 3 / -1;
            }
          }

          .product-details {
            grid-column: 2 / 3;
          }
        }
      }
    }

    /* Handle full width section */
    .section--full-width {
      .product-information__grid:not(.product-information--media-none) {
        &.product-information--media-left,
        &.product-information--media-right {
          grid-column: 1 / -1;
        }

        &.product-information--media-left .product-details {
          padding-inline-end: var(--padding-lg);
        }

        &.product-information--media-right .product-details {
          padding-inline-start: var(--padding-lg);
        }

        &.product-information__grid--half.product-information--media-left {
          .product-information__media {
            grid-column: 1 / 3;
          }

          .product-details {
            grid-column: 3 / -1;
          }
        }

        &.product-information__grid--half.product-information--media-right {
          .product-information__media {
            grid-column: 3 / -1;
          }

          .product-details {
            grid-column: 1 / 3;
          }
        }
      }
    }
  }

  /* Wider sidebar for large screens */
  @media screen and (min-width: 1200px) {
    .product-information__grid:not(
        .product-information__grid--half,
        .product-information--media-none
      ).product-information--media-left {
      grid-template-columns: 2fr 1fr;
    }

    .product-information__grid:not(
        .product-information__grid--half,
        .product-information--media-none
      ).product-information--media-right {
      grid-template-columns: 1fr 2fr;
    }
  }

  .product-information__grid--limit-details .product-details > .group-block {
    --details-max-width: var(--sidebar-width);
    max-width: var(--details-max-width);
  }

  @media screen and (min-width: 1600px) {
    .product-information__grid--limit-details .product-details > .group-block {
      --details-max-width: 32rem;
    }
  }

  /* If the header is sticky, make product details content stick underneath the header */
  body:has(#header-group #header-component[data-sticky-state='active']) .product-details.sticky-content--desktop {
    --sticky-header-offset: var(--header-height);
  }
/* END_SNIPPET:product-information-content */

/* START_SNIPPET:product-media-gallery-content-styles (INDEX:270) */
media-gallery:where(.media-gallery--grid) .media-gallery__grid {
    display: none;
  }

  media-gallery.media-gallery--grid .media-gallery__grid .product-media-container {
    /* Needed for safari to stretch to full grid height */
    height: 100%;
  }

  @media screen and (min-width: 750px) {
    .media-gallery--two-column .media-gallery__grid {
      grid-template-columns: repeat(2, 1fr);
    }

    /* Display grid view as a carousel on mobile, grid on desktop */
    media-gallery:is(.media-gallery--grid) slideshow-component {
      display: none;
    }

    media-gallery:where(.media-gallery--grid) .media-gallery__grid {
      display: grid;
    }
  }

  .product-media-container__zoom-button {
    position: absolute;
    width: 100%;
    height: 100%;
    z-index: var(--layer-flat);
    cursor: zoom-in;
    background-color: transparent;

    &:hover {
      background-color: transparent;
    }
  }

  slideshow-slide.product-media-container--tallest {
    content-visibility: visible;
  }

  .product-media__drag-zoom-wrapper {
    aspect-ratio: inherit;
    min-height: inherit;
    min-width: inherit;
    display: inherit;
    flex: inherit;
  }

  .media-gallery__mobile-controls {
    grid-area: auto;
  }

  .product-media-container--zoomable.product-media-container--image {
    cursor: zoom-in;
  }
/* END_SNIPPET:product-media-gallery-content-styles */

/* START_SNIPPET:product-media-gallery-content (INDEX:271) */
.dialog-thumbnails-list-container {
    position: fixed;
    width: 100%;
    bottom: 0;
    display: flex;
    z-index: var(--layer-raised);
  }

  .dialog-thumbnails-list {
    --active-thumbnail-border-color: rgb(var(--color-border-rgb) / var(--media-border-opacity));

    position: relative;
    display: inline-flex;
    flex-direction: row;
    gap: 8px;
    bottom: 0;
    overflow-x: auto;
    opacity: 0;
    padding: var(--padding-lg);
    margin-inline: auto;
    scrollbar-width: none;
    animation: thumbnailsSlideInBottom calc(var(--animation-speed) * 0.75) var(--animation-easing) forwards;
    animation-delay: calc(var(--animation-speed) * 1.5);
  }

  .dialog--closed .dialog-thumbnails-list {
    animation: thumbnailsSlideOutBottom var(--animation-speed) var(--animation-easing) forwards;
  }

  @media screen and (min-width: 750px) {
    .dialog-thumbnails-list {
      position: fixed;
      flex-direction: column;
      inset: 50% var(--margin-lg) auto auto;
      right: 0;
      max-height: calc(100vh - 200px);
      overflow-y: auto;
      animation: thumbnailsSlideInTop var(--spring-d220-b0-duration) var(--spring-d220-b0-easing) forwards;
      animation-delay: calc(var(--spring-d220-b0-duration) * 0.5);
    }

    .dialog--closed .dialog-thumbnails-list {
      animation: thumbnailsSlideOutTop var(--animation-speed) var(--animation-easing) forwards;
    }
  }

  .dialog-thumbnails-list__thumbnail {
    width: var(--thumbnail-width);
    height: auto;
    transition: transform var(--animation-speed) var(--animation-easing);
    flex-shrink: 0;
    border-radius: var(--media-radius);

    img {
      height: 100%;
      object-fit: cover;
      border-radius: var(--media-radius);
      aspect-ratio: var(--aspect-ratio);
    }

    &:is([aria-selected='true']) {
      outline: var(--focus-outline-width) solid currentcolor;
      outline-offset: calc(var(--focus-outline-offset) / 2);
      border: var(--style-border-width) solid var(--active-thumbnail-border-color);
    }
  }

  @supports (anchor-name: --test) {
    .dialog-thumbnails-list:has(.dialog-thumbnails-list__thumbnail:is([aria-selected='true']))::after {
      --inset-offset: calc(var(--focus-outline-offset) / 2);

      content: '';
      position: absolute;
      inset: anchor(top) anchor(right) anchor(bottom) anchor(left);
      position-anchor: --selected-thumbnail;
      outline: var(--focus-outline-width) solid currentcolor;
      outline-offset: calc(var(--focus-outline-offset) / 2);
      border: var(--style-border-width) solid var(--active-thumbnail-border-color);
      border-radius: var(--media-radius);
      z-index: var(--layer-raised);
    }

    @media (prefers-reduced-motion: no-preference) {
      .dialog-thumbnails-list:has(.dialog-thumbnails-list__thumbnail:is([aria-selected='true']))::after {
        transition-property: inset;
        transition-duration: var(--spring-d180-b0-duration);
        transition-timing-function: var(--spring-d180-b0-easing);
      }
    }

    .dialog-thumbnails-list__thumbnail:is([aria-selected='true']) {
      outline: none;
      border: none;
      anchor-name: --selected-thumbnail;
    }
  }

  .dialog-zoomed-gallery .shopify-model-viewer-ui__controls-area.shopify-model-viewer-ui__controls-area {
    /* Move the controls above the thumbnails. Need to calculate the height of the thumbnails list */
    bottom: calc(var(--thumbnail-width) / var(--media-preview-ratio) + var(--padding-lg) * 2);
    right: var(--padding-lg);
  }

  @media screen and (min-width: 750px) {
    .dialog-zoomed-gallery .shopify-model-viewer-ui__controls-area.shopify-model-viewer-ui__controls-area {
      /* Move the controls up to match the padding on the thumbnails */
      bottom: var(--padding-lg);

      /* Move the controls to the left of the thumbnails list on the right */
      right: calc(var(--thumbnail-width) + var(--padding-lg) * 2);
    }
  }

  @media screen and (max-width: 749px) {
    /* Media gallery has a peeking slide on the right side always, and on the left side when the current slide is the last one */
    .media-gallery--hint
      :is(
        slideshow-slide:has(+ slideshow-slide[aria-hidden='false']:last-of-type),
        slideshow-slide[aria-hidden='false'] + slideshow-slide
      ) {
      content-visibility: auto;

      slideshow-component[actioned] & {
        content-visibility: visible;
      }
    }
  }

  .dialog-zoomed-gallery__dialog {
    background-color: var(--color-background);
    view-transition-name: zoom-dialog-ui;
  }

  .dialog-zoomed-gallery {
    cursor: zoom-out;
  }

  .dialog--preloading {
    opacity: 0;
  }

  @media screen and (max-width: 749px) {
    .dialog-zoomed-gallery {
      /* Prevent scroll wheel or swipe scrolling */
      overscroll-behavior: none;
      scrollbar-width: none;
      display: flex;
      scroll-snap-type: x mandatory;
      overflow-x: hidden;
      scroll-behavior: smooth;
      height: 100%;

      &::-webkit-scrollbar {
        display: none;
      }
    }

    .dialog-zoomed-gallery .product-media-container {
      flex: 0 0 100%;
      scroll-snap-align: start;
      position: relative;
    }

    .dialog-zoomed-gallery .product-media-container--image .product-media {
      aspect-ratio: auto;
      height: 100%;
      width: 100%;
      overflow: hidden;
    }

    .dialog-zoomed-gallery .product-media-container--video,
    .dialog-zoomed-gallery .product-media-container--external_video {
      align-content: center;
    }

    .dialog-zoomed-gallery
      :is(.product-media-container--video, .product-media-container--external_video, .product-media-container--model)
      .product-media {
      aspect-ratio: auto;
      align-items: center;
      height: 100%;

      .product-media__image {
        height: 100%;
      }
    }

    .product-media__drag-zoom-wrapper {
      display: flex;
      aspect-ratio: auto;
      height: 100%;
      width: 100%;
      overflow: scroll;
      scrollbar-width: none;
      justify-content: center;

      &::-webkit-scrollbar {
        display: none;
      }
    }

    .product-media__drag-zoom-wrapper .product-media__image {
      --product-media-fit: contain;

      object-fit: var(--product-media-fit);
      overflow: hidden;
      transform: scale(var(--drag-zoom-scale))
        translate(var(--drag-zoom-translate-x, 0), var(--drag-zoom-translate-y, 0));
    }

    .media-gallery--hint {
      --slideshow-gap: var(--gap-2xs);

      :not(.dialog-zoomed-gallery) > .product-media-container:not(:only-child) {
        width: 90%;

        .product-media img {
          object-fit: cover;
        }
      }
    }
  }

  .dialog-zoomed-gallery__close-button {
    color: #fff;
    mix-blend-mode: difference;
    z-index: var(--layer-raised);
  }

  /* Mobile thumbnails styling */
  @media screen and (max-width: 749px) {
    .media-gallery__mobile-controls[thumbnails] {
      --thumbnail-width: 44px;
    }

    .media-gallery__mobile-controls[thumbnails] .slideshow-controls__thumbnail {
      width: var(--thumbnail-width);
      height: auto;
    }
  }

  .dialog-zoomed-gallery .product-media-container--zoomable.product-media-container--image {
    cursor: zoom-out;
  }

  .dialog-zoomed-gallery .product-media-container--video deferred-media,
  .dialog-zoomed-gallery .product-media-container--external_video deferred-media {
    height: auto;
    aspect-ratio: var(--ratio);
  }

  .dialog-zoomed-gallery .product-media-container--model .product-media__image {
    /* Make the height match the height of the model-viewer */
    height: 100vh;
  }

  :root:active-view-transition .dialog-zoomed-gallery__dialog {
    background-color: transparent;
  }

  ::view-transition-group(zoom-dialog-ui) {
    z-index: calc(var(--layer-overlay) + 1);
  }

  ::view-transition-old(gallery-item-open),
  ::view-transition-new(gallery-item-open) {
    animation-timing-function: step-start;
  }

  ::view-transition-old(gallery-item-close),
  ::view-transition-new(gallery-item-close) {
    animation-timing-function: step-end;
  }

  @media screen and (min-width: 750px) {
    :root:active-view-transition .product-media__image {
      background-color: transparent;
    }
  }

  ::view-transition-group(gallery-item-open),
  ::view-transition-group(gallery-item-close) {
    z-index: var(--layer-overlay);
    border-radius: var(--gallery-media-border-radius);
    overflow: clip;
  }

  ::view-transition-group(gallery-item-open) {
    animation-timing-function: var(--spring-d300-b0-easing);
    animation-duration: var(--spring-d300-b0-duration);
  }

  ::view-transition-group(gallery-item-close) {
    animation-timing-function: var(--spring-d220-b0-easing);
    animation-duration: var(--spring-d220-b0-duration);
  }

  @media screen and (max-width: 749px) {
    ::view-transition-group(gallery-item-open),
    ::view-transition-group(gallery-item-close) {
      animation-timing-function: step-start;
      animation-duration: 0.1s;
    }

    ::view-transition-new(gallery-item-open) {
      animation: fade-in var(--spring-d180-b0-duration) var(--spring-d180-b0-easing) forwards;
      animation-timing-function: var(--spring-d180-b0-easing);
      animation-duration: var(--spring-d180-b0-duration);
    }

    ::view-transition-old(gallery-item-close) {
      animation: fade-out 0.08s linear forwards;
    }
  }

  @keyframes fade-in {
    from {
      scale: 0.98;
      opacity: 0.8;
    }
  }

  @keyframes fade-out {
    to {
      opacity: 0;
    }
  }

  /*
   * Product media gallery slideshow context styles
   */
  .product-media-gallery__slideshow--single-media slideshow-container {
    @media screen and (max-width: 749px) {
      grid-area: unset;
    }
  }

  /* Display grid view as a carousel on mobile, grid on desktop */
  media-gallery:is(.media-gallery--grid) slideshow-component {
    @media screen and (min-width: 750px) {
      display: none;
    }
  }

  @media screen and (max-width: 749px) {
    /* Media gallery has a peeking slide on the right side always, and on the left side when the current slide is the last one */
    .media-gallery--hint
      :is(
        slideshow-slide:has(+ slideshow-slide[aria-hidden='false']:last-of-type),
        slideshow-slide[aria-hidden='false'] + slideshow-slide
      ) {
      content-visibility: auto;

      slideshow-component[actioned] & {
        content-visibility: visible;
      }
    }
  }

  @media screen and (min-width: 750px) {
    .media-gallery--carousel slideshow-component:has(slideshow-controls[thumbnails]) {
      &:has(slideshow-controls[pagination-position='right']) {
        display: grid;
        grid-template:
          'container controls' auto
          'arrows controls' min-content
          / 1fr auto;
      }

      &:has(slideshow-controls[pagination-position='left']) {
        display: grid;
        grid-template:
          'controls container' auto
          'controls arrows' min-content
          / auto 1fr;
      }

      slideshow-controls[pagination-position='left'] {
        order: -1;
      }
    }
  }

  .media-gallery--carousel slideshow-arrows .slideshow-control {
    padding-inline: 0 var(--padding-md);
    opacity: 1;
  }

  @media screen and (max-width: 749px) {
    slideshow-component:has(:not(.mobile\:hidden) :is(.slideshow-controls__dots, .slideshow-controls__counter))
      .shopify-model-viewer-ui__controls-area {
      /* Position the controls just above the counter */
      bottom: calc(var(--minimum-touch-target) + var(--padding-sm));
    }
  }

  @media screen and (min-width: 750px) {
    slideshow-component:has(:not(.desktop\:hidden) :is(.slideshow-controls__dots, .slideshow-controls__counter))
      .shopify-model-viewer-ui__controls-area {
      /* Position the controls just above the counter */
      bottom: calc(var(--minimum-touch-target) + var(--padding-sm));
    }
  }

  slideshow-slide.product-media-container--tallest {
    content-visibility: visible;
  }
/* END_SNIPPET:product-media-gallery-content */

/* START_SNIPPET:product-media (INDEX:272) */
.product-media {
    aspect-ratio: var(--gallery-aspect-ratio, var(--ratio));
    min-height: 0;
    min-width: 0;
  }

  .product-media__image {
    object-position: var(--focal-point, center center);
  }

  /*** Media border-radius feature ****/
  @media screen and (min-width: 750px) {
    .media-gallery--carousel slideshow-container,
    .media-gallery--grid .product-media > * {
      border-radius: var(--media-radius, 0);
      overflow: hidden;
    }

    /* When the CAROUSEL is on the LEFT side */
    .product-information:not(.product-information--media-right)
      .media-gallery--carousel.media-gallery--extend
      slideshow-container {
      border-top-left-radius: 0;
      border-bottom-left-radius: 0;
    }

    /* When the CAROUSEL is on the RIGHT side */
    .product-information.product-information--media-right
      .media-gallery--carousel.media-gallery--extend
      slideshow-container {
      border-top-right-radius: 0;
      border-bottom-right-radius: 0;
    }

    /* When the GRID is on the LEFT side */
    .product-information:not(.product-information--media-right) {
      /* One column */
      .media-gallery--grid.media-gallery--extend:not(.media-gallery--two-column) .product-media > *,
      /* Two column, small first image */
      .media-gallery--grid.media-gallery--extend.media-gallery--two-column:not(.media-gallery--large-first-image)
        .product-media-container:nth-of-type(odd)
        .product-media
        > *,
      /* Two column, large first image */
      .media-gallery--grid.media-gallery--extend.media-gallery--two-column.media-gallery--large-first-image
        .product-media-container:is(:first-of-type, :nth-of-type(even))
        .product-media
        > * {
        border-top-left-radius: 0;
        border-bottom-left-radius: 0;
      }
    }

    /* When the GRID is on the RIGHT side */
    .product-information.product-information--media-right {
      /* One column */
      .media-gallery--grid.media-gallery--extend:not(.media-gallery--two-column) .product-media > *,
      /* Two column, small first image */
      .media-gallery--grid.media-gallery--extend.media-gallery--two-column:not(.media-gallery--large-first-image)
        .product-media-container:nth-of-type(even)
        .product-media
        > *,
      /* Two column, large first image */
      .media-gallery--grid.media-gallery--extend.media-gallery--two-column.media-gallery--large-first-image
        .product-media-container:is(:first-of-type, :nth-of-type(odd))
        .product-media
        > * {
        border-top-right-radius: 0;
        border-bottom-right-radius: 0;
      }
    }
  }
/* END_SNIPPET:product-media */

/* START_SNIPPET:quantity-selector (INDEX:273) */
.quantity-selector-wrapper {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: calc(var(--gap-sm) / 2);

    @media screen and (min-width: 750px) {
      gap: var(--gap-sm);
    }
  }

  .price-per-item {
    display: block;
    color: var(--color-foreground);
    font-size: var(--font-size--sm);
    font-weight: normal;
  }
/* END_SNIPPET:quantity-selector */

/* START_SNIPPET:quick-add-modal-styles (INDEX:274) */
#quick-add-dialog {
    display: contents;
  }

  @media screen and (min-width: 750px) {
    .quick-add-modal {
      width: var(--quick-add-modal-width);
      height: var(--quick-add-modal-height);
      max-width: none;
    }
  }

  .quick-add-modal {
    padding: 0;
    border: var(--style-border-popover);
    overflow: hidden;
    box-shadow: 0 5px 30px rgb(0 0 0 / var(--opacity-15));

    @media screen and (max-width: 749px) {
      position: fixed;
      margin: auto 0 0 0;
      min-height: unset;
      max-width: 100%;
      border-radius: 0;
      overflow: clip;
      height: fit-content;
    }
  }

  .quick-add-modal[open] {
    @media screen and (max-width: 750px) {
      border-top-left-radius: var(--style-border-radius-popover);
      border-top-right-radius: var(--style-border-radius-popover);
    }
  }

  .quick-add-modal[open] {
    @media screen and (min-width: 750px) {
      display: flex;
    }
  }

  .quick-add-modal .view-more-details__wrapper {
    @media screen and (max-width: 749px) {
      display: none;
    }
  }

  .quick-add-modal[open] {
    animation: modalSlideInTop var(--animation-speed) var(--animation-easing) forwards;
  }

  .quick-add-modal.dialog-closing {
    animation: modalSlideOutTop var(--animation-speed) var(--animation-easing) forwards;
  }

  .quick-add-modal__close {
    position: absolute;
    top: var(--margin-2xs);
    right: var(--margin-2xs);
    transition: transform 0.15s var(--animation-timing-bounce);
    z-index: var(--layer-raised);
    overflow: visible;
    transform-origin: center;
  }

  .quick-add-modal__close:active {
    transform: scale(0.99) translateY(1px);
  }

  .quick-add-modal__close {
    &:focus-visible {
      outline: none;
    }

    &:focus-visible::after {
      content: '';
      position: absolute;
      inset: 0;
      border-radius: calc(var(--style-border-radius-popover) - var(--margin-2xs));
      outline: var(--focus-outline-width) solid currentColor;
    }
  }

  .quick-add-modal__content {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    grid-template-rows: 100% 1fr;
    position: relative;
    overflow-y: auto;
    max-height: 100vh;
    flex-grow: 1;

    @media screen and (max-width: 749px) {
      grid-template-columns: repeat(4, 1fr);
      grid-template-rows: auto;
      padding-inline: var(--padding-xl);
      padding-block: var(--padding-xl);
      gap: var(--gap-lg);
      flex: 1;
      min-height: 0;
      overflow-y: auto;
      height: auto; /* Prevent a bug in Safari where height:fit-content is not respected */
      max-height: 100vh;
    }
  }

  .quick-add-modal__content .media-gallery--grid .media-gallery__grid {
    grid-template-columns: 1fr;
  }

  .quick-add-modal__content .media-gallery--grid.media-gallery--two-column .product-media-container:first-child {
    grid-column: auto;
  }

  .quick-add-modal__content {
    /* One column */
    .media-gallery--grid:not(.media-gallery--two-column) .product-media > *,
      /* Two column, small first image */
      .media-gallery--grid.media-gallery--two-column:not(.media-gallery--large-first-image)
      .product-media-container:nth-of-type(odd)
      .product-media > *,
      /* Two column, large first image */
      .media-gallery--grid.media-gallery--two-column.media-gallery--large-first-image
        .product-media-container:is(:first-of-type, :nth-of-type(even))
        .product-media > *,
        /* Carousel */
      .media-gallery--carousel slideshow-container {
      border-top-left-radius: 0;
      border-bottom-left-radius: 0;
    }
  }

  .quick-add-modal__content .view-more-details__wrapper {
    display: flex;
    justify-content: flex-start;
    width: 100%;
  }

  .view-more-details__wrapper .view-more-details {
    display: flex;
    align-items: center;
    width: fit-content;
  }

  .quick-add-modal__content .product-header {
    @media screen and (max-width: 749px) {
      display: flex;
      flex-direction: column;
      grid-column: 2 / -1;
      grid-row: 1;
      padding-right: var(--padding-2xl);
    }
  }

  .quick-add-modal__content .product-header a:not(product-price *) {
    @media screen and (max-width: 749px) {
      font-size: var(--font-size--md);
      font-weight: 500;
      color: inherit;
      width: fit-content;
    }
  }

  .quick-add-modal__content variant-picker,
  .quick-add-modal__content product-form-component {
    @media screen and (max-width: 749px) {
      grid-column: 1 / -1;
    }
  }

  .quick-add-modal__content .product-media-container__zoom-button {
    cursor: default;
  }

  .quick-add-modal__content .product-details {
    grid-column: 4 / -1;
    grid-row: 1 / span 2;
    display: flex;
    flex-direction: column;
    justify-content: stretch;
    height: 100%;
    min-height: 0;
    overflow-y: auto;
    position: relative;

    dialog[open] & {
      animation: fadeSlideIn 0.3s var(--animation-timing-fade-in) both;
      animation-delay: 0.1s;
    }

    @media screen and (max-width: 749px) {
      grid-column: 2 / span 2;
      grid-row: span 1;
      max-height: 100%;
      height: 100%;
    }
  }

  @property --quick-add-modal-mask-start {
    syntax: '<length>';
    initial-value: 0px;
    inherits: false;
  }

  @property --quick-add-modal-mask-end {
    syntax: '<length>';
    initial-value: 0px;
    inherits: true;
  }

  @keyframes detect-scroll {
    from,
    to {
      --can-scroll: ;
    }
  }

  @supports (animation-timeline: scroll(self)) {
    dialog[open] .quick-add-modal__content .product-details {
      mask-image: linear-gradient(to bottom, transparent 0%, #000 var(--quick-add-modal-mask-start), #000 100%);
      animation: 0.3s var(--animation-timing-fade-in) 0.1s both fadeSlideIn, scrollStart 1s linear both,
        scrollEnd 1s linear both, detect-scroll 1ms linear none;
      animation-timeline: auto, scroll(self), scroll(self), scroll(self);
      animation-range: normal, 0px 48px, calc(100% - 48px) 100%, 0% 100%;
    }
  }

  @keyframes scrollStart {
    from {
      --quick-add-modal-mask-start: 0px;
    }
    to {
      --quick-add-modal-mask-start: 48px;
    }
  }

  @keyframes scrollEnd {
    from {
      --quick-add-modal-mask-end: 0px;
    }
    to {
      --quick-add-modal-mask-end: 48px;
    }
  }

  .quick-add-modal__content .product-details > .group-block {
    flex-grow: 1;
    width: auto;
  }

  .quick-add-modal__content > * {
    min-height: 0;
  }

  .quick-add-modal__content .product-details :is(.view-product-title, .buy-buttons-block) {
    flex: 0 0 auto;
  }
  .quick-add-modal__content .product-details :is(.buy-buttons-block) {
    margin-top: auto;
    position: sticky;
    bottom: 0;
    padding-bottom: var(--padding-3xl);
    background-color: var(--color-background);
    z-index: var(--layer-raised);

    &::before {
      --quick-add-modal-mask-end-progressive-enhanced: 0px;

      position: absolute;
      content: '';
      display: block;
      inset: auto 0 100% 0;
      pointer-events: none;
      height: min(var(--gap-2xl), var(--gap));
      background-color: inherit;
      mask-image: linear-gradient(
        to top,
        #000 0%,
        #000 calc(var(--gap-2xs)),
        transparent calc(100% - var(--quick-add-modal-mask-end-progressive-enhanced)),
        transparent
      );
    }
  }

  .quick-add-modal__content .product-details .buy-buttons-block:has(gift-card-recipient-form) {
    position: static;
    padding-bottom: 0;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
  }

  .quick-add-modal__content .product-details .buy-buttons-block:has(gift-card-recipient-form) > product-form-component {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
  }

  .quick-add-modal__content .product-details .buy-buttons-block:has(gift-card-recipient-form) form {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
  }

  .quick-add-modal__content .product-details .buy-buttons-block:has(gift-card-recipient-form)::before {
    display: none;
  }

  .quick-add-modal__content .product-details .buy-buttons-block__bar {
    display: block;
    position: sticky;
    bottom: 0;
    margin-top: auto;
    padding-block: var(--gap-md) var(--padding-3xl);
    background-color: var(--color-background);
    z-index: var(--layer-raised);

    &::before {
      --quick-add-modal-mask-end-progressive-enhanced: 0px;

      position: absolute;
      content: '';
      display: block;
      inset: auto 0 100% 0;
      pointer-events: none;
      height: min(var(--gap-2xl), var(--gap));
      background-color: inherit;
      mask-image: linear-gradient(
        to top,
        #000 0%,
        #000 calc(var(--gap-2xs)),
        transparent calc(100% - var(--quick-add-modal-mask-end-progressive-enhanced)),
        transparent
      );
    }
  }

  @supports (animation-timeline: scroll(self)) {
    .quick-add-modal__content .product-details :is(.buy-buttons-block)::before,
    .quick-add-modal__content .product-details .buy-buttons-block__bar::before {
      --mask-if-scroll: var(--can-scroll) var(--quick-add-modal-mask-end);
      --mask-if-no-scroll: 48px;
      --quick-add-modal-mask-end-progressive-enhanced: var(--mask-if-scroll, var(--mask-if-no-scroll));
      height: calc(var(--gap-2xs) + 48px);
    }
  }

  .quick-add-modal__content .product-details .variant-picker {
    flex: 0 0 auto;

    padding-block: min(var(--gap-2xl), var(--gap));
    margin-block-end: calc(var(--focus-outline-offset) + var(--focus-outline-width));
  }

  .quick-add-modal__content .variant-option--swatches {
    padding-inline-start: var(--padding-2xs);
  }

  .quick-add-modal__content .variant-option--swatches legend {
    margin-inline-start: calc(-1 * var(--padding-2xs));
  }

  .quick-add-modal__content:not(:has(.product-information__media)) .product-details {
    grid-column: 1 / -1;
  }

  .quick-add-modal__content .view-product-title {
    display: flex;
    padding-block: 0;
    margin-block-end: 12px;

    /* Prevent overlap between title and close button */
    padding-inline-end: calc(var(--padding-2xl) + calc(var(--minimum-touch-target) / 2));
  }

  .quick-add-modal__content .view-product-title a {
    color: inherit;
    text-decoration: none;
    text-align: left;
    font-size: var(--font-size--2xl);
    font-weight: 600;
    line-height: 1.2;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: color 0.2s var(--animation-easing);
  }

  .quick-add-modal__content .product-details product-price {
    --text-align: left;
  }

  .quick-add-modal__content .product-details product-price.text-block--align-center {
    margin-inline: 0;
  }

  .quick-add-modal__content .product-details product-price.text-center {
    --text-align: left;
  }

  .quick-add-modal__content .product-details product-price > * {
    text-align: left;
  }

  .quick-add-modal__content
    .product-details
    *:not(
      .group-block,
      .group-block-content,
      .buy-buttons-block,
      .buy-buttons-block *,
      .view-product-title,
      .view-product-title *,
      variant-picker,
      variant-picker *,
      product-price,
      product-price *,
      product-inventory,
      product-inventory *,
      .view-more-details__wrapper,
      .view-more-details__wrapper *
    ) {
    @media screen and (min-width: 750px) {
      /* stylelint-disable-next-line declaration-no-important */
      display: none !important;
    }
  }

  .quick-add-modal__content
    .group-block:not(
      :has(
          .buy-buttons-block,
          .buy-buttons-block *,
          .view-product-title,
          .view-product-title *,
          variant-picker,
          variant-picker *,
          product-price,
          product-price *,
          product-inventory,
          product-inventory *,
          .view-more-details__wrapper,
          .view-more-details__wrapper *
        ),
      .buy-buttons-block
    ) {
    display: none;
  }

  @media screen and (min-width: 750px) {
    .quick-add-modal__content .group-block-content {
      gap: 0;
    }

    .quick-add-modal__content .media-gallery__grid {
      gap: min(var(--gap-2xs), var(--image-gap));
      border-radius: var(--style-border-radius-popover, 0);
    }

    .quick-add-modal__content .media-gallery--grid .product-media img {
      border-radius: 0;
    }
  }

  .quick-add-modal__content .product-details > .group-block {
    padding-block: var(--padding-3xl) 0;
  }

  .quick-add-modal__content :where(.product-details > .group-block > .group-block-content > *) {
    padding-inline: var(--padding-3xl);
  }

  .quick-add-modal__content slideshow-slide:not([aria-hidden='false']) {
    content-visibility: auto;
  }

  .quick-add-modal__content .product-information__media {
    width: 100%;
    grid-column: 1 / span 1;
    grid-row: 1;
    position: relative;
    top: 0;
    animation: fadeIn 0.4s var(--animation-timing-fade-in) both;

    @media screen and (min-width: 750px) {
      position: sticky;
      grid-column: 1 / 4;
      width: var(--quick-add-modal-gallery-width);
      overflow-y: auto;
      -ms-overflow-style: none;
      scrollbar-width: none;
    }

    &::-webkit-scrollbar {
      display: none;
    }
  }

  .quick-add-modal__content .product-information__media media-gallery {
    pointer-events: none;

    @media screen and (min-width: 750px) {
      position: absolute;
      inset: 0;
    }
  }

  .quick-add-modal media-gallery {
    padding: 0;
  }

  .quick-add-modal__content .product-information__media slideshow-arrows {
    display: none;
  }

  .quick-add-modal__content .product-information__media slideshow-container {
    display: block;
  }

  .quick-add-modal__content .product-information__media slideshow-slides {
    display: flex;
    flex-direction: column;
    gap: var(--gap-2xs);
    overflow: visible;
    scroll-snap-type: none;
  }

  .quick-add-modal__content .product-information__media slideshow-slide {
    width: 100%;
    flex: none;
    scroll-snap-align: unset;
    position: relative;
    transform: none;
    opacity: 1;
    visibility: visible;
    transition: opacity 0.3s var(--animation-easing);
  }

  .quick-add-modal__content .product-information__media slideshow-slide[aria-hidden='true'] {
    @media screen and (max-width: 749px) {
      display: none;
    }
  }

  .quick-add-modal__content .product-information__media slideshow-slide:nth-child(1) {
    animation: fadeSlideIn 0.3s var(--animation-timing-fade-in) both;
  }

  .quick-add-modal__content .product-information__media slideshow-slide:nth-child(2) {
    animation: fadeSlideIn 0.3s var(--animation-timing-fade-in) both;
    animation-delay: 0.05s;
  }

  .quick-add-modal__content .product-information__media slideshow-slide:nth-child(3) {
    animation: fadeSlideIn 0.3s var(--animation-timing-fade-in) both;
    animation-delay: 0.1s;
  }

  .quick-add-modal__content .product-information__media :is(slideshow-controls, slideshow-controls[thumbnails]) {
    display: none;
  }

  .quick-add-modal__content .sticky-content,
  .quick-add-modal__content .sticky-content--desktop {
    top: 0;
  }

  .quick-add-modal__content .text-block.rte:not(product-price),
  .quick-add-modal__content .view-more-details__wrapper {
    display: none;
  }

  @keyframes fadeSlideIn {
    from {
      opacity: 0;
      transform: translateY(10px);
    }

    to {
      opacity: 1;
      transform: translateY(0);
    }
  }
/* END_SNIPPET:quick-add-modal-styles */

/* START_SNIPPET:quick-add-styles (INDEX:276) */
/* Quick Add */
  .quick-add {
    --quick-add-offset: var(--padding-sm);
    --quick-add-right: calc(var(--quick-add-offset) + var(--padding-inline-end));
    --quick-add-bottom: calc(var(--quick-add-offset) + var(--padding-block-end));

    position: absolute;
    inset: 0;
    z-index: var(--layer-raised);
    pointer-events: none;

    @media screen and (min-width: 750px) {
      --quick-add-offset: var(--padding-md);
    }
  }

  .quick-add .variant-option__button-label input[data-option-available='false'] {
    cursor: not-allowed;
  }

  .quick-add[class*='color-scheme-'] {
    background-color: #0000;
  }

  product-card:is(:hover, :focus-within) .quick-add__button {
    opacity: 1;
  }

  .quick-add__button {
    display: var(--quick-add-mobile-display, none);
    align-items: center;
    background: linear-gradient(var(--color-background) 0 100%) padding-box;
    padding: 0;
    border-radius: 50px;
    border: 2px solid hsl(0 0% 0% / 0.15);
    height: var(--button-size-md);
    cursor: pointer;
    opacity: var(--quick-add-mobile-opacity, 0);
    overflow: hidden;
    color: var(--color-foreground);
    pointer-events: all;
    position: absolute;
    right: max(var(--quick-add-right), calc((var(--border-radius) + var(--quick-add-right)) * (1 - cos(45deg))));
    bottom: max(var(--quick-add-bottom), calc((var(--border-radius) + var(--quick-add-bottom)) * (1 - cos(45deg))));
    backdrop-filter: blur(20px) saturate(180%);

    &:hover {
      scale: 1.03;

      /* Hover stabilizer: extends hit area to maintain hover state */
      &::before {
        content: '';
        position: absolute;
        inset: -10px;
        z-index: -1;
      }
    }

    &:active {
      scale: 0.99;
    }

    .quick-add[stay-visible] & {
      display: grid;
    }

    @media screen and (min-width: 750px) {
      display: var(--quick-add-display, flex);
      opacity: 0;
    }
  }

  .quick-add__button.add-to-cart-button {
    height: var(--button-size-md);
  }

  .quick-add__button .add-to-cart-text {
    background: var(--color-background);
    overflow: hidden;
    border-radius: 50px;
    height: 100%;
    gap: 0;
  }

  .quick-add__button .svg-wrapper .checkmark-burst {
    width: 22px;
    height: 22px;
  }

  .quick-add__button .add-to-cart-icon {
    /* account for border width */
    height: 100%;
    width: calc(var(--button-size-md) - 4px);
  }

  .quick-add__button .add-to-cart-text__content {
    display: grid;
    grid-template-columns: 0fr;

    & > span {
      min-width: 0;

      span {
        padding-right: var(--padding-sm);
        opacity: 0;
        display: inline-block;
        filter: blur(2px);
        translate: 0.5ch 0;
      }
    }
  }

  .quick-add__button[data-added='true'] .add-to-cart-text {
    animation-name: atc-fade-out;
  }

  .quick-add__button[data-added='true'] .add-to-cart-text--added {
    translate: 0 0;
    animation-name: atc-fade-in;
  }

  .quick-add__product-form-component {
    height: 100%;
  }

  .quick-add__product-form-component .shopify-product-form {
    display: flex;
    justify-content: flex-end;
    align-items: flex-end;
    container-type: inline-size;
    height: 100%;
  }

  .quick-add-modal .product-media {
    width: 100%;
    height: 100%;
  }

  .quick-add-modal deferred-media {
    display: none;
  }

  .quick-add-modal .media-gallery--carousel slideshow-component {
    --cursor: default;
  }

  .quick-add__button:is(:hover, :focus-visible) {
    .add-to-cart-text__content {
      grid-template-columns: 1fr;

      span span {
        opacity: 1;
        translate: 0 0;
        filter: blur(0);
      }
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .quick-add__button .add-to-cart-text__content {
      grid-template-columns: 1fr;

      span span {
        opacity: 1;
        translate: 0 0;
        filter: blur(0);
      }
    }
  }

  @media (prefers-reduced-motion: no-preference) {
    .quick-add__button {
      transition-property: scale, translate, opacity;
      transition-duration: var(--animation-speed);
      transition-timing-function: var(--ease-out-cubic);
    }

    .quick-add__button:is(:hover, :focus-visible) {
      .add-to-cart-text__content,
      .add-to-cart-text__content span span {
        transition-delay: var(--animation-speed);
      }
    }

    .quick-add__button .add-to-cart-text__content {
      transition-property: grid-template-columns;
      transition-duration: var(--animation-speed);
      transition-timing-function: var(--ease-out-cubic);

      span span {
        transition-property: opacity, filter, translate;
        transition-duration: var(--animation-speed-slow);
        transition-timing-function: var(--ease-out-quad);
      }
    }
  }
/* END_SNIPPET:quick-add-styles */

/* START_SNIPPET:resource-card (INDEX:278) */
.resource-card {
    --resource-card-secondary-image-opacity: 0;
    --resource-card-primary-image-opacity: calc(1 - var(--resource-card-secondary-image-opacity));

    display: flex;
    flex-direction: column;
    row-gap: var(--padding-xs);
    position: relative;
    text-decoration: none;
    height: 100%;
    opacity: 0;
    animation: fadeIn var(--animation-speed-medium) var(--animation-timing-fade-in) forwards;
  }

  .resource-card__link {
    position: absolute;
    inset: 0;
    z-index: 1;
  }

  .resource-card__content {
    display: flex;
    flex-direction: column;
    color: var(--color-foreground);
    gap: var(--padding-3xs);

    .price {
      font-weight: 500;
    }

    .volume-pricing-note {
      display: block;
      margin-top: var(--padding-3xs);
      font-family: var(--font-body--family);
      font-weight: normal;
      font-size: min(0.85em, var(--font-paragraph--size));
      line-height: normal;
      letter-spacing: normal;
      text-transform: none;
      color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
    }
  }

  .resource-card[data-resource-type='article'] .resource-card__content,
  .resource-card[data-resource-type='page'] .resource-card__content {
    gap: var(--padding-xs);
  }

  .resource-card__image {
    aspect-ratio: var(--resource-card-aspect-ratio, auto);
    object-fit: cover;
    border-radius: var(--resource-card-corner-radius);
    opacity: var(--resource-card-primary-image-opacity);
  }

  .resource-card__image--secondary {
    position: absolute;
    top: 0;
    opacity: var(--resource-card-secondary-image-opacity);
    border-radius: var(--resource-card-corner-radius);
  }

  .resource-card__media:empty {
    display: none;
  }

  .resource-card__image-placeholder {
    padding: var(--padding-sm);
    font-size: var(--font-size--lg);
    line-height: var(--line-height--display-loose);
    word-break: break-word;
    background-color: rgb(var(--color-foreground-rgb) / var(--opacity-5));
    aspect-ratio: var(--resource-card-aspect-ratio, auto);
    border-radius: var(--resource-card-corner-radius);
    color: var(--color-foreground);
  }

  .resource-card__title {
    margin-block: 0;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    line-height: 1.3;
    word-break: break-word;
    overflow-wrap: break-word;
  }

  .resource-card__title.paragraph {
    line-height: 1.3;
  }

  .resource-card--overlay {
    height: 100%;

    &::before {
      content: '';
      position: absolute;
      inset: 50% 0 0;
      background: var(--gradient-image-overlay);
      border-radius: var(--resource-card-corner-radius);
      pointer-events: none;
      z-index: var(--layer-flat);
    }
  }

  .resource-card--overlay .resource-card__image {
    height: 100%;
  }

  .resource-card--overlay .resource-card__content {
    position: absolute;
    inset: auto 0 0;
    padding: var(--padding-lg) var(--padding-lg) var(--padding-sm);
    z-index: var(--layer-raised);
  }

  .resource-card--overlay .resource-card__title {
    color: var(--color-white);
  }

  /* Collection images */
  .resource-card__image-wrapper {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--gap-2xs);
  }

  .resource-card__collection-image {
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: calc(var(--card-corner-radius) - (var(--padding-xs) / 2));
  }

  .resource-card__subtext {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
    margin-block-start: 0;
  }

  .resource-card__subtext.paragraph {
    font-size: var(--font-size--body-sm);
    line-height: var(--line-height--body-tight);
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }

  .resource-card:has(.resource-card__image--secondary) {
    &:hover,
    &:focus {
      --resource-card-secondary-image-opacity: 1;
    }
  }
/* END_SNIPPET:resource-card */

/* START_SNIPPET:resource-image (INDEX:279) */
.resource-image {
    position: relative;
    display: flex;
    width: 100%;
    height: 100%;
    z-index: var(--layer-base);
    overflow: hidden;
    max-width: 100%;
    max-height: 100%;
    aspect-ratio: var(--ratio);
  }

  .resource-image__image {
    object-fit: cover;
    aspect-ratio: var(--ratio);
    width: 100%;
    height: 100%;
  }

  .resource-image--placeholder {
    width: 100%;
    height: 100%;
  }
/* END_SNIPPET:resource-image */

/* START_SNIPPET:resource-list-carousel (INDEX:280) */
.resource-list__carousel {
    --slide-width: 60vw;
    width: 100%;
    position: relative;
    container-type: inline-size;
    container-name: resource-list-carousel;

    .slideshow-control[disabled] {
      display: none;
    }

    .slideshow-control--next {
      margin-inline-start: auto;
    }
  }

  @container resource-list-carousel (max-width: 749px) {
    .resource-list__carousel .resource-list__slide {
      --slide-width: clamp(150px, var(--mobile-card-size, 60cqw), var(--slide-width-max));
    }
  }

  @container resource-list-carousel (min-width: 750px) {
    .resource-list__carousel .resource-list__slide {
      --section-slide-width: calc(
        (100% - (var(--resource-list-column-gap) * (var(--column-count) - 1)) - var(--peek-next-slide-size)) /
          var(--column-count)
      );
      --fallback-slide-width: clamp(150px, var(--mobile-card-size, 60cqw), var(--slide-width-max));
      --slide-width: var(--section-slide-width, var(--fallback-slide-width));
    }
  }

  .resource-list__carousel slideshow-slides {
    gap: var(--resource-list-column-gap);

    /* Add padding to prevent hover animations from being clipped in slideshow
     15px accommodates:
     - Scale effect (9px on each side from 1.03 scale)
     - Lift effect (4px upward movement)
     - Shadow (15px spread with -5px offset)
     Using 16px for better alignment with our spacing scale */
    margin-block: -16px;
    padding-block: 16px;
  }

  .resource-list__carousel slideshow-arrows {
    padding-inline: var(--util-page-margin-offset);
  }

  .resource-list__carousel .resource-list__slide {
    width: var(--slide-width);
    flex: 0 0 auto;
    scroll-snap-align: start;
    min-width: 0;
  }

  /*
   * Resource list carousels have peeking slides on both sides.
   * We try to kick load them beforehand (they are lazy loaded otherwise).
   */
  .resource-list__carousel
    :is(
      slideshow-slide:has(+ slideshow-slide[aria-hidden='false']),
      slideshow-slide[aria-hidden='false'] + slideshow-slide
    ) {
    content-visibility: auto;

    slideshow-component[actioned] & {
      content-visibility: visible;
    }
  }
/* END_SNIPPET:resource-list-carousel */

/* START_SNIPPET:search-modal (INDEX:283) */
/* ============================================================================================
     BOKJA SEARCH - a quiet panel that descends from the very top of the screen, full width,
     off-white, hairline edges only. No centred card, no rounded box, no shadow (Arket-elegant).
     The predictive-search markup + engine are unchanged; this only restyles the shell.
     ============================================================================================ */

  /* Hairline derived from the foreground so it stays on-palette (no hard-coded colour). */
  .search-modal {
    --bokja-search-hairline: color-mix(in srgb, var(--color-foreground) 14%, transparent);
  }

  /* The dialog: pinned to the top, full bleed, sharp corners, single hairline along the bottom. */
  .search-modal__content,
  .dialog-modal[open].search-modal__content {
    width: 100%;
    max-width: 100%;
    margin: 0;
    inset-block-start: 0;
    inset-block-end: auto;
    inset-inline: 0;
    padding: 0;
    border: 0;
    border-block-end: 0.5px solid var(--bokja-search-hairline);
    border-radius: 0;
    background: var(--color-background);
    box-shadow: none;
    max-height: 92dvh;
    overflow: hidden;
  }

  .search-modal__content[open] {
    display: flex;
  }

  /* Quiet fade-in. NB: deliberately opacity-only - NOT a translateY slide. A transform-based
     entrance with animation-fill-mode:forwards can get stuck holding the `from` frame (panel
     resting at translateY(-14px), clipped 14px off the top). Opacity keeps the panel pinned at
     top:0 in every state. The subtle downward motion instead lives on the inner content below. */
  .dialog-modal[open].search-modal__content {
    animation: bokja-search-fade-in 240ms var(--ease-out-quad) forwards;
  }

  .dialog-modal.search-modal__content.dialog-closing {
    animation: bokja-search-fade-out 180ms var(--ease-out-quad) forwards;
  }

  @keyframes bokja-search-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
  }

  @keyframes bokja-search-fade-out {
    from { opacity: 1; }
    to { opacity: 0; }
  }

  /* A soft, quiet scrim over the page behind the panel. */
  .search-modal__content::backdrop {
    background: color-mix(in srgb, var(--color-foreground) 12%, transparent);
  }

  predictive-search-component {
    display: block;
    width: 100%;
    max-width: 1440px;
    margin-inline: auto;
    background: var(--color-background);
    z-index: var(--layer-heightened);
  }

  .predictive-search-form {
    position: relative;
    width: 100%;
  }

  /* ---- The input row: magnifier + large quiet field + fine close, a single hairline beneath ---- */
  .predictive-search-form__header {
    display: flex;
    align-items: center;
    width: 100%;
    padding: clamp(18px, 2vw, 28px) clamp(16px, 3vw, 48px);
    background: var(--color-background);
    border: 0;
    border-radius: 0;
    border-block-end: 0.5px solid var(--bokja-search-hairline);
    position: static;
  }

  .predictive-search-form__header-inner,
  .predictive-search-form__header-inner:focus-within {
    position: relative;
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    width: 100%;
    border: 0;
    border-radius: 0;
    background: transparent;
    outline: none;
  }

  .predictive-search__icon {
    position: static;
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin-inline-end: 14px;
    color: color-mix(in srgb, var(--color-foreground) 55%, transparent);
  }

  .predictive-search__icon > svg {
    width: 18px;
    height: 18px;
  }

  input.search-input,
  .search-input:is(:focus, :focus-visible, :focus-within),
  .search-input:hover {
    flex: 1 1 auto;
    width: 100%;
    border: 0;
    border-radius: 0;
    background: transparent;
    padding-block: 4px;
    padding-inline: 0;
    font-family: var(--font-body--family);
    font-size: clamp(20px, 2.4vw, 30px);
    font-weight: 400;
    letter-spacing: 0.01em;
    line-height: 1.2;
    color: var(--color-foreground);
    outline: none;
    box-shadow: none;
    text-overflow: ellipsis;
    overflow: hidden;
  }

  .search-input::placeholder {
    color: color-mix(in srgb, var(--color-foreground) 36%, transparent);
    font-weight: 400;
  }

  /* "Clear" - a quiet uppercase text link, not a circular icon button. */
  .predictive-search__reset-button {
    flex: 0 0 auto;
    cursor: pointer;
    display: flex;
    align-items: center;
    min-width: 0;
    height: auto;
    padding: 4px 0;
    margin-inline: 18px 0;
    background: transparent;
    color: var(--color-foreground);
    opacity: 0.6;
    font-family: var(--font-body--family);
    font-size: calc(11px * 1.1);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    transition: opacity 160ms ease;
  }

  .predictive-search__reset-button:hover {
    opacity: 1;
    color: var(--color-foreground);
  }

  .predictive-search__reset-button[hidden] {
    display: none;
  }

  .predictive-search__reset-button-icon { display: none; }
  .predictive-search__reset-button svg { display: none; }

  .predictive-search__reset-button-text {
    display: inline;
  }

  /* Close - a fine, quiet X at the far right of the bar. */
  .predictive-search__close-modal-button {
    --button-color: var(--color-foreground);
    --button-background-color: transparent;
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    margin-inline-start: clamp(16px, 2vw, 28px);
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    color: var(--color-foreground);
    opacity: 0.55;
    transition: opacity 160ms ease;
  }

  .predictive-search__close-modal-button:hover {
    --button-color: var(--color-foreground);
    --button-background-color: transparent;
    opacity: 1;
  }

  .predictive-search__close-modal-button .svg-wrapper,
  .predictive-search__close-modal-button svg {
    width: 18px;
    height: 18px;
  }

  /* ---- Results flow IN the panel under the input row (not a floating absolute popover) ---- */
  .predictive-search-form__content-wrapper {
    position: static;
    width: 100%;
    border-radius: 0;
    box-shadow: none;
    overflow: hidden;
    transform: none;
  }

  .predictive-search-form__content {
    max-height: 72dvh;
    overflow-y: auto;
    background: var(--color-background);
    padding: clamp(10px, 1.5vw, 22px) clamp(16px, 3vw, 48px) clamp(22px, 3vw, 44px);
    scrollbar-width: none;
  }

  .predictive-search-form__content::-webkit-scrollbar { display: none; }

  /* Pre-type, show NOTHING below the bar (hides the empty "Recently viewed" clutter). The results
     panel appears only once the field has text - quiet and intentional, like Arket. */
  .predictive-search-form__content-wrapper {
    display: none;
  }

  predictive-search-component:has(.search-input:not(:placeholder-shown)) .predictive-search-form__content-wrapper {
    display: block;
  }

  /* Belt-and-braces: never show the recently-viewed block in the search panel. */
  .recently-viewed-wrapper {
    display: none;
  }

  /* Result section titles ("Products", "Suggestions") - quiet uppercase, with breathing room. */
  .predictive-search-results__title {
    font-family: var(--font-body--family);
    font-size: calc(11px * 1.1);
    font-weight: 400;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: color-mix(in srgb, var(--color-foreground) 60%, transparent);
    margin-block: 6px 12px;
  }

  /* "View all results" - a quiet inline link, centred, not a heavy button. */
  .predictive-search-form__footer {
    display: none;
    position: static;
    padding-block: 4px 18px;
    background: none;
    text-align: center;
  }

  predictive-search-component:has([data-search-results]):not(:has(.predictive-search-results__no-results)) .predictive-search-form__footer {
    display: block;
  }

  .predictive-search__search-button {
    margin: 0 auto;
    background: transparent;
    border: 0;
    box-shadow: none;
    color: var(--color-foreground);
    font-family: var(--font-body--family);
    font-size: calc(12px * 1.05);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
  }

  .predictive-search__search-button:hover {
    transform: none;
    box-shadow: none;
  }
/* END_SNIPPET:search-modal */

/* START_SNIPPET:search (INDEX:284) */
.search-action {
    --search-border-radius: var(--style-border-radius-inputs);
    --search-border-width: var(--style-border-width-inputs);

    display: flex;
  }

  @media screen and (max-width: 749px) {
    .search-action--hidden-on-drawer {
      display: none;
    }
  }

  @media screen and (min-width: 750px) {
    [data-menu-style='drawer'] .search-action--hidden-on-drawer {
      display: none;
    }

    [data-menu-style='menu'] .search-action--hidden-on-menu {
      display: none;
    }
  }

  [data-menu-style='menu'] .header__column--left .search-action {
    @media screen and (min-width: 750px) {
      margin-inline: calc(var(--padding-lg) * -1);
    }
  }

  .header__column--right .search-action {
    @media screen and (min-width: 750px) {
      margin-inline: calc(var(--gap-md) * -1) calc(var(--gap-xs) * -1);
    }
  }

  @media screen and (min-width: 750px) {
    .header__column--right .search-action--text {
      margin-inline: 0;
    }

    [data-menu-style='menu'] .header__column--left .search-action--text {
      margin-inline: 0;
    }
  }
/* END_SNIPPET:search */

/* START_SNIPPET:section (INDEX:285) */
.section-wrapper {
    --section-height-offset: 0px;
  }

  .section[data-shopify-visual-preview] {
    min-height: var(--section-preview-height);
    padding-top: 0;
  }

  .section[data-shopify-visual-preview] .custom-section-background {
    display: none;
  }

  body:has(> #header-group > .header-section > #header-component[transparent]):not(
      :has(> #header-group > .header-section + .shopify-section)
    )
    > main
    > .section-wrapper:first-child {
    --section-height-offset: var(--header-group-height, 0);
  }

  .custom-section-background {
    grid-column: 1 / -1;
  }

  .custom-section-content {
    z-index: var(--layer-flat);
  }
/* END_SNIPPET:section */

/* START_SNIPPET:skip-to-content-link (INDEX:287) */
.skip-to-content-link {
    position: absolute;
    left: -99999px;
  }

  .skip-to-content-link:focus {
    z-index: var(--layer-temporary);
    overflow: auto;
    width: auto;
    height: auto;
    padding: var(--padding-lg) var(--padding-4xl);
    left: var(--margin-lg);
    top: var(--margin-lg);
    background-color: var(--color-background);
    box-shadow: 0 0 0 var(--focus-outline-offset) var(--color-background);
  }
/* END_SNIPPET:skip-to-content-link */

/* START_SNIPPET:slideshow-arrow (INDEX:289) */
.slideshow-control--large {
    .icon-caret {
      --icon-stroke-width: 1px;
    }

    .icon-caret {
      --icon-stroke-width: 1px;
    }

    .svg-wrapper,
    svg {
      width: var(--slideshow-controls-icon);
      height: var(--slideshow-controls-icon);
    }
  }

  /* Slideshow control shape styles */
  .slideshow-control.slideshow-control--shape-square,
  .slideshow-control.slideshow-control--shape-circle {
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 1 / 1;
    background-color: var(--color-primary-button-background);
    color: var(--color-primary-button-text);
  }

  .slideshow-control.slideshow-control--shape-circle {
    border-radius: 50%;
  }

  .slideshow-control.slideshow-control--shape-square {
    border-radius: 0;
  }

  .slideshow-control .icon-caret {
    rotate: -90deg;
  }
/* END_SNIPPET:slideshow-arrow */

/* START_SNIPPET:slideshow-arrows (INDEX:290) */
slideshow-arrows {
    --cursor-previous: w-resize;
    --cursor-next: e-resize;

    position: absolute;
    inset: 0;
    display: flex;
    z-index: var(--layer-heightened);
    pointer-events: none;
    mix-blend-mode: difference;
    align-items: flex-end;

    &[position='left'] {
      justify-content: flex-start;
      padding-inline: var(--padding-xs);
    }

    &[position='right'] {
      justify-content: flex-end;
      padding-inline: var(--padding-xs);
    }

    &[position='center'] {
      justify-content: space-between;
      align-items: center;
    }
  }

  slideshow-arrows:has(.slideshow-control--shape-square),
  slideshow-arrows:has(.slideshow-control--shape-circle) {
    mix-blend-mode: normal;
  }

  slideshow-component[disabled='true'] slideshow-arrows {
    display: none;
  }

  slideshow-arrows .slideshow-control {
    pointer-events: auto;
    opacity: 0;
    min-height: var(--minimum-touch-target);
    min-width: var(--minimum-touch-target);
    padding: 0 var(--padding-xs);
    color: var(--color-white);
  }

  slideshow-arrows .slideshow-control.slideshow-control--style-none {
    display: none;
  }
/* END_SNIPPET:slideshow-arrows */

/* START_SNIPPET:slideshow-controls (INDEX:291) */
slideshow-controls {
    flex-shrink: 0;
    display: flex;
    justify-content: space-between;
    scrollbar-width: none;
    min-height: var(--minimum-touch-target);
    grid-area: controls;

    &[controls-on-media] {
      position: absolute;
      bottom: 0;
    }
  }

  slideshow-controls::-webkit-scrollbar {
    display: none;
  }

  slideshow-controls button {
    --color: rgb(var(--color-foreground-rgb) / var(--opacity-30));
    --color-active: var(--color-foreground);
    --color-hover: rgb(var(--color-foreground-rgb) / var(--opacity-50));

    display: inline-block;
    height: var(--minimum-touch-target);
    width: var(--minimum-touch-target);
    cursor: pointer;
  }

  slideshow-controls .icon {
    width: var(--icon-size-sm);
    height: var(--icon-size-xs);
  }

  slideshow-controls[pagination-position='center'] {
    align-items: center;
    justify-content: center;
  }

  slideshow-controls[pagination-position='center'][thumbnails] {
    width: 100%;
  }

  slideshow-controls[pagination-position='center']:not([controls-on-media], [thumbnails], [icons-on-media]) {
    justify-content: space-between;
  }

  @media screen and (min-width: 750px) {
    slideshow-controls[thumbnails]:is([pagination-position='right'], [pagination-position='left']) {
      display: flex;
      flex-direction: column;
      height: 0;
      min-height: 100%;

      .slideshow-controls__thumbnails-container {
        overflow: hidden auto;
      }

      &:not([controls-on-media]) {
        .slideshow-controls__thumbnails-container {
          position: sticky;
          top: var(--sticky-header-offset, 0);
        }

        .slideshow-controls__thumbnails {
          padding-block-start: var(--focus-outline-offset);
        }
      }
    }

    slideshow-controls:is([pagination-position='right'], [pagination-position='left']) .slideshow-controls__thumbnails {
      flex-direction: column;
    }

    slideshow-controls:not([controls-on-media]) {
      &:is([pagination-position='left'], [pagination-position='right']) .slideshow-controls__thumbnails {
        padding-block: var(--padding-2xs);
      }

      &[pagination-position='right'] .slideshow-controls__thumbnails {
        padding-inline-end: var(--slideshow-thumbnails-padding-inline, var(--focus-outline-offset));
      }

      &[pagination-position='left'] .slideshow-controls__thumbnails {
        padding-inline-start: var(--slideshow-thumbnails-padding-inline, var(--focus-outline-offset));
      }
    }
  }

  slideshow-controls:not([controls-on-media])[icons-on-media] {
    &[pagination-position='right'] {
      justify-content: flex-end;
    }

    &[pagination-position='left'] {
      justify-content: flex-start;
    }
  }

  slideshow-controls[controls-on-media] {
    z-index: var(--layer-raised);

    &:has(.slideshow-controls__dots, .slideshow-controls__counter) {
      --color-foreground: #fff;
      --color-foreground-rgb: var(--color-white-rgb);
    }

    &[pagination-position='right'] {
      right: 0;
    }

    &[pagination-position='left'] {
      left: 0;
    }

    &[pagination-position='center'] {
      width: 100%;
    }

    &:not([thumbnails])[pagination-position='left'] {
      width: fit-content;
      align-self: flex-start;
    }

    &:not([thumbnails])[pagination-position='right'] {
      width: fit-content;
      align-self: flex-end;
    }
  }

  .slideshow-controls__arrows {
    display: flex;
    justify-content: space-between;
    height: var(--minimum-touch-target);
    grid-area: arrows;

    button {
      padding: 0 var(--padding-xs);
    }
  }

  .slideshow-controls__dots,
  .slideshow-controls__counter {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    margin: 0;
    list-style: none;

    button {
      --color: rgb(var(--color-foreground-rgb) / var(--opacity-30));
      --color-active: var(--color-foreground);
      --color-hover: rgb(var(--color-foreground-rgb) / var(--opacity-50));
    }
  }

  slideshow-controls:has(.slideshow-controls__dots),
  slideshow-component[autoplay] slideshow-controls {
    mix-blend-mode: difference;
  }

  .slideshow-controls__dots {
    gap: 0.6rem;
    padding: var(--padding-sm) var(--padding-lg);
    border-radius: 3rem;
    overflow: hidden;

    button {
      --size: 0.56rem;

      display: flex;
      align-items: center;
      justify-content: center;
      width: calc(var(--size) * 2);
      height: calc(var(--size) * 2);
      margin: calc(var(--size) / -2);
      font-size: 0;
      border-radius: calc(var(--size));

      &::after {
        content: '';
        display: block;
        background-color: var(--color);
        height: var(--size);
        width: var(--size);
        border-radius: calc(var(--size) / 2);
        box-shadow: inset 0 0 0 1.5px hsl(0 0% 0% / 0.15);

        @supports not (view-timeline-axis: inline) {
          &[aria-selected='true'] {
            --color: var(--color-active);
          }
        }

        &:hover {
          --color: var(--color-hover);
        }
      }

      &[aria-selected='true'] {
        --color: var(--color-active);

        &::after {
          box-shadow: inset 0 0 0 1.5px hsl(0 0% 0% / 0.4);
        }
      }
    }
  }

  .slideshow-controls__dots,
  .slideshow-controls__counter {
    &:only-child {
      margin-inline: auto;
    }
  }

  .slideshow-controls__counter {
    color: var(--color-foreground);
    background-color: rgb(0 0 0 / 40%);
    width: auto;
    border-radius: 2rem;
    padding: 0.3rem var(--padding-sm);
    margin-inline: var(--margin-sm);
    backdrop-filter: blur(10px);
    font-variant-numeric: tabular-nums;
    font-size: var(--font-size--xs);

    .slash {
      color: rgb(var(--color-foreground-rgb) / var(--opacity-40));
      padding-inline: var(--padding-2xs);
      margin-block-start: -0.1rem;
    }
  }

  .slideshow-control[disabled] {
    opacity: 0.5;
    cursor: not-allowed;
  }

  /* Slideshow Thumbnails */
  .slideshow-controls__thumbnails-container {
    display: flex;
    width: 100%;
    max-height: 100%;
    overflow-x: scroll;
    scrollbar-width: none;
  }

  .slideshow-controls__thumbnails {
    display: inline-flex;
    padding-inline: var(--slideshow-thumbnails-padding-inline, var(--padding-sm));
    padding-block: var(--slideshow-thumbnails-padding-block, var(--padding-sm));
    gap: var(--gap-xs);
    margin-inline: auto;
    height: fit-content;

    .slideshow-control {
      border-radius: var(--thumbnail-radius, var(--media-radius));
      width: clamp(44px, 7vw, var(--thumbnail-width));
      height: auto;
      aspect-ratio: var(--aspect-ratio);

      img {
        height: 100%;
        object-fit: cover;
        border-radius: var(--thumbnail-radius, var(--media-radius));
      }

      &:is([aria-selected='true']) {
        outline: var(--focus-outline-width) solid currentcolor;
        outline-offset: calc(var(--focus-outline-offset) / 2);
        border: var(--style-border-width) solid rgb(var(--color-border-rgb) / var(--media-border-opacity));
      }
    }
  }

  .slideshow-controls__thumbnail {
    position: relative;
  }

  .slideshow-controls__thumbnail-badge {
    position: absolute;
    top: var(--padding-2xs);
    right: var(--padding-2xs);
    width: clamp(16px, 10%, 20px);
    height: clamp(16px, 10%, 20px);
    background-color: var(--color-background);
    border-radius: var(--style-border-radius-xs);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 0 0 1px rgb(var(--color-foreground-rgb) / var(--opacity-5));
  }

  .slideshow-controls__thumbnail-badge svg {
    width: 60%;
    height: 60%;
    fill: var(--color-foreground);
    opacity: 0.6;
  }

  /* Slideshow Play/Pause */
  .slideshow-control:is(.icon-pause, .icon-play) {
    color: var(--color-active);

    &:hover {
      color: var(--color-hover);
    }

    svg {
      display: none;
    }
  }

  slideshow-component:is([autoplay]) {
    &:is([paused]) {
      .icon-play > svg {
        display: block;
      }
    }

    &:not([paused]) {
      .icon-pause > svg {
        display: block;
      }
    }
  }
/* END_SNIPPET:slideshow-controls */

/* START_SNIPPET:slideshow-styles (INDEX:293) */
/*
   * Slideshow Component
   */
  slideshow-component {
    --cursor: grab;
    --slide-offset: 6px;

    position: relative;
    display: flex;
    flex-direction: column;
    timeline-scope: var(--slideshow-timeline);
  }

  .slideshow--single-media {
    --cursor: default;
  }

  a slideshow-component {
    --cursor: pointer;
  }

  slideshow-component [data-placeholder='true'] * {
    cursor: grab;
  }

  /*
   * Slideshow Slides
   */
  slideshow-slides {
    width: 100%;
    position: relative;
    display: flex;
    overflow-x: scroll;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    scrollbar-color: transparent transparent;
    scrollbar-width: none;
    gap: var(--slideshow-gap, 0);
    cursor: var(--cursor);
    min-height: var(--slide-min-height);
    align-items: var(--slideshow-align-items, normal);

    @media (prefers-reduced-motion) {
      scroll-behavior: auto;
    }

    &::-webkit-scrollbar {
      width: 0;
    }

    &::-webkit-scrollbar-track {
      background: transparent;
    }

    &::-webkit-scrollbar-thumb {
      background: transparent;
      border: none;
    }

    @media screen and (min-width: 750px) {
      min-height: var(--slide-min-height-desktop);
    }
  }

  .slideshow--stretch-content slideshow-slides > * {
    height: auto;
  }

  slideshow-component[disabled='true'] slideshow-slides {
    overflow: hidden;
  }

  /**
   * By default, slideshows have overflow: hidden (no compositor layer).
   * When the slideshow enters the viewport, JavaScript adds [in-viewport] which enables scrolling.
   */
  slideshow-component:not([in-viewport]) slideshow-slides {
    overflow: hidden;
  }

  slideshow-component[mobile-disabled] slideshow-slides {
    @media screen and (max-width: 749px) {
      overflow: hidden;
    }
  }

  slideshow-slides[gutters*='start'] {
    padding-inline-start: var(--gutter-slide-width, 0);
    scroll-padding-inline-start: var(--gutter-slide-width, 0);
  }

  slideshow-slides[gutters*='end'] {
    padding-inline-end: var(--gutter-slide-width, 0);
  }

  slideshow-component[dragging] {
    --cursor: grabbing;

    * {
      pointer-events: none;
    }
  }

  slideshow-component[dragging] slideshow-arrows {
    display: none;
  }

  slideshow-container {
    width: 100%;
    display: block;
    position: relative;
    grid-area: container;
    container-type: inline-size;
    background-color: var(--color-background);
  }

  /*
   * Be specific about HTML children structure to avoid targeting nested slideshows.
   * Ensure that the content is 'visible' while scrolling instead of 'auto' to avoid issues in Safari.
   */
  slideshow-component:is([dragging], [transitioning], :hover) > slideshow-container > slideshow-slides > slideshow-slide {
    content-visibility: visible;
  }

  @keyframes slide-reveal {
    0% {
      translate: calc(var(--slideshow-slide-offset, 6) * 1rem) 0;
      opacity: 0;
    }

    50% {
      opacity: 1;
    }

    100% {
      translate: calc(var(--slideshow-slide-offset, 6) * -1rem) 0;
      opacity: 0;
    }
  }

  /*
   * Slideshow Slide
   */
  slideshow-slide {
    position: relative;
    scroll-snap-align: center;
    width: var(--slide-width, 100%);
    max-height: 100%;
    flex-shrink: 0;
    view-timeline-name: var(--slideshow-timeline);
    view-timeline-axis: inline;
    content-visibility: auto;
    contain-intrinsic-size: auto none;
    border-radius: var(--corner-radius, 0);
    overflow: hidden;

    slideshow-component[actioned] &,
    &[aria-hidden='false'] {
      content-visibility: visible;
    }

    slideshow-component slideshow-slide:not([aria-hidden='false']) {
      content-visibility: hidden;
    }

    &[hidden]:not([reveal]) {
      display: none;
    }

    /* Make inactive slides appear clickable */
    &[aria-hidden='true'] {
      cursor: pointer;
    }
  }

  slideshow-slide .shopify-model-viewer-ui__controls-area.shopify-model-viewer-ui__controls-area {
    bottom: var(--padding-sm);
    right: var(--padding-sm);
  }

  slideshow-component.slideshow--content-below-media slideshow-slide {
    display: grid;
  }

  .slideshow--content-below-media slideshow-slide :is(.slide__image-container, .slide__content) {
    position: static;
  }

  .slideshow--content-below-media slideshow-slide {
    grid-template-rows: var(--grid-template-rows);

    @media screen and (min-width: 750px) {
      grid-template-rows: var(--grid-template-rows-desktop);
    }
  }
/* END_SNIPPET:slideshow-styles */

/* START_SNIPPET:sorting (INDEX:295) */
.sorting-filter__container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-inline: var(--drawer-padding) 0;
    padding-block: var(--padding-sm);
    margin-inline-end: var(--margin-md);
    position: relative;
  }

  .sorting-filter__container .facets__label {
    font-size: var(--font-h4--size);
  }

  .sorting-filter__select-wrapper {
    display: flex;
    position: relative;
    border-radius: var(--variant-picker-button-radius);
    align-items: center;
    overflow: clip;
    padding: var(--padding-2xs) var(--padding-xs);
  }

  .sorting-filter__select-wrapper:has(:focus-visible) {
    outline: var(--focus-outline-width) solid currentcolor;
    outline-offset: var(--focus-outline-offset);
  }

  .sorting-filter__select-wrapper:has(:focus-visible) .sorting-filter__select {
    outline: none;
  }

  .sorting-filter__container .sorting-filter__select {
    appearance: none;
    border: 0;
    margin: 0;
    cursor: pointer;
    width: 100%;
    padding-inline-end: var(--icon-size-2xs);
    text-align: right;

    /* Needed for Safari */
    text-align-last: right;
  }

  .sorting-filter__select .icon {
    position: absolute;
    right: var(--padding-md);
    top: 50%;
    transform: translateY(-50%);
    width: var(--icon-size-2xs);
    height: var(--icon-size-2xs);
    pointer-events: none;
  }

  .sorting-filter {
    @media screen and (min-width: 750px) {
      z-index: var(--facets-upper-z-index);
    }
  }

  .sorting-filter__options {
    display: grid;
    grid-template-rows: 0fr;
    opacity: 0;
    position: absolute;
    top: 100%;
    right: 0;
    color: var(--color-foreground);
    z-index: var(--facets-upper-z-index);
    box-shadow: var(--shadow-popover);
    border: var(--style-border-popover);
    background-color: var(--color-background);
    border-radius: var(--style-border-radius-popover);
    width: max-content;
    min-width: var(--facets-panel-min-width);
    min-height: 0;

    transition: grid-template-rows var(--animation-speed-slow) var(--animation-easing),
      opacity var(--animation-speed-slow) var(--animation-easing);
  }

  details[open] .sorting-filter__options {
    opacity: 1;
    grid-template-rows: 1fr;
  }

  .sorting-filter__options-inner {
    display: flex;
    flex-direction: column;
    grid-row: 1 / span 2;
    gap: var(--gap-sm);
    padding: calc(var(--drawer-padding) / 2);
    color: var(--color-foreground);
    overflow: clip;
    scrollbar-width: none;
    -ms-overflow-style: none;

    &::-webkit-scrollbar {
      display: none;
    }

    @media screen and (min-width: 750px) {
      gap: 0;
    }
  }

  .sorting-filter__option {
    cursor: pointer;
    display: grid;
    grid-template-columns: var(--icon-size-sm) 1fr;
    gap: var(--margin-2xs);
    align-items: center;
    min-width: 180px;
    max-width: 16em;
    padding: var(--padding-2xs) calc(var(--drawer-padding) / 2) var(--padding-2xs) var(--padding-2xs);

    &:hover {
      border-radius: calc(var(--style-border-radius-popover) / 2);
      background-color: rgb(var(--color-foreground-rgb) / var(--opacity-8));
    }

    &:focus {
      border-radius: calc(var(--style-border-radius-popover) / 2);
    }
  }

  .sorting-filter__input {
    display: none;

    &:checked + .sorting-filter__checkmark + .sorting-filter__label {
      font-weight: 500;
    }
  }

  .sorting-filter__checkmark {
    visibility: hidden;
  }

  *:checked ~ .sorting-filter__checkmark {
    visibility: visible;
  }

  .sorting-filter__label {
    cursor: pointer;
    pointer-events: none;
  }

  .facets-toggle--no-filters .sorting-filter__select-wrapper {
    @media screen and (max-width: 749px) {
      padding-inline-start: 0;
    }
  }

  .facets-mobile-wrapper .sorting-filter .facets__panel {
    padding-inline: 0;
    position: relative;
  }

  .facets-mobile-wrapper .sorting-filter .facets__status {
    display: none;
  }

  .facets-mobile-wrapper:has(> :nth-child(2)) .sorting-filter .sorting-filter__options {
    left: 0;
    right: unset;
  }

  .facets-mobile-wrapper .sorting-filter .facets__label {
    margin-inline-end: var(--margin-2xs);
    font-size: var(--font-paragraph--size);
    color: var(--color-foreground-muted);
  }

  .facets-toggle .sorting-filter__container {
    @media screen and (max-width: 749px) {
      padding: 0;
    }
  }

  .facets-toggle .sorting-filter__container .facets__label {
    @media screen and (max-width: 749px) {
      display: none;
    }
  }

  .facets-toggle .sorting-filter::before {
    @media screen and (max-width: 749px) {
      display: none;
    }
  }

  .facets--drawer .sorting-filter {
    @media screen and (min-width: 750px) {
      display: none;
    }
  }
/* END_SNIPPET:sorting */

/* START_SNIPPET:text (INDEX:303) */
:root {
    --text-align-default: left;
  }

  [style*='--horizontal-alignment: center'] .text-block {
    --text-align-default: center;
  }

  [style*='--horizontal-alignment: flex-end'] .text-block {
    --text-align-default: right;
  }

  [style*='--horizontal-alignment: flex-start'] > .text-block {
    --text-align-default: left;
  }

  [style*='--horizontal-alignment: center'] > .text-block {
    --text-align-default: center;
  }

  [style*='--horizontal-alignment: flex-end'] > .text-block {
    --text-align-default: right;
  }

  .text-block {
    width: var(--width);
    max-width: 100%;
    display: flex;
    flex-direction: column;
    align-items: var(--horizontal-alignment);
  }

  .text-block > * {
    width: var(--width);
    max-inline-size: min(100%, var(--max-width, 100%));
    text-align: var(--text-align, var(--text-align-default));
    text-wrap: var(--text-wrap);
  }

  .text-block:not(.text-block--full-width).rte,
  .text-block:not(.text-block--full-width).paragraph {
    /* Safari doesn't support pretty, so fallback to balance */
    text-wrap: balance;
    text-wrap: pretty;
  }

  .text-block:not(.text-block--full-width):is(.h1, .h2, .h3, .h4, .h5, .h6) {
    text-wrap: balance;
  }

  /* Hide underline unless text is using paragraph styles. */
  .text-block:is(.h1, .h2, .h3, .h4, .h5, .h6) a {
    text-decoration-color: transparent;
  }

  .text-block h1,
  .text-block.h1 > * {
    margin-block: var(--font-h1--spacing);
  }

  .text-block h2,
  .text-block.h2 > * {
    margin-block: var(--font-h2--spacing);
  }

  .text-block h3,
  .text-block.h3 > * {
    margin-block: var(--font-h3--spacing);
  }

  .text-block h4,
  .text-block.h4 > * {
    margin-block: var(--font-h4--spacing);
  }

  .text-block h5,
  .text-block.h5 > * {
    margin-block: var(--font-h5--spacing);
  }

  .text-block h6,
  .text-block.h6 > * {
    margin-block: var(--font-h6--spacing);
  }

  .text-block p,
  .text-block.p > * {
    margin-block: var(--font-paragraph--spacing);
  }

  .text-block > *:first-child {
    margin-block-start: 0;
  }

  .text-block > *:last-child {
    margin-block-end: 0;
  }

  .text-block--align-center,
  .text-block--align-center > * {
    margin-inline: auto;
  }

  .text-block--align-right,
  .text-block--align-right > * {
    margin-inline-start: auto;
  }

  .text-block--background {
    background-color: var(--text-background-color);
    border-radius: var(--text-corner-radius);

    /* To avoid text being cropped when using a border radius we add a minimum padding. */
    padding-block-start: max(var(--text-padding), var(--padding-block-start, 0));
    padding-block-end: max(var(--text-padding), var(--padding-block-end, 0));
    padding-inline-start: max(var(--text-padding), var(--padding-inline-start, 0));
    padding-inline-end: max(var(--text-padding), var(--padding-inline-end, 0));
  }

  .custom-color,
  .custom-color > :is(h1, h2, h3, h4, h5, h6, p, *) {
    color: var(--color);
  }
/* END_SNIPPET:text */

/* START_SNIPPET:variant-main-picker (INDEX:312) */
/* Variant picker container styles - unique to main variant picker */
  .variant-picker {
    width: 100%;
  }

  .variant-picker__form {
    width: 100%;
  }

  .variant-picker[data-shopify-visual-preview] {
    min-width: 300px;
    padding-inline-start: max(4px, var(--padding-inline-start));
  }

  /* Dropdown variant option styles */
  .variant-option__select-wrapper {
    display: flex;
    position: relative;
    border: var(--style-border-width-inputs) solid var(--color-border);
    border-radius: var(--style-border-radius-inputs);
    align-items: center;
    margin-top: var(--margin-2xs);
    overflow: clip;
  }

  .variant-option__select-wrapper:has(.swatch) {
    --variant-picker-swatch-width: 20px;
    --variant-picker-swatch-height: 20px;
  }

  .variant-option__select-wrapper:hover {
    border-color: var(--color-variant-hover-border);
  }

  .variant-option__select:focus-visible {
    outline: var(--focus-outline-width) solid currentcolor;
    outline-offset: var(--focus-outline-offset);
  }

  .variant-option__select {
    padding-block: var(--padding-md);
    padding-inline: var(--padding-lg) calc(var(--padding-lg) + var(--icon-size-2xs));
    appearance: none;
    border: 0;
    width: 100%;
    margin: 0;
    cursor: pointer;
  }

  .variant-option__select-wrapper .icon {
    position: absolute;
    right: var(--padding-md);
    top: 50%;
    transform: translateY(-50%);
    width: var(--icon-size-2xs);
    height: var(--icon-size-2xs);
    pointer-events: none;
  }

  .variant-option__select--has-swatch {
    padding-inline-start: calc((2 * var(--padding-sm)) + var(--variant-picker-swatch-width));
  }

  .variant-option__select-wrapper .swatch {
    position: absolute;
    top: 50%;
    left: var(--padding-md);
    transform: translateY(-50%);
  }

  /* Variant picker alignment modifiers */
  .variant-picker--center,
  .variant-picker--center .variant-option {
    text-align: center;
    align-items: center;
    justify-content: center;
    width: 100%;
  }

  .variant-picker--right,
  .variant-picker--right .variant-option {
    text-align: right;
    justify-content: right;
  }
/* END_SNIPPET:variant-main-picker */

/* START_SNIPPET:variant-swatches (INDEX:313) */
swatches-variant-picker-component {
    display: flex;
    width: 100%;
    flex-direction: row;
    justify-content: var(--product-swatches-alignment-mobile);

    @media screen and (min-width: 750px) {
      justify-content: var(--product-swatches-alignment);
    }

    --overflow-list-padding-block: calc(
        var(--product-swatches-padding-block-start) + var(--focus-outline-offset) + var(--focus-outline-width)
      )
      calc(var(--product-swatches-padding-block-end) + var(--focus-outline-offset) + var(--focus-outline-width));
    --overflow-list-padding-inline: calc(
        var(--product-swatches-padding-inline-start) + var(--focus-outline-offset) + (1.5 * var(--focus-outline-width))
      )
      calc(var(--product-swatches-padding-inline-end) + var(--focus-outline-offset) + var(--focus-outline-width));

    overflow-list::part(list) {
      gap: var(--gap-sm);
    }
  }

  swatches-variant-picker-component overflow-list[disabled='true'] {
    --overflow-list-padding-block: 0px;
    margin-block-start: calc(
      var(--product-swatches-padding-block-start) + var(--focus-outline-offset) + var(--focus-outline-width)
    );
    margin-block-end: calc(
      var(--product-swatches-padding-block-end) + var(--focus-outline-offset) + var(--focus-outline-width)
    );
  }

  .hidden-swatches__count {
    display: flex;
    align-self: center;
    align-items: center;
    justify-content: center;
    color: rgb(var(--color-foreground-rgb) / var(--opacity-40-60));
    background-color: transparent;
    padding: 0;
    border: 0;
    border-radius: 0;

    &::before {
      /* This doesn't work in Safari without the counter-reset. https://stackoverflow.com/a/40179718 */
      counter-reset: overflow-count var(--overflow-count);
      content: '+' counter(overflow-count);
      line-height: 1;
      cursor: pointer;
    }
  }

  .hidden-swatches__count:hover {
    color: var(--color-foreground-rgb);
  }
/* END_SNIPPET:variant-swatches */

/* START_SNIPPET:video (INDEX:314) */
.video-interaction-hint {
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: var(--layer-flat);
  }

  .video-interaction-hint:hover {
    opacity: 1;
  }
/* END_SNIPPET:video */

/* START_SNIPPET:volume-pricing-info (INDEX:315) */
.volume-pricing-info {
    display: inline-flex;
  }

  .volume-pricing-info__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--minimum-touch-target);
    height: var(--minimum-touch-target);
    color: var(--color-foreground-secondary);
    cursor: pointer;
    transition: color var(--animation-speed) var(--animation-easing);
    flex-shrink: 0;
  }

  .volume-pricing-info__button:hover {
    color: var(--color-foreground);
  }

  .volume-pricing-info__button .svg-wrapper {
    width: var(--icon-size-sm);
    height: var(--icon-size-sm);
  }

  .volume-pricing-info__button--with-label {
    width: auto;
    gap: var(--gap-sm);
  }

  .volume-pricing-info__popover {
    --volume-pricing-popover-max-width: 320px;
    --volume-pricing-popover-spacing: 8px;
    --volume-pricing-popover-viewport-margin: 16px;

    min-inline-size: 280px;
    max-inline-size: var(--volume-pricing-popover-max-width);
    background: var(--color-background);
    border: var(--style-border-popover);
    border-radius: var(--style-border-radius-popover, 0);
    box-shadow: var(--shadow-popover);
    overflow: hidden;
    padding: 0;
    margin: 0;
    transition-property: display, opacity, translate;
    transition-duration: 0.3s;
    transition-timing-function: var(--ease-out-quad);
    transition-behavior: allow-discrete;
    translate: 0 20px;
    opacity: 0;
  }

  /* Native anchor positioning for supported browsers */
  .volume-pricing-info__popover {
    inset: unset;
    top: calc(anchor(bottom) + var(--volume-pricing-popover-spacing));
    left: anchor(left);
  }

  @supports (position-try-fallbacks: --top-left) {
    .volume-pricing-info__popover {
      position-try-fallbacks: --top-left;
    }

    @position-try --top-left {
      top: calc(anchor(top) - var(--volume-pricing-popover-spacing));
      bottom: auto;
      transform: translateY(-100%);
    }
  }

  /* Fallback positioning using custom properties */
  @supports not (position-anchor: --volume-pricing-trigger) {
    .volume-pricing-info__popover {
      position: fixed;
      top: calc(var(--anchor-bottom) * 1px + var(--volume-pricing-popover-spacing));
      left: max(
        var(--volume-pricing-popover-viewport-margin),
        min(
          var(--anchor-left) * 1px,
          100vw - var(--volume-pricing-popover-max-width) - var(--volume-pricing-popover-viewport-margin)
        )
      );
    }
  }

  .volume-pricing-info__popover:popover-open {
    translate: 0 0;
    opacity: 1;
  }

  @starting-style {
    .volume-pricing-info__popover:popover-open {
      translate: 0 20px;
      opacity: 0;
    }
  }

  .volume-pricing-info__rules {
    display: flex;
    flex-direction: column;
    gap: var(--gap-2xs);
    padding: var(--padding-md);
    font-size: var(--font-size--xs);
  }

  .volume-pricing-info__rules,
  .volume-pricing-info__rules > span {
    color: rgb(var(--color-foreground-rgb) / var(--opacity-subdued-text));
  }

  .volume-pricing-info__table {
    display: flex;
    flex-direction: column;
  }

  .volume-pricing-info__row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--padding-sm) var(--padding-md);
    font-size: var(--font-size--sm);
    background: var(--color-background);
    border-inline-start: 3px solid transparent;
    transition: border-color var(--animation-speed) var(--animation-easing);
  }

  .volume-pricing-info__row:nth-child(odd) {
    background: rgb(var(--color-foreground-rgb) / var(--opacity-5));
  }

  .volume-pricing-info__row--active {
    border-inline-start-color: var(--color-foreground);
    font-weight: var(--font-weight-medium);
  }

  .volume-pricing-info__quantity {
    color: var(--color-foreground);
  }

  .volume-pricing-info__price {
    display: flex;
    align-items: center;
    color: var(--color-foreground);
  }

  .volume-pricing-info__checkmark {
    display: none;
    width: var(--icon-size-sm);
    height: var(--icon-size-sm);
    color: var(--color-primary);
  }

  .volume-pricing-info__row--active .volume-pricing-info__checkmark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
/* END_SNIPPET:volume-pricing-info */