/* ==========================================================================
   Gran Prix Wholesale — Bootstrap 5.3.8 theme
   Load AFTER bootstrap.min.css:
     <link href=".../bootstrap.min.css" rel="stylesheet">
     <link href="granprix-theme.css" rel="stylesheet">
   Icons: Font Awesome 7.3.1 (fa-solid by default):
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.3.1/css/all.min.css">
   Fonts (add to <head>):
     <link href="https://fonts.googleapis.com/css2?family=Saira+Condensed:ital,wght@0,600;0,700;1,600;1,700&family=Barlow:wght@400;500;600;700&display=swap" rel="stylesheet">
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Design tokens — override Bootstrap's CSS variables at :root
   -------------------------------------------------------------------------- */
:root {
  /* Brand palette (from the Gran Prix logo) */
  --gp-red: #D7141F;
  --gp-red-dark: #a80f18;
  --gp-red-tint: #fdf2f3;
  --gp-black: #111111;
  --gp-charcoal: #2a2a2a;
  --gp-surface: #f6f6f7;
  --gp-border: #e5e5e5;
  --gp-text: #222222;
  --gp-muted: #666666;
  --gp-muted-2: #888888;
  --gp-success: #1a8a3c;   /* in stock */
  --gp-warning: #b25b00;   /* low stock */

  /* Remap Bootstrap theme colors */
  --bs-primary: var(--gp-red);
  --bs-primary-rgb: 215, 20, 31;
  --bs-secondary: var(--gp-black);
  --bs-secondary-rgb: 17, 17, 17;
  --bs-success: var(--gp-success);
  --bs-success-rgb: 26, 138, 60;
  --bs-warning: var(--gp-warning);
  --bs-warning-rgb: 178, 91, 0;
  --bs-dark: var(--gp-black);
  --bs-dark-rgb: 17, 17, 17;
  --bs-light: var(--gp-surface);
  --bs-light-rgb: 246, 246, 247;

  --bs-body-font-family: "Barlow", system-ui, -apple-system, sans-serif;
  --bs-body-color: var(--gp-text);
  --bs-body-bg: #ffffff;
  --bs-border-color: var(--gp-border);
  --bs-border-radius: 0.375rem;      /* 6px — buttons, inputs, chips */
  --bs-border-radius-lg: 0.5rem;     /* 8px — cards, panels */
  --bs-link-color: var(--gp-red);
  --bs-link-color-rgb: 215, 20, 31;
  --bs-link-hover-color: var(--gp-red-dark);
  --bs-link-hover-color-rgb: 168, 15, 24;
  --bs-link-decoration: none;
  --bs-emphasis-color: var(--gp-black);
}

/* --------------------------------------------------------------------------
   2. Typography
   Headings use the logo's condensed italic style.
   -------------------------------------------------------------------------- */
h1, h2, h3, .h1, .h2, .h3,
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
  font-family: "Saira Condensed", var(--bs-body-font-family);
  font-style: italic;
  font-weight: 700;
  text-transform: uppercase;
  line-height: 0.95;
  color: var(--gp-black);
}
h4, h5, h6, .h4, .h5, .h6 {
  font-weight: 700;
  color: var(--gp-black);
}
/* Red underline treatment for section headings (4a/4b "Specifications") */
.gp-section-title {
  display: inline-block;
  border-bottom: 3px solid var(--gp-red);
  padding-bottom: 0.25rem;
}
.gp-section-title--dark { border-bottom-color: var(--gp-black); }

/* Eyebrow kicker (hero: "WHOLESALE · RETAILERS & CENTERS ONLY") */
.gp-eyebrow {
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--gp-red);
}

/* --------------------------------------------------------------------------
   3. Navbar — dark header (2a)
   Use: <nav class="navbar navbar-expand-lg navbar-dark gp-navbar">
   -------------------------------------------------------------------------- */
