/* =====================================================================
   PELAGIQMARKET — GLOBAL DESIGN SYSTEM
   =====================================================================
   Design language: "Chart & Current" — the visual grammar of nautical
   charts, depth soundings, and ship instrumentation, applied to a
   modern commerce UI. Deep "abyss" surfaces for wayfinding moments
   (header, footer, hero), light "foam" surfaces for working screens
   (search, cart, checkout, orders, account) where legibility and speed
   matter more than atmosphere.

   FILE MAP
   ---------------------------------------------------------------------
   1. Tenant theme tokens   — the ONLY variables a tenant skin should
                               need to touch. Override these in a
                               [data-theme="..."] block (see bottom of
                               file for two worked examples) or by
                               writing tenant values into :root from
                               your React theme provider.
   2. Derived system tokens — spacing, radii, shadows, motion, z-index.
                               Rarely tenant-specific, but still exposed
                               as variables for consistency.
   3. Reset & base elements
   4. Typography utilities
   5. Layout utilities (container, grid, stack, cluster)
   6. Components: buttons, forms, badges, cards, breadcrumbs,
      pagination, tables, alerts, stepper, ratings, empty states,
      site header / nav, site footer, contour divider (signature motif)
   7. Demo-only tenant theme switcher (delete before shipping — see
      note at that section)

   REACT NOTES
   ---------------------------------------------------------------------
   Class names are intentionally flat and component-scoped (BEM-lite:
   `.block`, `.block__part`, `.block--variant`) so each block maps
   1:1 to a future component:
     .site-header        -> <Header />
     .site-footer        -> <Footer />
     .product-card        -> <ProductCard product={...} />
     .cart-item           -> <CartItem item={...} />
     .stepper              -> <CheckoutStepper step={n} />
     .order-row             -> <OrderRow order={...} />
   HTML comments of the form <!-- COMPONENT: Name --> ... <!-- /COMPONENT -->
   mark suggested component boundaries in each page.
   ===================================================================== */

/* ---------------------------------------------------------------------
   1. TENANT THEME TOKENS
   Everything a per-tenant skin needs lives here. In React, a
   ThemeProvider can set these on document.documentElement.style, or
   you can ship a stylesheet per tenant that only redeclares this block.
--------------------------------------------------------------------- */
:root {
  /* -- Brand palette -- */
  --color-primary: #155a9f;        /* Electric blue — primary action #087DF1;  */
  --color-primary-dark: #0669CF;     /* pressed/hover state */
  --color-primary-light: #0D3045;     /* elevated blue tint */
  --color-secondary: #25D8FF;        /* Light cyan — signal/accent */
  --color-secondary-dark: #17B9DE;
  --color-accent: #25D8FF;            /* Light cyan — highlight */
  --color-accent-dark: #17B9DE;
  --color-accent-light: #0D3045;

  /* -- Deep / atmospheric surfaces -- */
  --color-abyss: #020C16;             /* Deep Navy */
  --color-abyss-alt: #04192A;         /* Deep Blue */
  --color-abyss-line: rgba(116,190,226,0.22);

  /* -- Elevated dark working surfaces -- */
  --color-surface: #0A2638;            /* Elevated Dark Card */
  --color-surface-alt: #04192A;        /* Deep Blue working surface */
  --color-surface-sunken: #0D3045;     /* Card/input well */
  --color-border: rgba(116,190,226,0.22);
  --color-border-strong: rgba(116,190,226,0.34);

  /* -- Text -- */
  --color-text: #F5FBFF;
  --color-text-soft: #A8BDCB;
  --color-text-faint: #789FB3;
  --color-text-on-dark: #F5FBFF;
  --color-text-on-dark-soft: #A8BDCB;

  /* -- Status -- */
  --color-success: #1E8A5F;
  --color-success-bg: rgba(79,214,168,0.14);
  --color-warning: #B4791A;
  --color-warning-bg: rgba(244,184,77,0.14);
  --color-danger: #C4432E;
  --color-danger-bg: rgba(196,67,46,0.14);
  --color-info: var(--color-secondary);
  --color-info-bg: rgba(37,216,255,0.12);

  /* -- Typography -- */
  --font-display: "Space Grotesk", "Helvetica Neue", Arial, sans-serif;
  --font-body: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;

  /* -- Shape -- */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 18px;
  --radius-pill: 999px;
  
  /* Link */
  --color-link: #a7bed5;
}

