/* =====================================================================
   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: #132738;        /* Deep Blue working surface #04192A; */
  --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: #4e8e89; 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[hidden] { display: none; }
.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; }


.hero__search {
  grid-column: 1 / -1;
  width: 100%;
  min-width: 0;
  margin-top: calc(-1 * var(--space-sm));
  display: flex;
  align-items: center;
  gap: 0.55rem;
  background: rgba(255,255,255,0.055);
  border: 1px solid rgba(37,216,255,0.24);
  border-radius: var(--radius-pill);
  padding: 0.45rem 0.5rem 0.45rem 0.75rem;
  box-shadow: 0 12px 36px rgba(0,0,0,0.16), inset 0 1px 0 rgba(255,255,255,0.05);
  backdrop-filter: blur(10px);
}
.hero__search:focus-within { border-color: rgba(37,216,255,0.7); box-shadow: 0 0 0 3px rgba(8,125,241,0.16), 0 16px 42px rgba(0,0,0,0.18); }
.hero__search-icon { width: 1.5rem; height: 1.5rem; display: grid; place-items: center; color: var(--color-text-on-dark-soft); flex: none; }
.hero__search-icon svg { width: 1.15rem; height: 1.15rem; }
.hero__search input {
  min-width: 0;
  flex: 1;
  background: transparent;
  border: none;
  color: #fff;
  padding: 0.8rem 0.55rem;
  font-size: 1rem;
}
.hero__search input::placeholder { color: var(--color-text-on-dark-soft); }
.hero__search input:focus { outline: none; }
.hero__search .btn { min-width: 6.2rem; border-radius: var(--radius-pill); }


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

  /* -------------------------------------------------------------
     MOBILE NAVIGATION
     The global stylesheet hides .main-nav__list at <=960px.
     Restore the list only inside the mobile drawer.
  ------------------------------------------------------------- */

  .mobile-nav .main-nav__list {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.25rem;
    width: 100%;
    margin: var(--space-lg) 0 0;
    padding: 0;
  }

  .mobile-nav .main-nav__list > li {
    display: block;
    width: 100%;
  }

  .mobile-nav .main-nav__list > li > a {
    display: flex;
    align-items: center;
    width: 100%;
    min-height: 2.7rem;
    padding: 0.65rem 0.75rem;
    border-radius: var(--radius-sm);
    color: var(--color-text-on-dark-soft);
  }

  .mobile-nav .main-nav__list > li > a:hover,
  .mobile-nav .main-nav__list > li > a:focus-visible {
    color: #fff;
    background: rgba(37, 216, 255, 0.08);
  }

  /* Parent navigation items */
  .mobile-nav .main-nav__item--has-menu > a {
    color: #fff;
    font-weight: 600;
  }

  /* Hide desktop dropdown arrow */
  .mobile-nav .main-nav__item--has-menu > a::after {
    display: none;
  }

  /* Submenus become normal vertical mobile sections */
  .mobile-nav .main-nav__submenu {
    position: static;
    display: grid;
    grid-template-columns: 1fr !important;
    width: 100% !important;
    min-width: 0;
    gap: 0;

    margin: 0;
    padding: 0.2rem 0 0.45rem 0.65rem;

    background: transparent;
    border: 0;
    box-shadow: none;

    opacity: 1;
    visibility: visible;
    transform: none;
    pointer-events: auto;
  }

  .mobile-nav .main-nav__submenu::before {
    display: none;
  }

  .mobile-nav .main-nav__submenu a {
    display: flex;
    flex-direction: column;
    width: 100%;
    padding: 0.48rem 0.65rem;
    color: var(--color-text-on-dark-soft);
  }

  .mobile-nav .main-nav__submenu a:hover,
  .mobile-nav .main-nav__submenu a:focus-visible {
    color: #fff;
    background: rgba(37, 216, 255, 0.08);
  }
}