.gp-navbar {
  background-color: var(--gp-black);
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
}
.gp-navbar .navbar-brand img { height: 44px; }
.gp-navbar .nav-link {
  color: #d5d5d5;
  font-weight: 600;
  font-size: 0.875rem;
  padding-bottom: 0.25rem;
  border-bottom: 3px solid transparent;
}
.gp-navbar .nav-link:hover { color: #ffffff; }
.gp-navbar .nav-link.active {
  color: #ffffff;
  border-bottom-color: var(--gp-red);
}
/* Dark search field inside the navbar */
.gp-navbar .form-control {
  background-color: var(--gp-charcoal);
  border-color: var(--gp-charcoal);
  color: #ffffff;
}
.gp-navbar .form-control::placeholder { color: #bbbbbb; }
.gp-navbar .form-control:focus {
  background-color: var(--gp-charcoal);
  border-color: var(--gp-red);
  box-shadow: 0 0 0 0.25rem rgba(215, 20, 31, 0.25);
  color: #ffffff;
}

/* --------------------------------------------------------------------------
   4. Buttons
   -------------------------------------------------------------------------- */
.btn { font-weight: 700; }
.btn-primary {
  --bs-btn-bg: var(--gp-red);
  --bs-btn-border-color: var(--gp-red);
  --bs-btn-hover-bg: var(--gp-red-dark);
  --bs-btn-hover-border-color: var(--gp-red-dark);
  --bs-btn-active-bg: var(--gp-red-dark);
  --bs-btn-active-border-color: var(--gp-red-dark);
  --bs-btn-disabled-bg: var(--gp-red);
  --bs-btn-disabled-border-color: var(--gp-red);
}
.btn-dark {
  --bs-btn-bg: var(--gp-black);
  --bs-btn-border-color: var(--gp-black);
  --bs-btn-hover-bg: var(--gp-charcoal);
  --bs-btn-hover-border-color: var(--gp-charcoal);
}
/* 2-px outline style used for secondary CTAs ("Apply for an account",
   "+ Reorder list", "Backorder") */
.btn-outline-dark, .btn-outline-secondary {
  --bs-btn-color: var(--gp-black);
  --bs-btn-border-color: var(--gp-black);
  --bs-btn-hover-bg: var(--gp-black);
  --bs-btn-hover-border-color: var(--gp-black);
  border-width: 2px;
}
/* Hero-scale CTA */
.gp-btn-cta {
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.8125rem 1.75rem;
  font-size: 0.9375rem;
}

/* --------------------------------------------------------------------------
   5. Hero (2a) — full-width, centered, soft gradient + checkered accent
   Use: <section class="gp-hero"> <div class="container text-center"> …
   -------------------------------------------------------------------------- */
.gp-hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #fbfafa 0%, #f4f2f1 60%, #efe9e8 100%);
  border-bottom: 1px solid var(--gp-border);
  padding: 4.25rem 0 3.75rem;
}
.gp-hero::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 8px;
  background: repeating-linear-gradient(90deg, var(--gp-black) 0 18px, #f4f2f1 18px 36px);
  opacity: 0.12;
  pointer-events: none;
}
.gp-hero h1 { font-size: 4rem; }
.gp-hero .lead { color: var(--gp-muted); max-width: 560px; margin-inline: auto; }

/* --------------------------------------------------------------------------
   6. Cards — product cards (3a) & category tiles (2a)
   -------------------------------------------------------------------------- */
.card {
  --bs-card-border-color: var(--gp-border);
  --bs-card-border-radius: var(--bs-border-radius-lg);
}
/* Product photo area placeholder */
.gp-card-media {
  background-color: var(--gp-surface);
  height: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #999999;
  font-size: 0.75rem;
  position: relative;
}
/* Category tile (2a "Shop the way you buy") — grey card, colored top bar.
   Use: <div class="card gp-tile"> or <div class="card gp-tile gp-tile--dark"> */
.gp-tile {
  background-color: var(--gp-surface);
  position: relative;
  overflow: hidden;
}
.gp-tile::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: var(--gp-red);
}
.gp-tile--dark::before { background: var(--gp-black); }
.gp-tile .card-title {
  font-family: "Saira Condensed", var(--bs-body-font-family);
  font-style: italic;
  font-weight: 700;
  font-size: 1.5rem;
  text-transform: uppercase;
}
.gp-tile .card-text { color: var(--gp-muted); font-size: 0.8125rem; }
.gp-tile .gp-tile-link { color: var(--gp-red); font-weight: 700; font-size: 0.8125rem; }

