/* Customer-facing storefront shell (layouts/customer + customer/shell/*).
 *
 * Deliberately separate from the admin design system in application.css.
 * Pixel spec is the Astro storefront chrome (astro/src/layouts/main/nav.astro
 * + footer.astro with astro/src/tailwind.css tokens): values below are the
 * computed styles of that chrome at desktop width, so customers can move
 * between Astro-rendered and cfhub-rendered pages without the chrome shifting.
 *
 * Naming note: Astro's Tailwind maps the `gray` scale to zinc values
 * (gray-200 = #e4e4e7); the --gray-* tokens here carry those same values.
 * The per-store --customer-primary/--customer-cta values (validated hex from
 * Customer::StorefrontPresenter, inline on <html>) feed the same primary/CTA
 * tokens Astro's Tailwind utilities consume throughout its chrome.
 */

@font-face {
  font-family: "Lato";
  src: url("/__r8/assets/lato/Lato-Light-aa13f910.woff2") format("woff2");
  font-weight: 300;
  font-display: swap;
}

@font-face {
  font-family: "Lato";
  src: url("/__r8/assets/lato/Lato-Regular-8ab8f9b2.woff2") format("woff2");
  font-weight: 400 500;
  font-display: swap;
}

@font-face {
  font-family: "Lato";
  src: url("/__r8/assets/lato/Lato-Bold-41f81667.woff2") format("woff2");
  font-weight: 700;
  font-display: swap;
}

@font-face {
  font-family: "Lato";
  src: url("/__r8/assets/lato/Lato-Italic-0271f583.woff2") format("woff2");
  font-weight: 400 500;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: "Barlow";
  src: url("/__r8/assets/barlow/Barlow-Regular-9ad60cba.woff") format("woff");
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Barlow";
  src: url("/__r8/assets/barlow/Barlow-SemiBold-5536b879.woff") format("woff");
  font-weight: 600;
  font-display: swap;
}

:root {
  /* Per-store branding (overridden inline on <html>). */
  --customer-primary: #148d48;
  --customer-cta: #33677c;
  /* Storefront palette (astro/src/tailwind.css). */
  --primary: var(--customer-primary);
  --cta: var(--customer-cta);
  --color-primary: var(--customer-primary);
  --color-cta: var(--customer-cta);
  --cf-green: #148d48;
  --v-blue: #33677c;
  --v-blue-dark: #264d5c;
  --secondary: #333431;
  --secondary-light: #424240;
  --secondary-lighter: #71716e;
  --bone-50: #fdfcfa;
  --bone-100: #f7f5ec;
  --bone-200: #edeadc;
  --bone-900: #494942;
  --neutral-100: #cdccc7;
  --neutral-600: #424240;
  --neutral-800: #232422;
  --neutral-900: #161615;
  --purple-900: #493656;
  --hot-pink-500: #ed1c90;
  --teal-400: #2dd4bf;
  --gray-50: #fafafa;
  --gray-100: #f4f4f5;
  --gray-200: #e4e4e7;
  --gray-300: #d4d4d8;
  --gray-400: #a1a1aa;
  --gray-500: #71717a;
  --gray-600: #52525b;
  --gray-900: #18181b;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
  --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }

html { color-scheme: light; }

.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }

