/* ============================================================
   SLP EXPRESS — CRITICAL CSS
   Loads synchronously (render-blocking) — kept intentionally small.
   Contains ONLY what is needed to paint above-the-fold content:
   tokens · reset · buttons · header · hero · nav · stat-bar

   Every page links:
     <link rel="stylesheet" href="fonts/poppins.css">
     <link rel="stylesheet" href="slp-critical.css">   ← this file
   ============================================================ */

/* Font Awesome 6 — self-hosted subset (brands + solid)
   @import is valid here: slp-critical.css is loaded as a real <link>
   stylesheet, so the browser resolves this @import normally. */
@import url("icons.css");


/* ============================================================
   01. :root — BRAND TOKENS
   ============================================================ */
:root {
  --primary:   #4a0072;
  --secondary: #6a0099;
  --accent:    #ffd54f;
  --light:     #f4f7f6;
  --white:     #ffffff;
  --text:      #333333;
  --muted:    #666666;
  --muted-2:  #444444;
  --hairline: #eeeeee;
  --whatsapp: #25d366;
  --shadow-sm:      0 8px 30px rgba(0, 0, 0, 0.04);
  --shadow-md:      0 10px 40px rgba(0, 0, 0, 0.06);
  --shadow-lg:      0 15px 40px rgba(0, 0, 0, 0.30);
  --shadow-gold:    0 10px 30px rgba(255, 213, 79, 0.35);
  --shadow-wa:      0 10px 30px rgba(37, 211, 102, 0.35);
  --shadow-primary: 0 8px 24px rgba(74, 0, 114, 0.25);
  --grad-primary:    linear-gradient(90deg, var(--primary), var(--secondary));
  --grad-hero-tint:  rgba(74, 0, 114, 0.55);
  --grad-gold-strip: linear-gradient(120deg, #fffbf0 0%, var(--accent) 50%, #ffe082 100%);
  --r-sm: 6px; --r-md: 12px; --r-lg: 20px; --r-xl: 25px; --r-pill: 50px;
  /* Stacking layers — change these, not one-off z-index fights */
  --z-sticky-bar: 800;
  --z-header: 1100;
  --z-promo-strip: 1120;
  --z-dropdown: 1200;
  --z-nav-mobile: 1210;
  --z-promo-popup: 10050;
}


/* ============================================================
   02. BASE — reset, body, container, utilities
   ============================================================ */
* { margin: 0; padding: 0; box-sizing: border-box; }
html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  overflow-x: hidden;
  max-width: 100%;
}
body {
  font-family: 'Poppins', system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
  font-weight: 400;
  line-height: 1.8;
  color: var(--text);
  background: var(--white);
  overflow-x: hidden;
  max-width: 100%;
  width: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  padding-bottom: 58px;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }

.container { max-width: 1200px; margin: 0 auto; padding: 0 25px; }
.container-narrow { max-width: 920px; margin: 0 auto; padding: 0 25px; }

:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; border-radius: 4px; }

.text-center  { text-align: center; }
.text-primary { color: var(--primary); }
.text-accent  { color: var(--accent); }
.text-muted   { color: var(--muted); }
.bg-primary   { background: var(--primary); color: var(--white); }
.bg-accent    { background: var(--accent); color: var(--primary); }
.mt-0 { margin-top: 0; }    .mt-2 { margin-top: 16px; }
.mt-4 { margin-top: 32px; } .mt-6 { margin-top: 48px; }
.mb-0 { margin-bottom: 0; } .mb-2 { margin-bottom: 16px; }
.mb-4 { margin-bottom: 32px; } .mb-6 { margin-bottom: 48px; }
.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;
}

main {
  overflow-x: hidden;
  max-width: 100%;
}

@media (max-width: 900px) {
  .container, .container-narrow { padding: 0 18px; }
}

@media (max-width: 600px) {
  .header-flex { gap: 8px; }
  .brand { min-width: 0; flex: 1 1 auto; }
  .logo-circle { width: 48px; height: 48px; border-width: 2px; }
  .brand-text h2 { font-size: 13px; line-height: 1.15; }
  .brand-sub { display: none; }
  .hamburger {
    flex-shrink: 0;
    z-index: 1002;
    position: relative;
    min-width: 44px;
    min-height: 44px;
    justify-content: center;
  }
}


/* ============================================================
   03. BUTTONS — .btn, .btn-gold, .btn-wa, .btn-ghost, .pill
   ============================================================ */
.btn {
  display: inline-block;
  padding: 18px 45px;
  border-radius: var(--r-pill);
  font-weight: 800;
  font-size: 16px;
  text-decoration: none;
  border: 0;
  cursor: pointer;
  letter-spacing: 0.2px;
  line-height: 1;
  transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
  white-space: nowrap;
}
.btn:hover  { transform: translateY(-5px); }
.btn:active { transform: translateY(-1px); }

.btn-gold {
  background: var(--accent);
  color: var(--primary);
  box-shadow: var(--shadow-gold);
}
.btn-gold:hover { box-shadow: 0 16px 36px rgba(255, 213, 79, 0.45); }