/* --------------------------------------------------------------------------
   7. Badges — promo flags (Sale / New / Just Released) & stock status
   -------------------------------------------------------------------------- */
.badge { font-weight: 700; text-transform: uppercase; }
.gp-badge-sale { background-color: var(--gp-red); color: #ffffff; }
.gp-badge-new { background-color: var(--gp-black); color: #ffffff; }
/* Overlay position on a card image: <span class="badge gp-badge-sale gp-badge-flag"> */
.gp-badge-flag { position: absolute; top: 10px; left: 10px; z-index: 1; }

/* Stock status text (with leading ● in markup) */
.gp-stock-in { color: var(--gp-success); font-weight: 600; font-size: 0.8125rem; }
.gp-stock-low { color: var(--gp-warning); font-weight: 600; font-size: 0.8125rem; }
.gp-stock-back { color: var(--gp-muted-2); font-weight: 600; font-size: 0.8125rem; }

/* --------------------------------------------------------------------------
   8. Pricing
   -------------------------------------------------------------------------- */
.gp-price {
  font-family: "Saira Condensed", var(--bs-body-font-family);
  font-weight: 700;
  color: var(--gp-black);
}
.gp-price--sale { color: var(--gp-red); }
.gp-price-was {
  color: #999999;
  text-decoration: line-through;
  font-size: 0.8125rem;
}
.gp-price-unit { color: var(--gp-muted-2); font-size: 0.75rem; }

/* --------------------------------------------------------------------------
   9. Tables — list view (3b), spec tables & tier pricing (4a/4b)
   -------------------------------------------------------------------------- */
/* Results list: <table class="table gp-table-results align-middle"> */
.gp-table-results > thead th {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--gp-muted-2);
  border-bottom: 2px solid var(--gp-black);
}
.gp-table-results > tbody td { border-color: #eeeeee; }

/* Spec sheet: <table class="table gp-table-specs table-striped"> */
.gp-table-specs {
  --bs-table-striped-bg: #fafafa;
  border: 1px solid var(--gp-border);
  border-radius: var(--bs-border-radius-lg);
  overflow: hidden;
}
.gp-table-specs td:first-child {
  color: var(--gp-muted-2);
  font-weight: 600;
  width: 40%;
}

/* Tier-pricing / variant tables reuse .gp-table-specs header treatment */
.gp-table-tiers thead th {
  background-color: var(--gp-surface);
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--gp-muted-2);
}

/* --------------------------------------------------------------------------
   10. Forms — qty inputs, filters
   -------------------------------------------------------------------------- */
.form-control:focus, .form-select:focus {
  border-color: var(--gp-red);
  box-shadow: 0 0 0 0.25rem rgba(215, 20, 31, 0.25);
}
.form-check-input:checked {
  background-color: var(--gp-red);
  border-color: var(--gp-red);
}
.form-check-input:focus { box-shadow: 0 0 0 0.25rem rgba(215, 20, 31, 0.25); }

/* --------------------------------------------------------------------------
   11. Filter sidebar (3a)
   Use: <aside class="gp-filters"> with .gp-filter-group blocks
   -------------------------------------------------------------------------- */
.gp-filters { border-right: 1px solid var(--gp-border); }
.gp-filter-group + .gp-filter-group { margin-top: 1.375rem; }
.gp-filter-title {
  font-size: 0.8125rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--gp-black);
  margin-bottom: 0.625rem;
}
.gp-filters .form-check-label { font-size: 0.875rem; color: #444444; }
.gp-filters a.active { color: var(--gp-red); font-weight: 600; }

/* --------------------------------------------------------------------------
   12. Variant picker (4b) — weight chips with per-variant stock
   Use: <label class="gp-variant"> (wrap a hidden radio) or button.gp-variant
   -------------------------------------------------------------------------- */
.gp-variant {
  border: 1px solid #cccccc;
  border-radius: var(--bs-border-radius);
  padding: 0.625rem 1rem;
  font-weight: 600;
  font-size: 0.875rem;
  color: #444444;
  text-align: center;
  background: #ffffff;
  cursor: pointer;
}
.gp-variant:hover { border-color: var(--gp-black); }
.gp-variant .gp-variant-stock {
  display: block;
  font-size: 0.6875rem;
  color: var(--gp-muted-2);
  font-weight: 500;
}
.gp-variant.active, .btn-check:checked + .gp-variant {
  border: 2px solid var(--gp-red);
  background-color: var(--gp-red-tint);
  color: var(--gp-red);
  font-weight: 700;
  padding: calc(0.625rem - 1px) calc(1rem - 1px); /* keep size when border grows */
}
.gp-variant.active .gp-variant-stock { color: var(--gp-warning); font-weight: 600; }
/* Per-variant image swatch (only rendered when some variant has its own image) */
.gp-variant.gp-variant-has-thumb { padding-top: 0.5rem; }
.gp-variant.gp-variant-has-thumb.active { padding-top: calc(0.5rem - 1px); }
.gp-variant .gp-variant-thumb {
  display: block;
  width: 56px;
  height: 56px;
  margin: 0 auto 0.375rem;
  border-radius: calc(var(--bs-border-radius) - 2px);
  background: var(--gp-surface);
  overflow: hidden;
}
.gp-variant .gp-variant-thumb img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

/* --------------------------------------------------------------------------
   13. Pagination
   -------------------------------------------------------------------------- */
.pagination {
  --bs-pagination-color: #444444;
  --bs-pagination-border-color: #cccccc;
  --bs-pagination-hover-color: var(--gp-black);
  --bs-pagination-hover-bg: var(--gp-surface);
  --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(215, 20, 31, 0.25);
  --bs-pagination-active-bg: var(--gp-black);
  --bs-pagination-active-border-color: var(--gp-black);
}
.page-link { font-weight: 600; }
.page-item.active .page-link { font-weight: 700; }

/* --------------------------------------------------------------------------
   14. Breadcrumbs (4a/4b)
   -------------------------------------------------------------------------- */
.breadcrumb {
  --bs-breadcrumb-font-size: 0.8125rem;
  --bs-breadcrumb-divider-color: var(--gp-muted-2);
  --bs-breadcrumb-item-active-color: var(--gp-black);
}
.breadcrumb a { color: var(--gp-muted-2); }
.breadcrumb a:hover { color: var(--gp-red); }
.breadcrumb-item.active { font-weight: 600; }

/* --------------------------------------------------------------------------
   15. Footer & trust bar
   -------------------------------------------------------------------------- */
/* Trust bar (2a): <div class="row gp-trustbar"> with col divs */
.gp-trustbar { border-top: 1px solid var(--gp-border); }
.gp-trustbar > [class*="col"] { padding: 1.375rem 1.75rem; }
.gp-trustbar > [class*="col"]:not(:last-child) { border-right: 1px solid var(--gp-border); }
.gp-trustbar .gp-trust-title { font-weight: 700; font-size: 0.9375rem; color: var(--gp-black); }
.gp-trustbar .gp-trust-sub { font-size: 0.8125rem; color: var(--gp-muted); }

.gp-footer {
  background-color: var(--gp-black);
  color: #aaaaaa;
  font-size: 0.8125rem;
  padding: 1.125rem 0;
}
.gp-footer a { color: #aaaaaa; }
.gp-footer a:hover { color: #ffffff; }

/* --------------------------------------------------------------------------
   16. Utilities
   -------------------------------------------------------------------------- */
/* Checkered accent strip (use sparingly, e.g. above footers/heros) */
.gp-checker {
  height: 8px;
  background: repeating-linear-gradient(90deg, var(--gp-black) 0 18px, #ffffff 18px 36px);
}
/* Surface panel */
.gp-surface { background-color: var(--gp-surface); }
/* SKU / meta line */
.gp-meta { font-size: 0.75rem; color: var(--gp-muted-2); font-weight: 600; }