/* ---------------------------------------------------------------------
   2. DERIVED SYSTEM TOKENS
--------------------------------------------------------------------- */
:root {
  --space-3xs: 0.25rem;
  --space-2xs: 0.5rem;
  --space-xs: 0.75rem;
  --space-sm: 1rem;
  --space-md: 1.5rem;
  --space-lg: 2.5rem;
  --space-xl: 4rem;
  --space-2xl: 6rem;
  --space-3xl: 8.5rem;

  --container-width: 1280px;
  --container-pad: clamp(1.25rem, 4vw, 2.5rem);

  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.22), 0 1px 1px rgba(0, 0, 0, 0.16);
  --shadow-md: 0 6px 20px rgba(0, 0, 0, 0.28), 0 2px 6px rgba(0, 0, 0, 0.16);
  --shadow-lg: 0 20px 45px rgba(0, 0, 0, 0.42), 0 6px 16px rgba(0, 0, 0, 0.20);
  --shadow-focus: 0 0 0 3px rgba(37, 216, 255, 0.32);

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --duration-fast: 140ms;
  --duration-base: 220ms;
  --duration-slow: 420ms;

  --z-nav: 100;
  --z-overlay: 200;
  --z-toast: 300;
}

@media (prefers-reduced-motion: reduce) {
  :root { --duration-fast: 0ms; --duration-base: 0ms; --duration-slow: 0ms; }
}

/* ---------------------------------------------------------------------
   3. RESET & BASE ELEMENTS
--------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.55;
  color: var(--color-text);
  background: var(--color-surface-alt);
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
}

img, picture, svg { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; padding: 0; }
table { border-collapse: collapse; width: 100%; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -0.01em;
}

:focus-visible {
  outline: 2px solid var(--color-secondary);
  outline-offset: 2px;
  border-radius: 4px;
}

::selection { background: var(--color-secondary); color: #fff; }

/* Scrollbar accent (progressive enhancement, non-blocking) */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--color-surface-alt); }
::-webkit-scrollbar-thumb { background: var(--color-border-strong); border-radius: var(--radius-pill); }

/* ---------------------------------------------------------------------
   4. TYPOGRAPHY UTILITIES
--------------------------------------------------------------------- */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-secondary);
}
.eyebrow::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
  box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 20%, transparent);
  flex: none;
}
.eyebrow--on-dark { color: var(--color-secondary); }

.display-1 {
  font-size: clamp(2.6rem, 5vw + 1rem, 4.75rem);
  font-weight: 600;
  letter-spacing: -0.02em;
}
.display-2 {
  font-size: clamp(2rem, 3vw + 1rem, 3rem);
  font-weight: 600;
  letter-spacing: -0.015em;
}
.heading-1 { font-size: clamp(1.6rem, 1.4vw + 1rem, 2.1rem); }
.heading-2 { font-size: 1.375rem; }
.heading-3 { font-size: 1.125rem; }

.text-lead {
  font-size: 1.125rem;
  line-height: 1.6;
  color: var(--color-text-soft);
}
.text-small { font-size: 0.875rem; }
.text-micro { font-size: 0.75rem; }
.text-mono { font-family: var(--font-mono); }
.text-soft { color: var(--color-text-soft); }
.text-faint { color: var(--color-text-faint); }
.text-on-dark { color: var(--color-text-on-dark); }
.text-on-dark-soft { color: var(--color-text-on-dark-soft); }
.text-accent { color: var(--color-accent); }
.text-secondary { color: var(--color-secondary); }

/* ---------------------------------------------------------------------
   5. LAYOUT UTILITIES
--------------------------------------------------------------------- */
.container {
  width: 100%;
  max-width: var(--container-width);
  margin-inline: auto;
  padding-inline: var(--container-pad);
}

.section { padding-block: var(--space-2xl); }
.section--tight { padding-block: var(--space-lg); }
.section--deep {
  background: var(--color-abyss);
  color: var(--color-text-on-dark);
}

.stack > * + * { margin-top: var(--gap, var(--space-md)); }
.cluster {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gap, var(--space-sm));
}

.grid { display: grid; gap: var(--gap, var(--space-md)); }

.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;
}

.skip-link {
  position: absolute;
  left: var(--space-sm);
  top: -60px;
  background: var(--color-accent);
  color: var(--color-abyss);
  padding: 0.6em 1em;
  border-radius: var(--radius-sm);
  font-weight: 600;
  z-index: var(--z-toast);
  transition: top var(--duration-base) var(--ease-out);
}
.skip-link:focus { top: var(--space-sm); }