.btn-wa {
  background: var(--whatsapp);
  color: var(--white);
  box-shadow: var(--shadow-wa);
}
.btn-wa:hover { box-shadow: 0 16px 36px rgba(37, 211, 102, 0.45); }

.btn-primary {
  background: var(--primary);
  color: var(--white);
  box-shadow: var(--shadow-primary);
}
.btn-primary:hover { background: var(--secondary); box-shadow: 0 14px 32px rgba(74, 0, 114, 0.35); }

.btn-ghost {
  background: transparent;
  color: var(--white);
  border: 2px solid rgba(255, 255, 255, 0.6);
  padding: 16px 43px;
}
.btn-ghost:hover { background: rgba(255, 255, 255, 0.08); border-color: var(--white); }

.btn-sm { padding: 12px 28px; font-size: 14px; }
.btn:focus-visible, .pill:focus-visible { outline-offset: 4px; }

.pill {
  display: inline-block;
  background: var(--primary);
  color: var(--white);
  padding: 10px 22px;
  border-radius: 30px;
  font-weight: 600;
  font-size: 13px;
  margin: 5px;
  text-decoration: none;
  transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
}
.pill:hover { transform: translateY(-3px); box-shadow: var(--shadow-primary); background: var(--secondary); }
.pill-row { text-align: center; margin-top: 24px; }
.pill-accent { background: var(--accent); color: var(--primary); }
.pill-accent:hover { background: #ffcb2e; box-shadow: var(--shadow-gold); }

@media (max-width: 900px) { .btn { padding: 16px 32px; font-size: 15px; } }
@media (max-width: 480px) { .hero-cta-row .btn { width: 100%; text-align: center; } }

/* ============================================================
   03b. Narrow-mobile button safety net (≤420px)
   Mobile-overflow audit 2026-05-26 found 70 pages with .btn-primary
   and 16 with .btn-gold overflowing the viewport on 375px screens
   because long button labels ("See country-specific customs rules →")
   exceeded the available width. These rules wrap text and shrink
   padding gracefully without breaking the desktop look.
   ============================================================ */
@media (max-width: 420px) {
  .btn {
    padding: 14px 18px;
    font-size: 14px;
    max-width: 100%;
    box-sizing: border-box;
    white-space: normal;
    word-break: keep-all;
    overflow-wrap: break-word;
    line-height: 1.3;
  }
  /* In any single-button row container, fill the row to avoid edge clipping */
  .text-center .btn,
  .pickup-cta-row .btn,
  .hero-cta-row .btn,
  .cta-row .btn,
  .section-cta-quick .cta-row .btn,
  p.text-center > .btn {
    width: 100%;
    text-align: center;
  }
}


/* ============================================================
   07. HEADER — .header, .brand, .trust-pill, .header-partner-logo
   ============================================================ */
.header {
  position: relative;
  z-index: var(--z-header);
  width: 100%;
  max-width: 100%;
  padding: 15px 0;
  background: var(--grad-primary);
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.15);
  overflow-x: clip;
}
.header nav {
  position: static;
  min-width: 0;
}
.header-flex {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: nowrap;
  position: relative;
  width: 100%;
  max-width: 100%;
}
.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
  flex: 0 1 auto;
  max-width: 260px;
  text-decoration: none;
}
.logo-circle {
  width: 60px; height: 60px;
  background: var(--white);
  border: 3px solid var(--accent);
  border-radius: var(--r-md);
  overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.logo-img { width: 85%; height: auto; }
.brand-text { min-width: 0; }
/* Defensive: neutralize any stray auto-injected "Table of Contents" (.slp-toc)
   that an external tool wrongly placed inside the header/logo area. The real
   page content is unaffected; this only stops the header from breaking. */
.header .slp-toc,
.brand .slp-toc,
.brand-text .slp-toc { display: none !important; }
.brand-text h2 {
  color: var(--white);
  font-weight: 800;
  font-size: 16px;
  line-height: 1.2;
  letter-spacing: 0.2px;
  overflow-wrap: normal;
  word-break: keep-all;
}
.brand-sub {
  font-size: 9px;
  color: var(--accent);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-top: 4px;
}
.header-trust {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: nowrap;
  flex-shrink: 0;
}
.trust-pill {
  background: rgba(255, 255, 255, 0.15);
  border: 1px solid rgba(255, 255, 255, 0.30);
  border-radius: var(--r-pill);
  padding: 6px 14px;
  font-size: 11px; font-weight: 600;
  color: var(--white);
  line-height: 1.25; white-space: nowrap;
  display: inline-flex; flex-direction: column; align-items: center;
}
.trust-pill span { color: var(--accent); font-weight: 800; font-size: 13px; display: block; }
.header-partner-logo {
  height: 36px;
  min-width: 56px;
  background: var(--white);
  padding: 6px 10px;
  border-radius: var(--r-sm);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.header-partner-logo img { max-height: 100%; max-width: 100%; width: auto; height: auto; display: block; object-fit: contain; }
.header-partners-label {
  color: var(--white); font-size: 9px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.6px;
  line-height: 1.2; max-width: 70px;
}
/* Black promo strip: hidden site-wide (too heavy above fold; SLPEXP still in copy/hero where relevant). */
.promo-strip { display: none !important; }

/* Home-only ticker (index) — removed from markup; keep hidden if reintroduced. */
.top-ticker { display: none !important; }

/* Desktop header: logo on the left, nav + trust pills as ONE tight group on
   the right (the classic "logo-left / menu-right" pattern). Full-width bar
   with 40px gutters so the logo lines up with the hero's left edge; the
   brand's auto-margin pushes the menu + pills together on the right, so
   there's one intentional gap in the middle instead of dead space.
   Partner logos are hidden here (shown in the hero + footer). */
@media (min-width: 901px) {
  .header-flex {
    display: flex;
    align-items: center;
    gap: 28px;
    flex-wrap: nowrap;
  }
  .header .container.header-flex { max-width: 100%; padding-left: 40px; padding-right: 40px; }
  .brand { margin-right: auto; flex: 0 0 auto; max-width: 340px; }
  .header nav { flex: 0 1 auto; min-width: 0; }
  .nav-menu {
    justify-content: flex-end;
    flex-wrap: nowrap;
    gap: 2px;
  }
  .nav-link {
    padding: 10px 12px;
    font-size: 13px;
    letter-spacing: 0.2px;
    white-space: nowrap;
  }
  .header-trust { flex: 0 0 auto; }
  .hamburger { display: none !important; }
  .header .header-partner-logo,
  .header-trust .header-partner-logo { display: none !important; }
  /* Nav now hugs the right edge, so the last item's dropdown must open
     leftward or it runs off the right of the screen. */
  .header .nav-menu > .nav-item:last-child > .dropdown,
  .header .nav-menu > .nav-item:nth-last-child(2) > .dropdown { left: auto; right: 0; }
}

@media (min-width: 901px) and (max-width: 1280px) {
  .header-trust .header-partner-logo { display: none; }
  .trust-pill { padding: 5px 10px; font-size: 10px; }
  .trust-pill span { font-size: 12px; }
  .nav-link { padding: 10px 8px; font-size: 11px; }
  .brand-text h2 { font-size: 16px; }
}

@media (min-width: 1281px) {
  .nav-link { padding: 11px 13px; font-size: 13px; }
}

/* Hide trust/partner row until wide desktop — keeps nav on one line.
   Raised 1320 -> 1440 so 1366px laptops use the roomy 2-col (brand|nav)
   layout instead of cramming trust pills + 3 partner logos and overflowing
   the nav onto the logo. */
@media (max-width: 1440px) {
  .header-trust { display: none; }
}
@media (min-width: 901px) and (max-width: 1440px) {
  /* Below 1440 the trust pills are hidden, leaving logo + nav only. Trim the
     brand sub-line and the wordmark width so the 7 nav items still fit. */
  .brand { max-width: 230px; }
  .brand-sub { display: none; }
}


/* ============================================================
   08. HERO — .hero, .hero-subline, .stat-bar, .stat-chip
   ============================================================ */
.hero {
  position: relative;
  padding: 120px 0;
  color: var(--white);
  text-align: center;
  background-color: var(--primary);
  background-image:
    linear-gradient(var(--grad-hero-tint), var(--grad-hero-tint)),
    url('../photos/hero-main.webp');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
/* Index hero uses an <img> for LCP — do not stack the same photo as CSS background */
.hero:has(> img.hero-bg-photo),
.hero:has(> img[src*="hero-main"]) {
  background-image: none;
  background-color: var(--primary);
}
.hero[style*="--hero-img"] {
  background-image:
    linear-gradient(var(--grad-hero-tint), var(--grad-hero-tint)),
    var(--hero-img);
}
.hero .hero-emoji { font-size: 64px; line-height: 1; margin-bottom: 18px; display: block; }
.hero h1, .hero-seo-title {
  font-size: clamp(24px, 4.6vw, 38px); font-weight: 800;
  line-height: 1.22; margin-bottom: 22px; color: var(--white);
  text-align: center;
  margin-left: auto;
  margin-right: auto;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.35);
}
.hero-seo-title strong { color: var(--accent); font-style: normal; }
/* Homepage only: title stays left of the booking form on desktop */
@media (min-width: 901px) {
  .hero:has(.hero-form) .hero-text > h1,
  .hero:has(.hero-form) .hero-text .hero-seo-title {
    text-align: left;
    margin-left: 0;
    margin-right: 0;
  }
}

/* Homepage pickup card header — must paint before deferred CSS loads */
.pickup-card__head {
  background: linear-gradient(135deg, #3a0068 0%, #6a0099 100%);
  padding: 14px 18px;
  display: flex;
  align-items: center;
  gap: 12px;
  border-bottom: 3px solid var(--accent);
}
.pickup-card__logo {
  width: 44px; height: 44px;
  background: var(--white);
  border-radius: 8px;
  padding: 3px;
  flex-shrink: 0;
}
.pickup-card__brand {
  color: var(--white);
  font-weight: 900;
  font-size: 16px;
  line-height: 1.2;
}
.highlight, .hero .highlight { color: var(--accent); }
.hero p { font-size: 18px; max-width: 760px; margin: 0 auto 30px; opacity: 0.95; }
.hero-subline {
  display: inline-block;
  background: rgba(255, 255, 255, 0.10);
  border: 1px solid rgba(255, 255, 255, 0.25);
  padding: 10px 22px;
  border-radius: var(--r-pill);
  font-size: 15px; font-weight: 600;
  color: var(--white);
  margin-bottom: 26px; letter-spacing: 0.2px;
}
.hero-subline .dot { color: var(--accent); margin: 0 8px; }
.hero-cta-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 12px; }
/* Homepage chips follow the left title beside the form; other heroes stay centered. */
@media (min-width: 901px) {
  .hero:has(.hero-form) .hero-value-chips { justify-content: flex-start !important; }
}

.stat-bar {
  padding: 18px 0;
  background: var(--grad-primary);
  color: var(--white);
  border-bottom: 3px solid var(--accent);
}
.stat-chip-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px 18px; }
.stat-chip {
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: var(--r-pill);
  padding: 8px 18px; font-size: 14px; font-weight: 600; color: var(--white);
}
.stat-chip strong { color: var(--accent); font-weight: 800; margin-right: 6px; }

@media (max-width: 900px) {
  .hero { padding: 80px 0; }
  .hero h1, .hero-seo-title { font-size: 32px; text-align: center; }
  .hero p  { font-size: 16px; }
  .hero .hero-emoji { font-size: 48px; }
}
@media (max-width: 480px) {
  .hero h1, .hero-seo-title { font-size: 26px; }
  .stat-chip { font-size: 12px; padding: 6px 14px; }
}

/* Short viewports (embedded browser panels, landscape phones, small preview
   windows) — the hero's own CTA row was falling below the fold entirely,
   underneath the fixed sticky-cta-mobile bar, making it look like the
   WhatsApp button was missing. Tighten vertical rhythm so it stays reachable
   without scrolling. Width-based rules above are untouched. */
@media (max-height: 700px) {
  /* !important is deliberate and narrowly scoped to this media query only:
     css/pages/pickles.css defines an UNCONDITIONAL .hero-meta{display:flex}
     and loads after slp-critical.css, so at equal specificity it silently
     wins over a plain override here regardless of media-query nesting.
     Discovered while fixing hero CTA buttons hidden under the fixed
     sticky-cta-mobile bar on short viewports (e.g. 527x546 embedded panels). */
  .hero { padding: 28px 0 20px !important; }
  .hero h1, .hero-seo-title { font-size: 24px !important; line-height: 1.3 !important; }
  .hero .hero-sub { margin-bottom: 8px !important; font-size: 14px !important; line-height: 1.5 !important; }
  .hero-eyebrow { margin-bottom: 8px !important; }
  .hero-cta-row { margin-top: 8px !important; margin-bottom: 4px !important; }
  /* Trust-pill row is repeated in the dedicated trust-strip section further
     down the page — safe to drop here so the CTA buttons stay reachable
     above the fixed sticky-cta-mobile bar without scrolling. */
  .hero-meta { display: none !important; }
}


/* ============================================================
   09. NAV — .nav-menu, .dropdown, .hamburger (mobile .is-open)
   ============================================================ */
.nav-menu {
  display: flex;
  align-items: center;
  gap: 4px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.nav-item { position: relative; }
.nav-link {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  color: var(--white); font-weight: 600; font-size: 13px;
  text-transform: uppercase; letter-spacing: 0.3px;
  padding: 12px 15px;
  border-radius: var(--r-sm);
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease;
  background: transparent; border: 0; text-decoration: none;
}
.nav-link:hover,
.nav-item:hover > .nav-link,
.nav-link:focus-visible { background: rgba(255, 255, 255, 0.10); color: var(--accent); }
.nav-link .caret { font-size: 9px; opacity: 0.8; }

.dropdown {
  position: absolute; top: 100%; left: 0;
  min-width: 240px;
  background: var(--primary);
  border-top: 3px solid var(--accent);
  border-radius: 0 0 var(--r-md) var(--r-md);
  box-shadow: var(--shadow-lg);
  list-style: none; padding: 8px 0;
  opacity: 0; visibility: hidden;
  transform: translateY(6px);
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
  z-index: var(--z-dropdown);
  /* IMPORTANT: do NOT put overflow on menus that have nested flyouts
     (Services → Medicine/General countries). Overflow clips nested menus
     so they look "unable to open". Scroll only via .dropdown--scroll. */
  overflow: visible;
}
/* Flat long lists only (Areas We Cover) — DESKTOP only.
   On mobile this created a scroll-trap inside the already-scrolling
   hamburger panel, so Areas looked stuck / “unable to close”. */
@media (min-width: 901px) {
  .dropdown.dropdown--scroll {
    max-height: min(70vh, 520px);
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    scrollbar-color: var(--accent) var(--primary);
  }
}
.nav-item:hover > .dropdown,
.nav-item:focus-within > .dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
.dropdown li { position: relative; }
.dropdown a {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  color: var(--white); font-size: 13px; font-weight: 600;
  padding: 11px 18px; text-decoration: none;
  transition: background 0.2s ease, color 0.2s ease;
}
.dropdown a:hover,
.dropdown a:focus-visible { background: var(--secondary); color: var(--accent); }
.dropdown .dropdown {
  top: 0; left: 100%;
  border-top: 0;
  border-left: 3px solid var(--accent);
  border-radius: 0 var(--r-md) var(--r-md) var(--r-md);
  transform: translateX(6px);
  z-index: calc(var(--z-dropdown) + 1);
  max-height: 70vh;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: var(--accent) var(--primary);
}
.dropdown li:hover > .dropdown,
.dropdown li:focus-within > .dropdown { transform: translateX(0); }

.hamburger {
  display: none; background: transparent; border: 0;
  color: var(--accent); font-size: 28px; line-height: 1; padding: 4px 8px;
  cursor: pointer; flex-shrink: 0;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

@media (max-width: 900px) {
  /* Was 78px — measured actual fixed-header height at narrow widths (e.g. 527px)
     is ~90px because the two-line brand text wraps taller than this estimate
     assumed. The shortfall silently clipped the top of whatever sits right
     below the header (e.g. the breadcrumb bar) on every page using this
     header, since nothing else depends on --slp-header-h. 94px keeps a small
     safety margin without leaving a large gap on wider widths in this range. */
  :root { --slp-header-h: 94px; }
  .header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: var(--z-header);
  }
  body.has-slp-promo-strip .header {
    /* --slp-promo-offset counts down to 0 as the strip scrolls away, so the
       header rides up with it and locks flush to the top instead of hovering
       a strip's height down the screen for the whole page. Falls back to the
       static height if the band script never runs. */
    top: var(--slp-promo-offset, var(--slp-promo-h, 48px));
  }
  body.has-slp-promo-strip {
    padding-top: calc(var(--slp-header-h) + var(--slp-promo-h, 48px));
  }
  body {
    padding-top: var(--slp-header-h);
  }
  body.slp-nav-open { overflow: hidden; }
  .header nav {
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    width: 100%;
    flex: none;
    height: 0;
    overflow: visible;
    z-index: 1001;
  }
  .hamburger {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 44px; min-height: 44px;
    margin-left: auto;
    z-index: var(--z-nav-mobile, 1210);
    position: relative;
  }
  .hamburger .hamburger-icon {
    display: block;
    font-size: 28px;
    line-height: 1;
    pointer-events: none;
  }

  .nav-menu {
    display: none;
    flex-direction: column; align-items: stretch; gap: 0;
    background: var(--primary);
    border-top: 3px solid var(--accent);
    padding: 0;
    box-shadow: var(--shadow-lg);
    width: 100%;
    max-width: 100%;
    list-style: none;
    margin: 0;
  }
  .nav-menu.is-open,
  .nav-menu.active {
    display: flex;
    max-height: min(70vh, 640px);
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    padding: 0 0 12px;
  }
  /* Kill desktop scroll rules inside the hamburger — one scroll only */
  .nav-menu .dropdown.dropdown--scroll,
  .nav-menu > .nav-item > .dropdown.dropdown--scroll {
    max-height: 0 !important;
    overflow: hidden !important;
  }
  .nav-menu > .nav-item.is-open > .dropdown,
  .nav-menu > .nav-item.is-open > .dropdown.dropdown--scroll {
    max-height: none !important;
    overflow: visible !important;
  }
  .slp-nav-close-row {
    list-style: none;
    margin: 0;
    padding: 10px 16px 12px;
    position: sticky;
    top: 0;
    z-index: 5;
    background: var(--primary);
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    flex-shrink: 0;
  }
  .slp-nav-close-btn {
    width: 100%;
    min-height: 44px;
    border: 1px solid rgba(255, 213, 79, 0.55);
    border-radius: 10px;
    background: rgba(255, 213, 79, 0.14);
    color: #ffd54f;
    font: inherit;
    font-weight: 700;
    font-size: 15px;
    cursor: pointer;
  }
  .slp-nav-close-btn:hover,
  .slp-nav-close-btn:focus-visible {
    background: rgba(255, 213, 79, 0.26);
    outline: none;
  }
  .nav-link { width: 100%; justify-content: space-between; border-radius: 0; padding: 14px 22px; }
  .dropdown {
    position: static; background: var(--secondary);
    border-top: 0; border-radius: 0; box-shadow: none;
    min-width: 0; opacity: 1; visibility: visible; transform: none;
    max-height: 0; overflow: hidden; padding: 0;
    transition: max-height 0.28s ease;
  }
  /* Only expand dropdown when its direct parent nav-item is open */
  .nav-item.is-open > .dropdown {
    max-height: 2000px;
    padding: 4px 0;
  }
  .dropdown .dropdown {
    background: rgba(0,0,0,0.18);
    border-left: 0;
    transform: none;
    max-height: 0;
    overflow: hidden;
  }
  .dropdown .nav-item.is-open > .dropdown {
    max-height: 2000px;
  }
  .dropdown a {
    padding-left: 36px;
    min-height: 48px;
    touch-action: manipulation;
  }
  .dropdown .dropdown a { padding-left: 52px; }
}

/* ============================================================
   10. Rate tables — country pages (RATE_TABLE markers) + pricing calculator
   Loaded in critical CSS so mobile layout works before deferred pickles.css.
   ============================================================ */
.rate-table-wrapper {
  width: 100%;
  max-width: 800px;
  margin: 32px auto;
  box-sizing: border-box;
}
.rate-table-effective {
  font-size: 13px;
  color: #666;
  margin-bottom: 12px;
  text-align: center;
}
.slp-country-rate-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-family: inherit;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
}
.slp-country-rate-table .rt-head {
  background: linear-gradient(135deg, #4a0072 0%, #6a0099 100%);
  color: #fff;
}
.slp-country-rate-table .rt-head .rt-cell {
  padding: 16px 14px;
  font-weight: 700;
  font-size: 15px;
  text-align: center;
}
.slp-country-rate-table .rt-head .rt-cell small {
  display: block;
  font-weight: 500;
  font-size: 11px;
  color: #ffd54f;
  margin-top: 2px;
}
.slp-country-rate-table .rt-row {
  border-bottom: 1px solid #eee;
}
.slp-country-rate-table .rt-row--odd  { background: #ffffff; }
.slp-country-rate-table .rt-row--even { background: #f9f9f9; }
.slp-country-rate-table .rt-cell {
  padding: 12px 14px;
  font-size: 14px;
  vertical-align: middle;
  box-sizing: border-box;
}
.slp-country-rate-table .rt-cell--weight {
  font-weight: 600;
  text-align: left;
  color: #333;
}
.slp-country-rate-table .rt-cell--price {
  font-weight: 600;
  text-align: right;
  color: #333;
}
.slp-country-rate-table .rt-row--bulk {
  background: linear-gradient(90deg, #fff8dc, #ffe680, #fff8dc);
  border-top: 2px solid #4a0072;
  border-bottom: 2px solid #4a0072;
  box-shadow: inset 0 0 0 2px #ffd54f;
}
.slp-country-rate-table .rt-row--bulk .rt-cell {
  font-weight: 800;
  color: #4a0072;
  font-size: 15px;
}
.slp-country-rate-table .rt-row--bulk .rt-cell--price {
  font-size: 16px;
  text-shadow: 0 0 10px rgba(255, 213, 79, 0.6);
}
.slp-country-rate-table .rt-perkg {
  font-size: 11px;
  color: #6a0099;
  font-weight: 600;
}
.slp-country-rate-table .rt-bulk-badge {
  background: #4a0072;
  color: #ffd54f;
  font-size: 10px;
  padding: 2px 7px;
  border-radius: 4px;
  margin-left: 6px;
  letter-spacing: 0.5px;
  font-weight: 700;
  display: inline-block;
  vertical-align: middle;
}
.pricing-section .rate-table-wrapper {
  display: block !important;
  width: 100%;
  max-width: 100%;
  overflow-x: visible;
}
.pricing-section .rate-table-wrapper .slp-country-rate-table,
.pricing-section .rate-table-wrapper > table {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  table-layout: fixed !important;
  margin-left: auto;
  margin-right: auto;
}

@media (max-width: 600px) {
  /* Country-page rate table — applies to .slp-country-rate-table AND any
     legacy inline-styled table inside .rate-table-wrapper. */
  .rate-table-wrapper {
    padding: 0 4px;
  }
  .rate-table-effective {
    font-size: 12px;
    padding: 0 8px;
  }
  .slp-country-rate-table,
  .pricing-section .rate-table-wrapper > table {
    display: table;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    table-layout: fixed !important;
  }
  .slp-country-rate-table colgroup,
  .slp-country-rate-table thead,
  .slp-country-rate-table tbody,
  .slp-country-rate-table tr {
    display: table-row-group;
  }
  .slp-country-rate-table thead { display: table-header-group; }
  .slp-country-rate-table tr    { display: table-row; }
  .slp-country-rate-table .rt-cell,
  .pricing-section .rate-table-wrapper > table th,
  .pricing-section .rate-table-wrapper > table td {
    display: table-cell;
    width: 33.33% !important;
    min-width: 0;
    padding: 10px 6px !important;
    font-size: 12px !important;
    line-height: 1.35;
    word-break: normal;
    overflow-wrap: anywhere;
    box-sizing: border-box;
    vertical-align: middle;
  }
  .slp-country-rate-table .rt-head .rt-cell {
    padding: 12px 6px !important;
    font-size: 12px !important;
    text-align: center !important;
  }
  .slp-country-rate-table .rt-head .rt-cell small,
  .pricing-section .rate-table-wrapper > table th small {
    display: block;
    font-size: 9px !important;
    margin-top: 3px;
    color: #ffd54f;
    font-weight: 500;
  }
  .slp-country-rate-table .rt-cell--weight {
    text-align: left !important;
    font-weight: 600;
  }
  .slp-country-rate-table .rt-cell--price {
    text-align: right !important;
    white-space: nowrap;
  }
  .slp-country-rate-table .rt-row--bulk .rt-cell {
    font-size: 13px !important;
    padding: 11px 5px !important;
  }
  .slp-country-rate-table .rt-bulk-badge {
    font-size: 9px;
    padding: 1px 5px;
    margin-left: 4px;
  }
  .slp-country-rate-table .rt-perkg {
    font-size: 10px;
  }

  /* pricing.html — FedEx/DHL quote tables (step 2) */
  .rate-table-container {
    display: block !important;
    width: 100%;
    max-width: 100%;
    overflow: visible;
  }
  #quotesContainer .rate-table {
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  #quotesContainer .rate-table thead,
  #quotesContainer .rate-table tbody {
    display: block;
    width: 100%;
  }
  #quotesContainer .rate-table tr {
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 100%;
  }
  #quotesContainer .rate-table th,
  #quotesContainer .rate-table td {
    display: block;
    width: auto !important;
    text-align: center !important;
    padding: 10px 6px !important;
    font-size: 13px !important;
    box-sizing: border-box;
  }
}

/* ============================================================
   11. Narrow-mobile safety net for cards + responsive tables
   Mobile-overflow audit 2026-05-26:
     - .segment-card overflowed 22 pages by up to 47px (28px padding × 2 +
       border + grid gap exceeded 375px viewport width).
     - .compare-table inside .table-responsive overflowed 6 guide pages
       by up to 283px because guide-page inline CSS forced min-width:640px.
     The rules below win against the inline rule via specificity + !important.
   ============================================================ */
@media (max-width: 480px) {
  .grid-2x2 {
    grid-template-columns: 1fr !important;
    gap: 16px !important;
  }
  .segment-card {
    padding: 18px !important;
    box-sizing: border-box;
    max-width: 100%;
  }
  .segment-card h3 { font-size: 16px; }
  .segment-card p  { font-size: 13px; }
}

/* Responsive tables — overflow scrolls inside wrapper, never the page */
.table-responsive,
.pricing-table,
.blog-article__body {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  box-sizing: border-box;
}

/* ---- Comparison tables (.compare-table) visual styling ----
   Hub (pickle/medicine/baggage), guide and help pages use
   <table class="compare-table"> but the page CSS only handled overflow,
   so these rendered as unstyled plain text. Scoped via .table-responsive
   to win over guides.css `.guide-article__body table`. */
.table-responsive .compare-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--white);
  border: 1px solid var(--hairline);
  border-radius: var(--r-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  font-size: 15px;
  color: var(--text);
}
.table-responsive .compare-table thead th {
  background: var(--grad-primary);
  color: var(--white);
  font-weight: 700;
  text-align: left;
  padding: 13px 16px;
  font-size: 14px;
  letter-spacing: 0.2px;
  vertical-align: middle;
}
.table-responsive .compare-table tbody th,
.table-responsive .compare-table tbody td {
  padding: 12px 16px;
  border-top: 1px solid var(--hairline);
  text-align: left;
  vertical-align: top;
  line-height: 1.45;
}
.table-responsive .compare-table tbody th,
.table-responsive .compare-table tbody td:first-child {
  font-weight: 700;
  color: var(--primary);
}
.table-responsive .compare-table tbody tr:nth-child(even) th,
.table-responsive .compare-table tbody tr:nth-child(even) td {
  background: var(--light);
}
.table-responsive .compare-table tbody tr:hover th,
.table-responsive .compare-table tbody tr:hover td {
  background: #f7f0fb;
}
@media (max-width: 768px) {
  /* Guide-page inline CSS forces min-width:640px on compare-table — override.
     Also catches .pricing-table (domestic.html) and bare blog-article tables. */
  .table-responsive .compare-table,
  .table-responsive > table,
  .pricing-table > table,
  .blog-article__body table {
    min-width: 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    table-layout: auto;
    font-size: 13px;
  }
  .table-responsive .compare-table th,
  .table-responsive .compare-table td,
  .pricing-table > table th,
  .pricing-table > table td,
  .blog-article__body table th,
  .blog-article__body table td {
    padding: 8px 6px !important;
    word-break: break-word;
    overflow-wrap: anywhere;
  }
}

/* ============================================================
   FOLD TIGHTENING (v2) — applies to every page
   Appended last so it wins on equal specificity. Each rule
   names the symptom it fixes; verified at 1440x900 and 390x844.
   ============================================================ */

/* The wordmark wrapped to three lines and pushed the header past 120px,
   shoving the hero — and every CTA in it — down the page. */
.brand-text h2 { font-size: 15px; line-height: 1.16; margin: 0; }
.brand-text .brand-sub {
  /* "A Brand of Sri Lakshmi Prasanna Enterprises" wrapped to two lines inside
     the 268px brand block, making the wordmark three lines tall again and
     pushing the header back to 97px. */
  font-size: 9.5px;
  letter-spacing: 0;
  white-space: nowrap;
  opacity: .78;
}
.header { padding: 10px 0; }

/* Hero variants were sized for a full screen of centred text, so the fold
   carried a headline and nothing to act on. Reclaim the dead space. */
.hero--city,
.hero--general,
.hero--medicine,
.hero--documents { padding-top: 30px; padding-bottom: 38px; min-height: 0; }

.hero-eyebrow {
  font-size: 12.5px;
  padding: 7px 15px;
  line-height: 1.3;
}

@media (max-width: 900px) {
  /* 390px cannot fit "INTERNATIONAL COURIERS" on one line at 15px; this keeps
     the wordmark to the two lines its <br> intends instead of three. */
  .brand-text h2 { font-size: 12.5px; letter-spacing: 0; }
  .brand-text .brand-sub { display: none; }

  .hero--city,
  .hero--general,
  .hero--medicine,
  .hero--documents { padding-top: 18px; padding-bottom: 26px; }

  /* Buttons were full-width stacked pills with 20px gaps, so the second CTA
     regularly fell below the fold. */
  .hero-cta-row { gap: 10px; }
  .hero-cta-row .btn { padding: 13px 18px; font-size: 15px; }
}

/* ---------------------------------------------------------------------------
   HERO RATE LINE
   The visitor arrives asking one question — how much. Before this, the first
   rupee figure on a country page sat ~5,000px down, six phone screens below
   the fold, and the rate table another three screens after that. This puts
   the answer directly under the headline. Filled by fill_rate_tables.py from
   google_sheet_rates.csv, the same source as the table below, so the two
   cannot drift apart.
   --------------------------------------------------------------------------- */
.hero-rate {
  margin: 0 0 18px;
  padding: 10px 14px;
  display: inline-block;
  border: 1px solid rgba(255, 255, 255, .28);
  border-radius: 10px;
  background: rgba(0, 0, 0, .22);
  color: #fff;
  font-size: 14.5px;
  line-height: 1.5;
  font-weight: 600;
  letter-spacing: .01em;
}
.hero-rate strong { color: #ffd54f; font-weight: 800; font-size: 16px; }
.hero-rate:empty { display: none; }

@media (max-width: 860px) {
  .hero-rate { font-size: 13px; padding: 9px 12px; margin-bottom: 14px; }
  .hero-rate strong { font-size: 14.5px; }
}

/* ── Hero CTA ────────────────────────────────────────────────────────────────
   Added 2026-08-16. The CTA audit found nine hand-maintained pages with no call
   or WhatsApp link anywhere in the opening screen — among them tracking.html
   (3,347 impressions, the site's most-seen page) and dimensional-calc.html
   (2,902 impressions at 0.17% CTR, its worst). Someone tracking a parcel or
   pricing a box is a warm lead being shown no way to act. */
.slp-hero-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 18px 0 0;
  align-items: center;
  /* Follow the hero's own alignment. .hero is text-align:center, and a flex
  row with no justify-content defaults to flex-start — which put these buttons
  hard against the left edge underneath a centred headline on every page using
  the plain .hero. Hero variants that are genuinely left-aligned (the country
  and locality templates) override this below.
  Introduced by the hero-CTA change earlier in this branch, not pre-existing. */
  justify-content: center;
}
/* Left-aligned hero variants: the country, locality and hub templates lay the
   hero out as a two-column grid with copy on the left, so a centred button row
   would sit adrift of the headline above it. */
.hero--hub .slp-hero-cta,
.page-hero .slp-hero-cta,
.blog-hub-hero .slp-hero-cta { justify-content: flex-start; }
.slp-hero-cta__btn {
  display: inline-block;
  padding: 11px 18px;
  border-radius: 8px;
  font-size: 15px;
  font-weight: 700;
  text-decoration: none;
  /* 44px minimum touch target — 63% of this traffic is mobile. */
  min-height: 44px;
  line-height: 22px;
  box-sizing: border-box;
}
.slp-hero-cta__btn--call { background: #ffd54f; color: #14304f; }
.slp-hero-cta__btn--wa   { background: #25d366; color: #06331a; }
.slp-hero-cta__btn:hover,
.slp-hero-cta__btn:focus { filter: brightness(1.08); }
/* Own line, not squeezed in beside the buttons. As an inline flex item it sat
   hard against the WhatsApp button and read as overflow rather than as a
   supporting line. flex-basis:100% forces the wrap; the row's justify-content
   then centres or left-aligns it to match the hero. */
.slp-hero-cta__note {
  font-size: 13.5px;
  opacity: .85;
  flex: 1 1 100%;
  margin-top: 4px;
}
@media (max-width: 520px) {
  .slp-hero-cta { gap: 8px; }
  .slp-hero-cta__btn { flex: 1 1 100%; text-align: center; }
}