/* 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; }
}

/* ---------------------------------------------------------------------
   GLOBAL LANDING NAVIGATION — dropdown menus
   Kept here instead of index.html so navigation styling remains
   centralized and reusable when the landing page becomes React.

   IMPORTANT: the small hover bridge below prevents the dropdown from
   disappearing while the pointer travels from the parent item into the
   submenu. This makes every submenu link reliably clickable.
--------------------------------------------------------------------- */
.main-nav__item--has-menu {
  position: relative;
}

.main-nav__item--has-menu > a {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.main-nav__item--has-menu > a::after {
  content: "";
  width: 0.42rem;
  height: 0.42rem;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: rotate(45deg) translateY(-2px);
  opacity: 0.7;
}

/* Invisible hover bridge between the nav item and dropdown. */
.main-nav__item--has-menu::after {
  content: "";
  position: absolute;
  left: -0.5rem;
  right: -0.5rem;
  top: 100%;
  height: 0.5rem;
  z-index: 49;
}

.main-nav__submenu {
  position: absolute;
  top: calc(100% + 0.5rem);
  left: -1rem;
  z-index: 50;
  min-width: 15rem;
  padding: 0.65rem;
  margin: 0;
  list-style: none;
  display: grid;
  gap: 0.15rem;
  background: var(--color-abyss-alt);
  border: 1px solid var(--color-abyss-line);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  pointer-events: none;
  transition:
    opacity var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out),
    visibility var(--duration-fast) var(--ease-out);
}

.main-nav__item--wide .main-nav__submenu {
  width: min(46rem, 72vw);
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.35rem;
}

.main-nav__submenu li {
  min-width: 0;
}

.main-nav__submenu a {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.65rem 0.75rem;
  border: 0 !important;
  border-radius: var(--radius-sm);
  color: var(--color-text-on-dark-soft);
  font-size: 0.82rem;
  line-height: 1.25;
}

.main-nav__submenu a:hover,
.main-nav__submenu a:focus-visible {
  color: #fff;
  background: rgba(37, 216, 255, 0.08);
}

.main-nav__submenu a strong {
  color: inherit;
  font-weight: 600;
}

.main-nav__submenu a span {
  color: var(--color-text-faint);
  font-size: 0.68rem;
  font-family: var(--font-mono);
}

.main-nav__item--has-menu:hover > .main-nav__submenu,
.main-nav__item--has-menu:focus-within > .main-nav__submenu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}

.main-nav__submenu::before {
  content: "";
  position: absolute;
  top: -0.4rem;
  left: 1.25rem;
  width: 0.75rem;
  height: 0.75rem;
  background: var(--color-abyss-alt);
  border-left: 1px solid var(--color-abyss-line);
  border-top: 1px solid var(--color-abyss-line);
  transform: rotate(45deg);
}

/* Mobile navigation controls */
.nav-toggle,
.mobile-nav__close {
  background: var(--color-abyss-alt);
  border: 1px solid var(--color-abyss-line);
  color: var(--color-text-on-dark);
  border-radius: var(--radius-sm);
}

.nav-toggle:hover,
.nav-toggle:focus-visible,
.mobile-nav__close:hover,
.mobile-nav__close:focus-visible {
  background: rgba(37, 216, 255, 0.12);
  border-color: rgba(37, 216, 255, 0.35);
  color: #fff;
}

/* Keep the dropdown comfortably inside the viewport on smaller desktop
   widths while preserving the wide Industries menu. */
@media (max-width: 1100px) and (min-width: 961px) {
  .main-nav__submenu {
    left: 50%;
    transform: translate(-50%, -6px);
  }

  .main-nav__item--has-menu:hover > .main-nav__submenu,
  .main-nav__item--has-menu:focus-within > .main-nav__submenu {
    transform: translate(-50%, 0);
  }

  .main-nav__item--wide .main-nav__submenu {
    width: min(40rem, 70vw);
  }
}