/* ---------------------------------------------------------------------
   6a. BUTTONS
--------------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.55em;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.95rem;
  line-height: 1;
  padding: 0.9em 1.5em;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  transition: transform var(--duration-fast) var(--ease-out),
              background-color var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out),
              box-shadow var(--duration-fast) var(--ease-out);
  white-space: nowrap;
}
.btn svg { width: 1.05em; height: 1.05em; flex: none; }
.btn:active { transform: translateY(1px); }
.btn:disabled, .btn[aria-disabled="true"] {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

.btn--primary {
  background: var(--color-accent);
  color: var(--color-abyss);
  border-color: var(--color-accent);
}
.btn--primary:hover:not(:disabled) { background: var(--color-accent-dark); border-color: var(--color-accent-dark); }

.btn--dark {
  background: var(--color-primary);
  color: #fff;
  border-color: var(--color-primary);
}
.btn--dark:hover:not(:disabled) { background: var(--color-primary-dark); border-color: var(--color-primary-dark); }

.btn--outline {
  background: transparent;
  color: var(--color-primary);
  border-color: var(--color-border-strong);
}
.btn--outline:hover:not(:disabled) { border-color: var(--color-primary); background: var(--color-primary-light); }

.btn--outline-on-dark {
  background: transparent;
  color: var(--color-text-on-dark);
  border-color: var(--color-abyss-line);
}
.btn--outline-on-dark:hover:not(:disabled) { border-color: var(--color-secondary); color: #fff; }

.btn--ghost {
  background: transparent;
  color: var(--color-text-soft);
  border-color: transparent;
  padding-inline: 0.75em;
}
.btn--ghost:hover:not(:disabled) { color: var(--color-primary); }

.btn--danger-ghost {
  background: transparent;
  color: var(--color-danger);
  border-color: transparent;
  padding-inline: 0.75em;
}
.btn--danger-ghost:hover:not(:disabled) { background: var(--color-danger-bg); }

.btn--sm { padding: 0.55em 1em; font-size: 0.85rem; }
.btn--lg { padding: 1.05em 2em; font-size: 1rem; }
.btn--block { width: 100%; }
.btn--icon { padding: 0.65em; border-radius: var(--radius-sm); }

.link {
  color: var(--color-link);
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: var(--color-border-strong);
  text-underline-offset: 3px;
}
.link:hover { text-decoration-color: currentColor; }

/* ---------------------------------------------------------------------
   6b. FORMS
--------------------------------------------------------------------- */
.field { display: flex; flex-direction: column; gap: 0.45rem; }
.field__label {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-text);
}
.field__label .optional { color: var(--color-text-faint); font-weight: 400; }
.field__hint { font-size: 0.8rem; color: var(--color-text-faint); }
.field__error {
  font-size: 0.8rem;
  color: var(--color-danger);
  display: flex;
  align-items: center;
  gap: 0.35em;
}

.input, .select, .textarea {
  width: 100%;
  background: var(--color-surface);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  padding: 0.8em 0.95em;
  font-size: 0.95rem;
  color: var(--color-text);
  transition: border-color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);
}
.input::placeholder, .textarea::placeholder { color: var(--color-text-faint); }
.input:focus, .select:focus, .textarea:focus {
  outline: none;
  border-color: var(--color-secondary);
  box-shadow: var(--shadow-focus);
}
.input[aria-invalid="true"], .select[aria-invalid="true"] {
  border-color: var(--color-danger);
}
.textarea { resize: vertical; min-height: 6.5em; }

.select-wrap { position: relative; }
.select {
  appearance: none;
  padding-right: 2.5em;
}
.select-wrap::after {
  content: "";
  position: absolute;
  right: 0.9em; top: 50%;
  width: 10px; height: 10px;
  border-right: 2px solid var(--color-text-faint);
  border-bottom: 2px solid var(--color-text-faint);
  transform: translateY(-70%) rotate(45deg);
  pointer-events: none;
}

.input-group { display: flex; }
.input-group .input { border-radius: var(--radius-sm) 0 0 var(--radius-sm); }
.input-group .btn { border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }

.checkbox-row, .radio-row {
  display: flex;
  align-items: flex-start;
  gap: 0.65em;
  font-size: 0.9rem;
  cursor: pointer;
}
.checkbox-row input, .radio-row input {
  width: 1.15em; height: 1.15em;
  accent-color: var(--color-primary);
  margin-top: 0.15em;
  flex: none;
}

