/* storefront.css — extracted from index.html (SouthBasket lumen revamp).
   Main storefront styles + subscription-builder styles, order preserved. */
/* ── Reset ──────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--ds-page,none),var(--ds-bg,var(--bg));background-attachment:fixed;color:var(--ds-text,var(--text));overflow-x:hidden}
img{display:block}
input,textarea,button{font-family:inherit}

/* topbar rendered by renderTopbar() in components.js */

/* ── Header ─────────────────────────────────────────────────── */
#hdr{
  position:sticky;top:0;z-index:50;
  background:transparent;padding:10px 12px 0;
}
/* Floating glass pill (prototype) */
.hdr-in{
  display:flex;align-items:center;gap:10px;
  max-width:1216px;margin:0 auto;padding:9px 14px;
  border-radius:var(--ds-radius-lg,20px);
  background:color-mix(in srgb,var(--ds-surface,#fff) 82%,transparent);
  border:1px solid var(--ds-border,transparent);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);
  box-shadow:var(--ds-e1,0 1px 8px rgba(0,0,0,.08));
}
.hdr-logo{display:flex;align-items:center;gap:8px;text-decoration:none;flex-shrink:0}
.hdr-logo img{height:32px;border-radius:8px;object-fit:cover}
.hdr-brand{font-weight:800;font-size:15px;color:var(--primary);white-space:nowrap}
.hdr-search{flex:1;min-width:0}
.hdr-search input{
  width:100%;padding:8px 14px;
  border:1px solid var(--ds-border,var(--border));border-radius:var(--ds-radius-pill,20px);
  font-size:14px;background:var(--ds-surface,var(--surface));
  transition:border-color .2s,background .2s;
}
.hdr-search input:focus{outline:none;border-color:var(--ds-primary,var(--primary));background:var(--ds-surface,#fff)}
.cart-btn{position:relative;background:none;border:none;font-size:22px;cursor:pointer;padding:4px 6px;color:var(--text);line-height:1}
.cart-btn:hover{color:var(--primary)}
.acct-avatar{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;font-size:13px;font-weight:800;text-decoration:none;flex-shrink:0}
.acct-avatar:hover{opacity:.85}
.badge{
  position:absolute;top:-2px;right:-4px;
  background:var(--danger);color:#fff;font-size:10px;font-weight:700;
  min-width:18px;height:18px;border-radius:9px;
  display:none;align-items:center;justify-content:center;padding:0 4px;
}
.badge.show{display:flex}

/* ── Category tiles ─────────────────────────────────────────── */
#cats{
  position:sticky;top:var(--hdr-h,60px);z-index:40;
  background:var(--bg);
  border-bottom:1.5px solid var(--divider);
}
/* Special pills row (My Picks etc.) */
.cats-special-row{display:flex;gap:6px;padding:8px 12px 6px;overflow-x:auto;scrollbar-width:none}
.cats-special-row::-webkit-scrollbar{display:none}
/* Tile grid */
.cats-grid{
  display:grid;grid-template-columns:repeat(4,1fr);
  gap:7px;padding:2px 12px 10px;
}
@media(min-width:480px){.cats-grid{grid-template-columns:repeat(5,1fr)}}
/* Individual tile */
.cat-tile{
  position:relative;border-radius:10px;overflow:hidden;
  cursor:pointer;border:2.5px solid transparent;
  transition:transform .15s,border-color .15s,box-shadow .15s;
  aspect-ratio:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  background:var(--surface);
  -webkit-tap-highlight-color:transparent;font-family:inherit;padding:6px 4px;user-select:none;
}
.cat-tile:active,.cat-tile:hover{transform:scale(1.04)}
.cat-tile.active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}
.cat-tile-grad{position:absolute;inset:0;border-radius:inherit}
.cat-tile-imgs{position:absolute;inset:0;border-radius:inherit;overflow:hidden}
.cat-tile-img{
  position:absolute;inset:0;
  background-size:cover;background-position:center;
  opacity:0;transition:opacity .9s ease;
}
.cat-tile-img.active{opacity:1}
.cat-tile-overlay{
  position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.62) 0%,rgba(0,0,0,.08) 55%,rgba(0,0,0,0) 100%);
}
.cat-tile-glyph{
  position:relative;z-index:1;
  font-size:24px;line-height:1;
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));
}
.cat-tile.has-img .cat-tile-glyph{
  position:absolute;top:5px;right:5px;z-index:2;
  font-size:13px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6));
}
.cat-tile-text{
  position:relative;z-index:1;
  font-size:10.5px;font-weight:700;text-align:center;
  color:rgba(255,255,255,.95);text-shadow:0 1px 2px rgba(0,0,0,.4);
  line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;
}
.cat-tile.has-img .cat-tile-text{
  position:absolute;bottom:0;left:0;right:0;z-index:2;
  padding:2px 4px 4px;text-shadow:0 1px 3px rgba(0,0,0,.65);
}
.cat-tile-count{display:block;font-size:9px;font-weight:400;opacity:.75}
.cat-tile-check{
  position:absolute;top:4px;left:4px;z-index:3;
  width:15px;height:15px;border-radius:50%;
  background:var(--primary);color:#fff;font-size:8px;
  display:flex;align-items:center;justify-content:center;
  opacity:0;transition:opacity .15s;line-height:1;
}
.cat-tile.active .cat-tile-check{opacity:1}
/* Text-only: switch grid → flex-wrap so each chip auto-sizes to its label */
.cats-grid--text{display:flex;flex-wrap:wrap}
/* Auto-width pill for text-only tile */
.cat-tile.no-img{
  aspect-ratio:unset;height:40px;
  flex-direction:row;justify-content:flex-start;
  gap:5px;padding:4px 10px 4px 8px;
  flex:0 0 auto;          /* size to content, don't stretch */
}
.cat-tile.no-img .cat-tile-glyph{font-size:16px;flex-shrink:0;filter:none;position:relative}
/* Never truncate the label — the pill grows to fit */
.cat-tile.no-img .cat-tile-text{
  text-align:left;color:var(--text);text-shadow:none;
  white-space:nowrap;overflow:visible;text-overflow:clip;max-width:none;
}
.cat-tile.no-img .cat-tile-count{color:var(--muted)}
/* Collapse / expand */
.cats-grid.cats-collapsed{overflow:hidden;max-height:185px}   /* image mode — 2 rows ~80px     */
.cats-grid--text.cats-collapsed{max-height:96px}              /* text mode  — 2 rows at 40px   */
/* Toggle row below grid */
.cats-toggle{display:flex;align-items:center;justify-content:center;padding:2px 0 5px}
.cats-toggle-btn{
  background:none;border:none;cursor:pointer;
  font-size:11px;font-weight:700;color:var(--muted);
  padding:3px 12px;border-radius:20px;
  font-family:inherit;line-height:inherit;
  display:flex;align-items:center;gap:3px;
  transition:color .15s;
}
.cats-toggle-btn:hover,.cats-toggle-btn:active{color:var(--primary)}