.skip-link { position: absolute; left: 12px; top: -48px; z-index: 90; border-radius: 4px; background: var(--secondary); padding: 10px 14px; color: #fff; font-size: 13px; font-weight: 700; text-decoration: none; transition: top 120ms ease; }
.skip-link:focus { top: 12px; }

/* html base in astro/src/tailwind.css: font-lato font-medium antialiased. */
.customer-body {
  margin: 0;
  background: #fff;
  color: #000;
  font-family: "Lato", Arial, Helvetica, sans-serif;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Preflight-equivalent: zero-specificity so any single-class color wins. */
:where(.customer-body) a { color: inherit; }
.customer-body :focus-visible { outline: 2px solid var(--cta); outline-offset: 2px; }
/* Heading defaults for shell-native pages, at :where() specificity so any
 * single-class rule — including the emotion classes inside checked-in
 * Builder snapshots — overrides them, exactly as Astro's preflight-reset
 * headings behave. */
:where(.customer-body) :where(h1, h2, h3) { margin: 0; color: var(--secondary); line-height: 1.14; }
:where(.customer-body) :where(h1) { font-size: clamp(2rem, 4vw, 3.35rem); font-weight: 700; letter-spacing: -0.02em; }
:where(.customer-body) :where(h2) { font-size: clamp(1.45rem, 2vw, 2rem); font-weight: 700; }
:where(.customer-body) :where(h3) { font-size: 1.05rem; font-weight: 700; }
/* Builder banner/SEO snapshots render on Astro over bare preflight: inside
 * those containers, headings inherit and paragraphs/lists lose their UA
 * margins, padding and bullets unless the snapshot styles them. */
:where(.customer-catalog-banner, .customer-catalog-seo) :where(h1, h2, h3, h4, h5) { margin: 0; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit; letter-spacing: normal; }
:where(.customer-catalog-banner, .customer-catalog-seo) :where(p, blockquote, figure, dl, dd, ul, ol) { margin: 0; }
:where(.customer-catalog-banner, .customer-catalog-seo) :where(ul, ol) { padding: 0; list-style: none; }

.storefront-shell { width: min(1180px, calc(100% - 40px)); margin: 0 auto; }

/* Shared site notice: match Astro's amber banner above the navigation. */
.customer-site-notice { border-bottom: 1px solid #fcd34d; background: #fffbeb; color: #451a03; padding: 16px; }
.customer-site-notice__content { max-width: 1152px; margin: 0 auto; overflow-wrap: break-word; font-size: 14px; line-height: 24px; }
.customer-site-notice__title { margin: 0 0 4px; font-weight: 700; }
.customer-site-notice__message { margin: 0; white-space: pre-wrap; }
.customer-site-notice a { font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
.customer-site-notice a:hover { text-decoration: none; }
@media (min-width: 640px) { .customer-site-notice { padding-inline: 32px; } }

/* Generic storefront buttons for pages rendered inside the shell. */
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border: 1px solid transparent; border-radius: 4px; padding: 10px 17px; font-size: 13px; font-weight: 700; text-decoration: none; transition: 150ms ease; }
.button--primary { background: var(--customer-cta); color: #fff !important; }
.button--primary:hover { filter: brightness(0.92); }
.button--secondary { border-color: rgba(255, 255, 255, 0.42); background: rgba(255, 255, 255, 0.08); color: #fff !important; }
.button--secondary:hover { background: rgba(255, 255, 255, 0.16); }
/* Secondary action on white/bone surfaces: the outline treatment of Astro's
 * light-background buttons (border-gray-300, white fill). */
.button--secondary-on-light { border-color: var(--gray-300); background: #fff; color: var(--secondary-light) !important; }
.button--secondary-on-light:hover { background: var(--gray-50); }

/* Page-level success/error messages from the controller's flash, at the top
 * of <main>. Fixed palettes rather than store colors so every brand stays
 * legible (some stores' primary color is white). */
.customer-page-notice { border-bottom: 1px solid; padding: 14px 16px; }
.customer-page-notice__content { display: flex; max-width: 1152px; margin: 0 auto; gap: 10px; align-items: flex-start; overflow-wrap: break-word; font-size: 14px; line-height: 24px; }
.customer-page-notice__content p { margin: 0; white-space: pre-wrap; }
.customer-page-notice__icon { width: 20px; height: 20px; flex-shrink: 0; margin-top: 2px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.customer-page-notice--success { border-color: #86efac; background: #f0fdf4; color: #14532d; }
.customer-page-notice--error { border-color: #fca5a5; background: #fef2f2; color: #7f1d1d; }
@media (min-width: 640px) { .customer-page-notice { padding-inline: 32px; } }

/* Consent surface: same placement, palette, copy scale and action hierarchy as
 * Astro's cookies/consent-banner. It is vanilla-JS so every Rails customer
 * page receives the contract without pulling Alpine into the Rails shell. */
.customer-cookie-banner { position: fixed; z-index: 60; right: 16px; bottom: 16px; left: 16px; border-radius: 6px; padding: 20px; background: var(--v-blue-dark); color: #fff; font-size: 14px; line-height: 1.5; overflow-wrap: break-word; box-shadow: var(--shadow-lg); }
.customer-cookie-banner__title { margin-bottom: 8px; font-weight: 700; }
.customer-cookie-banner a, .customer-cookie-link { color: #fff; text-decoration: underline; }
.customer-cookie-link { border: 0; background: transparent; padding: 0; font: inherit; cursor: pointer; }
.customer-cookie-banner__actions { display: flex; align-items: center; justify-content: flex-start; margin-top: 20px; font-weight: 700; }
.customer-cookie-banner__manage { margin-left: 12px; padding: 8px 16px; text-decoration: none; }
.customer-cookie-button { display: inline-flex; min-height: 40px; align-items: center; justify-content: center; border: 1px solid var(--gray-300); border-radius: 6px; background: #fff; padding: 8px 40px; color: var(--secondary); font: inherit; font-weight: 700; cursor: pointer; }
.customer-cookie-button:hover { background: var(--gray-50); }
.customer-cookie-button--on-dark { background: transparent; color: #fff; }
.customer-cookie-button--on-dark:hover { background: rgba(38, 77, 92, 0.8); }
.customer-cookie-button--primary { border-color: var(--v-blue-dark); background: var(--v-blue-dark); color: #fff; }
.customer-cookie-button--primary:hover { filter: brightness(0.92); }
.customer-cookie-modal { position: fixed; z-index: 80; inset: 0; overflow-y: auto; }
.customer-cookie-modal__backdrop { position: fixed; inset: 0; background: rgba(82, 82, 91, 0.75); }
.customer-cookie-modal__positioner { position: relative; display: flex; min-height: 100%; align-items: center; justify-content: center; padding: 24px; }
.customer-cookie-dialog { position: relative; width: min(896px, 100%); max-height: calc(100vh - 48px); overflow-y: auto; border-radius: 8px; background: #fff; padding: 24px; color: var(--secondary); box-shadow: var(--shadow-lg); }
.customer-cookie-dialog h3 { margin: 0 40px 16px 0; color: var(--secondary); font-size: 20px; font-weight: 500; line-height: 1.5; }
.customer-cookie-dialog p { margin: 0 0 12px; color: var(--secondary-light); text-align: justify; }
.customer-cookie-dialog a { color: var(--v-blue-dark); text-decoration: underline; }
.customer-cookie-dialog__close { position: absolute; top: 12px; right: 16px; border: 0; background: #fff; color: var(--gray-400); font: inherit; font-size: 30px; line-height: 1; cursor: pointer; }
.customer-cookie-dialog__bulk-actions { display: flex; justify-content: flex-end; gap: 16px; margin: 16px 4px 16px 0; }
.customer-cookie-categories { border-top: 1px solid var(--gray-200); }
.customer-cookie-category { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; border-bottom: 1px solid var(--gray-200); padding: 16px 0; cursor: pointer; }
.customer-cookie-category strong, .customer-cookie-category small { display: block; }
.customer-cookie-category strong { margin-bottom: 4px; color: var(--secondary); font-size: 18px; font-weight: 500; }
.customer-cookie-category small { color: var(--secondary-light); font-size: 14px; }
.customer-cookie-category input { width: 38px; height: 22px; flex: 0 0 auto; accent-color: var(--v-blue-dark); cursor: pointer; }
.customer-cookie-category input:disabled { cursor: not-allowed; opacity: 0.6; }
.customer-cookie-dialog__confirm { display: flex; justify-content: center; margin-top: 20px; }
.customer-cookie-modal-open { overflow: hidden; }

@media (max-width: 640px) {
  .customer-cookie-banner__actions { align-items: stretch; flex-direction: column; }
  .customer-cookie-banner__manage { margin: 12px 0 0; }
  .customer-cookie-modal__positioner { align-items: flex-end; padding: 16px; }
  .customer-cookie-dialog { max-height: calc(100vh - 32px); padding: 20px; }
  .customer-cookie-dialog__bulk-actions { flex-wrap: wrap; }
  .customer-cookie-button { flex: 1 1 auto; padding-right: 24px; padding-left: 24px; }
}

/* Co-brand knockout logo strip (non-default stores with their own logo). */
.storefront-cobrand { display: flex; align-items: center; justify-content: center; padding: 8px 16px; }
.storefront-cobrand__logo { display: block; max-width: 100%; height: 40px; width: auto; }

/* Help pills row — twin of nav.astro's right-aligned pills above account
 * chrome. Promo/tagline strip retired. */
.storefront-assistance { display: flex; align-items: center; justify-content: flex-end; background: #fff; min-width: 0; width: 100%; }

/* Header help pills — twin of nav/help-pills.astro. */
.storefront-help-pills { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; margin-left: auto; min-width: 0; max-width: 100%; width: 100%; padding: 8px 32px 0 0; }
.storefront-help-pills--menu { justify-content: flex-start; margin-left: 0; padding: 0; }
.storefront-help-pill { display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; padding: 6px 12px; font-size: 12px; font-weight: 600; line-height: 1; text-decoration: none; white-space: nowrap; }
/* Exact mdi:chat-processing-outline / mdi:help-circle glyphs, as astro-icon renders them. */
.storefront-help-pill svg { width: 14px; height: 14px; flex: 0 0 auto; fill: currentColor; }
.storefront-help-pill--rep { border: 1px solid var(--gray-300); background: #fff; color: var(--secondary-light); }
.storefront-help-pill--rep:hover { border-color: var(--gray-400); background: var(--gray-50); }
.storefront-help-pill--rep svg { color: var(--secondary-lighter); }
.storefront-help-pill--support { background: var(--primary); color: #fff; }
.storefront-help-pill--support:hover { opacity: 0.9; }
/* Menu-link rules below are more specific (`… a`); keep pills readable there. */
.customer-account-menu__list a.storefront-help-pill,
.customer-mobile-group__panel a.storefront-help-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
}
.customer-account-menu__list a.storefront-help-pill--support,
.customer-mobile-group__panel a.storefront-help-pill--support {
  color: #fff;
  background: var(--primary);
}
.customer-account-menu__list a.storefront-help-pill--support:hover,
.customer-mobile-group__panel a.storefront-help-pill--support:hover {
  color: #fff;
  background: var(--primary);
  opacity: 0.9;
}

/* Header, top row: nav[aria-label=Top] — logo + search left, account right. */
.customer-header { position: relative; z-index: 20; background: #fff; border-bottom: 1px solid var(--gray-100); color: var(--secondary-light); }
.customer-header__desktop-primary { width: 100%; padding: 8px 32px 0; display: flex; align-items: center; justify-content: space-between; }
.customer-header__brand-search { display: flex; min-width: 0; align-items: flex-end; gap: 32px; }
.customer-brand { display: inline-flex; flex: 0 0 auto; align-items: center; text-decoration: none; }
.customer-brand__logo { display: block; width: auto; height: 40px; }

.catalog-search { position: relative; width: 144px; height: 32px; overflow: hidden; border-radius: 999px; background: #fff; box-shadow: inset 0 0 0 1px var(--gray-300), var(--shadow-sm); transition: width 300ms ease-in-out; }
.catalog-search:focus-within, .catalog-search:has(input:not(:placeholder-shown)) { width: 256px; box-shadow: inset 0 0 0 2px var(--gray-300), var(--shadow-sm); }
.catalog-search input { width: 100%; height: 100%; border: 0; border-radius: 999px; padding: 0 44px 0 12px; background: transparent; color: var(--gray-900); font: inherit; font-size: 14px; line-height: 1.5; outline: 0; }
.catalog-search input::placeholder { color: var(--gray-400); }
.catalog-search button { position: absolute; inset: 0 0 0 auto; display: inline-flex; align-items: center; justify-content: center; padding: 0 10px; border: 0; border-radius: 0 999px 999px 0; background: transparent; color: var(--secondary-lighter); cursor: pointer; transition: color 150ms; }
.catalog-search button svg { width: 20px; height: 20px; }
.catalog-search button:hover { color: var(--secondary); }
.catalog-search--mobile, .catalog-search--mobile:focus-within, .catalog-search--mobile:has(input:not(:placeholder-shown)) { width: 100%; }
.catalog-search--mobile { height: 40px; }

/* Signed-in chrome (nav/signed-in.astro): identity row + tools row. */
.customer-signed-in-chrome { margin-left: 40px; display: flex; flex-direction: column; align-items: flex-end; }
.customer-signed-in-chrome__identity { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; column-gap: 16px; color: var(--secondary); }
.customer-signed-in-chrome__account { display: flex; align-items: center; column-gap: 16px; }
.customer-account-avatar { margin-left: 16px; width: 32px; height: 32px; border: 1px solid var(--gray-200); border-radius: 50%; object-fit: cover; object-position: top; }
/* Astro: w-8 h-8 xl:w-12 xl:h-12 — the headshot only grows at 1280px. */
@media (min-width: 1280px) { .customer-account-avatar { width: 48px; height: 48px; } }
.customer-account-avatar--fallback { display: inline-flex; width: 42px; height: 42px; margin-left: 0; align-items: center; justify-content: center; border: 0; color: var(--gray-300); }
.customer-account-avatar--fallback svg { width: 42px; height: 42px; fill: currentColor; stroke: none; }
.customer-account-menu { position: relative; display: inline-block; }
.customer-account-menu__button { display: inline-flex; align-items: center; gap: 4px; border: 0; background: transparent; padding: 0 0 0 8px; color: var(--secondary); font: inherit; font-size: 12px; font-weight: 700; line-height: 1.5rem; cursor: pointer; }
.customer-account-menu__button:hover { color: var(--cta); background: var(--gray-100); }
.customer-account-menu__chevron { width: 14px; height: 14px; transition: transform 300ms ease-out; }
.customer-account-menu__button[aria-expanded="true"] .customer-account-menu__chevron { transform: rotate(-180deg); }
.customer-account-menu__list { position: absolute; top: 20px; left: 0; z-index: 40; min-width: max-content; max-height: 384px; overflow-y: auto; background: #fff; padding: 8px 0; box-shadow: var(--shadow-lg); }
.customer-account-menu__list a:not(.storefront-help-pill) { display: block; padding: 8px 16px; color: var(--secondary-light); font-size: 12px; font-weight: 500; text-decoration: none; }
.customer-account-menu__list a:not(.storefront-help-pill):hover { background: var(--gray-50); }
.customer-account-number-group { display: flex; min-width: 0; min-height: 32px; flex-shrink: 1; align-items: center; gap: 4px; }
.customer-account-number { color: var(--secondary); font-size: 12px; font-weight: 700; text-decoration: none; white-space: nowrap; border-radius: 2px; }
.customer-account-number:hover { color: var(--cta); background: var(--gray-50); }
.customer-copy-button { position: relative; display: inline-flex; width: 36px; height: 32px; align-items: center; justify-content: center; border: 0; border-radius: 2px; background: transparent; color: var(--gray-500); cursor: pointer; }
.customer-copy-button:hover { background: var(--gray-200); color: var(--gray-600); }
.customer-copy-button svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.customer-copy-button__toast { position: absolute; right: 0; bottom: 100%; margin-bottom: 4px; display: none; height: 28px; align-items: center; border-radius: 2px; background: #22c55e; padding: 0 12px; color: #fff; font-size: 12px; white-space: nowrap; box-shadow: var(--shadow-md); }
.customer-copy-button--copied .customer-copy-button__toast { display: flex; }
.customer-signout-link { display: inline-flex; color: var(--secondary-light); }
.customer-signout-link:hover { color: var(--cta); }
.customer-signout-link svg { position: relative; top: 2px; width: 16px; height: 16px; fill: currentColor; }
.customer-cart-link { display: inline-flex; align-items: center; gap: 2px; color: var(--secondary-light); font-size: 12px; text-decoration: none; }
.customer-cart-link:hover { color: var(--cta); }
.customer-cart-link svg { width: 18px; height: 18px; fill: currentColor; }
.customer-admin-lockup { display: block; height: 20px; width: 109px; color: var(--secondary); }
.customer-staff-badge { display: inline-flex; align-items: center; padding-right: 16px; }
.customer-admin-menu { padding-right: 16px; }
.customer-admin-menu .customer-account-menu__button { padding-left: 0; gap: 4px; }
.customer-admin-menu__logout { border-top: 1px solid var(--gray-200); }

.customer-signed-in-chrome__tools { display: flex; align-items: center; justify-content: flex-end; padding: 8px 0; color: var(--cta); font-size: 12px; }
.customer-signed-in-chrome__tools > * { border-left: 1px solid var(--gray-200); }
.customer-signed-in-chrome__tools > :first-child { border-left: 0; }
.customer-tool-slot { display: inline-flex; height: 32px; align-items: center; padding: 0 8px; }
.customer-tool-slot--link { padding: 0; }
.customer-tool-pill { display: inline-flex; align-items: center; border: 0; border-radius: 1px; padding: 0 12px; color: #fff !important; font-family: inherit; font-size: 12px; font-weight: 700; line-height: 24px; text-decoration: none; cursor: pointer; }
.customer-tool-pill:hover { opacity: 0.8; }
.customer-tool-pill--elite { background: var(--purple-900); }
.customer-tool-pill--ai { background: linear-gradient(to right, #d07ad6, #59b6e0); }
.customer-tool-pill--social { background: linear-gradient(to right, var(--hot-pink-500), var(--teal-400)); }
.customer-notifications { position: relative; }
.customer-bell-link { position: relative; display: inline-flex; border: 0; background: transparent; padding: 8px; color: var(--gray-600); cursor: pointer; }
/* Astro's badge is a 20px mdi:circle icon (a 16.67px disc) at 8px right of and
 * 8px above the bell, in the theme's red-500, with a 10px medium-weight count. */
.customer-bell-link__badge { position: absolute; top: 0; left: 16px; z-index: 1; display: inline-flex; width: 20px; height: 20px; align-items: center; justify-content: center; color: #fff; font-size: 10px; font-weight: 500; line-height: 1; }
.customer-bell-link__badge::before { content: ""; position: absolute; inset: 1.667px; z-index: -1; border-radius: 50%; background: #b9312b; }
/* Astro hides the count while the notifications panel is open. */
.customer-bell-link[aria-expanded="true"] .customer-bell-link__badge { display: none; }
.customer-bell-link:hover, .customer-bell-link[aria-expanded="true"] { color: var(--cta); }
.customer-bell-link svg { display: block; width: 20px; height: 20px; fill: currentColor; }
.customer-bell-link .customer-bell-link__filled { display: none; }
.customer-bell-link:hover .customer-bell-link__outline, .customer-bell-link[aria-expanded="true"] .customer-bell-link__outline { display: none; }
.customer-bell-link:hover .customer-bell-link__filled, .customer-bell-link[aria-expanded="true"] .customer-bell-link__filled { display: block; }
.customer-notifications__panel { position: absolute; top: 32px; right: 0; z-index: 45; width: 365px; max-height: 384px; overflow-y: auto; border: 1px solid rgba(205, 204, 199, 0.7); border-radius: 6px; background: #fff; padding: 16px; color: var(--secondary-light); box-shadow: var(--shadow-sm); }
.customer-notifications__tabs { display: flex; gap: 32px; margin-bottom: 8px; border-bottom: 1px solid var(--gray-200); }
.customer-notifications__tabs button { flex: 1 1 0; margin-bottom: -1px; border: 0; border-bottom: 2px solid transparent; background: transparent; padding: 8px 4px; color: var(--gray-500); font: inherit; font-size: 14px; font-weight: 500; white-space: nowrap; cursor: pointer; }
.customer-notifications__tabs button:hover, .customer-notifications__tabs button[aria-selected="true"] { border-bottom-color: var(--cta); color: var(--cta); }
.customer-notifications__tabs span { display: inline-flex; min-width: 28px; justify-content: center; margin-left: 12px; border-radius: 999px; background: var(--gray-100); padding: 2px 10px; color: var(--gray-900); font-size: 12px; }
.customer-notifications__tabs button[aria-selected="true"] span { background: var(--cta); color: #fff; }
.customer-notifications__actions { display: flex; justify-content: flex-end; margin: 6px 0; }
.customer-notifications__actions button { border: 0; background: transparent; padding: 0; color: var(--secondary-light); font: inherit; cursor: pointer; }
.customer-notifications__actions button:hover { color: var(--cta); text-decoration: underline; }
.customer-notification { position: relative; border-radius: 2px; }
.customer-notification:hover { background: var(--gray-100); }
.customer-notification__content { display: flex; width: 100%; align-items: center; gap: 8px; padding: 12px; color: inherit; text-decoration: none; }
.customer-notification__content img { width: 80px; height: 80px; flex: 0 0 auto; border-radius: 2px; object-fit: cover; }
.customer-notification__content span { min-width: 0; flex: 1 1 auto; }
.customer-notification__content strong, .customer-notification__content small { display: block; margin: 0 24px 4px 0; text-align: left; }
.customer-notification__content strong { color: var(--secondary); font-size: 12px; }
.customer-notification__content small { color: var(--secondary-lighter); font-size: 12px; }
.customer-notification__unread { position: absolute; top: 12px; right: 12px; z-index: 1; width: 20px; height: 20px; border: 1px solid transparent; border-radius: 50%; background: transparent; cursor: pointer; }
.customer-notification__unread::after { content: ""; position: absolute; inset: 6px; border-radius: 50%; background: #ef4444; }
.customer-notification__unread:hover { border-color: var(--gray-400); }
.customer-notifications__empty { display: flex; min-height: 88px; flex-direction: column; align-items: center; justify-content: center; margin: 0; color: var(--secondary-light); text-align: center; }
.customer-notifications__empty svg { width: 20px; height: 20px; margin-bottom: 6px; fill: var(--gray-400); }
.customer-tool-link { display: inline-flex; align-items: center; padding: 8px; color: var(--cta); font-weight: 700; text-decoration: none; }
.customer-tool-link:hover { color: var(--cta); background: var(--gray-100); }

/* Signed-out inline login (nav/signed-out.astro). */
.customer-login-form { margin-left: 40px; flex: 1; display: flex; align-items: center; justify-content: flex-end; gap: 4px; }
.customer-login-form input { width: 132px; border: 1px solid var(--gray-200); padding: 8px; background: #fff; color: var(--secondary-lighter); font: inherit; font-size: 12px; line-height: 16px; }
.customer-login-form button, .customer-login-form a { padding: 8px; font: inherit; font-size: 12px; line-height: 16px; cursor: pointer; text-decoration: none; }
.customer-login-form button { border: 1px solid var(--gray-200); background: #fff; color: var(--secondary-lighter); }
.customer-login-form button:hover { background: var(--gray-50); }
.customer-login-form a { border: 0; background: var(--cta); color: #fff !important; }
.customer-login-form a:hover { background: #065f46; }

/* Mobile header bar. */
.customer-header__mobile-bar { display: none; }
.customer-menu-button { display: inline-flex; padding: 10px; margin: -10px; align-items: center; justify-content: center; border: 0; border-radius: 6px; background: transparent; color: var(--secondary-light); cursor: pointer; }
.customer-menu-button svg, .customer-mobile-dialog__close svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; }

/* Global product nav bar (nav[aria-label=Global]). */
.storefront-global-nav { position: relative; z-index: 21; background: #fff; }
.storefront-global-nav ul { display: flex; align-items: center; justify-content: center; margin: 0; padding: 4px 16px 0; list-style: none; gap: 6px; color: var(--secondary-light); font-size: 14px; }
.storefront-global-nav__home { display: inline-flex; align-items: center; color: var(--secondary-light); font-weight: 700; }
.storefront-global-nav__home svg { position: relative; top: 3px; width: 20px; height: 20px; fill: currentColor; stroke: none; }
.storefront-global-nav__home:hover { color: var(--cta); }
.storefront-global-nav__button { display: inline-flex; height: 40px; align-items: center; justify-content: center; border: 0; background: transparent; padding: 8px 16px; color: inherit; font: inherit; font-weight: 500; white-space: nowrap; cursor: pointer; text-decoration: none; transition: color 150ms, background 150ms; }
.storefront-global-nav__button:hover, .storefront-global-nav__button[aria-expanded="true"] { color: var(--cta); background: var(--gray-100); }
.storefront-global-nav__button[aria-expanded="true"] { background: var(--gray-100); }
.storefront-global-nav__chevron { position: relative; top: 1px; width: 12px; height: 12px; margin-left: 4px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform 300ms ease-out; }
[aria-expanded="true"] > .storefront-global-nav__chevron { transform: rotate(-180deg); }
/* Astro's product bar steps with Tailwind's lg/xl/2xl breakpoints: text-xs
 * below xl, px-1 buttons below lg, and space-x-0 / lg:1 / xl:1.5 / 2xl:6. */
@media (max-width: 1279.98px) { .storefront-global-nav ul { gap: 4px; font-size: 12px; } }
@media (max-width: 1023.98px) {
  .storefront-global-nav ul { gap: 0; }
  .storefront-global-nav__button { padding-right: 4px; padding-left: 4px; }
}
@media (min-width: 1536px) { .storefront-global-nav ul { gap: 24px; } }

/* Mega-menu dropdown (shared wrapper + per-panel layouts). */
.customer-mega-menu { position: absolute; top: 100%; left: 0; right: 0; z-index: 30; width: 100%; border-top: 1px solid var(--gray-200); }
.customer-mega-menu[hidden] { display: none; }
.customer-mega-menu__surface { display: flex; justify-content: center; width: 100%; background: #fff; box-shadow: var(--shadow-lg); color: var(--secondary-light); font-size: 12px; }
.customer-mega-panel { display: flex; width: 100%; flex-direction: column; }

.nav-mega-explainer { width: 100%; border-bottom: 1px solid var(--gray-200); background: #fff; padding: 12px 24px; color: var(--secondary-lighter); font-size: 14px; }
.nav-mega-explainer p { margin: 0; text-align: left; }
.nav-mega-explainer--center p { text-align: center; }
.nav-mega-explainer em, .nav-mega-explainer--italic p { font-style: italic; }
.nav-mega-explainer__cta { margin-left: 8px; color: var(--cta); text-decoration: none; }
.nav-mega-explainer__cta:hover { color: rgba(51, 103, 124, 0.8); }
.nav-mega-explainer--bar { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.nav-mega-explainer--bar p { min-width: 0; flex: 1; font-style: italic; padding-right: 8px; }
.nav-mega-explainer--bar .nav-mega-explainer__cta { flex: 0 0 auto; margin-left: 0; align-self: flex-end; font-weight: 700; }

.nav-mega-grid { display: grid; width: 100%; padding: 24px; gap: 32px; }
.nav-mega-grid--cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.nav-mega-grid--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.nav-mega-grid > div { min-width: 0; }
.nav-mega-scroll { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.nav-mega-scroll .nav-mega-grid--cols-5 { min-width: 896px; }

.nav-col-label { margin: 0 0 8px; padding: 0 14px; color: var(--bone-900); font-size: 10px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; }
.nav-col-label--follow { margin-top: 16px; }
.nav-col-label--strip { padding: 0; margin-bottom: 12px; }

.nav-mega-link { display: block; border-radius: 2px; padding: 4px 14px; color: var(--secondary-light); font-weight: 700; text-decoration: none; }
.nav-mega-link:hover { background: var(--gray-100); }
.nav-mega-link--inline { display: inline; padding: 0; border-radius: 0; color: var(--cta); }
.nav-mega-link--inline:hover { background: transparent; color: rgba(51, 103, 124, 0.8); }

.nav-badge { display: inline-flex; margin-left: 8px; align-items: center; border-radius: 999px; padding: 2px 8px; color: #fff; font-size: 10px; font-weight: 700; letter-spacing: 0.08em; line-height: 1; text-transform: uppercase; vertical-align: middle; }
.nav-badge--new { background: #2f7d6b; }
.nav-badge--hot { background: #e7872e; }
.nav-badge--foil { background: #a8831f; }
.nav-badge--coming-soon { background: #5a6b7d; }

/* Right-hand promo tile in the postcards / direct-mail grids. */
.nav-promo-tile { position: relative; display: none; min-width: 0; flex-direction: column; justify-content: space-between; overflow: hidden; border-radius: 6px; background: var(--v-blue-dark); padding: 20px; color: #fff; }
.nav-promo-tile__circle { position: absolute; right: -80px; bottom: -80px; width: 224px; height: 224px; border-radius: 50%; background: rgba(255, 255, 255, 0.1); pointer-events: none; }
.nav-promo-tile__body { position: relative; z-index: 1; }
.nav-promo-tile__eyebrow { margin: 0 0 8px; color: rgba(255, 255, 255, 0.7); font-size: 10px; letter-spacing: 0.15em; text-transform: uppercase; }
.nav-promo-tile__title { margin: 0; font-size: 16px; font-weight: 500; }
.nav-promo-tile__copy { margin: 8px 0 0; color: rgba(255, 255, 255, 0.8); font-size: 12px; line-height: 20px; }
.nav-promo-tile__cta { position: relative; z-index: 1; margin-top: 16px; display: flex; width: 100%; align-items: center; justify-content: center; border-radius: 2px; background: #fff; padding: 6px 12px; color: #203948; font-size: 12px; font-weight: 500; text-align: center; text-decoration: none; }
.nav-promo-tile__cta:hover { background: var(--gray-100); }

/* Full-width strip under a panel (Quick Links / Team and Bulk / upload CTA). */
.nav-mega-strip { width: 100%; flex-shrink: 0; border-top: 1px solid var(--gray-200); }
.nav-mega-strip__inner { padding: 16px 24px; text-align: center; }
.nav-mega-strip__buttons { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px; }
.nav-quicklink-btn { display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--gray-300); border-radius: 2px; background: #fff; padding: 8px 16px; color: var(--secondary-light); font-size: 12px; font-weight: 700; text-decoration: none; }
.nav-quicklink-btn:hover { border-color: var(--gray-400); background: var(--gray-50); }
.nav-quicklink-btn--stack { flex-direction: column; padding: 10px 16px; text-align: center; }
.nav-quicklink-btn--stack .nav-quicklink-btn__sub { margin-top: 2px; display: block; color: var(--secondary-lighter); font-size: 10px; font-weight: 400; line-height: 1.25; }

/* Custom-upload tiles. */
.nav-upload-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; padding: 16px 20px; }
.nav-upload-tile { display: flex; flex-direction: column; align-items: center; border: 1px solid var(--gray-200); border-radius: 6px; background: #fff; padding: 10px 8px; text-align: center; text-decoration: none; box-shadow: var(--shadow-sm); transition: transform 200ms ease-out, box-shadow 200ms ease-out, border-color 200ms ease-out; }
.nav-upload-tile:hover { transform: translateY(-2px) scale(1.02); border-color: var(--gray-300); box-shadow: var(--shadow-md); }
.nav-upload-tile img { margin: 0 auto; height: 88px; width: auto; object-fit: contain; }
.nav-upload-tile__title { margin-top: 8px; display: block; color: var(--secondary-light); font-size: 12px; font-weight: 700; }
.nav-upload-tile__sub { margin-top: 2px; display: block; color: var(--secondary-lighter); font-size: 12px; }
.nav-custom-design-card { margin: 16px 24px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border: 1px solid var(--gray-200); border-radius: 6px; background: var(--bone-50); padding: 16px; }
.nav-custom-design-card__lead { display: flex; min-width: 0; flex: 1; align-items: flex-start; gap: 12px; }
.nav-custom-design-card__lead p { margin: 0; font-size: 14px; }
.nav-custom-design-card__lead p:first-child { color: var(--secondary-light); font-weight: 700; }
.nav-custom-design-card__lead p + p { color: var(--secondary-lighter); }

/* Icon-in-a-circle rows (Add a Listing / Start New Campaign / piggy bank). */
.nav-circle-icon { display: inline-flex; width: 36px; height: 36px; flex-shrink: 0; align-items: center; justify-content: center; border: 1px solid var(--gray-200); border-radius: 50%; background: #fff; color: var(--secondary); box-shadow: var(--shadow-sm); transition: border-color 150ms; }
.nav-circle-icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.nav-circle-icon--bone { border-color: var(--bone-200); background: var(--bone-100); color: var(--cta); }
.nav-plus-row { margin-top: 8px; display: flex; width: 100%; align-items: center; gap: 12px; border: 0; border-radius: 2px; background: transparent; padding: 10px 14px; color: var(--secondary-light); font: inherit; font-size: 12px; text-align: left; text-decoration: none; cursor: pointer; }
.nav-plus-row:hover { background: var(--gray-100); }
.nav-plus-row:hover .nav-circle-icon { border-color: var(--gray-300); }
.nav-plus-row strong { font-weight: 700; }
.nav-plus-row > span:last-child { min-width: 0; }
.nav-plus-row:has(.nav-plus-row__desc) { align-items: flex-start; }
.nav-plus-row__desc { display: block; margin-top: 4px; color: var(--secondary-lighter); font-size: 12px; font-weight: 500; line-height: 20px; }

/* Title + description links (Leads, Campaigns, Account panels). */
.nav-desc-link { display: block; border-radius: 2px; padding: 12px 14px; color: var(--secondary-light); text-decoration: none; }
.nav-desc-link--tight { padding: 4px 14px; }
.nav-desc-link:hover { background: var(--gray-100); }
.nav-desc-link strong { display: block; margin-bottom: 4px; font-weight: 700; }
.nav-desc-link span { display: block; color: var(--secondary-lighter); font-size: 12px; font-weight: 500; line-height: 20px; }
button.nav-desc-link { width: 100%; border: 0; background: transparent; font: inherit; font-size: 12px; text-align: left; cursor: pointer; }

/* Solutions cards. */
.nav-solutions-wrap { display: flex; width: 100%; justify-content: center; padding: 24px 24px 40px; }
.nav-solutions-cards { display: flex; width: 100%; max-width: 1024px; flex-direction: row; align-items: stretch; gap: 16px; }
.nav-solutions-card { display: flex; min-width: 0; flex: 1; flex-direction: column; border: 1px solid var(--gray-200); border-radius: 6px; background: #fff; padding: 20px; text-align: left; text-decoration: none; box-shadow: var(--shadow-sm); transition: transform 200ms ease-out, box-shadow 200ms ease-out; }
.nav-solutions-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.nav-solutions-card--teams { border-top: 3px solid var(--customer-primary); }
.nav-solutions-card--enterprise { border-top: 3px solid #1a2744; }
.nav-solutions-card__eyebrow { color: #a8831f; font-size: 10px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; }
.nav-solutions-card__title { margin-top: 6px; display: block; color: var(--secondary); font-size: 18px; font-weight: 700; line-height: 1.25; }
.nav-solutions-card__body { margin-top: 8px; display: block; color: var(--secondary-light); font-size: 14px; line-height: 20px; }

/* Leads / campaigns / account panel layouts. */
.nav-center-grid { display: grid; width: 100%; max-width: 896px; margin: 0 auto; padding: 24px; gap: 32px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.nav-center-grid--single { grid-template-columns: minmax(0, 1fr); }
.nav-campaign-cols { display: flex; width: 100%; max-width: 896px; margin: 0 auto; flex-flow: row wrap; align-items: stretch; justify-content: center; padding: 24px; column-gap: 48px; row-gap: 24px; }
.nav-campaign-cols > div { min-width: 0; flex: 1; max-width: 384px; flex-basis: min(100%, 24rem); }
.nav-account-wrap { display: flex; width: 100%; justify-content: center; padding: 24px; }
.nav-account-grid { display: inline-grid; max-width: 1024px; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; column-gap: 48px; row-gap: 16px; }
.nav-account-grid > div { min-width: 0; }
.nav-account-rep { margin: 0 14px 16px; border: 1px solid var(--gray-300); border-radius: 6px; background: #fff; padding: 14px; text-align: left; font-size: 14px; color: var(--secondary-light); }
.nav-account-rep__eyebrow { margin: 0; color: var(--bone-900); font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.nav-account-rep__intro { margin: 6px 0 0; color: var(--secondary-lighter); font-size: 12px; line-height: 20px; }
.nav-account-rep__name { margin: 8px 0 0; font-weight: 700; }
.nav-account-rep__contacts { margin-top: 4px; }
.nav-account-rep__contacts a { display: flex; min-width: 0; align-items: flex-start; gap: 8px; margin-top: 2px; color: inherit; text-decoration: none; }
.nav-account-rep__contacts a:hover { color: var(--cta); }
.nav-account-rep__contacts svg { width: 16px; height: 16px; margin-top: 2px; flex-shrink: 0; fill: none; stroke: var(--secondary-lighter); stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.nav-account-rep__contacts span { min-width: 0; overflow-wrap: anywhere; line-height: 1.375; }
.nav-account-rep__schedule { margin: 6px 0 0; font-size: 12px; }
.nav-account-rep__schedule a { color: var(--cta); font-weight: 500; text-decoration: none; }
.nav-account-rep__schedule a:hover { opacity: 0.6; }
.nav-account-help { margin: 0 0 12px; }
.customer-account-menu__help { padding: 8px 16px; }

.nav-account-btns { display: flex; flex-direction: column; gap: 8px; }
.nav-account-btn { display: flex; width: 100%; align-items: center; gap: 8px; border-radius: 2px; padding: 10px 14px; color: var(--secondary-light); font-weight: 700; text-decoration: none; }
.nav-account-btn:hover { background: var(--gray-100); }
.nav-account-btn svg { width: 16px; height: 16px; flex-shrink: 0; fill: none; stroke: var(--secondary-lighter); stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.nav-account-divider { margin-top: 12px; border-top: 1px solid var(--gray-200); padding-top: 12px; }
.nav-about-cols { display: flex; width: 100%; align-items: stretch; justify-content: center; padding: 24px; gap: 0 16px; }
.nav-about-cols > div { width: 288px; min-width: max-content; }
.nav-about-cols--divided > div + div { border-left: 1px solid var(--gray-200); padding-left: 8px; margin-left: 16px; }
.nav-admin-col { display: flex; width: 100%; justify-content: center; padding: 24px; }
.nav-admin-col > div { width: 288px; }

/* Mobile menu dialog (nav.astro's md:hidden drawer). */
.customer-mobile-dialog[hidden] { display: none; }
.customer-mobile-dialog { position: fixed; inset: 0; z-index: 80; }
.customer-mobile-dialog__backdrop { position: absolute; inset: 0; width: 100%; border: 0; background: rgba(0, 0, 0, 0.25); }
.customer-mobile-dialog__drawer { position: absolute; top: 0; right: 0; bottom: 0; width: min(100%, 384px); overflow-y: auto; background: #fff; padding: 24px; color: var(--secondary-light); box-shadow: 0 0 0 1px rgba(24, 24, 27, 0.1); }
.customer-mobile-dialog__heading { display: flex; align-items: center; justify-content: space-between; }
.customer-mobile-dialog__heading .customer-brand__logo { height: 32px; }
.customer-mobile-dialog__close { display: inline-flex; width: 40px; height: 40px; align-items: center; justify-content: center; border: 0; border-radius: 6px; background: transparent; color: var(--secondary-light); cursor: pointer; }
.customer-mobile-dialog .catalog-search { margin-top: 24px; }
.customer-mobile-dialog__groups { margin-top: 18px; border-top: 1px solid rgba(113, 113, 122, 0.1); }
.customer-mobile-group { border-bottom: 1px solid rgba(113, 113, 122, 0.1); }
.customer-mobile-group > button,
.customer-mobile-group > a { width: 100%; min-height: 56px; display: flex; align-items: center; justify-content: space-between; border: 0; border-radius: 6px; background: transparent; padding: 8px 0; color: var(--secondary-light); font: inherit; font-size: 16px; font-weight: 700; text-align: left; cursor: pointer; text-decoration: none; }
.customer-mobile-group > button:hover,
.customer-mobile-group > a:hover { background: var(--gray-50); }
.customer-mobile-group__chevron { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform 300ms ease-out; }
[aria-expanded="true"] > .customer-mobile-group__chevron { transform: rotate(-180deg); }
.customer-mobile-group__panel { padding: 0 0 16px 12px; }
.customer-mobile-group__panel[hidden] { display: none; }
.customer-mobile-group__panel p { margin: 0 0 10px; color: var(--secondary-lighter); font-size: 14px; font-style: italic; }
.customer-mobile-group__panel .nav-col-label { padding: 0; margin-top: 12px; }
.customer-mobile-group__panel a:not(.storefront-help-pill) { display: block; padding: 7px 4px; color: var(--secondary-light); font-size: 14px; font-weight: 700; text-decoration: none; }
.customer-mobile-group__panel a:not(.storefront-help-pill):hover { color: var(--cta); }
.customer-mobile-group__primary-link { color: var(--cta) !important; }
.customer-mobile-dialog__account { display: flex; flex-direction: column; padding-top: 16px; }
.customer-mobile-dialog__account a { display: flex; align-items: center; gap: 10px; padding: 10px 0; color: var(--secondary-light); font-size: 16px; font-weight: 700; text-decoration: none; }
.customer-mobile-dialog__account a:hover { color: var(--cta); }
.customer-mobile-open { overflow: hidden; }

/* "Referred by" business card above the footer. */
.customer-referral { border-top: 1px solid var(--gray-200); background: #fff; }
.customer-referral__inner { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; padding: 24px 0 32px; }
.customer-referral__eyebrow { margin: 0; color: var(--secondary-lighter); font-size: 12px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; }
.customer-referral__photo { width: 72px; height: auto; max-width: 100%; }
.customer-referral__card { border-right: 1px solid var(--gray-200); padding-right: 24px; }
.customer-referral__card p { margin: 0; color: var(--secondary-lighter); font-size: 12px; }
.customer-referral__name { font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
.customer-referral__logo { width: 140px; height: auto; max-width: 100%; }

/* Footer (footer.astro): bg-neutral-600, max-w-7xl container. */
.customer-footer { background: var(--neutral-600); color: rgba(255, 255, 255, 0.9); }
.customer-footer__container { width: 100%; max-width: 1280px; margin: 0 auto; padding: 64px 32px 32px; }
.customer-footer__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px; }
.customer-footer__grid section { min-width: 0; }
.customer-footer h3 { margin: 0; color: #fff; font-family: inherit; font-size: 14px; font-weight: 700; letter-spacing: 0.05em; line-height: 1.5rem; text-transform: uppercase; }
.customer-footer h3 + * { margin-top: 12px; }
.customer-footer section > h3:not(:first-child) { margin-top: 32px; }
.customer-footer ul { margin: 0; padding: 0; list-style: none; font-size: 14px; font-weight: 500; line-height: 20px; }
.customer-footer li + li { margin-top: 8px; }
.customer-footer__support li + li { margin-top: 4px; }
.customer-footer li strong { color: #fff; font-weight: 500; }
.customer-footer a { color: rgba(255, 255, 255, 0.9); font-size: 14px; font-weight: 500; line-height: 20px; text-decoration: none; }
.customer-footer a:hover { color: #fff; }
.customer-footer a.customer-footer__bold-link { font-weight: 700; }
.customer-footer__note { margin: 12px 0 0; font-size: 12px; font-weight: 500; line-height: 1.625; }
.customer-footer__locations li + li { margin-top: 16px; }
.customer-footer__locations li span:first-child { color: #fff; }

.newsletter-card { margin-top: 32px; border: 1px solid rgba(35, 36, 34, 0.8); border-radius: 6px; padding: 16px; background: rgba(66, 66, 64, 0.6); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.25), inset 0 0 0 1px rgba(255, 255, 255, 0.1); }
.newsletter-card__eyebrow { margin: 0; color: rgba(110, 231, 183, 0.95); font-size: 10px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; }
.newsletter-card h3 { margin: 4px 0 0; font-size: 13px; line-height: 1.375; }
.newsletter-card p { margin: 8px 0 0; color: rgba(255, 255, 255, 0.7); font-size: 12px; font-weight: 500; line-height: 1.625; }
.newsletter-card a { display: flex; margin-top: 16px; width: 100%; align-items: center; justify-content: center; border-radius: 6px; background: #fff; padding: 10px 16px; color: var(--neutral-900) !important; font-size: 14px; font-weight: 700; letter-spacing: 0.025em; text-align: center; text-transform: uppercase; box-shadow: var(--shadow-sm); }
.newsletter-card a:hover { background: var(--neutral-100); }

.social-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.social-links a { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: #fff; box-shadow: var(--shadow-sm), inset 0 0 0 1px rgba(0, 0, 0, 0.05); transition: background 150ms; }
.social-links img { width: 16px; height: 16px; filter: brightness(0); }
.social-links a:hover { background: var(--neutral-100); }

/* Catalog category + product pages. These are the computed equivalents of
 * Astro's catalog grids and left nav, expressed as reusable Rails classes so
 * every migrated page keeps the same spacing, breakpoints and store tokens. */
.customer-catalog { display: flex; width: 100%; align-items: stretch; background: #fff; }
.customer-catalog-nav { width: 16.6667%; flex: 0 0 16.6667%; border-right: 1px solid var(--gray-200); background: #fff; }
/* Astro's left-nav column: pl-6 pb-24, no top or right padding. */
.customer-catalog-nav__desktop { padding: 0 0 96px 24px; }
.customer-catalog-nav__mobile { display: none; }
.customer-catalog-tree__group { margin: 0; }
/* Astro rows: py-2 wrapper + py-1 heading button = 12px above and below a 20px line. */
.customer-catalog-tree__heading { position: relative; display: flex; align-items: flex-start; gap: 8px; padding: 12px 8px 12px 24px; color: var(--gray-900); font-size: 14px; font-weight: 400; line-height: 20px; cursor: pointer; list-style: none; }
.customer-catalog-tree__heading::-webkit-details-marker { display: none; }
/* My Templates heading: inline-flex items-center gap-1.5 with a 14px text-amber-500 star. */
.customer-catalog-tree__pinned { display: inline-flex; min-width: 0; align-items: center; gap: 6px; }
.customer-catalog-tree__pinned > svg { width: 14px; height: 14px; flex-shrink: 0; fill: oklch(0.769 0.188 70.08); }
/* Astro's 12px heroicons plus/minus (stroke 1.5, text-gray-500), 14px into the row. */
.customer-catalog-tree__heading::before { content: ""; position: absolute; top: 14px; left: 4px; width: 12px; height: 12px; background-color: var(--gray-500); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4.5v15m7.5-7.5h-15'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4.5v15m7.5-7.5h-15'/%3E%3C/svg%3E") center / contain no-repeat; }
.customer-catalog-tree details[open] > .customer-catalog-tree__heading::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E"); }
.customer-catalog-tree__heading:hover,
.customer-catalog-tree__group.is-active .customer-catalog-tree__heading { color: var(--gray-900); }
/* Open group: Astro's heading keeps only py-1 below it, then the panel's pt-1;
 * after the links come the panel's pb-2 and the row's py-2. */
.customer-catalog-tree details[open] > .customer-catalog-tree__heading { padding-bottom: 8px; }
.customer-catalog-tree__children { padding: 0 0 16px 24px; }
.customer-catalog-tree__children a { display: block; padding: 6px 0; color: var(--gray-600); font-size: 14px; line-height: 20px; text-decoration: none; }
.customer-catalog-tree__children a:hover,
.customer-catalog-tree__children a.is-active { color: var(--cta); font-weight: 700; }
.customer-catalog-tree__children a.customer-catalog-tree__all { color: var(--cta); font-weight: 400; }
.customer-catalog-content { width: 83.3333%; min-width: 0; flex: 1 1 auto; padding: 24px 32px 96px; }
.customer-catalog-banner { width: 100%; max-width: 1280px; margin: 0 auto 32px; padding-top: 24px; }
.customer-catalog-hero { display: flex; width: 100%; min-height: 132px; align-items: center; justify-content: center; gap: 24px; padding: 24px 16px 16px; background: #fff; }
.customer-catalog-hero > img { max-width: 34%; max-height: 180px; object-fit: contain; }
.customer-catalog-hero > div { width: min(100%, 640px); }
.customer-catalog-hero h1 { color: var(--secondary); font-size: 24px; font-weight: 500; letter-spacing: -0.025em; text-align: center; }
.customer-catalog-hero__description { width: 75%; margin: 0 auto; padding: 24px 0 8px; color: var(--secondary-lighter); font-size: 14px; line-height: 1.625; text-align: left; }
.customer-category-grid,
.customer-product-grid { display: grid; width: 100%; max-width: 1280px; margin: 0 auto; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: 24px; row-gap: 40px; }
.customer-category-card,
.customer-product-card { position: relative; display: flex; min-width: 0; height: 100%; flex-direction: column; overflow: hidden; border: 1px solid var(--gray-200); background: #fff; color: inherit; text-decoration: none; }
.customer-category-card { border-radius: 8px; }
.customer-category-card__image { display: flex; min-height: 1px; flex-wrap: wrap; align-items: center; background: #fff; }
.customer-category-card__image img { display: block; width: 100%; height: auto; object-fit: cover; object-position: center; transition: opacity 150ms; }
.customer-category-card:hover .customer-category-card__image img,
.customer-product-card:hover .customer-product-card__image img { opacity: 0.75; }
.customer-category-card__body { display: flex; flex: 1 1 auto; flex-direction: column; padding: 16px; text-align: center; }
.customer-category-card__body strong { color: var(--secondary-light); font-size: 20px; font-weight: 500; line-height: 1.4; }
.customer-category-card__body em { color: var(--cta); font-size: 14px; font-style: italic; }
.customer-product-card__image { display: block; aspect-ratio: 1; overflow: hidden; background: #fff; }
.customer-product-card__image img { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center; transition: opacity 150ms; }
.customer-product-card__body { display: flex; flex: 1 1 auto; flex-direction: column; justify-content: flex-end; padding: 16px; text-align: center; }
.customer-product-card__body strong { color: var(--secondary-light); font-size: 14px; font-weight: 700; }
.customer-product-card__body small { display: block; color: var(--secondary-lighter); font-size: 12px; line-height: 18px; }
.customer-catalog-sizes { display: flex; max-width: 1280px; margin: 0 auto 24px; flex-wrap: wrap; align-items: center; gap: 8px; color: var(--secondary-lighter); font-size: 12px; }
.customer-catalog-sizes > span { font-weight: 700; }
.customer-catalog-sizes a { border: 1px solid var(--gray-300); border-radius: 2px; padding: 6px 10px; color: var(--secondary-light); text-decoration: none; }
.customer-catalog-sizes a:hover,
.customer-catalog-sizes a.is-active { border-color: var(--cta); background: var(--cta); color: #fff; }
.customer-catalog-empty { max-width: 1280px; margin: 32px auto; color: var(--secondary-lighter); text-align: center; }
.customer-catalog-seo { max-width: 1280px; margin: 32px auto 0; padding-top: 8px; color: var(--secondary-lighter); font-size: 12px; line-height: 1.625; }

.customer-footer__legal { margin-top: 64px; border-top: 1px solid rgba(255, 255, 255, 0.1); padding-top: 32px; display: flex; flex-direction: column; align-items: center; justify-content: space-between; }
.customer-footer__legal p { margin: 0; padding-top: 12px; color: #fff; font-size: 12px; line-height: 16px; }
.customer-footer__legal a { color: #fff; font-size: 12px; line-height: 16px; }
.customer-footer__legal p:last-child { padding-top: 8px; }
.customer-footer__merchant { display: block; width: 56px; height: auto; }

@media (max-width: 1024px) {
  .customer-footer__grid { gap: 40px; }
}

@media (min-width: 1024px) {
  .nav-promo-tile { display: flex; }
  .nav-mega-grid--cols-5-lg { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .nav-mega-grid--cols-4-lg { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 1023px) {
  .nav-mega-grid--cols-5-lg { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .nav-mega-grid--cols-4-lg { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  /* Below lg Astro gives the nav no width (lg:w-1/6 only): it takes its content
   * width and shrinks with the md:w-5/6 content column to fit the row. */
  .customer-catalog-nav { width: auto; flex: 0 1 auto; }
  .customer-catalog-content { width: 83.3333%; flex: 0 1 auto; padding-inline: 16px; }
  .customer-category-grid,
  .customer-product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 16px; }
}

/* Belt-and-suspenders with customer.js's breakpoint listener: a mobile menu
 * left open must never render (or expose duplicate landmarks) at desktop
 * widths, where the hamburger that closes it is hidden. */
@media (min-width: 769px) {
  .customer-mobile-dialog { display: none; }
}

@media (max-width: 768px) {
  .storefront-help-pills { padding: 8px 24px 0; }
  .storefront-help-pills--menu { padding: 0; }
  .customer-header__desktop { display: none; }
  /* Astro's nav px-2 + mobile row px-6 put the logo 32px in; the menu icon
   * sits 22px from the right edge. Neither changes below the md breakpoint. */
  .customer-header__mobile-bar { display: flex; width: 100%; align-items: center; justify-content: space-between; padding: 0 22px 0 32px; }
  .customer-header__mobile-bar .customer-brand__logo { height: 40px; margin: 8px 0; max-width: 210px; object-fit: contain; }
  .storefront-global-nav { display: none; }
  .customer-mega-menu { display: none; }
  .customer-referral__card { border-right: 0; padding-right: 0; }
  .customer-footer__container { padding: 44px 24px 32px; }
  .customer-footer__grid { grid-template-columns: 1fr; gap: 40px; }
  .customer-footer__legal { margin-top: 32px; }
  .customer-catalog { flex-direction: column; }
  .customer-catalog-nav { width: 100%; flex-basis: auto; border-right: 0; border-bottom: 1px solid var(--gray-200); }
  .customer-catalog-nav__desktop { display: none; }
  .customer-catalog-nav__mobile { display: block; }
  .customer-catalog-nav__mobile > summary { padding: 12px 24px; color: var(--secondary-light); font-size: 14px; font-weight: 700; cursor: pointer; }
  .customer-catalog-nav__mobile-panel { max-height: 55vh; overflow-y: auto; border-top: 1px solid var(--gray-200); padding: 16px 24px 24px; }
  .customer-catalog-content { width: 100%; padding: 16px 16px 64px; }
  .customer-catalog-banner { padding-top: 0; }
  .customer-catalog-hero { min-height: 0; margin-bottom: 20px; flex-direction: column; padding: 16px 0; }
  .customer-catalog-hero > img { max-width: 100%; max-height: none; }
  .customer-catalog-hero__description { width: 100%; padding-top: 16px; }
  .customer-category-grid,
  .customer-product-grid { grid-template-columns: 1fr; row-gap: 16px; }
}

@media (max-width: 420px) {
  .storefront-help-pills { padding: 8px 16px 0; }
  .customer-mobile-dialog__drawer { padding: 20px; }
}