.select-card {
  display: flex;
  align-items: center;
  gap: 0.85em;
  border: 1.5px solid var(--color-border-strong);
  border-radius: var(--radius-md);
  padding: 0.95em 1.1em;
  cursor: pointer;
  transition: border-color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);
}
.select-card:hover { border-color: var(--color-secondary); }
.select-card input { accent-color: var(--color-primary); width: 1.15em; height: 1.15em; flex: none; }
.select-card.is-selected {
  border-color: var(--color-primary);
  background: var(--color-primary-light);
}
.select-card__body { display: flex; flex-direction: column; gap: 0.2em; }
.select-card__body b { font-size: 0.9rem; }
.select-card__body span { font-size: 0.82rem; color: var(--color-text-soft); }

/* ---------------------------------------------------------------------
   6c. BADGES / TAGS / PILLS
--------------------------------------------------------------------- */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  font-size: 0.75rem;
  font-weight: 600;
  padding: 0.32em 0.75em;
  border-radius: var(--radius-pill);
  white-space: nowrap;
}
.badge--success { background: var(--color-success-bg); color: var(--color-success); }
.badge--warning { background: var(--color-warning-bg); color: var(--color-warning); }
.badge--danger  { background: var(--color-danger-bg);  color: var(--color-danger); }
.badge--info    { background: var(--color-info-bg);    color: var(--color-secondary-dark); }
.badge--neutral { background: var(--color-surface-sunken); color: var(--color-text-soft); }
.badge--brass   { background: var(--color-accent-light); color: var(--color-accent-dark); }
.badge--dot::before {
  content: "";
  width: 6px; height: 6px;
  border-radius: 50%;
  background: currentColor;
}

.chip {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  font-size: 0.82rem;
  font-weight: 500;
  background: var(--color-surface);
  border: 1px solid var(--color-border-strong);
  padding: 0.4em 0.5em 0.4em 0.9em;
  border-radius: var(--radius-pill);
}
.chip button {
  display: inline-flex;
  background: var(--color-surface-sunken);
  border-radius: 50%;
  padding: 0.3em;
}
.chip button svg { width: 0.7em; height: 0.7em; }

/* ---------------------------------------------------------------------
   6d. CARDS
--------------------------------------------------------------------- */
.card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.card--padded { padding: var(--space-md); }