/* ── Category Sheet Nav ──────────────────────────────────────── */
.xl-cat-strip-inner{display:flex;align-items:center;gap:8px;padding:8px 12px}
.xl-burger{width:38px;height:38px;border-radius:calc(var(--ds-radius,12px) - 4px);border:1px solid var(--ds-border,var(--border));background:var(--ds-surface,#fff);box-shadow:var(--ds-e1,none);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;transition:background .2s,border-color .2s;padding:0}
.xl-burger:hover{background:var(--primaryLight,#e8f5e9);border-color:var(--primary)}
.xl-burger:active{transform:scale(.96)}
.xl-burger-bars{display:flex;flex-direction:column;gap:3.5px;pointer-events:none}
.xl-bar{width:16px;height:1.8px;background:var(--text);border-radius:2px;display:block;transition:background .2s}
.xl-burger:hover .xl-bar{background:var(--primary)}
.xl-burger-dot{position:absolute;top:7px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 2px var(--surface,#fff);pointer-events:none}
.xl-strip-scroll{display:flex;gap:7px;flex:1;overflow-x:auto;scrollbar-width:none;padding:0 2px}
.xl-strip-scroll::-webkit-scrollbar{display:none}
.xl-strip-pill{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;font-size:12.5px;font-weight:700;border:1px solid var(--ds-border,var(--border));background:var(--ds-surface,#fff);color:var(--ds-text,var(--text));cursor:pointer;white-space:nowrap;font-family:inherit;transition:transform .2s ease,background .2s,border-color .2s,color .2s}
.xl-strip-pill.active{background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);border-color:transparent;box-shadow:var(--ds-e2,0 4px 14px rgba(0,0,0,.18))}
.xl-strip-pill.special{background:linear-gradient(135deg,#f59e0b,#dc2626);color:#fff;border-color:transparent}
.xl-strip-pill.wl-pill{background:linear-gradient(135deg,#f43f5e,#c2185b);color:#fff;border-color:transparent}
.xl-strip-pill:hover:not(.active):not(.special):not(.wl-pill){transform:translateY(-1px)}
.xl-strip-thumb{width:18px;height:18px;border-radius:50%;overflow:hidden;flex-shrink:0;background:var(--border)}
.xl-strip-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.xl-cat-backdrop{position:fixed;inset:0;z-index:95;background:rgba(8,12,24,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .3s ease}
.xl-cat-backdrop.open{opacity:1;pointer-events:auto}
.xl-cat-drawer{position:fixed;left:50%;bottom:0;width:100%;max-width:460px;background:var(--ds-surface,#fff);color:var(--ds-text,var(--text));border-radius:var(--ds-radius-lg,20px) var(--ds-radius-lg,20px) 0 0;z-index:96;max-height:88vh;display:flex;flex-direction:column;transform:translate(-50%,100%);transition:transform .42s cubic-bezier(.2,.8,.2,1);box-shadow:0 -20px 50px rgba(0,0,0,.35);border:.5px solid var(--border);border-bottom:none}
.xl-cat-drawer.open{transform:translate(-50%,0)}
.xl-drawer-handle{width:40px;height:4px;border-radius:999px;background:var(--muted,#888);opacity:.4;margin:8px auto 4px;flex-shrink:0}
.xl-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:4px 16px 10px;flex-shrink:0}
.xl-drawer-title{font-family:var(--ds-font-display,var(--font-display,inherit));font-size:18px;font-weight:800;line-height:1.15}
.xl-drawer-sub{font-size:11.5px;color:var(--muted,#888);margin-top:2px}
.xl-drawer-close{width:34px;height:34px;border-radius:50%;border:1px solid var(--border);background:var(--surface,#fff);color:var(--text);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0}
.xl-drawer-search-wrap{margin:0 16px 10px;position:relative;display:flex;align-items:center;background:var(--ds-surface-2,#f5f5f5);border:1px solid var(--ds-border,var(--border));border-radius:calc(var(--ds-radius,14px) - 2px);padding:0 10px 0 38px;height:42px;flex-shrink:0}
.xl-drawer-search-icon{position:absolute;left:13px;color:var(--muted,#888);pointer-events:none}
.xl-drawer-search-wrap input{flex:1;background:transparent;border:none;outline:none;font-size:14px;color:var(--text);font-family:inherit}
.xl-drawer-chips{display:flex;gap:6px;padding:0 16px 12px;overflow-x:auto;scrollbar-width:none;flex-shrink:0}
.xl-drawer-chips::-webkit-scrollbar{display:none}
.xl-drawer-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:999px;font-size:12px;font-weight:700;border:1.5px solid var(--border);background:var(--surface,#fff);color:var(--text);cursor:pointer;white-space:nowrap;font-family:inherit}
.xl-drawer-chip.on{background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);border-color:transparent}
.xl-drawer-chip:disabled{opacity:.45;cursor:not-allowed}
.xl-drawer-recents{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;margin-bottom:18px;padding-bottom:4px}
.xl-drawer-recents::-webkit-scrollbar{display:none}
.xl-recent-btn{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;border:none;background:transparent;font-family:inherit;padding:0}
.xl-recent-circle{width:56px;height:56px;border-radius:50%;overflow:hidden;position:relative;box-shadow:0 2px 8px rgba(0,0,0,.14);transition:transform .2s ease,box-shadow .2s ease}
.xl-recent-btn.active .xl-recent-circle{box-shadow:0 0 0 2px var(--primary),0 4px 14px rgba(0,0,0,.18)}
.xl-recent-btn:hover .xl-recent-circle{transform:scale(1.06)}
.xl-recent-lbl{font-size:10.5px;font-weight:700;color:var(--text);max-width:62px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
.xl-drawer-section-hd{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#888);padding:0 0 8px}
.xl-drawer-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 16px 24px}
.xl-cat-tile-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.xl-cat-tile{position:relative;height:86px;padding:0;border:none;cursor:pointer;border-radius:calc(var(--ds-radius,14px) - 2px);overflow:hidden;color:#fff;text-align:left;font-family:inherit;transition:transform .32s cubic-bezier(.2,.8,.2,1),box-shadow .32s ease;-webkit-tap-highlight-color:transparent}
.xl-cat-tile:hover{transform:translateY(-2px)!important}
.xl-cat-tile.xl-tile-active{box-shadow:0 0 0 2.5px var(--primary),0 10px 24px rgba(0,0,0,.18)}
.xl-tile-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity 1.1s ease,transform 4.2s ease;display:block}
.xl-tile-shine{position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 80% at 20% 0%,rgba(255,255,255,.22),transparent 55%)}
.xl-tile-veil{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.05) 0%,rgba(0,0,0,.20) 45%,rgba(0,0,0,.72) 100%)}
.xl-tile-veil.no-img{background:linear-gradient(180deg,transparent 30%,rgba(0,0,0,.42) 100%)}
.xl-tile-glyph{position:absolute;right:-6px;bottom:-14px;font-size:64px;opacity:.22;transform:rotate(-8deg);line-height:1;pointer-events:none}
.xl-tile-label{position:absolute;left:12px;right:10px;bottom:9px;font-size:13px;font-weight:800;line-height:1.15;letter-spacing:-.005em;text-shadow:0 1px 8px rgba(0,0,0,.55);text-align:left}
.xl-tile-count{font-size:11px;font-weight:600;opacity:.92;display:block}
.xl-tile-check{position:absolute;top:7px;right:7px;width:20px;height:20px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;box-shadow:0 2px 8px rgba(0,0,0,.3);pointer-events:none}
.xl-cat-tile-empty{grid-column:1/-1;text-align:center;padding:36px 12px;color:var(--muted,#888)}
/* Context bar */
#xlContextBar{display:flex;align-items:center;justify-content:space-between;padding:7px 14px;background:var(--ds-surface-2,#f8f8f8);border-bottom:1px solid var(--ds-divider,#e8e8e8);min-height:36px;font-size:12.5px}
.xl-ctx-breadcrumb{display:flex;align-items:center;gap:5px;color:var(--muted,#888);font-weight:600;flex:1;overflow:hidden}
.xl-ctx-home{color:var(--primary);cursor:pointer;text-decoration:none;white-space:nowrap;background:none;border:none;font:inherit;padding:0}
.xl-ctx-home:hover{text-decoration:underline}
.xl-ctx-sep{opacity:.5}
.xl-ctx-current{color:var(--text);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xl-ctx-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.xl-ctx-count{background:var(--primaryLight,#e8f5e9);color:var(--primary);border-radius:999px;padding:3px 10px;font-size:11px;font-weight:700;white-space:nowrap}
.xl-ctx-browse-btn{background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);border:none;border-radius:999px;padding:5px 14px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;transition:opacity .15s}
.xl-ctx-browse-btn:hover{opacity:.88}
/* Add all button */
.add-all-btn{background:var(--primaryLight,#e8f5e9);border:1.5px solid var(--primary);border-radius:20px;padding:3px 11px;font-size:11.5px;font-weight:700;color:var(--primary);white-space:nowrap;display:flex;align-items:center;gap:4px;cursor:pointer;font-family:inherit;transition:background .15s,color .15s}
.add-all-btn:hover{background:var(--primary);color:#fff}

/* ── Sort + share bar ───────────────────────────────────────── */
#sortBar{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;background:var(--ds-surface,#fff);border-bottom:1px solid var(--ds-divider,var(--divider));gap:8px;min-height:34px}
#sortPills{display:flex;align-items:center;gap:5px;overflow-x:auto;flex:1;scrollbar-width:none}
#sortPills::-webkit-scrollbar{display:none}
.sort-label{font-size:11px;color:var(--muted);font-weight:600;white-space:nowrap;flex-shrink:0}
.sort-pill{padding:3px 10px;border-radius:999px;border:1px solid var(--ds-border,var(--border));background:var(--ds-surface,#fff);font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;transition:all .15s;font-family:inherit}
.sort-pill:hover{border-color:var(--primary);color:var(--primary)}
.sort-pill.active{background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);border-color:transparent}
.share-btn{background:none;border:1.5px solid var(--border);border-radius:20px;padding:3px 10px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s;font-family:inherit;color:var(--text);display:flex;align-items:center;gap:4px}
.share-btn:hover{border-color:var(--primary);color:var(--primary)}
@keyframes _hlPulse{0%,100%{box-shadow:0 2px 8px rgba(0,0,0,.06)}50%{box-shadow:0 0 0 4px var(--primary)}}
.card._hl{animation:_hlPulse 1.5s ease}

.cat-pill{
  padding:5px 13px;border-radius:999px;
  border:1px solid var(--ds-border,var(--border));background:var(--ds-surface,#fff);
  font-size:13px;font-weight:600;white-space:nowrap;
  cursor:pointer;transition:all .15s;user-select:none;
  font-family:inherit;line-height:inherit;
}
.cat-pill:hover{border-color:var(--primary);color:var(--primary)}
.cat-pill.active{background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);border-color:transparent}
.cat-pill.offers{background:var(--accent);color:#fff;border-color:var(--accent)}
.cat-count{opacity:.6;font-size:11px;font-weight:400;margin-left:2px}

/* ── Product grid ───────────────────────────────────────────── */
.grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(111px,1fr));
  gap:8px;padding:10px;padding-bottom:80px;
}
@media(min-width:768px){
  .grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));padding:12px 24px 80px;max-width:1200px;margin:0 auto}
}

/* ⚠ ONLY WHEN BRAND.grid IS SET. applyUiFlags() adds .grid-fixed and the
   custom properties; with no config the class never appears and the rules
   above stand untouched. That is what makes this safe to ship to nine live
   shops at once. */
body.grid-fixed .grid{
  grid-template-columns:repeat(var(--grid-cols-mobile,2),1fr);
  gap:14px;padding:10px 14px 90px;
}
/* ⚠ A MIDDLE STEP, because 1 -> 3 with nothing between is a bad jump. At
   768px exactly, going straight to three columns gives ~230px cards on a
   tablet held in portrait; two reads far better and still fills the width. */
@media(min-width:560px){
  body.grid-fixed .grid{
    grid-template-columns:repeat(var(--grid-cols-tablet,2),1fr);
    gap:18px;padding:12px 18px 90px;
  }
}
@media(min-width:1024px){
  body.grid-fixed .grid{
    grid-template-columns:repeat(var(--grid-cols-desktop,3),1fr);
    gap:24px;padding:16px 24px 90px;max-width:var(--grid-max,1120px);
  }
}
/* A bigger card earns a bigger picture: 3/4 portrait suits a garment, and the
   default 1.15 landscape crop cuts the hem off a shirt. */
body.grid-fixed .img-wrap img{aspect-ratio:var(--card-aspect,1.15)}
body.grid-fixed .card{padding:12px}
/* ⚠ .p-name, NOT ".card .name". The first draft of this styled `.card .name`,
   a class this stylesheet has never defined -- it would have matched nothing
   and silently changed no type size at all, the same failure that made the
   Category Order button look dead earlier today. Checked against the
   stylesheet before shipping. */
body.grid-fixed .p-name{font-size:15px;line-height:1.35}

/* ── Product card ───────────────────────────────────────────── */
.card{
  background:var(--ds-surface,var(--card));border:1px solid var(--ds-border,transparent);
  border-radius:var(--ds-radius,12px);padding:10px;
  box-shadow:var(--ds-e1,0 2px 8px rgba(0,0,0,.06));
  position:relative;transition:box-shadow .2s,transform .2s;
  display:flex;flex-direction:column;        /* equal-height cards; footer pins to bottom */
}
.card:hover{box-shadow:var(--ds-e2,0 4px 16px rgba(0,0,0,.1));transform:translateY(-2px)}
.card.in-cart{box-shadow:0 0 0 2px var(--ds-primary,var(--primary))}
.img-wrap{position:relative;border-radius:calc(var(--ds-radius,12px) - 4px);overflow:hidden;background:var(--ds-surface-2,var(--divider))}
.img-wrap img{width:100%;aspect-ratio:1.15;height:auto;object-fit:cover;border-radius:calc(var(--ds-radius,12px) - 4px);cursor:zoom-in;transition:transform .32s ease;display:block}
.img-wrap:hover img{transform:scale(1.08)}

/* ── Lightbox ───────────────────────────────────────────────── */
#lightbox{
  display:none;position:fixed;inset:0;z-index:200;
  background:rgba(10,8,5,.9);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  align-items:center;justify-content:center;padding:20px;
}
#lightbox.open{display:flex;animation:lbFadeIn .2s ease}
.lb-container{
  position:relative;display:flex;flex-direction:column;
  align-items:center;max-width:min(92vw,700px);
  animation:lbPop .26s cubic-bezier(.34,1.18,.64,1);
}
.lb-close{
  position:absolute;top:-16px;right:-16px;
  width:38px;height:38px;border-radius:50%;
  background:rgba(255,255,255,.14);
  border:1.5px solid rgba(255,255,255,.28);
  color:#fff;font-size:18px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s;z-index:1;
}
.lb-close:hover{background:rgba(255,255,255,.28)}
#lbImg{
  max-width:100%;max-height:82vh;
  object-fit:contain;border-radius:12px;
  box-shadow:0 32px 96px rgba(0,0,0,.7);display:block;
}
.lb-caption{
  margin-top:14px;color:rgba(255,255,255,.88);
  font-size:14px;font-weight:600;text-align:center;letter-spacing:.02em;
}
.lb-desc{
  margin-top:8px;color:rgba(255,255,255,.62);
  font-size:12px;font-weight:400;text-align:center;line-height:1.5;
  max-width:min(80vw,520px);
}
@keyframes lbFadeIn{from{opacity:0}to{opacity:1}}
@keyframes lbPop{from{transform:scale(.93);opacity:0}to{transform:scale(1);opacity:1}}
/* ── Card image toolbar (share + heart) ─────────────────────── */
.card-img-toolbar{position:absolute;top:6px;right:6px;display:flex;gap:4px;z-index:2}
.wl-btn{background:rgba(255,255,255,.88);border:none;border-radius:50%;width:28px;height:28px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;line-height:1;color:var(--muted);transition:background .15s,color .15s}
.wl-btn.wl-active{color:var(--accent)}
.wl-btn:hover{background:#fff}
.shr-btn{background:rgba(255,255,255,.88);border:none;border-radius:50%;width:28px;height:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;color:var(--muted);transition:background .15s,color .15s}
.shr-btn:hover{background:#fff;color:var(--primary)}
/* Landing offer card share */
.ldg-offer-share{position:absolute;top:6px;left:6px;z-index:2;width:24px;height:24px;border-radius:50%;border:none;background:rgba(255,255,255,.88);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;color:var(--muted);transition:background .15s,color .15s}
.ldg-offer-share:hover{background:#fff;color:var(--primary)}
.oos-card{opacity:.7}
.oos-badge{position:absolute;top:8px;left:8px;z-index:2;background:#555;color:#fff;font-size:9px;font-weight:700;padding:2px 5px;border-radius:4px}
.lbl-stack{position:absolute;bottom:8px;left:8px;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:3px}
.lbl-badge{font-size:9px;font-weight:800;padding:2px 6px;border-radius:4px;letter-spacing:.04em;text-transform:uppercase}
.oos-btn{opacity:.5;cursor:not-allowed;pointer-events:none}

/* ── My Picks / Favourites ──────────────────────────────────── */
.wl-cat-pill{background:linear-gradient(135deg,#f43f5e,#c2185b);color:#fff;border-color:transparent}
.cat-pill.wl-cat-pill.active,.cat-pill.wl-cat-pill:hover{background:linear-gradient(135deg,#f43f5e,#c2185b);border-color:transparent;opacity:.88}
.fav-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--ds-hero,linear-gradient(135deg,var(--primary),var(--accent)));color:#fff;padding:12px 16px;margin:8px 10px 2px;border-radius:var(--ds-radius,14px);box-shadow:var(--ds-e1,none);font-size:13px;font-weight:600}
@media(min-width:768px){.fav-banner{margin:8px 24px 2px;max-width:1152px;margin-left:auto;margin-right:auto}}
.fav-banner-info{display:flex;flex-direction:column;gap:3px}
.fav-banner-sub{font-size:11px;font-weight:400;opacity:.82}
.fav-banner-btn{flex-shrink:0;background:rgba(255,255,255,.22);border:1.5px solid rgba(255,255,255,.45);color:#fff;border-radius:10px;padding:8px 16px;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s;white-space:nowrap}
.fav-banner-btn:hover{background:rgba(255,255,255,.36)}
.fav-section{grid-column:1/-1;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--primary);padding:4px 0 8px;display:flex;align-items:center;gap:7px}
.fav-section::after{content:'';flex:1;height:1px;background:var(--divider)}
.fav-divider{grid-column:1/-1;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:12px 0 8px;display:flex;align-items:center;gap:6px}
.fav-divider::before,.fav-divider::after{content:'';flex:1;height:1px;background:var(--divider)}
.card.wl-pinned:not(.in-cart){box-shadow:0 0 0 2px var(--primary),0 2px 8px rgba(0,0,0,.07)}
.fav-empty{grid-column:1/-1;text-align:center;padding:56px 20px 40px;color:var(--muted)}
.fav-empty-icon{font-size:48px;margin-bottom:12px}
.fav-empty-title{font-size:17px;font-weight:700;color:var(--text);margin-bottom:8px}
.fav-empty-sub{font-size:13px;line-height:1.6;max-width:240px;margin:0 auto}
.sale-badge{
  position:absolute;top:8px;left:8px;z-index:2;
  background:var(--danger);color:#fff;
  font-size:9px;font-weight:700;padding:2px 5px;border-radius:4px;
}
.p-name{
  font-size:12px;font-weight:600;margin:6px 0 2px;line-height:1.3;color:var(--ds-text,var(--text));
  display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:31px;
}
.p-sub{font-size:11px;color:var(--ds-muted,var(--muted));margin-bottom:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.p-price{font-family:var(--ds-font-display,var(--font-display,inherit));font-weight:800;color:var(--ds-primary,var(--primary));font-size:16px;display:flex;align-items:baseline;gap:4px;margin:0 0 8px;min-width:0}
.p-price>span:first-child{white-space:nowrap}
.p-price .orig{font-family:inherit;font-size:11px;text-decoration:line-through;color:var(--ds-muted,var(--muted));font-weight:400;opacity:.6}

/* ── Card footer: price line + full-width ADD/qty, pinned to card bottom ── */
.card-foot{display:block;margin-top:auto;padding-top:10px}

/* ── Add / Qty controls on card (full-width) ─────────────────── */
.card-actions{display:block}
.add-btn{
  display:block;width:100%;box-sizing:border-box;height:42px;
  border:none;border-radius:calc(var(--ds-radius,8px) - 6px);
  background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);
  font-weight:700;font-size:14px;letter-spacing:.03em;cursor:pointer;transition:.15s;
  position:relative;overflow:hidden;box-shadow:var(--ds-e1,none);
}
.add-btn:hover,.add-btn:active{filter:brightness(1.06)}
.qty-ctrl{
  display:flex;align-items:center;justify-content:space-between;
  background:var(--ds-chip-on,var(--primary));border-radius:calc(var(--ds-radius,8px) - 6px);
  height:42px;overflow:hidden;width:100%;box-sizing:border-box;box-shadow:var(--ds-e1,none);
}
.qty-ctrl button{flex-shrink:0;width:38px;height:42px;background:none;border:none;color:var(--ds-on-primary,#fff);font-size:18px;cursor:pointer;line-height:1}
.qty-ctrl button:hover{background:rgba(0,0,0,.15)}
.qty-ctrl .qty-num{color:var(--ds-on-primary,#fff);font-weight:700;font-size:14px;min-width:24px;text-align:center}

/* ── Bottom cart bar ────────────────────────────────────────── */
.cart-bar{
  position:fixed;bottom:0;left:0;right:0;height:58px;
  background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 16px;cursor:pointer;z-index:60;font-weight:600;
  box-shadow:var(--ds-e2,none);
  transition:transform .3s cubic-bezier(.4,0,.2,1),filter .2s;
}
.cart-bar.hidden{transform:translateY(100%)}
.cart-bar:hover{filter:brightness(1.06)}
.cart-bar-center{font-size:13px;opacity:.85}
@media(min-width:768px){
  .cart-bar{max-width:460px;left:50%;right:auto;bottom:14px;transform:translateX(-50%);border-radius:var(--ds-radius,14px)}
  .cart-bar.hidden{transform:translate(-50%,200%)}
}

/* ── Sheet backdrop ─────────────────────────────────────────── */
.sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:100;opacity:0;pointer-events:none;transition:opacity .3s}
.sheet-bg.open{opacity:1;pointer-events:auto}

/* ── Bottom sheet ───────────────────────────────────────────── */
.sheet{
  position:fixed;bottom:0;left:0;right:0;max-height:92vh;
  background:var(--ds-surface,#fff);border-radius:var(--ds-radius-lg,18px) var(--ds-radius-lg,18px) 0 0;z-index:101;
  display:flex;flex-direction:column;box-shadow:var(--ds-e3,none);
  transform:translateY(100%);transition:transform .35s cubic-bezier(.32,1,.61,1);
  padding-top: 20px;
}
.sheet.open{transform:translateY(0)}
.drag-handle{width:36px;height:4px;border-radius:2px;background:var(--ds-border,var(--border));margin:10px auto 0;flex-shrink:0}
.sheet-header{
  display:flex;align-items:center;padding:10px 16px 12px;
  border-bottom:1px solid var(--ds-divider,var(--divider));gap:8px;flex-shrink:0;
}
.sheet-title{flex:1;text-align:center;font-family:var(--ds-font-display,var(--font-display,inherit));font-weight:700;font-size:16px;color:var(--ds-text,var(--text))}
.sheet-close,.sheet-back{background:none;border:none;cursor:pointer;font-size:15px;color:var(--ds-muted,var(--muted));padding:4px 8px;border-radius:8px}
.sheet-close:hover,.sheet-back:hover{background:var(--ds-surface-2,var(--divider))}
.sheet-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.panel{padding:0 16px 16px}

/* ── Cart step ──────────────────────────────────────────────── */
.cart-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--ds-divider,var(--divider))}
.cart-row img{width:50px;height:50px;border-radius:calc(var(--ds-radius,8px) - 6px);object-fit:cover;background:var(--ds-surface-2,var(--divider));flex-shrink:0}
.cart-info{flex:1;min-width:0}
.cart-name{font-size:13px;font-weight:600;color:var(--ds-text,var(--text));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cart-meta{font-size:12px;color:var(--ds-muted,var(--muted));margin-top:2px}
.cart-qty{display:flex;align-items:center;gap:6px;flex-shrink:0}
.cart-qty button{width:30px;height:30px;border-radius:calc(var(--ds-radius,8px) - 6px);border:1px solid var(--ds-border,var(--border));background:var(--ds-surface,#fff);font-size:16px;cursor:pointer}
.cart-qty button:hover{border-color:var(--ds-primary,var(--primary));color:var(--ds-primary,var(--primary))}
.qty-n{min-width:20px;text-align:center;font-weight:700;font-size:14px}
.summary-row{display:flex;justify-content:space-between;padding:7px 0;font-size:14px;border-bottom:1px solid var(--ds-divider,var(--divider))}
.summary-row.total{font-family:var(--ds-font-display,var(--font-display,inherit));font-weight:700;font-size:16px;border-bottom:none;padding-top:10px}
.summary-free{color:var(--ds-primary,var(--primary))}
.cart-footer{padding:12px 0 0;display:flex;flex-direction:column;gap:8px}
.clear-link{background:none;border:none;color:var(--ds-muted,var(--muted));font-size:12px;text-align:center;cursor:pointer;padding:4px;opacity:.7}
.clear-link:hover{color:var(--danger)}

/* ── Checkout step ──────────────────────────────────────────── */
.progress-wrap{height:4px;background:var(--ds-divider,var(--divider));border-radius:2px;margin:12px 0 4px;overflow:hidden}
.progress-bar{height:100%;width:0;background:var(--ds-chip-on,var(--primary));transition:width .3s ease}

.co-section{margin:10px 0;background:var(--ds-surface-2,var(--surface));border:1px solid var(--ds-border,transparent);border-radius:var(--ds-radius,12px);padding:14px;transition:opacity .2s}
/* opacity:.45 put grey text on a grey card — illegible on a cheap LCD in
   daylight, which is most of this audience — and pointer-events:none meant a
   tap did nothing at all. The card now dims less, keeps its title readable so
   the customer can see what is coming, and absorbs the tap (handled in
   storefront.js) to say what it is waiting for. Only the controls stay inert. */
.co-section.locked{opacity:.68;cursor:pointer}
.co-section.locked .co-title{opacity:1}
.co-section.locked input,
.co-section.locked textarea,
.co-section.locked select,
.co-section.locked button,
.co-section.locked a,
.co-section.locked .pay-opt,
.co-section.locked .fulfil-opt{pointer-events:none}
.co-steplabel{font-size:12px;color:var(--muted);margin:6px 0 2px;text-align:right}
/* Landmark takes the room; the postcode only ever needs six characters. */
.addr-row{display:flex;gap:10px;margin-top:10px}
.addr-col{flex:1 1 auto;min-width:0}
.addr-col-pin{flex:0 0 40%;max-width:150px}
.addr-col input{width:100%;box-sizing:border-box}
@media (max-width:360px){.addr-row{flex-direction:column;gap:0}.addr-col-pin{flex:1 1 auto;max-width:none}}
/* Sticky, not fixed: it rides the sheet's own scroll container, so it cannot
   end up floating over the page when the sheet is closed. */
.co-sticky-total{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;justify-content:space-between;
  gap:12px;margin:12px -16px -16px;padding:12px 16px;background:var(--card);
  border-top:1px solid var(--border);box-shadow:0 -4px 14px rgba(0,0,0,.08)}
.co-sticky-total .cst-l{display:flex;flex-direction:column;min-width:0}
.co-sticky-total .cst-cap{font-size:12px;color:var(--muted);line-height:1.2}
.co-sticky-total .cst-sub{font-size:12px;color:var(--primary);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.co-sticky-total .cst-amt{font-size:18px;font-weight:700;white-space:nowrap}
.co-blocked-hint{margin:8px 0 0;font-size:13px;line-height:1.4;color:var(--danger);cursor:pointer;text-align:center}
.co-blocked-hint:hover{text-decoration:underline}
.co-section.completed{background:var(--completed-bg);border:1px solid var(--completed-border)}
.co-title{font-family:var(--ds-font-display,var(--font-display,inherit));font-weight:700;font-size:14px;margin-bottom:10px;display:flex;align-items:center;gap:8px;color:var(--ds-text,var(--text))}
.co-badge{width:22px;height:22px;background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);border-radius:50%;font-size:12px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}

.slot{padding:10px 12px;border:1px solid var(--ds-border,var(--border));border-radius:calc(var(--ds-radius,10px) - 4px);margin-bottom:8px;cursor:pointer;transition:.15s;background:var(--ds-surface,#fff)}
.slot:hover{border-color:var(--ds-primary,var(--primary))}
.slot.active{background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);border-color:transparent}
.slot-date{font-weight:600;font-size:14px}
.slot-time{font-size:12px;opacity:.7;margin-top:2px}

.co-section label{font-size:13px;color:var(--ds-muted,var(--muted));display:block;margin-bottom:3px;margin-top:8px}
.co-section label .req{color:var(--danger)}
.co-section input,.co-section textarea{
  width:100%;padding:10px 12px;border:1px solid var(--ds-border,var(--border));
  border-radius:calc(var(--ds-radius,10px) - 4px);font-size:14px;margin-bottom:2px;
  transition:border-color .2s;background:var(--ds-surface,#fff);color:var(--ds-text,var(--text));
}
.co-section input:focus,.co-section textarea:focus{outline:none;border-color:var(--ds-primary,var(--primary))}
.co-section textarea{min-height:80px;resize:vertical;line-height:1.4}

.voucher-wrap{margin-top:10px;padding-top:10px;border-top:1px dashed var(--ds-border,var(--border))}
.voucher-toggle{display:flex;justify-content:space-between;cursor:pointer;font-size:14px;color:var(--ds-muted,var(--muted));width:100%;background:none;border:none;padding:0;font-family:inherit;text-align:left}
.voucher-toggle:hover{color:var(--ds-primary,var(--primary))}
.voucher-box{display:none;margin-top:10px}

/* ── Checkout button ────────────────────────────────────────── */
.co-btn{
  display:block;width:100%;padding:14px;
  background:var(--ds-chip-on,var(--accent));color:var(--ds-on-primary,#fff);
  border:none;border-radius:var(--ds-radius,12px);font-family:var(--ds-font-display,var(--font-display,inherit));font-size:15px;font-weight:700;
  cursor:pointer;transition:filter .2s,opacity .2s;margin-top:8px;box-shadow:var(--ds-e2,none);
}
.co-btn:hover{filter:brightness(1.05)}
.co-btn:disabled{opacity:.5;cursor:not-allowed}
.co-btn.secondary{background:var(--ds-surface,#fff);color:var(--ds-primary,var(--primary));border:1px solid var(--ds-border,var(--border));box-shadow:var(--ds-e1,none)}
.co-btn.small{font-size:13px;padding:10px}

/* ── WhatsApp ───────────────────────────────────────────────── */
.wa-container{position:fixed;bottom:72px;right:14px;z-index:80;transition:opacity .35s ease,visibility .35s ease}
.wa-container.wa-hidden{opacity:0;pointer-events:none;visibility:hidden}
.wa-fab{
  width:46px;height:46px;background:#25D366;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 12px rgba(0,0,0,.2);cursor:pointer;border:none;padding:0;
  animation:wa-pulse 2.5s infinite;
}
.wa-fab img{width:24px;height:24px}
.wa-chat-box{
  position:absolute;bottom:60px;right:0;width:240px;
  background:#fff;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.15);
  overflow:hidden;opacity:0;pointer-events:none;
  transform:translateY(8px);transition:all .2s ease;
}
.wa-chat-box.open{opacity:1;pointer-events:auto;transform:translateY(0)}
.wa-header{background:#25D366;color:#fff;padding:10px 12px;font-weight:600;font-size:14px}
.wa-body{padding:10px 12px;font-size:13px;color:#333}
.wa-body p{margin-bottom:6px}
.wa-cta{display:block;margin:10px;padding:10px;text-align:center;background:#25D366;color:#fff;border-radius:8px;text-decoration:none;font-weight:600;font-size:13px}
@keyframes wa-pulse{0%{box-shadow:0 0 0 0 rgba(37,211,102,.5)}70%{box-shadow:0 0 0 10px rgba(37,211,102,0)}100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}}

/* ── WhatsApp community popup ────────────────────────────── */
#waCommunityPopup{position:fixed;inset:0;z-index:10002;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;justify-content:center;opacity:0;transition:opacity .25s ease;pointer-events:none}
#waCommunityPopup.wcp-open{opacity:1;pointer-events:auto}
.wcp-card{background:#fff;border-radius:20px 20px 0 0;width:100%;max-width:440px;padding:26px 22px 32px;box-shadow:0 -8px 40px rgba(0,0,0,.18);transform:translateY(44px);transition:transform .28s ease}
#waCommunityPopup.wcp-open .wcp-card{transform:translateY(0)}
.wcp-icon{width:56px;height:56px;background:#25D366;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;box-shadow:0 4px 12px rgba(37,211,102,.35)}
.wcp-title{font-size:17px;font-weight:700;text-align:center;color:#111;margin-bottom:8px}
.wcp-msg{font-size:14px;line-height:1.6;text-align:center;color:#555;margin-bottom:20px}
.wcp-join{display:block;width:100%;padding:13px 16px;background:#25D366;color:#fff;border-radius:10px;text-align:center;font-weight:700;font-size:15px;text-decoration:none;cursor:pointer;border:none;box-shadow:0 2px 8px rgba(37,211,102,.3)}
.wcp-join:hover{background:#1ebe5d}
.wcp-later{display:block;width:100%;padding:10px;background:transparent;color:#aaa;border:none;cursor:pointer;font-size:13px;margin-top:6px}
.wcp-later:hover{color:#666}

/* ── Scroll-to-top FAB ──────────────────────────────────────── */
.scroll-top-fab{
  position:fixed;bottom:128px;right:14px;z-index:81;
  width:46px;height:46px;background:var(--ds-chip-on,var(--primary));
  border:none;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;padding:0;
  box-shadow:0 3px 14px rgba(0,0,0,.22);
  opacity:0;transform:scale(.76) translateY(8px);
  transition:opacity .28s ease,transform .28s ease;
  pointer-events:none;
}
.scroll-top-fab.visible{opacity:1;transform:none;pointer-events:auto}
.scroll-top-fab:active{transform:scale(.91)!important;transition:transform .08s ease}

/* ── Loading spinner ────────────────────────────────────────── */
.spinner{width:38px;height:38px;border:4px solid var(--divider);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 12px}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── Splash screen ──────────────────────────────────────────── */
#splash{position:fixed;inset:0;z-index:10001;display:flex;align-items:center;justify-content:center;background:var(--primary);overflow:hidden;transition:opacity .42s ease,transform .42s ease;}
#splash::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(160deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.38) 100%);}
#splash.sp-exit{opacity:0;transform:scale(1.04);pointer-events:none}
.sp-inner{position:relative;z-index:1;width:100%;max-width:400px;min-height:280px;padding:32px 24px 72px;display:flex;flex-direction:column;align-items:center;}
.sp-slide{position:absolute;inset:0;padding:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;opacity:0;transform:translateY(22px);transition:opacity .44s ease,transform .44s ease;pointer-events:none;}
.sp-slide.active{opacity:1;transform:translateY(0);pointer-events:auto}
.sp-logo{width:100px;height:100px;border-radius:22px;flex-shrink:0;object-fit:contain;background:#fff;padding:10px;box-shadow:0 6px 28px rgba(0,0,0,.22);animation:spPulse 2.4s ease-in-out infinite;}
@keyframes spPulse{0%,100%{box-shadow:0 6px 28px rgba(0,0,0,.22),0 0 0 0 rgba(255,255,255,.28)}55%{box-shadow:0 6px 28px rgba(0,0,0,.22),0 0 0 14px rgba(255,255,255,0)}}
.sp-brand-name{font-family:var(--ds-font-display,var(--font-display,inherit));font-size:30px;font-weight:800;color:#fff;text-align:center;line-height:1.2;text-shadow:0 1px 12px rgba(0,0,0,.2);letter-spacing:-.3px;}
.sp-emoji{font-size:52px;line-height:1;animation:spFloat 2.8s ease-in-out infinite}
@keyframes spFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.sp-heading{font-size:25px;font-weight:800;color:#fff;text-align:center;line-height:1.25;text-shadow:0 1px 10px rgba(0,0,0,.18);}
.sp-sub{font-size:14px;color:rgba(255,255,255,.82);text-align:center;line-height:1.55;max-width:270px;}
.sp-badge{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.30);border-radius:20px;padding:5px 15px;font-size:12.5px;font-weight:600;color:#fff;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
.sp-dots{display:flex;gap:6px;align-items:center;position:absolute;bottom:34px;left:50%;transform:translateX(-50%);z-index:2;}
.sp-dot{width:6px;height:6px;border-radius:3px;background:rgba(255,255,255,.36);transition:width .32s ease,background .32s ease;}
.sp-dot.active{width:22px;background:rgba(255,255,255,.9)}
.sp-pbar{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(255,255,255,.14);z-index:2;}
.sp-pbar-fill{height:100%;width:0;background:rgba(255,255,255,.55)}
#spError{position:absolute;inset:0;z-index:3;display:none;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:28px;text-align:center;}
#spError.visible{display:flex}
.sp-err-icon{font-size:52px;line-height:1}
.sp-err-msg{font-size:15px;color:rgba(255,255,255,.9);line-height:1.55;max-width:260px}
.sp-retry-btn{margin-top:6px;padding:13px 36px;background:#fff;color:var(--primary);border:none;border-radius:50px;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 4px 18px rgba(0,0,0,.18);transition:opacity .15s,transform .15s;}
.sp-retry-btn:active{opacity:.85;transform:scale(.97)}
.sp-err-sub{font-size:12.5px;color:rgba(255,255,255,.55);margin-top:2px}

/* ── Ripple ─────────────────────────────────────────────────── */
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.6);transform:scale(0);animation:rippleAnim .5s linear;pointer-events:none}
@keyframes rippleAnim{to{transform:scale(4);opacity:0}}

/* ── Animations ─────────────────────────────────────────────── */
.bump{animation:qtyBump .2s ease}
@keyframes qtyBump{0%,100%{transform:scale(1)}50%{transform:scale(1.35)}}
.hidden{display:none!important}

/* ── Footer ─────────────────────────────────────────────────── */
#sb-footer{--footer-gap:50px}

/* ── Display font (loaded from Google Fonts when BRAND.fonts is set) ── */
.xlsh-display{font-family:var(--font-display,Georgia,serif);letter-spacing:-.01em}

/* ── Header flag/country line ─────────────────────────────────────── */
.hdr-brand-wrap{display:flex;flex-direction:column;line-height:1.1}
.hdr-country{font-size:9.5px;color:var(--muted);letter-spacing:.02em}

/* ── Landing view-toggle tab bar (sticky below header, landing-first mode only) ── */
#xlshViewToggle{
  position:sticky;top:var(--hdr-h,60px); /* JS overrides inline in landing-first mode */
  z-index:49;display:none;
  background:var(--card,#fff);
  border-bottom:1.5px solid var(--border,#e0e0e0);
  padding:0;gap:0;
  align-items:stretch;
  box-shadow:0 2px 6px rgba(0,0,0,.06);
}
#xlshViewToggle.show{display:flex}
.xlsh-toggle-btn{
  flex:1;padding:10px 16px;border:none;border-bottom:3px solid transparent;
  font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap;
  transition:color .15s,border-color .15s,background .15s;
  background:transparent;color:var(--muted,#888);letter-spacing:.01em;
}
.xlsh-toggle-btn.active{color:var(--primary);border-bottom-color:var(--primary);background:transparent}
.xlsh-toggle-btn:hover:not(.active){color:var(--text,#1c1c1c);background:var(--surface,#f5f5f5)}

/* ── Landing page container ─────────────────────────────────────── */
#xlsh-landing{background:var(--bg);min-height:60vh;max-width:1200px;margin-left:auto;margin-right:auto}

/* ── Landing hero ─────────────────────────────────────────────── */
.ldg-hero{position:relative;padding:48px 20px 34px;overflow:hidden}
.ldg-hero.full-bleed{
  background:var(--ds-hero,linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%));
  color:#fff;border-radius:var(--ds-radius-lg,0);margin:16px;
}
.ldg-hero.soft{background:var(--ds-surface,var(--surface));color:var(--ds-text,var(--text));border-radius:var(--ds-radius-lg,0);margin:16px}
.ldg-hero .ldg-orb{
  position:absolute;top:-40px;right:-30px;width:180px;height:180px;
  border-radius:50%;background:rgba(255,255,255,.12);filter:blur(40px);
}
.ldg-hero-accent{font-size:36px;line-height:1;margin-bottom:14px;display:block}
.ldg-hero h1{font-family:var(--ds-font-display,var(--font-display,inherit));font-size:28px;font-weight:800;line-height:1.08;letter-spacing:-.02em;margin:0}
.ldg-hero.full-bleed h1{font-size:32px}
.ldg-hero p{font-size:14px;line-height:1.55;margin-top:10px;max-width:380px}
.ldg-hero.soft p{opacity:.78}
.ldg-hero.full-bleed p{opacity:.92}
.ldg-hero-btns{display:flex;gap:10px;margin-top:22px;flex-wrap:wrap}
.ldg-btn-primary{
  padding:12px 22px;border-radius:var(--ds-radius-pill,10px);border:none;font-size:14px;font-weight:700;
  cursor:pointer;transition:transform .15s,opacity .15s;
}
.ldg-btn-primary:hover{transform:translateY(-2px)}
.ldg-hero.full-bleed .ldg-btn-primary{background:#fff;color:var(--ds-primary,var(--primary));box-shadow:var(--ds-e2,0 6px 18px rgba(0,0,0,.18))}
.ldg-hero.soft .ldg-btn-primary{background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);box-shadow:var(--ds-e2,0 4px 14px rgba(0,0,0,.10))}
.ldg-btn-ghost{
  padding:12px 22px;border-radius:var(--ds-radius-pill,10px);font-size:14px;font-weight:700;
  background:transparent;cursor:pointer;transition:opacity .15s;
}
.ldg-hero.full-bleed .ldg-btn-ghost{color:#fff;border:1.5px solid rgba(255,255,255,.4)}
.ldg-hero.soft .ldg-btn-ghost{color:var(--text);border:1.5px solid var(--border)}

/* ── Promo carousel ─────────────────────────────────────────────── */
.ldg-carousel-wrap{padding:14px 14px 8px}
.ldg-carousel{position:relative;border-radius:var(--ds-radius,16px);overflow:hidden;height:138px;box-shadow:var(--ds-e2,0 4px 18px rgba(0,0,0,.06))}
.ldg-promo{
  position:absolute;inset:0;padding:18px 20px;text-align:left;border:none;
  display:flex;flex-direction:column;justify-content:center;cursor:pointer;
  width:100%;transition:opacity .55s ease;pointer-events:none;
}
.ldg-promo.active{opacity:1;pointer-events:auto}
.ldg-promo.inactive{opacity:0;pointer-events:none}
.ldg-promo-label{font-size:10.5px;font-weight:800;letter-spacing:.12em;opacity:.88;margin-bottom:6px;color:#fff}
.ldg-promo-title{font-size:22px;font-weight:800;line-height:1.15;margin-bottom:4px;color:#fff}
.ldg-promo-sub{font-size:12.5px;opacity:.9;line-height:1.4;color:#fff}
.ldg-promo-cta{font-size:12px;font-weight:700;margin-top:auto;opacity:.96;color:#fff}
.ldg-carousel-dots{display:flex;gap:5px;justify-content:center;margin-top:10px}
.ldg-dot{height:6px;border-radius:3px;border:none;background:var(--border);transition:all .25s;cursor:pointer;padding:0}

/* ── Seasonal strip ─────────────────────────────────────────────── */
.ldg-seasonal{padding:8px 14px 6px}
.ldg-section-label{font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;padding-left:4px}
.ldg-strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;scrollbar-width:none}
.ldg-strip::-webkit-scrollbar{display:none}
.ldg-strip-pill{
  flex-shrink:0;padding:10px 14px;display:flex;align-items:center;gap:8px;
  border:1px solid var(--ds-border,var(--border));border-radius:999px;background:var(--ds-surface,var(--card));
  cursor:pointer;color:var(--text);font-size:13px;font-weight:600;
  transition:border-color .15s;
}
.ldg-strip-pill:hover{border-color:var(--primary);color:var(--primary)}
.ldg-strip-pill span:first-child{font-size:16px}

/* ── Featured categories ─────────────────────────────────────────── */
.ldg-cats{padding:14px 14px 8px}
.ldg-cat-grid-big{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.ldg-cat-grid-small{display:grid;grid-template-columns:repeat(auto-fill,minmax(85px,1fr));gap:8px}
.ldg-cat-btn{
  display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;
  border:1px solid var(--ds-border,var(--border));background:var(--ds-surface,#fff);cursor:pointer;text-align:left;transition:box-shadow .2s,transform .2s;
}
.ldg-cat-btn:hover{box-shadow:var(--ds-e2,0 4px 16px rgba(0,0,0,.1));transform:translateY(-2px)}
.ldg-cat-btn.big{gap:6px;padding:16px;height:138px;border-radius:14px}
.ldg-cat-btn.small{gap:4px;padding:10px;height:90px;border-radius:12px}
.ldg-cat-emoji-big{font-size:36px}
.ldg-cat-emoji-small{font-size:26px}
.ldg-cat-name-big{font-size:16px;font-weight:800;color:var(--text);line-height:1.2}
.ldg-cat-name-small{font-size:12px;font-weight:800;color:var(--text);line-height:1.2}
.ldg-cat-count{font-size:10.5px;color:var(--muted);font-weight:600}
.ldg-cat-btn.has-photo{position:relative;overflow:hidden;border:none;background-size:cover!important;background-position:center!important}
.ldg-cat-btn.has-photo::before{content:'';position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.68) 0%,rgba(0,0,0,.15) 55%,transparent 100%);z-index:1;border-radius:inherit}
.ldg-cat-btn.has-photo .ldg-cat-overlay{position:relative;z-index:2;display:flex;flex-direction:column;gap:3px;width:100%}
.ldg-cat-btn.has-photo .ldg-cat-name-big,.ldg-cat-btn.has-photo .ldg-cat-name-small{color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.5)}
.ldg-cat-btn.has-photo .ldg-cat-count{color:rgba(255,255,255,.8)}
.ldg-cat-btn.has-photo:hover{box-shadow:0 6px 24px rgba(0,0,0,.28)}
.ldg-cat-slides{position:absolute;inset:0;overflow:hidden;border-radius:inherit;z-index:0}
.ldg-cat-slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity .75s ease;will-change:opacity,transform}
.ldg-cat-slide.active{opacity:1;animation:_kbPan 4.2s ease-in-out forwards}
@keyframes _kbPan{0%{transform:scale(1) translate(0,0)}100%{transform:scale(1.07) translate(-1.5%,-1%)}}
@media(prefers-reduced-motion:reduce){.ldg-cat-slide{transition:none}.ldg-cat-slide.active{animation:none}}

/* ── Featured offers ─────────────────────────────────────────────── */
.ldg-offers{padding:14px 14px 8px}
.ldg-offers-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.ldg-offer-card{background:var(--ds-surface,var(--card));border:1px solid var(--ds-border,transparent);border-radius:var(--ds-radius,12px);padding:10px;box-shadow:var(--ds-e1,0 2px 8px rgba(0,0,0,.06));position:relative}
.ldg-offer-badge{position:absolute;top:6px;right:6px;background:var(--accent);color:#fff;font-size:10px;font-weight:800;padding:2px 7px;border-radius:4px;letter-spacing:.04em}
.ldg-offer-img{width:100%;height:80px;border-radius:8px;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;font-size:30px}
.ldg-offer-img img{width:100%;height:100%;object-fit:cover;border-radius:8px;display:block}
.ldg-offer-img .ldg-offer-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:30px}
.ldg-offer-name{font-size:12px;font-weight:600;margin-top:6px;line-height:1.3;min-height:31px;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ldg-offer-prices{display:flex;align-items:baseline;gap:6px;margin-top:4px}
.ldg-offer-price{font-family:var(--ds-font-display,var(--font-display,inherit));font-weight:800;color:var(--ds-primary,var(--primary));font-size:14px}
.ldg-offer-orig{font-size:11px;color:var(--muted);text-decoration:line-through;opacity:.65}
.ldg-offer-add{width:100%;margin-top:8px;padding:7px;border:2px solid var(--primary);border-radius:8px;background:transparent;color:var(--primary);font-weight:700;font-size:12px;cursor:pointer;transition:.15s;font-family:inherit}
.ldg-offer-add:hover{background:var(--primary);color:#fff}

/* ── Story block ─────────────────────────────────────────────────── */
.ldg-story{padding:18px 16px 14px}
.ldg-story-card{background:var(--ds-surface,var(--card));border-radius:var(--ds-radius-lg,16px);padding:22px 20px;box-shadow:var(--ds-e1,0 2px 10px rgba(0,0,0,.05));border-left:4px solid var(--ds-primary,var(--primary))}
.ldg-story-title{font-family:var(--ds-font-display,var(--font-display,inherit));font-size:20px;font-weight:800;color:var(--ds-text,var(--text));margin:0;line-height:1.2}
.ldg-story-body{font-size:14px;color:var(--muted);line-height:1.65;margin-top:10px}
.ldg-story-sig{font-size:12.5px;font-style:italic;color:var(--primary);margin-top:12px;font-weight:600}

/* ── Subscription card ───────────────────────────────────────────── */
.ldg-sub{padding:14px 14px 8px}
.ldg-sub-card{border-radius:var(--ds-radius-lg,16px);padding:20px 18px;color:#fff;box-shadow:var(--ds-e2,0 8px 24px rgba(0,0,0,.10));background:var(--ds-hero,linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%))}
.ldg-sub-eyebrow{font-size:10.5px;font-weight:800;letter-spacing:.12em;opacity:.85;text-transform:uppercase}
.ldg-sub-title{font-size:24px;font-weight:800;margin:6px 0 6px;line-height:1.15}
.ldg-sub-desc{font-size:13px;opacity:.92;line-height:1.5;margin-bottom:14px}
.ldg-sub-options{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.ldg-sub-option{background:rgba(255,255,255,.14);border-radius:10px;padding:10px 14px;display:flex;justify-content:space-between;align-items:center;backdrop-filter:blur(4px)}
.ldg-sub-opt-label{font-size:13px;font-weight:700}
.ldg-sub-opt-freq{font-size:11px;opacity:.82;margin-top:1px}
.ldg-sub-price{font-size:16px;font-weight:800}
.ldg-sub-price sup{font-size:10px;opacity:.8;font-weight:600}
.ldg-sub-cta{width:100%;padding:11px;background:#fff;color:var(--primary);border:none;border-radius:10px;font-weight:800;font-size:14px;cursor:pointer;font-family:inherit;transition:opacity .15s}
.ldg-sub-cta:hover{opacity:.9}

/* ── Repeat order panel ──────────────────────────────────────────── */
.ldg-repeat{padding:12px 14px 6px}
.ldg-repeat-card{background:var(--primaryLight);border-radius:12px;padding:14px 16px;display:flex;align-items:center;gap:14px}
.ldg-repeat-icon{font-size:28px}
.ldg-repeat-info{flex:1}
.ldg-repeat-title{font-size:12px;font-weight:800;color:var(--accent);letter-spacing:.06em;text-transform:uppercase}
.ldg-repeat-meta{font-size:13px;color:var(--text);margin-top:2px}
.ldg-repeat-btn{padding:8px 14px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-weight:700;font-size:12px;cursor:pointer;font-family:inherit;white-space:nowrap}

/* ── Landing CTA footer ──────────────────────────────────────────── */
.ldg-cta{padding:18px 14px 28px;text-align:center}
.ldg-cta-btn{padding:14px 28px;background:var(--ds-chip-on,var(--primary));color:var(--ds-on-primary,#fff);border:none;border-radius:var(--ds-radius,12px);font-size:15px;font-weight:800;box-shadow:var(--ds-e2,none);width:100%;max-width:320px;cursor:pointer;font-family:inherit;transition:opacity .15s}
.ldg-cta-btn:hover{opacity:.9}
.ldg-cta-hint{font-size:11.5px;color:var(--muted);margin-top:10px}

/* ── Cart bar savings line ───────────────────────────────────────── */
.cart-bar-left{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2}
.cart-bar-savings{font-size:10.5px;opacity:.85}

/* ═══════════════════════════════════════════════════════════════
   FUTURISTIC LAYER  —  aurora · glass · neon · shimmer · reveal
   Controlled by data-fut / data-fut-* attributes on <html>.
   Default preset: 'subtle'  (aurora+glass+neon+reveal+shimmer ON,
   grid/scanlines/cursor/magnetic/dark OFF).
   Set BRAND.landing.futuristic='full'|'off' to override.
   ═══════════════════════════════════════════════════════════════ */
:root{--fut-accent:#7df9ff;--fut-accent-2:#ff5cf4;--fut-speed:1}

/* ── Aurora blobs + holo grid (fixed, behind all content) ──────── */
.fut-decor{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.fut-blob{
  position:absolute;border-radius:50%;
  filter:blur(90px);-webkit-filter:blur(90px);
  opacity:.32;mix-blend-mode:normal;
  will-change:transform;                       /* GPU compositing — critical for iOS */
  animation:futDrift calc(22s / var(--fut-speed)) ease-in-out infinite alternate;
}
.fut-blob.b1{width:480px;height:480px;top:-160px;left:-120px;background:var(--fut-accent)}
.fut-blob.b2{width:400px;height:400px;top:30%;right:-140px;background:var(--fut-accent-2);animation-delay:-7s}
.fut-blob.b3{width:380px;height:380px;bottom:-140px;left:-90px;background:var(--fut-accent);opacity:.18;animation-delay:-14s}
[data-fut="full"] .fut-blob{opacity:.6;mix-blend-mode:screen}
/* Lighter blur on mobile — 90px filter is too heavy for iPhone GPU */
@media(max-width:767px){
  .fut-blob{filter:blur(55px);-webkit-filter:blur(55px)}
  .fut-blob.b1{width:320px;height:320px}
  .fut-blob.b2{width:280px;height:280px}
  .fut-blob.b3{width:260px;height:260px}
}
@keyframes futDrift{
  0%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(40px,-30px,0) scale(1.18)}
  100%{transform:translate3d(-30px,40px,0) scale(.95)}
}
.fut-grid{position:fixed;inset:0;pointer-events:none;z-index:-1;display:none;
  background-image:radial-gradient(circle at 1px 1px,rgba(125,249,255,.18) 1px,transparent 1px);
  background-size:22px 22px;
  -webkit-mask-image:radial-gradient(ellipse 70% 80% at 50% 30%,#000 35%,transparent 75%);
  mask-image:radial-gradient(ellipse 70% 80% at 50% 30%,#000 35%,transparent 75%);opacity:.7}
.fut-vign{position:fixed;inset:0;pointer-events:none;z-index:-1;
  background:radial-gradient(ellipse 100% 65% at 50% 110%,rgba(0,0,0,.22),transparent 60%),
             radial-gradient(ellipse 80% 35% at 50% -10%,rgba(125,249,255,.07),transparent 60%)}
.fut-scan{position:fixed;inset:0;pointer-events:none;z-index:-1;display:none;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.04) 0 1px,transparent 1px 3px);
  mix-blend-mode:overlay;opacity:.55}

/* ── Dark mode overrides ────────────────────────────────────────── */
[data-fut-dark="1"]{
  --bg:#070a14!important;--text:#e8efff!important;--muted:#7b8bb0!important;
  --card:rgba(18,24,42,.65)!important;--surface:rgba(15,22,40,.55)!important;
  --border:rgba(140,180,255,.16)!important;--divider:rgba(140,180,255,.08)!important;
  --primaryLight:rgba(125,249,255,.14)!important;
  --completedBg:rgba(125,249,255,.10)!important;
  --completedBorder:rgba(125,249,255,.32)!important;
}

/* ── Glass cards ────────────────────────────────────────────────── */
/* Semi-transparent background is REQUIRED — opaque white hides the blur */
[data-fut-glass="1"] .card{
  background:rgba(255,255,255,.82)!important;  /* frosted — lets aurora show through */
  -webkit-backdrop-filter:blur(18px) saturate(150%);
  backdrop-filter:blur(18px) saturate(150%);
  border:.5px solid rgba(255,255,255,.3)!important;
  box-shadow:0 1px 0 rgba(255,255,255,.12) inset,0 12px 36px rgba(0,0,0,.14)!important;
}
[data-fut-glass="1"] .ldg-story-card,[data-fut-glass="1"] .ldg-sub-card{
  background:rgba(255,255,255,.76)!important;
  -webkit-backdrop-filter:blur(18px) saturate(150%);
  backdrop-filter:blur(18px) saturate(150%);
}
/* Dark mode glass */
[data-fut-dark="1"][data-fut-glass="1"] .card{background:rgba(18,24,42,.72)!important}
[data-fut-dark="1"][data-fut-glass="1"] .ldg-story-card,[data-fut-dark="1"][data-fut-glass="1"] .ldg-sub-card{background:rgba(15,22,40,.68)!important}

/* ── Neon buttons ───────────────────────────────────────────────── */
[data-fut-neon="1"] .add-btn,[data-fut-neon="1"] .ldg-btn-primary,
[data-fut-neon="1"] .ldg-cta-btn,[data-fut-neon="1"] .qty-ctrl{
  transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .4s ease,filter .3s ease!important;
}
[data-fut-neon="1"] .add-btn:hover,[data-fut-neon="1"] .ldg-btn-primary:hover,
[data-fut-neon="1"] .ldg-cta-btn:hover{
  filter:brightness(1.08) saturate(1.15);
  box-shadow:0 0 0 1px var(--fut-accent),0 0 22px rgba(125,249,255,.45),0 14px 30px rgba(0,0,0,.28)!important;
}
/* Touch devices: :active mirrors :hover so neon fires on tap */
[data-fut-neon="1"] .add-btn:active,[data-fut-neon="1"] .ldg-btn-primary:active,
[data-fut-neon="1"] .ldg-cta-btn:active{
  transform:translateY(1px) scale(.98);
  filter:brightness(1.08) saturate(1.15);
  box-shadow:0 0 0 1px var(--fut-accent),0 0 18px rgba(125,249,255,.4),0 8px 20px rgba(0,0,0,.22)!important;
}
/* Holo sweep */
[data-fut-neon="1"] .add-btn,[data-fut-neon="1"] .ldg-btn-primary,[data-fut-neon="1"] .ldg-cta-btn{position:relative;overflow:hidden}
[data-fut-neon="1"] .add-btn::after,[data-fut-neon="1"] .ldg-btn-primary::after,[data-fut-neon="1"] .ldg-cta-btn::after{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);
  background-size:220% 100%;background-position:200% 0;
  transition:background-position .9s cubic-bezier(.2,.8,.2,1);
}
[data-fut-neon="1"] .add-btn:hover::after,[data-fut-neon="1"] .ldg-btn-primary:hover::after,[data-fut-neon="1"] .ldg-cta-btn:hover::after,
[data-fut-neon="1"] .add-btn:active::after,[data-fut-neon="1"] .ldg-btn-primary:active::after,[data-fut-neon="1"] .ldg-cta-btn:active::after{background-position:-100% 0}

/* ── Shimmer on display titles & prices ─────────────────────────── */
[data-fut-shimmer="1"] .xlsh-display,[data-fut-shimmer="1"] .t-display{
  background:linear-gradient(100deg,var(--text,#1c1c1e) 0%,var(--text,#1c1c1e) 35%,var(--fut-accent) 50%,var(--text,#1c1c1e) 65%,var(--text,#1c1c1e) 100%);
  background-size:220% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  -webkit-transform:translateZ(0);transform:translateZ(0); /* GPU layer — fixes iOS Safari animation */
  animation:futShimmer calc(7s / var(--fut-speed)) linear infinite;
}
[data-fut-shimmer="1"] .p-price>span:first-child{
  background:linear-gradient(100deg,var(--primary) 0%,var(--primary) 35%,var(--fut-accent) 50%,var(--primary) 65%,var(--primary) 100%);
  background-size:220% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  -webkit-transform:translateZ(0);transform:translateZ(0); /* GPU layer — fixes iOS Safari animation */
  animation:futShimmer calc(9s / var(--fut-speed)) linear infinite;
}
@keyframes futShimmer{
  0%{background-position:200% 0}
  100%{background-position:-100% 0}
}

/* ── Reveal on scroll ───────────────────────────────────────────── */
/* NOTE: filter:blur() removed from reveal — too GPU-heavy on iOS; breaks mobile animation */
[data-fut-reveal="1"] .fut-reveal{
  opacity:0;transform:translateY(22px);
  transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1);
  will-change:transform,opacity;
}
[data-fut-reveal="1"] .fut-reveal.fut-in{opacity:1;transform:none}

/* ── Full-preset card hover lift ────────────────────────────────── */
[data-fut="full"] .ldg-cat-btn:hover,[data-fut="full"] .ldg-promo:hover{
  transform:translateY(-4px) scale(1.02);
  box-shadow:0 16px 38px rgba(0,0,0,.2),0 0 0 1px rgba(125,249,255,.28)!important;
  filter:brightness(1.06);
}
[data-fut="full"] .card:hover{
  transform:translateY(-3px);
  box-shadow:0 8px 28px rgba(0,0,0,.12),0 0 0 1px rgba(125,249,255,.18)!important;
}

/* ── Cursor halo (pointer:fine only) ────────────────────────────── */
.fut-cursor{position:fixed;left:0;top:0;width:36px;height:36px;border-radius:50%;pointer-events:none;z-index:9990;background:radial-gradient(circle,rgba(125,249,255,.55),rgba(125,249,255,0) 70%);transform:translate(-50%,-50%);transition:transform .25s ease,opacity .3s ease,background .3s ease;mix-blend-mode:screen;opacity:0}
.fut-cursor.on{opacity:1}
.fut-cursor.hot{transform:translate(-50%,-50%) scale(1.8);background:radial-gradient(circle,rgba(255,92,244,.55),transparent 70%)}
.fut-dot{position:fixed;left:0;top:0;width:6px;height:6px;border-radius:50%;background:var(--fut-accent);transform:translate(-50%,-50%);pointer-events:none;z-index:9991;box-shadow:0 0 12px var(--fut-accent);opacity:0;transition:opacity .25s}
.fut-dot.on{opacity:1}
[data-fut-cursor="1"]{cursor:none}
[data-fut-cursor="1"] *{cursor:none!important}

/* ── Reduced-motion guard ───────────────────────────────────────── */
@media(prefers-reduced-motion:reduce){
  .fut-blob,.fut-cursor,.fut-dot{animation:none!important;transition:none!important}
  [data-fut-shimmer="1"] .xlsh-display,[data-fut-shimmer="1"] .t-display,
  [data-fut-shimmer="1"] .p-price>span:first-child{animation:none!important;-webkit-text-fill-color:inherit!important;color:inherit!important;background:none!important;-webkit-transform:none!important;transform:none!important}
  [data-fut-reveal="1"] .fut-reveal{opacity:1!important;transform:none!important}
}

/* ── Desktop tweaks ─────────────────────────────────────────── */
@media(min-width:768px){
  #hdr{padding:12px 20px 0}
  #cats{padding:0}
  .cats-grid{grid-template-columns:repeat(auto-fill,minmax(88px,120px));justify-content:center;padding:2px 24px 12px;max-width:1200px;margin:0 auto}
  .cats-grid.cats-collapsed{max-height:270px}           /* desktop image mode — 2 rows ~120px */
  .cats-grid--text.cats-collapsed{max-height:96px}      /* desktop text mode  — same 2×40px   */
  .sheet{max-width:460px;left:50%;right:auto;transform:translate(-50%,100%);border-radius:18px 18px 0 0}
  .sheet.open{transform:translate(-50%,0)}
  .wa-container{bottom:78px}
  .scroll-top-fab{bottom:134px}
  /* Landing: wider layout, contained tile sizes to preserve image quality */
  .ldg-cats{padding:14px 24px 8px}
  .ldg-cat-grid-big{grid-template-columns:repeat(auto-fill,minmax(160px,200px));gap:14px}
  .ldg-cat-grid-small{grid-template-columns:repeat(auto-fill,minmax(100px,130px));gap:10px}
  .ldg-cat-btn.big{height:160px}
  .ldg-hero,.ldg-carousel-wrap,.ldg-seasonal,.ldg-offers,.ldg-story,.ldg-sub,.ldg-repeat{padding-left:24px;padding-right:24px}
  /* Offers: cap track width and let the image scale with the card instead of letterboxing */
  .ldg-offers-grid{grid-template-columns:repeat(auto-fill,minmax(240px,320px));gap:14px}
  .ldg-offer-img{height:auto;aspect-ratio:4/3}
}

/* ── Desktop: cart/checkout sheet becomes a right-side slide-in drawer ── */
@media(min-width:1024px){
  .sheet{
    left:auto;right:0;top:0;bottom:0;
    width:440px;max-width:440px;max-height:none;
    border-radius:var(--ds-radius-lg,18px) 0 0 var(--ds-radius-lg,18px);
    transform:translateX(100%);padding-top:0;
  }
  .sheet.open{transform:translateX(0)}
  .drag-handle{display:none}
  .sheet-header{padding-top:16px}
}

/* ── Payment option cards ───────────────────────────────────── */
.pay-opt{
  display:flex;align-items:flex-start;gap:12px;
  padding:12px 14px;border:1.5px solid var(--ds-border,var(--border));border-radius:calc(var(--ds-radius,10px) - 2px);
  cursor:pointer;transition:border-color .15s,background .15s;
  margin-bottom:8px;background:var(--ds-surface,#fff);
}
.pay-opt:last-child{margin-bottom:0}
.pay-opt.selected{border-color:var(--ds-primary,var(--primary));background:var(--ds-surface-2,var(--surface))}
.pay-opt-radio{
  width:18px;height:18px;border-radius:50%;
  border:2px solid var(--border);flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  margin-top:2px;transition:border-color .15s;
}
.pay-opt.selected .pay-opt-radio{border-color:var(--ds-primary,var(--primary))}
.pay-opt.selected .pay-opt-radio::after{
  content:'';width:9px;height:9px;border-radius:50%;
  background:var(--ds-primary,var(--primary));display:block;
}
.pay-opt-body{flex:1}
.pay-opt-label{font-weight:700;font-size:14px;margin-bottom:2px}
.pay-opt-sub{font-size:12px;color:var(--ds-muted,var(--muted))}
.pay-opt-badge{
  font-size:10px;font-weight:700;padding:2px 6px;border-radius:4px;
  background:#e8f0fe;color:#1a56db;margin-left:6px;vertical-align:middle;
}
.pay-opt-badge.phonepe{background:#f3e5f5;color:#6a1b9a}

/* ── PhonePe payment panel ───────────────────────────────── */
#phonePePanel{
  display:none;margin-top:12px;padding:16px;border-radius:12px;
  background:linear-gradient(135deg,#f3e5f5 0%,#fce4ec 100%);
  border:1.5px solid #ce93d8;animation:ppFadeIn .25s ease;
}
@keyframes ppFadeIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.pp-header{
  display:flex;align-items:center;gap:8px;margin-bottom:12px;
  font-weight:700;font-size:14px;color:#4a148c;
}
.pp-logo{
  width:28px;height:28px;border-radius:6px;
  background:linear-gradient(135deg,#5e35b1,#8e24aa);
  display:flex;align-items:center;justify-content:center;
  font-size:14px;flex-shrink:0;
}
.pp-steps{
  counter-reset:pp-step;display:flex;flex-direction:column;gap:8px;
  margin-bottom:14px;
}
.pp-step{
  counter-increment:pp-step;display:flex;align-items:flex-start;gap:10px;
  font-size:13px;color:#4a148c;line-height:1.4;
}
.pp-step::before{
  content:counter(pp-step);min-width:20px;height:20px;border-radius:50%;
  background:#7b1fa2;color:#fff;font-size:11px;font-weight:700;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;
}
.pp-qr-wrap{
  text-align:center;margin:12px 0;padding:12px;
  background:#fff;border-radius:10px;border:1px solid #e1bee7;
}
.pp-qr{
  width:100%;border-radius:8px;
  box-shadow:0 4px 12px rgba(106,27,154,.12);
}
.pp-qr-caption{font-size:11px;color:#7b1fa2;margin-top:6px;font-weight:600}
.pp-amount-pill{
  display:inline-block;padding:6px 16px;border-radius:999px;
  background:#7b1fa2;color:#fff;font-size:15px;font-weight:700;
  margin:8px 0;letter-spacing:.02em;
}
.pp-open-btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;padding:12px;border-radius:10px;border:none;cursor:pointer;
  background:linear-gradient(135deg,#5e35b1,#8e24aa);color:#fff;
  font-size:14px;font-weight:700;margin:10px 0 14px;
  box-shadow:0 4px 14px rgba(123,31,162,.3);transition:opacity .2s;
  text-decoration:none;
}
.pp-open-btn:hover{opacity:.88}
.pp-divider{
  display:flex;align-items:center;gap:8px;margin:10px 0;
  font-size:11px;color:#9c27b0;
}
.pp-divider::before,.pp-divider::after{
  content:'';flex:1;height:1px;background:#ce93d8;
}
.pp-notes-label{font-size:12px;font-weight:600;color:#4a148c;margin-bottom:4px}
.pp-notes{
  width:100%;box-sizing:border-box;padding:9px 11px;border-radius:8px;
  border:1.5px solid #ce93d8;font-size:13px;font-family:inherit;
  background:#fff;color:#2b2b1f;resize:vertical;min-height:60px;
  transition:border-color .15s;
}
.pp-notes:focus{outline:none;border-color:#7b1fa2}
.pp-confirm-wrap{
  align-items:flex-start;gap:10px;margin-top:12px;
  padding:12px;background:#fff;border-radius:8px;border:1.5px solid #ce93d8;
}
.pp-confirm-chk{
  width:18px;height:18px;accent-color:#7b1fa2;flex-shrink:0;margin-top:1px;cursor:pointer;
}
.pp-confirm-label{font-size:13px;color:#4a148c;line-height:1.5;cursor:pointer}
.pp-confirm-label strong{font-weight:700}
.pp-wa-link{
  display:flex;align-items:center;justify-content:center;gap:6px;
  margin-top:12px;padding:9px;border-radius:8px;
  background:#e8f5e9;border:1px solid #c8e6c9;
  color:#1b5e20;font-size:12px;font-weight:600;text-decoration:none;
  transition:background .15s;
}
.pp-wa-link:hover{background:#c8e6c9}
.pp-wa-icon{width:16px;height:16px}



/* ─────────────────────────────────────────────────────────────
   Subscription builder styles (was a 2nd inline <style> in body)
   ───────────────────────────────────────────────────────────── */
.subb-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:4000;display:none;align-items:flex-end;justify-content:center}
.subb-overlay.open{display:flex}
.subb-panel{background:var(--card,#fff);width:100%;max-width:520px;max-height:92vh;border-radius:18px 18px 0 0;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 -8px 40px rgba(0,0,0,.25)}
@media(min-width:560px){.subb-overlay{align-items:center}.subb-panel{border-radius:18px}}
.subb-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--divider,#eee);flex:0 0 auto}
.subb-title{font-weight:800;font-size:17px;color:var(--text,#222)}
.subb-x{background:none;border:none;font-size:18px;cursor:pointer;color:#888;padding:4px 8px}
.subb-body{padding:16px 18px;overflow-y:auto}
.subb-sec{margin-bottom:18px}
.subb-lbl{font-weight:700;font-size:14px;margin-bottom:8px;color:var(--text,#222)}
.subb-chip{display:inline-block;padding:8px 13px;margin:0 6px 8px 0;border:1.5px solid var(--divider,#ddd);border-radius:20px;font-size:14px;cursor:pointer;user-select:none;background:#fff;color:var(--text,#333)}
.subb-chip.on{background:var(--primary,#2e7d32);border-color:var(--primary,#2e7d32);color:#fff}
.subb-chip.preset{font-size:12.5px;padding:6px 11px;border-style:dashed}
.subb-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;gap:10px}
.subb-step{display:flex;align-items:center;gap:10px}
.subb-step button{width:30px;height:30px;border-radius:8px;border:1.5px solid var(--divider,#ddd);background:#fff;font-size:17px;cursor:pointer;line-height:1}
.subb-inp{width:100%;padding:10px;border:1.5px solid var(--divider,#ddd);border-radius:10px;font-size:15px;box-sizing:border-box}
.subb-summary{background:var(--bg,#f7f7f5);border-radius:12px;padding:14px}
.subb-cta{width:100%;padding:14px;border:none;border-radius:12px;background:var(--primary,#2e7d32);color:#fff;font-weight:800;font-size:16px;cursor:pointer;margin-top:4px}
.subb-cta:disabled{opacity:.6;cursor:default}
.subb-radio{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1.5px solid var(--divider,#ddd);border-radius:10px;margin-bottom:8px;cursor:pointer}
.subb-radio.on{border-color:var(--primary,#2e7d32);background:rgba(46,125,50,.06)}
.subb-muted{color:#777;font-size:12.5px;line-height:1.5}

/* ═══════════════════════════════════════════════════════════════
   CATALOGUE LAYOUT (lumen prototype)
   Mobile/tablet: stacked — category strip sticky on top, grid below.
   Desktop ≥1024px: two columns — sticky category RAIL on the left,
   product grid on the right (matches the prototype's neat desktop view).
   ═══════════════════════════════════════════════════════════════ */
.catalogue-layout{max-width:1240px;margin:0 auto}
.catalogue-main{min-width:0}

@media(min-width:1024px){
  .catalogue-layout{
    display:grid;grid-template-columns:248px 1fr;gap:28px;
    align-items:start;padding:10px 20px 64px;
  }
  /* Left rail: detach from the full-width sticky strip styling */
  #cats.cats-bar{
    position:sticky;top:calc(var(--hdr-h,84px) + 10px);z-index:30;
    background:none;border:none;padding:0;align-self:start;
  }
  #cats .xl-cat-strip-inner{display:block;padding:0}
  #cats .xl-strip-scroll{
    flex-direction:column;gap:4px;overflow:visible;
    padding:12px;border-radius:var(--ds-radius-lg,20px);
    background:var(--ds-surface,#fff);border:1px solid var(--ds-border,transparent);
    box-shadow:var(--ds-e1,none);max-height:calc(100vh - 110px);overflow-y:auto;
  }
  #cats .xl-strip-pill{
    width:100%;justify-content:flex-start;text-align:left;
    border:none;background:none;border-radius:12px;
    padding:10px 13px;font-size:13.5px;font-weight:600;box-shadow:none;
  }
  #cats .xl-strip-pill:hover:not(.active){background:var(--ds-surface-2,#f1f5f9)}
  #cats .xl-strip-pill.active{
    background:var(--ds-primary-soft,var(--ds-surface-2));
    color:var(--ds-primary,var(--primary));border-color:transparent;box-shadow:none;
  }
  #cats .xl-strip-pill.wl-pill,#cats .xl-strip-pill.special{color:#fff}
  #cats .xl-strip-thumb{width:22px;height:22px}

  /* Right column: bars sit cleanly inside, grid fills the width */
  .catalogue-main{display:flex;flex-direction:column}
  .catalogue-main #xlContextBar,
  .catalogue-main #sortBar{background:none;border:none;padding-left:0;padding-right:0}
  .catalogue-main .grid{
    grid-template-columns:repeat(auto-fill,minmax(175px,1fr));
    padding:8px 0 40px;max-width:none;margin:0;
  }
  .catalogue-main .fav-banner{margin-left:0;margin-right:0;max-width:none}
}

/* ═══════════════════════════════════════════════════════════════
   HERO BAND (flag-based: BRAND.heroBand) — prototype shop look
   ═══════════════════════════════════════════════════════════════ */
#heroBand{max-width:1240px;margin:0 auto}
.hero-band{
  position:relative;overflow:hidden;color:#fff;margin:14px 12px 0;
  padding:32px 24px;border-radius:var(--ds-radius-lg,26px);
  background:var(--ds-hero,linear-gradient(125deg,var(--primary),var(--accent)));
  box-shadow:var(--ds-e2,0 10px 30px rgba(0,0,0,.12));
}
.hero-band::after{content:"";position:absolute;right:-60px;top:-60px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.18),transparent 65%)}
.hero-band::before{content:"";position:absolute;left:-40px;bottom:-70px;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.16),transparent 65%)}
.hero-band>*{position:relative;z-index:1}
.hero-band .ey{font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;opacity:.92}
.hero-band h1{font-family:var(--ds-font-display,var(--font-display,inherit));font-size:clamp(23px,4.6vw,40px);line-height:1.08;margin:12px 0 8px;max-width:20ch}
.hero-band p{font-size:14.5px;opacity:.94;max-width:48ch;line-height:1.5}
.hero-band .cta{margin-top:20px;display:inline-flex;gap:8px;align-items:center;font-weight:700;padding:13px 24px;border-radius:var(--ds-radius-pill,999px);font-size:14.5px;color:var(--ds-primary,var(--primary));background:#fff;box-shadow:var(--ds-e1,none);cursor:pointer;border:none;transition:transform .2s}
.hero-band .cta:hover{transform:translateY(-2px)}
.hero-trust{display:flex;gap:10px;overflow-x:auto;padding:12px 12px 2px;margin:0;scrollbar-width:none}
.hero-trust::-webkit-scrollbar{display:none}
.hero-trust .c{flex:0 0 auto;background:var(--ds-surface,#fff);border:1px solid var(--ds-border,transparent);border-radius:var(--ds-radius-pill,999px);padding:9px 16px;font-size:12.5px;font-weight:600;box-shadow:var(--ds-e1,none);white-space:nowrap;color:var(--ds-text,var(--text))}
@media(min-width:768px){.hero-band{margin:16px 20px 0}.hero-trust{padding:12px 20px 2px}}

/* ═══════════════════════════════════════════════════════════════
   MOBILE BOTTOM TAB BAR (prototype) — hidden on desktop ≥1024
   ═══════════════════════════════════════════════════════════════ */
.tabbar{
  position:fixed;bottom:14px;left:50%;transform:translateX(-50%);
  width:calc(100% - 24px);max-width:440px;height:62px;border-radius:22px;
  display:flex;z-index:55;
  background:color-mix(in srgb,var(--ds-surface,#fff) 82%,transparent);
  border:1px solid var(--ds-border,transparent);
  -webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);
  box-shadow:var(--ds-e2,0 10px 30px rgba(0,0,0,.14));
}
.tabbar-item{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:var(--ds-muted,var(--muted));font-size:10.5px;font-weight:600;font-family:inherit;
  text-decoration:none;background:none;border:none;cursor:pointer;position:relative;
}
.tabbar-item .i{font-size:20px;line-height:1;position:relative}
.tabbar-item.on{color:var(--ds-primary,var(--primary))}
.tabbar-item:active{transform:scale(.94)}
.tab-cdot{
  position:absolute;top:-7px;right:-11px;min-width:16px;height:16px;padding:0 4px;
  border-radius:8px;background:var(--ds-accent,#ff6b2c);color:#fff;font-size:10px;font-weight:700;
  display:none;align-items:center;justify-content:center;line-height:1;
}
.tab-cdot.show{display:flex}

/* Mobile: tab bar replaces the bottom cart bar; lift floating bits above it */
@media(max-width:1023px){
  .cart-bar{display:none!important}
  .wa-container{bottom:90px}
  .scroll-top-fab{bottom:146px}
  #sb-footer{--footer-gap:92px}
}
/* Desktop: no tab bar, keep the floating cart bar */
@media(min-width:1024px){
  .tabbar{display:none}
}

/* Sort + Share toolbar hidden via BRAND.sortBar.enabled:false (overrides inline display toggles) */
body.ui-no-sortbar #sortBar{display:none!important}

/* ═══════════════════════════════════════════════════════════════
   "SHOP BY CATEGORY" SHOWCASE (flag-based: BRAND.categoryShowcase)
   ═══════════════════════════════════════════════════════════════ */
.cat-showcase{max-width:1240px;margin:0 auto;padding:14px 12px 0}
.cat-showcase .cs-head{font-family:var(--ds-font-display,var(--font-display,inherit));font-size:16px;font-weight:700;color:var(--ds-text,var(--text));margin:0 2px 12px}
.cs-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(min-width:560px){.cs-grid{grid-template-columns:repeat(6,1fr)}}
@media(min-width:1024px){.cat-showcase{padding:14px 20px 0}.cs-grid{grid-template-columns:repeat(8,1fr)}}
.cs-tile{display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;background:none;border:none;font-family:inherit;padding:0}
.cs-thumb{
  width:100%;aspect-ratio:1;border-radius:var(--ds-radius,18px);overflow:hidden;
  display:grid;place-items:center;
  background:linear-gradient(160deg,var(--ds-surface,#fff),var(--ds-surface-2,#f1f5f9));
  border:1px solid var(--ds-border,transparent);box-shadow:var(--ds-e1,none);
  transition:transform .2s,box-shadow .2s;
}
.cs-tile:hover .cs-thumb{transform:translateY(-3px);box-shadow:var(--ds-e2,none)}
.cs-thumb img{width:100%;height:100%;object-fit:cover}
.cs-emoji{font-size:28px}
.cs-label{font-size:11px;font-weight:600;text-align:center;line-height:1.15;color:var(--ds-text,var(--text));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}

/* ── Free-delivery progress bar (cart, prototype) ────────────── */
.freebar{background:var(--ds-surface-2,var(--surface));border-radius:var(--ds-radius,14px);padding:12px 14px;margin:0 0 14px}
.freebar p{font-size:12.5px;margin-bottom:8px;color:var(--ds-text,var(--text))}
.freebar b{color:var(--ds-primary,var(--primary))}
.barwrap{height:8px;border-radius:4px;background:var(--ds-divider,var(--divider));overflow:hidden}
.barwrap i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--ds-primary,var(--primary)),var(--ds-accent,var(--accent)));transition:width .35s ease}

/* ── Product detail page affordances (added 2026-08-12) ─────────────────── */
.p-name-link{color:inherit;text-decoration:none}
.p-name-link:hover{text-decoration:underline}
.p-details{
  display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.01em;
  color:var(--ds-primary,var(--primary,#2e7d32));text-decoration:none;
  padding:1px 0 3px;margin-top:-1px;
}
.p-details:hover{text-decoration:underline}
.card .img-wrap{cursor:pointer}

/* ── Admin-editable delivery-locations line ─────────────────────────────── */
.delivery-note{
  display:block;margin:0 0 12px;padding:9px 13px;
  background:var(--primaryLight,#eef6ef);
  border:1px solid var(--ds-border,var(--border,#dce8dd));
  border-radius:var(--ds-radius,10px);
  font-size:12.5px;line-height:1.5;color:var(--text,#31513a);
}
.delivery-note[hidden]{display:none}
#deliveryNoteCheckout{margin:0 0 14px}


/* ── Fulfilment picker (home delivery / store pickup) ──────────────────────
   Shown at checkout only when Admin ▸ Store Settings has BOTH switched on. */
/* Force-hide that composes with inline display and with .hidden. Used only for
   the address block on a store-pickup order. */
.fulfil-hide { display:none !important; }
.fulfil-opts { display:flex; gap:10px; }
.fulfil-opt {
  flex:1; display:flex; align-items:center; justify-content:center; gap:8px;
  padding:12px 10px; border:2px solid var(--border,#e0e0e0); border-radius:12px;
  background:var(--card,#fff); color:var(--text,#2a2a22);
  font-size:14px; font-weight:600; cursor:pointer; transition:all .15s ease;
}
.fulfil-opt:hover { border-color:var(--primary,#2e7d32); }
.fulfil-opt.active {
  border-color:var(--primary,#2e7d32);
  background:var(--primaryLight,#e8f5e9);
  color:var(--primary,#2e7d32);
}
.fulfil-ic { font-size:18px; line-height:1; }
.pickup-note {
  margin:0 0 14px; padding:12px 14px; border-radius:10px;
  background:var(--primaryLight,#e8f5e9);
  border:1px solid var(--border,#c8e6c9);
  font-size:13px; line-height:1.6; color:var(--text,#2a2a22);
  white-space:pre-wrap;          /* admin types real line breaks */
}

/* ══ FILTER BAR ═════════════════════════════════════════════════════════════
   ⚠ Horizontally scrollable, not wrapping. On a phone a wrapping chip row
   pushes the product grid below the fold, and the whole point of a filter is
   to see the result. */
.filter-bar {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 12px; margin: 0 0 4px;
  overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.filter-bar::-webkit-scrollbar { display: none; }
.flt-label {
  flex: 0 0 auto; padding-right: 2px;
  font: 600 11px/1 var(--font-body, inherit); letter-spacing: .08em;
  text-transform: uppercase; color: var(--muted, #6B615A);
}
.flt-chip {
  flex: 0 0 auto; padding: 6px 12px; cursor: pointer; white-space: nowrap;
  font: 600 12px/1 var(--font-body, inherit);
  color: var(--text, #1c1c1e); background: var(--card, #fff);
  border: 1px solid var(--border, #E0D8CC); border-radius: 999px;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.flt-chip:hover { border-color: var(--primary, #333); }
/* ⚠ Active state is a FILL, not a border tint. A 1px colour change is invisible
   on a phone in daylight, and a filter you cannot tell is on is one people
   blame for an empty grid. */
.flt-chip.on {
  color: #fff; background: var(--primary, #333); border-color: var(--primary, #333);
}
.flt-clear {
  flex: 0 0 auto; padding: 6px 10px; cursor: pointer; white-space: nowrap;
  font: 600 12px/1 var(--font-body, inherit);
  color: var(--danger, #c62828); background: none; border: 0;
}

/* ══ SIZE SELECTION ═════════════════════════════════════════════════════════
   The card is per product; the cart is per size. A card can therefore show a
   picker, or one row per chosen size, or both.
   ⚠ Appended rather than woven in: storefront.css is TENANT-LEVEL for this shop
   but NOT for the estate, and keeping apparel-only rules in one block at the
   end makes them trivial to lift into a shared feature later. */
.size-pick {
  /* gap 8, not 6: adjacent targets are what produce a mis-tap, so the space
     between chips matters as much as the 44px chip itself. */
  display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; padding: 2px 0;
}
/* ⚠ 44px MINIMUM, AND THE REASON IS NOT TIDINESS. These were 38x24px,
   five in a row, each wired straight to add() -- so a thumb that landed
   between two chips did not pick the wrong size, it BOUGHT the wrong size.
   44px is the documented minimum touch target; the gap matters as much as the
   size, because adjacent targets are what produce the mis-tap. */
.size-chip {
  min-width: 44px; min-height: 44px; padding: 6px 9px; cursor: pointer;
  font: 600 12px/1 var(--font-body, inherit); letter-spacing: .06em;
  color: var(--text, #14110F); background: #fff;
  border: 1px solid var(--border, #E0D8CC); border-radius: 6px;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.size-chip:hover:not(:disabled) {
  background: var(--primary, #0B0B0B); border-color: var(--primary, #0B0B0B); color: #fff;
}
/* ⚠ A sold-out size is SHOWN, struck through, not hidden. Hiding it makes the
   shop look like it never made that size; showing it says "we do, not today",
   which is the difference between a lost sale and a returning customer. */
.size-chip.out {
  color: var(--muted, #9aa0a6); background: var(--surface, #F4EFE8);
  text-decoration: line-through; cursor: not-allowed; opacity: .7;
}
/* The remembered size, chosen once at the top of the list. */
.flt-chip.sz { min-width: 48px; min-height: 40px; font-weight: 700; letter-spacing: .06em; }
.flt-chip.sz.on { box-shadow: 0 0 0 2px var(--primary, #0B0B0B) inset; }
.flt-chip.sz-all { min-height: 40px; font-style: italic; }
.qty-ctrl.size-row { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
.size-tag {
  min-width: 34px; padding: 3px 6px; text-align: center;
  font: 700 11px/1.4 var(--font-body, inherit); letter-spacing: .06em;
  color: #fff; background: var(--primary, #0B0B0B); border-radius: 5px;
}
.size-more {
  display: block; width: 100%; margin-top: 2px; padding: 5px; cursor: pointer;
  font: 600 11px/1 var(--font-body, inherit);
  color: var(--accent, #A4123F); background: none; border: 1px dashed var(--border, #E0D8CC);
  border-radius: 6px;
}
.size-more:hover { background: var(--surface, #F4EFE8); }

/* ══ FILTER BAR ═════════════════════════════════════════════════════════════
   ⚠ Horizontally scrollable, not wrapping. On a phone a wrapping chip row
   pushes the product grid below the fold, and the whole point of a filter is
   to see the result. */
.filter-bar {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 12px; margin: 0 0 4px;
  overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.filter-bar::-webkit-scrollbar { display: none; }
.flt-label {
  flex: 0 0 auto; padding-right: 2px;
  font: 600 11px/1 var(--font-body, inherit); letter-spacing: .08em;
  text-transform: uppercase; color: var(--muted, #6B615A);
}
.flt-chip {
  flex: 0 0 auto; padding: 6px 12px; cursor: pointer; white-space: nowrap;
  font: 600 12px/1 var(--font-body, inherit);
  color: var(--text, #1c1c1e); background: var(--card, #fff);
  border: 1px solid var(--border, #E0D8CC); border-radius: 999px;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.flt-chip:hover { border-color: var(--primary, #333); }
/* ⚠ Active state is a FILL, not a border tint. A 1px colour change is invisible
   on a phone in daylight, and a filter you cannot tell is on is one people
   blame for an empty grid. */
.flt-chip.on {
  color: #fff; background: var(--primary, #333); border-color: var(--primary, #333);
}
.flt-clear {
  flex: 0 0 auto; padding: 6px 10px; cursor: pointer; white-space: nowrap;
  font: 600 12px/1 var(--font-body, inherit);
  color: var(--danger, #c62828); background: none; border: 0;
}

/* ⚠ The size is what makes two otherwise identical cart rows different. Without
   it a basket holding the same shirt in M and L reads as a duplicate, and the
   shopper removes the "extra" one. */
.cart-size {
  margin: 1px 0 2px;
  font: 600 11px/1.3 var(--font-body, inherit); letter-spacing: .06em;
  color: var(--accent, #A4123F);
}
/* ══ CATALOGUE TREE NAVIGATION (Phase 3, 2026-10-01) ══════════════════════
   Drawn only when catalogue.json is published AND settings nav.depth is 2/3;
   a flat shop never renders any of these classes. storefront.js
   _catRenderStrip / _catRenderCrumbs / _catSyncRail.
   ⚠ TOUCH TARGETS: every chip, rail item and crumb has a >= 44px hit area
   (the visible chip is smaller; ::after extends it). */
.xl-subnav{display:flex;flex-direction:column;gap:4px;padding:2px 12px 8px}
.xl-subnav-row{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;padding:4px 2px;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
.xl-subnav-row::-webkit-scrollbar{display:none}
.xl-subchip{position:relative;flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--ds-border,var(--border,#e5e7eb));background:var(--ds-surface,#fff);color:var(--ds-text,var(--text,#1f2937));font:inherit;font-size:12.5px;font-weight:600;white-space:nowrap;cursor:pointer;scroll-snap-align:start;transition:background .2s,border-color .2s,color .2s}
.xl-subchip::after{content:"";position:absolute;left:0;right:0;top:-4px;bottom:-4px}
.xl-subchip:hover:not(.active){border-color:var(--ds-primary,var(--primary))}
.xl-subchip:focus-visible,.xl-rail-item:focus-visible,.xl-ctx-crumb:focus-visible{outline:2px solid var(--ds-primary,var(--primary));outline-offset:2px}
.xl-subchip.active{background:var(--ds-primary-soft,var(--primaryLight,#e8f5e9));color:var(--ds-primary,var(--primary));border-color:var(--ds-primary,var(--primary))}
.xl-subchip-all{font-weight:700}
.xl-subchip-n{font-size:11px;font-weight:700;opacity:.6}
.xl-subnav-row[data-level="3"] .xl-subchip{min-height:32px;font-size:12px;background:transparent}
.xl-subnav-row[data-level="3"] .xl-subchip.active{background:var(--ds-primary-soft,var(--primaryLight,#e8f5e9))}
/* Breadcrumb: All › Men › Shirts */
.xl-ctx-crumb{position:relative;background:none;border:none;padding:0;font:inherit;color:var(--ds-primary,var(--primary));cursor:pointer;white-space:nowrap}
.xl-ctx-crumb::after{content:"";position:absolute;left:-4px;right:-4px;top:-14px;bottom:-14px}
.xl-ctx-crumb:hover{text-decoration:underline}
/* Rail: a phone only (<= 720px), a sibling BEFORE #grid inside .catalogue-main. */
#xlCatRail{display:none}
.xl-rail-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;min-height:44px;padding:8px 4px;border:none;background:none;font:inherit;font-size:11px;font-weight:600;line-height:1.2;text-align:center;color:var(--ds-text-2,var(--muted,#4b5563));cursor:pointer}
.xl-rail-item.active{color:var(--ds-primary,var(--primary));font-weight:800;background:var(--ds-primary-soft,var(--primaryLight,#e8f5e9))}
.xl-rail-item.active::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--ds-primary,var(--primary))}
.xl-rail-thumb{width:48px;height:48px;border-radius:50%;overflow:hidden;flex-shrink:0;background:var(--ds-surface-2,#f1f5f9);display:flex;align-items:center;justify-content:center;font-size:22px}
.xl-rail-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.xl-rail-lbl{max-width:76px;overflow-wrap:anywhere}
.xl-rail-n{font-size:10px;opacity:.6}
@media (max-width:720px){
  .catalogue-main.xl-rail-on{display:grid;grid-template-columns:84px minmax(0,1fr);align-items:start}
  .catalogue-main.xl-rail-on>*{grid-column:1/-1}
  .catalogue-main.xl-rail-on>#xlCatRail{display:flex;flex-direction:column;grid-column:1;position:sticky;top:var(--xl-rail-top,calc(var(--hdr-h,60px) + 52px));max-height:calc(100vh - var(--xl-rail-top,112px));overflow-y:auto;scrollbar-width:none;padding:4px 0 88px;border-right:1px solid var(--ds-border,var(--border,#e5e7eb));background:var(--ds-surface,#fff)}
  .catalogue-main.xl-rail-on>#xlCatRail::-webkit-scrollbar{display:none}
  .catalogue-main.xl-rail-on>#grid{grid-column:2;min-width:0;padding-left:8px;padding-right:8px}
  .catalogue-main:has(>#grid[style*="none"])>#xlCatRail{display:none}
}
/* Desktop: #cats is already the left rail, so the sub-categories list under it. */
@media (min-width:1024px){
  #cats .xl-subnav{padding:10px 0 0;gap:8px}
  #cats .xl-subnav-row{flex-direction:column;overflow:visible;gap:2px;padding:10px;border-radius:var(--ds-radius-lg,20px);background:var(--ds-surface,#fff);border:1px solid var(--ds-border,transparent);box-shadow:var(--ds-e1,none)}
  #cats .xl-subchip{width:100%;justify-content:space-between;border:none;background:none;border-radius:12px;min-height:40px;padding:0 13px;font-size:13px;white-space:normal;text-align:left}
  #cats .xl-subchip::after{top:0;bottom:0}
  #cats .xl-subchip.active{background:var(--ds-primary-soft,var(--ds-surface-2,#f1f5f9));border:none}
  #cats .xl-subnav-row[data-level="3"]{margin-left:14px;box-shadow:none}
}
/* RAP CLUB atelier: navy ink, gold hairlines, near-square corners. Inert elsewhere. */
[data-theme="atelier"] .xl-subchip{border-radius:2px;border-color:var(--ds-border,#e6e4de);background:#fff;color:var(--rc-navy);font-weight:500;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
[data-theme="atelier"] .xl-subchip.active{background:#fff;color:var(--rc-navy);border-color:var(--rc-gold);box-shadow:inset 0 -2px 0 var(--rc-gold)}
[data-theme="atelier"] .xl-subchip-n{color:var(--rc-gold);opacity:1}
[data-theme="atelier"] .xl-ctx-crumb{color:var(--rc-navy);letter-spacing:.04em}
[data-theme="atelier"] .xl-ctx-sep{color:var(--rc-gold);opacity:1}
[data-theme="atelier"] .catalogue-main.xl-rail-on>#xlCatRail{border-right:1px solid var(--rc-gold)}
[data-theme="atelier"] .xl-rail-item{color:var(--rc-navy);font-weight:500;letter-spacing:.04em}
[data-theme="atelier"] .xl-rail-item.active{background:var(--rc-ivory);color:var(--rc-navy)}
[data-theme="atelier"] .xl-rail-item.active::before{background:var(--rc-gold)}
[data-theme="atelier"] .xl-rail-thumb{border-radius:2px}
@media (min-width:1024px){
  [data-theme="atelier"] #cats .xl-subnav-row{border-radius:2px;box-shadow:none;border-color:var(--ds-border,#e6e4de)}
  [data-theme="atelier"] #cats .xl-subchip{border-radius:0;box-shadow:none}
  [data-theme="atelier"] #cats .xl-subchip.active{background:none;box-shadow:inset 2px 0 0 var(--rc-gold)}
}

/* ══ CATALOGUE PAGES (Phase 4, 2026-10-01) ════════════════════════════════
   Header mode (display:'header', or a collection with a banner / intro) and the
   collection-group sheet. storefront.js _catRenderHeader / _catOpenGroup. A
   shop with no such node never renders any of these classes.
   ⚠ COMPACT ON A PHONE: one static banner at ~3:1 capped in height, the intro
   clamped to three lines, tiles in one scrolling row -- the products stay on
   the first screen (Baymard). ⚠ Every tap target >= 44px. */
.xl-cat-hdr{margin:4px 12px 10px;display:flex;flex-direction:column;gap:10px}
.xl-cat-hdr[hidden]{display:none}
.xl-cat-hdr-banner{border-radius:var(--ds-radius-lg,16px);overflow:hidden;aspect-ratio:3/1;max-height:120px;background:var(--ds-surface-2,#f1f5f9)}
.xl-cat-hdr-banner img{display:block;width:100%;height:100%;object-fit:cover}
.xl-cat-hdr-body{display:flex;flex-direction:column;gap:4px}
.xl-cat-hdr-title{margin:0;font:800 20px/1.2 var(--font-display,inherit);color:var(--ds-text,var(--text,#1f2937))}
.xl-cat-hdr-intro{font-size:13.5px;line-height:1.5;color:var(--ds-text-2,var(--muted,#4b5563))}
.xl-cat-hdr-intro p{margin:0 0 6px}
.xl-cat-hdr-intro p:last-child{margin-bottom:0}
.xl-cat-hdr-intro.xl-clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.xl-cat-hdr-more{align-self:flex-start;min-height:44px;padding:0 4px;margin:-8px 0 -10px;border:none;background:none;font:inherit;font-size:13px;font-weight:700;color:var(--ds-primary,var(--primary));cursor:pointer}
.xl-cat-hdr-tiles{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;padding:2px}
.xl-cat-hdr-tiles::-webkit-scrollbar{display:none}
.xl-cat-hdr-tile{flex:0 0 auto;width:84px;min-height:44px;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;border:1px solid var(--ds-border,var(--border,#e5e7eb));border-radius:14px;background:var(--ds-surface,#fff);color:var(--ds-text,var(--text,#1f2937));font:inherit;font-size:12px;font-weight:600;line-height:1.2;text-align:center;cursor:pointer;scroll-snap-align:start}
.xl-cat-hdr-tile:hover:not(.active){border-color:var(--ds-primary,var(--primary))}
.xl-cat-hdr-tile.active{border-color:var(--ds-primary,var(--primary));background:var(--ds-primary-soft,var(--primaryLight,#e8f5e9));color:var(--ds-primary,var(--primary))}
.xl-cat-hdr-tile:focus-visible,.xl-cat-hdr-more:focus-visible,.xl-grp-item:focus-visible,.xl-grp-close:focus-visible{outline:2px solid var(--ds-primary,var(--primary));outline-offset:2px}
.xl-cat-hdr-thumb{width:56px;height:56px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:24px;background:var(--ds-surface-2,#f1f5f9)}
.xl-cat-hdr-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.xl-cat-hdr-lbl{max-width:76px;overflow-wrap:anywhere}
.xl-cat-hdr-n{font-size:10.5px;opacity:.6}
@media (min-width:721px){
  .xl-cat-hdr{margin:6px 0 14px}
  .xl-cat-hdr-banner{max-height:240px}
  .xl-cat-hdr-title{font-size:26px}
  .xl-cat-hdr-intro{font-size:14.5px;max-width:72ch}
  .xl-cat-hdr-intro.xl-clamp{-webkit-line-clamp:4}
  .xl-cat-hdr-tile{width:104px}
  .xl-cat-hdr-thumb{width:72px;height:72px}
  .xl-cat-hdr-lbl{max-width:96px}
}
/* Collection group sheet: a bottom sheet on a phone, a centred card elsewhere. */
.xl-grp-sheet{position:fixed;inset:0;z-index:1200;display:flex;align-items:flex-end;justify-content:center}
.xl-grp-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.45)}
.xl-grp-panel{position:relative;width:100%;max-width:520px;max-height:80vh;overflow-y:auto;background:var(--ds-surface,#fff);color:var(--ds-text,var(--text,#1f2937));border-radius:18px 18px 0 0;padding:6px 12px calc(16px + env(safe-area-inset-bottom,0px));box-shadow:0 -8px 30px rgba(0,0,0,.18)}
.xl-grp-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 4px}
.xl-grp-title{margin:0;font:800 17px/1.25 var(--font-display,inherit)}
.xl-grp-close{min-width:44px;min-height:44px;border:none;background:none;font-size:26px;line-height:1;color:inherit;cursor:pointer}
.xl-grp-list{display:flex;flex-direction:column;gap:2px}
.xl-grp-item{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:6px 8px;border:none;border-radius:12px;background:none;color:inherit;font:inherit;font-size:14px;font-weight:600;text-align:left;cursor:pointer}
.xl-grp-item:hover,.xl-grp-item.active{background:var(--ds-primary-soft,var(--primaryLight,#e8f5e9))}
.xl-grp-item.active{color:var(--ds-primary,var(--primary))}
.xl-grp-thumb{width:40px;height:40px;flex-shrink:0;border-radius:10px;overflow:hidden;background:var(--ds-surface-2,#f1f5f9)}
.xl-grp-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.xl-grp-lbl{flex:1;min-width:0}
.xl-grp-n{font-size:12px;opacity:.6}
@media (min-width:721px){
  .xl-grp-sheet{align-items:center}
  .xl-grp-panel{border-radius:18px;padding-bottom:16px}
}
/* RAP CLUB atelier: navy ink, gold hairlines, near-square corners. Inert elsewhere. */
[data-theme="atelier"] .xl-cat-hdr-banner{border-radius:2px}
[data-theme="atelier"] .xl-cat-hdr-title{color:var(--rc-navy);font-weight:500;letter-spacing:.04em}
[data-theme="atelier"] .xl-cat-hdr-more{color:var(--rc-navy);letter-spacing:.06em;text-transform:uppercase;font-size:11px}
[data-theme="atelier"] .xl-cat-hdr-tile{border-radius:2px;border-color:var(--ds-border,#e6e4de);color:var(--rc-navy);font-weight:500;letter-spacing:.06em;text-transform:uppercase;font-size:10.5px}
[data-theme="atelier"] .xl-cat-hdr-tile.active{background:#fff;color:var(--rc-navy);border-color:var(--rc-gold);box-shadow:inset 0 -2px 0 var(--rc-gold)}
[data-theme="atelier"] .xl-cat-hdr-thumb{border-radius:2px}
[data-theme="atelier"] .xl-cat-hdr-n{color:var(--rc-gold);opacity:1}
[data-theme="atelier"] .xl-grp-panel{border-radius:2px 2px 0 0}
[data-theme="atelier"] .xl-grp-title{color:var(--rc-navy);font-weight:500;letter-spacing:.06em;text-transform:uppercase}
[data-theme="atelier"] .xl-grp-item{border-radius:2px;color:var(--rc-navy);font-weight:500}
[data-theme="atelier"] .xl-grp-item.active{background:var(--rc-ivory);box-shadow:inset 2px 0 0 var(--rc-gold)}
[data-theme="atelier"] .xl-grp-thumb{border-radius:2px}
/* The shell's crawler copy (#catSeo, generate-sitemap.ps1, just before #grid): readable without JS,
   but compact and quiet for the moment before storefront.js hides it -- never a page-long unstyled list. */
.cat-seo{margin:4px 12px 8px;max-height:132px;overflow:hidden;font-size:13px;line-height:1.45;color:var(--ds-text-2,var(--muted,#4b5563))}
.cat-seo[hidden]{display:none}
.cat-seo h1{margin:2px 0 4px;font:800 20px/1.2 var(--font-display,inherit);color:var(--ds-text,var(--text,#1f2937))}
.cat-seo p{margin:0 0 4px}
.cat-seo-crumb{font-size:12px;margin-bottom:2px}
.cat-seo a{color:inherit}
.cat-seo ul{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:4px 12px}
/* ══ END CATALOGUE PAGES ══════════════════════════════════════════════════ */

/* ══ ATTRIBUTE FILTERS (Phase 5, 2026-10-01) ══════════════════════════════
   Drawn only when catalogue.json publishes filter:true attributes; a shop
   without them never renders these classes. ⚠ 44px targets: these chips
   narrow the shelf on one tap, and a mis-tap empties the grid. */
.flt-chip.flt-attr { min-height: 44px; display: inline-flex; align-items: center; gap: 6px; }
.flt-n { font-weight: 500; font-size: 11px; opacity: .7; }
.flt-chip.on .flt-n { opacity: .9; }
.flt-attr-sel {
  flex: 0 0 auto; min-height: 44px; max-width: 240px; padding: 0 12px; cursor: pointer;
  font: 600 12px/1 var(--font-body, inherit);
  color: var(--text, #1c1c1e); background: var(--card, #fff);
  border: 1px solid var(--border, #E0D8CC); border-radius: 999px;
}
.flt-attr-sel.on { border-color: var(--primary, #333); box-shadow: 0 0 0 1px var(--primary, #333) inset; }
.flt-applied {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px;
  padding-right: 8px; margin-right: 2px; border-right: 1px solid var(--border, #E0D8CC);
}
.flt-tag {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px;
  min-height: 44px; padding: 0 12px; cursor: pointer; white-space: nowrap;
  font: 600 12px/1 var(--font-body, inherit);
  color: var(--primary, #333); background: var(--surface, #F4EFE8);
  border: 1px solid var(--primary, #333); border-radius: 999px;
}
.flt-x { font-size: 15px; line-height: 1; }
.flt-tag:focus-visible, .flt-attr-sel:focus-visible, .flt-chip.flt-attr:focus-visible {
  outline: 2px solid var(--primary, #333); outline-offset: 2px;
}
[data-theme="atelier"] .flt-attr-sel, [data-theme="atelier"] .flt-tag { border-radius: 0; }
/* ══ END ATTRIBUTE FILTERS ═══════════════════════════════════════════════ */