/* ---------------------------------------------------------------------
   6d-2. PRODUCT THUMB GLYPHS
   Illustrated placeholders standing in for real product photography.
   Colors derive from the brand tokens, so swapping a tenant theme
   re-tints every product tile across the catalog automatically.
--------------------------------------------------------------------- */
.thumb {
  position: relative;
  aspect-ratio: 1;
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.thumb__glyph { width: 46%; height: 46%; }
.thumb--sm { border-radius: var(--radius-sm); }
.thumb--safety      { background: #0D3045; color: #25D8FF; }
.thumb--navigation  { background: #0D3045; color: #25D8FF; }
.thumb--rigging     { background: #0A2638; color: #087DF1; }
.thumb--aquaculture { background: #0D3045; color: #25D8FF; }
.thumb--engine      { background: #0A2638; color: #087DF1; }
.thumb--workwear    { background: #0D3045; color: #25D8FF; }

/* ---------------------------------------------------------------------
   6d-3. PRODUCT CARDS
   Shared by the landing page rail, search results grid, and any
   cross-sell rail on cart/checkout. One React <ProductCard/>, one
   stylesheet.
--------------------------------------------------------------------- */
.section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-sm);
  margin-bottom: var(--space-md);
  flex-wrap: wrap;
}
.product-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-sm);
}
.product-grid--4 { grid-template-columns: repeat(4, 1fr); }
.product-grid--list { grid-template-columns: 1fr; }

.product-card {
  display: flex;
  flex-direction: column;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: box-shadow var(--duration-base) var(--ease-out), transform var(--duration-base) var(--ease-out);
}
.product-card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }
.product-card__media { position: relative; padding: var(--space-sm); }
.product-card__badges { position: absolute; top: 0.9rem; left: 0.9rem; display: flex; flex-direction: column; gap: 0.35rem; }
.product-card__save {
  position: absolute; top: 0.9rem; right: 0.9rem;
  width: 2.1rem; height: 2.1rem;
  border-radius: 50%;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  display: flex; align-items: center; justify-content: center;
  color: var(--color-text-faint);
}
.product-card__save svg { width: 1rem; height: 1rem; }
.product-card__body { padding: 0 var(--space-sm) var(--space-sm); display: flex; flex-direction: column; gap: 0.5rem; flex: 1; }
.product-card__brand { font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--color-text-faint); }
.product-card__name { font-size: 0.98rem; font-weight: 600; line-height: 1.35; }
.product-card__name a:hover { color: var(--color-primary); }
.product-card__foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.product-card__price { display: flex; align-items: baseline; gap: 0.4em; }
.product-card__price b { font-family: var(--font-mono); font-size: 1.15rem; }
.product-card__price s { font-size: 0.8rem; color: var(--color-text-faint); }
.product-card__add {
  width: 2.5rem; height: 2.5rem;
  border-radius: 50%;
  background: var(--color-primary);
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  flex: none;
  transition: background var(--duration-fast) var(--ease-out);
}
.product-card__add:hover { background: var(--color-primary-dark); }
.product-card__add svg { width: 1.1rem; height: 1.1rem; }

/* Compact list-view variant, toggled on the search page */
.product-card--row {
  flex-direction: row;
  align-items: stretch;
}
.product-card--row .product-card__media { width: 9.5rem; flex: none; padding: var(--space-sm); }
.product-card--row .product-card__body { flex-direction: row; align-items: center; flex-wrap: wrap; padding: var(--space-sm); }
.product-card--row .product-card__info { flex: 1; min-width: 12rem; }
.product-card--row .product-card__foot { flex: none; }

@media (max-width: 1060px) { .product-grid--4 { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 860px) { .product-grid, .product-grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) {
  .product-grid, .product-grid--4 { grid-template-columns: 1fr 1fr; gap: var(--space-2xs); }
  .product-card--row { flex-direction: column; }
  .product-card--row .product-card__media { width: auto; }
}

/* ---------------------------------------------------------------------
   6d-4. ORDER SUMMARY CARD
   Shared by cart.html and checkout.html — one React <OrderSummary/>,
   one stylesheet, so totals never drift between the two screens.
--------------------------------------------------------------------- */
.summary-card { position: sticky; top: calc(4.75rem + var(--space-sm)); padding: var(--space-md); }
.summary-card h2 { font-size: 1.05rem; margin-bottom: var(--space-sm); }
.summary-row { display: flex; align-items: center; justify-content: space-between; font-size: 0.9rem; padding-block: 0.45rem; color: var(--color-text-soft); }
.summary-row b { color: var(--color-text); font-weight: 500; }
.summary-row--discount b { color: var(--color-success); }
.summary-row--total {
  border-top: 1px solid var(--color-border);
  margin-top: 0.5rem;
  padding-top: 0.85rem;
  font-size: 1.05rem;
  color: var(--color-text);
}
.summary-row--total b { font-family: var(--font-mono); font-size: 1.3rem; font-weight: 700; }

.coupon-row { display: flex; gap: 0.5rem; margin-block: var(--space-sm); }
.coupon-row .input { flex: 1; }
.coupon-applied {
  display: flex; align-items: center; justify-content: space-between;
  background: var(--color-success-bg); color: var(--color-success);
  border-radius: var(--radius-sm);
  padding: 0.6em 0.85em;
  font-size: 0.85rem;
  font-weight: 600;
  margin-block: var(--space-sm);
}
.coupon-applied button { color: var(--color-success); text-decoration: underline; font-weight: 600; }

.summary-trust { display: flex; flex-direction: column; gap: 0.6rem; margin-top: var(--space-md); padding-top: var(--space-md); border-top: 1px solid var(--color-border); }
.summary-trust__row { display: flex; align-items: center; gap: 0.6em; font-size: 0.82rem; color: var(--color-text-soft); }
.summary-trust__row svg { width: 1.1em; height: 1.1em; color: var(--color-secondary); flex: none; }

.payment-icons { display: flex; gap: 0.5rem; margin-top: var(--space-sm); flex-wrap: wrap; }
.payment-icons span {
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 600;
  padding: 0.3em 0.6em;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  color: var(--color-text-faint);
}

.summary-card__edit { font-size: 0.78rem; font-weight: 600; color: var(--color-primary); }
.summary-card__mini-item { display: flex; gap: 0.65rem; padding-block: 0.5rem; font-size: 0.85rem; }
.summary-card__mini-item .thumb { width: 3rem; flex: none; }
.summary-card__mini-item b { display: block; font-weight: 600; }
.summary-card__mini-item span { color: var(--color-text-faint); font-size: 0.78rem; }

@media (max-width: 940px) { .summary-card { position: static; } }

/* ---------------------------------------------------------------------
   6e. RATINGS
--------------------------------------------------------------------- */
.rating { display: inline-flex; align-items: center; gap: 0.35em; }
.rating__stars { display: inline-flex; gap: 0.1em; color: var(--color-accent); }
.rating__stars svg { width: 0.95em; height: 0.95em; }
.rating__count { font-size: 0.8rem; color: var(--color-text-faint); }

/* ---------------------------------------------------------------------
   6f. BREADCRUMBS
--------------------------------------------------------------------- */
.breadcrumbs {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5em;
  font-size: 0.85rem;
  color: var(--color-text-faint);
}
.breadcrumbs a { color: var(--color-text-soft); }
.breadcrumbs a:hover { color: var(--color-primary); }
.breadcrumbs svg { width: 0.8em; height: 0.8em; opacity: 0.6; }
.breadcrumbs [aria-current="page"] { color: var(--color-text); font-weight: 600; }

/* ---------------------------------------------------------------------
   6g. PAGINATION
--------------------------------------------------------------------- */
.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4em;
  flex-wrap: wrap;
}
.pagination a, .pagination span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5em;
  height: 2.5em;
  border-radius: var(--radius-sm);
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--color-text-soft);
}
.pagination a:hover { background: var(--color-surface-sunken); }
.pagination [aria-current="page"] { background: var(--color-primary); color: #fff; }
.pagination .pagination__ellipsis { color: var(--color-text-faint); }

/* ---------------------------------------------------------------------
   6h. TABLES
--------------------------------------------------------------------- */
.table-wrap { overflow-x: auto; border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-surface); }
.data-table { min-width: 640px; }
.data-table th, .data-table td { text-align: left; padding: 1em 1.25em; }
.data-table thead th {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-faint);
  background: var(--color-surface-alt);
  border-bottom: 1px solid var(--color-border);
}
.data-table tbody tr { border-bottom: 1px solid var(--color-border); }
.data-table tbody tr:last-child { border-bottom: none; }
.data-table tbody tr:hover { background: var(--color-surface-alt); }
.data-table td { font-size: 0.9rem; }

/* ---------------------------------------------------------------------
   6i. ALERTS / TOASTS
--------------------------------------------------------------------- */
.alert {
  display: flex;
  gap: 0.85em;
  align-items: flex-start;
  padding: 1em 1.15em;
  border-radius: var(--radius-md);
  font-size: 0.88rem;
  border: 1px solid transparent;
}
.alert svg { width: 1.2em; height: 1.2em; flex: none; margin-top: 0.1em; }
.alert--info { background: var(--color-info-bg); color: #0E4A46; border-color: #BFE6E2; }
.alert--success { background: var(--color-success-bg); color: #114E36; border-color: #BEE3D0; }
.alert--warning { background: var(--color-warning-bg); color: #6B4A0E; border-color: #EFD8A6; }
.alert--danger { background: var(--color-danger-bg); color: #7A2A1C; border-color: #F0C4B9; }

/* ---------------------------------------------------------------------
   6j. STEPPER (checkout progress)
--------------------------------------------------------------------- */
.stepper { display: flex; align-items: center; gap: 0; list-style: none; }
.stepper__item {
  display: flex;
  align-items: center;
  gap: 0.65em;
  color: var(--color-text-faint);
  font-size: 0.85rem;
  font-weight: 600;
}
.stepper__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2em; height: 2em;
  border-radius: 50%;
  border: 1.5px solid var(--color-border-strong);
  font-family: var(--font-mono);
  font-size: 0.8rem;
  flex: none;
}
.stepper__item.is-done .stepper__num {
  background: var(--color-secondary);
  border-color: var(--color-secondary);
  color: #fff;
}
.stepper__item.is-active { color: var(--color-text); }
.stepper__item.is-active .stepper__num {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
}
.stepper__connector {
  width: clamp(1.25rem, 4vw, 3.5rem);
  height: 1.5px;
  background: var(--color-border-strong);
  margin-inline: 0.5em;
}
.stepper__item.is-done + .stepper__connector { background: var(--color-secondary); }

/* ---------------------------------------------------------------------
   6k. EMPTY STATES
--------------------------------------------------------------------- */
.empty-state {
  text-align: center;
  padding: var(--space-2xl) var(--space-md);
  max-width: 30rem;
  margin-inline: auto;
}
.empty-state__icon {
  width: 4.5rem; height: 4.5rem;
  margin: 0 auto var(--space-md);
  border-radius: 50%;
  background: var(--color-primary-light);
  color: var(--color-primary);
  display: flex; align-items: center; justify-content: center;
}
.empty-state__icon svg { width: 2rem; height: 2rem; }

/* ---------------------------------------------------------------------
   6l. SITE HEADER / NAV
--------------------------------------------------------------------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: var(--z-nav);
  background: var(--color-abyss);
  color: var(--color-text-on-dark);
}
.site-header__utility {
  border-bottom: 1px solid var(--color-abyss-line);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.04em;
}
.site-header__utility .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 2.35rem;
  color: var(--color-text-on-dark-soft);
}
.site-header__utility .status-dot {
  display: inline-block;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #4FD6A8;
  box-shadow: 0 0 0 3px rgba(79,214,168,0.25);
  margin-right: 0.55em;
}
.site-header__utility a:hover { color: #fff; }

.site-header__main .container {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
  height: 4.75rem;
}

.brand { display: flex; align-items: center; gap: 0.65em; flex: none; }
.brand__mark {
  width: 2.15rem; height: 2.15rem;
  color: var(--color-accent);
  flex: none;
}
.brand__word {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.2rem;
  letter-spacing: -0.01em;
  color: #fff;
}
.brand__word span { color: var(--color-secondary); }

.main-nav { display: flex; align-items: center; gap: var(--space-md); flex: 1; }
.main-nav__list { display: flex; align-items: center; gap: var(--space-md); }
.main-nav__list a {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text-on-dark-soft);
  padding-block: 0.3rem;
  border-bottom: 2px solid transparent;
  transition: color var(--duration-fast) var(--ease-out);
}
.main-nav__list a:hover, .main-nav__list a[aria-current="page"] {
  color: #fff;
  border-color: var(--color-accent);
}

.header-search {
  flex: 1;
  max-width: 30rem;
  display: flex;
  align-items: center;
  gap: 0.6em;
  background: var(--color-abyss-alt);
  border: 1px solid var(--color-abyss-line);
  border-radius: var(--radius-pill);
  padding: 0.55em 1.1em;
  color: var(--color-text-on-dark-soft);
}
.header-search svg { width: 1.05em; height: 1.05em; flex: none; }
.header-search input {
  background: transparent;
  border: none;
  color: #fff;
  width: 100%;
  font-size: 0.88rem;
}
.header-search input::placeholder { color: var(--color-text-on-dark-soft); }
.header-search input:focus { outline: none; }

.header-actions { display: flex; align-items: center; gap: 0.4rem; flex: none; }
.icon-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.4rem; height: 2.4rem;
  border-radius: 50%;
  color: var(--color-text-on-dark-soft);
  transition: background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);
}
.icon-btn:hover { background: var(--color-abyss-alt); color: #fff; }
.icon-btn svg { width: 1.3rem; height: 1.3rem; }
.icon-btn__count {
  position: absolute;
  top: 0.1rem; right: 0.1rem;
  min-width: 1.05rem; height: 1.05rem;
  border-radius: 50%;
  background: var(--color-accent);
  color: var(--color-abyss);
  font-size: 0.62rem;
  font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  padding-inline: 0.15em;
  border: 2px solid var(--color-abyss);
}

.nav-toggle {
  display: none;
  width: 2.4rem; height: 2.4rem;
  border-radius: var(--radius-sm);
  color: #fff;
  align-items: center;
  justify-content: center;
}
.nav-toggle svg { width: 1.4rem; height: 1.4rem; }

@media (max-width: 960px) {
  .main-nav__list, .header-search { display: none; }
  .nav-toggle { display: inline-flex; }
}

/* Mobile nav drawer (progressive enhancement; toggled via [data-open] in js/site.js) */
.mobile-nav {
  display: none;
  position: fixed;
  inset: 0;
  z-index: var(--z-overlay);
}
.mobile-nav[data-open="true"] { display: block; }
.mobile-nav__scrim {
  position: absolute; inset: 0;
  background: rgba(4, 14, 22, 0.55);
}
.mobile-nav__panel {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: min(20rem, 85vw);
  background: var(--color-abyss);
  color: var(--color-text-on-dark);
  padding: var(--space-md);
  overflow-y: auto;
}
.mobile-nav__panel .main-nav__list { flex-direction: column; align-items: flex-start; gap: var(--space-sm); margin-top: var(--space-lg); }
.mobile-nav__close { margin-left: auto; }

/* ---------------------------------------------------------------------
   6m. CONTOUR DIVIDER — signature motif
   Concentric bathymetric contour lines, echoing depth-chart soundings.
   Used to transition between deep (abyss) and working (foam) sections.
--------------------------------------------------------------------- */
.contour-divider {
  display: block;
  width: 100%;
  height: clamp(48px, 8vw, 96px);
  color: var(--color-surface-alt);
}
.contour-divider--flip { transform: rotate(180deg); }

/* ---------------------------------------------------------------------
   6n. SITE FOOTER
--------------------------------------------------------------------- */
.site-footer {
  background: var(--color-abyss);
  color: var(--color-text-on-dark-soft);
}
.site-footer__top {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: var(--space-lg);
  padding-block: var(--space-2xl) var(--space-lg);
}
.site-footer__mission { max-width: 26rem; }
.site-footer__mission p { margin-top: var(--space-sm); font-size: 0.92rem; line-height: 1.7; }
.footer-col h3 {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-text-on-dark-soft);
  margin-bottom: var(--space-sm);
}
.footer-col ul { display: flex; flex-direction: column; gap: 0.65em; }
.footer-col a { font-size: 0.9rem; color: #DCE9EC; }
.footer-col a:hover { color: var(--color-accent); }

.site-footer__coords {
  border-top: 1px solid var(--color-abyss-line);
  padding-block: var(--space-sm);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm) var(--space-lg);
  font-family: var(--font-mono);
  font-size: 0.72rem;
  color: var(--color-text-on-dark-soft);
}
.site-footer__coords span b { color: #fff; font-weight: 600; }

.site-footer__bottom {
  border-top: 1px solid var(--color-abyss-line);
  padding-block: var(--space-sm);
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-sm);
  font-size: 0.8rem;
}
.site-footer__bottom .legal-links { display: flex; gap: var(--space-md); }

@media (max-width: 860px) {
  .site-footer__top { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .site-footer__top { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------------
   7. DEMO-ONLY TENANT THEME SWITCHER
   Not a product feature — a live demonstration that every color in
   this system flows from the token block in section 1. Wire this to
   `[data-theme]` on <html>; swap for your real ThemeProvider in React
   and delete this block + js/site.js#theme-switcher.
--------------------------------------------------------------------- */
[data-theme="kelp"] {
  --color-primary: #175C3E;
  --color-primary-dark: #0F4630;
  --color-primary-light: #E4F1E9;
  --color-secondary: #57A639;
  --color-secondary-dark: #468A2D;
  --color-accent: #D0A537;
  --color-accent-dark: #B08A26;
  --color-accent-light: #F8EFD6;
  --color-abyss: #0B2018;
  --color-abyss-alt: #133A28;
}
[data-theme="rust"] {
  --color-primary: #7A2E1E;
  --color-primary-dark: #5E2116;
  --color-primary-light: #F6E7E2;
  --color-secondary: #E07A3E;
  --color-secondary-dark: #C4642E;
  --color-accent: #2B7A78;
  --color-accent-dark: #205E5C;
  --color-accent-light: #DFF0EF;
  --color-abyss: #241210;
  --color-abyss-alt: #3A1D18;
}

.theme-demo {
  position: fixed;
  right: var(--space-sm);
  bottom: var(--space-sm);
  z-index: var(--z-toast);
  background: var(--color-abyss);
  border: 1px solid var(--color-abyss-line);
  border-radius: var(--radius-pill);
  padding: 0.4rem;
  display: flex;
  align-items: center;
  gap: 0.35rem;
  box-shadow: var(--shadow-lg);
}
.theme-demo__label {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-on-dark-soft);
  padding-inline: 0.6rem;
  white-space: nowrap;
}
.theme-demo button {
  width: 1.9rem; height: 1.9rem;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.15);
  flex: none;
}
.theme-demo button[data-swatch="default"] { background: linear-gradient(135deg, #087DF1, #25D8FF); }
.theme-demo button[data-swatch="kelp"] { background: linear-gradient(135deg, #175C3E, #57A639); }
.theme-demo button[data-swatch="rust"] { background: linear-gradient(135deg, #7A2E1E, #E07A3E); }
.theme-demo button[aria-pressed="true"] { border-color: #fff; }

@media (max-width: 640px) {
  .theme-demo { left: var(--space-sm); right: var(--space-sm); justify-content: center; }
}
