/* ═══════════════════════════════════════════════════════════════════════════
   urologyclinic-lb.com — Dr. Imad Ghantous · Urology & Men's Health
   DESIGN SYSTEM STYLESHEET (single source for the whole site)

   Ported faithfully from _reference/original-design.html (the approved React
   prototype). Theme = white / blue / grey academic clinical. Backgrounds
   alternate #fff and var(--off-white). Mobile-first; no horizontal overflow
   at 360px. Bilingual EN + Arabic with CSS-toggled, RTL-mirrored layouts.

   TABLE OF CONTENTS
     1.  Google Fonts import
     2.  Design tokens (:root CSS variables)        — spec §2
     3.  Reset / base / scrollbar / selection / scroll
     4.  Typography helpers (.serif .mono .eyebrow .section-h)
     5.  Buttons (.btn-primary .btn-outline .btn-wa .btn-grey)
     6.  Cards, tags, nav-link, inputs, social-chip, axis-tab
     7.  Reveal-on-scroll
     8.  Keyframes (fadeUp, fadeIn, slideIn, pulse)
     9.  Layout utilities (container, grids, .hide-mob, .hamb)
     10. Header: top utility bar + sticky nav (.scrolled blur) + mobile menu
     11. Hero
     12. Sticky WhatsApp float (.wa-float — RTL aware)
     13. Footer
     14. Service-page components (.svc-hero .step .faq-item .cta-band
         .info-grid .breadcrumb)                    — spec §7
     15. Internationalization (EN/AR toggle, Arabic fonts, RTL)  — spec §3
     16. Responsive breakpoints (960px, 540px) + 360px safety
   ═══════════════════════════════════════════════════════════════════════════ */


/* ── 1. GOOGLE FONTS ─────────────────────────────────────────────────────────
   Exact families/weights the reference uses (spec §2a):
   Libre Baskerville (serif/headings EN) · Source Sans 3 (body EN) ·
   Courier Prime (mono/eyebrows) · Noto Naskh Arabic (AR body) ·
   Noto Kufi Arabic (AR headings/mono).
   Fonts are loaded via async <link> in each page's <head> (non-render-blocking);
   no @import here (an @import would re-introduce a render-blocking request).   */


/* ── 2. DESIGN TOKENS (spec §2) ──────────────────────────────────────────────
   Every colour/measure used across the site. Names match the spec exactly so
   other agents and inline styles can reference them.                          */
:root {
  /* neutrals / surfaces */
  --white: #ffffff;
  --off-white: #f5f7fa;
  --page-grey: #eceff4;
  --border: #d8dee8;
  --border-mid: #c2ccd8;

  /* text */
  --text-dark: #0c1a2c;
  --text-mid: #3a4e66;
  --text-light: #6b7e96;
  --text-dim: #9aa9bc;

  /* blues */
  --blue: #2b74c4;
  --blue-mid: #3f86d4;
  --blue-light: #67a6e8;
  --blue-pale: #eaf3fc;
  --blue-dim: rgba(43, 116, 196, 0.09);   /* focus-ring tint */
  --blue-glow: rgba(63, 134, 212, 0.2);    /* hero glow */

  /* greys */
  --grey: #7b90a7;
  --grey-light: #b9c6d4;
  --grey-pale: #eff3f8;
  --grey-dark: #485c70;

  /* navy / accents */
  --navy: #1f5288;
  --navy-mid: #2b649e;
  --navy-footer: #143a5e;                  /* footer surface (reference) */
  --success: #1a6e40;
  --urgent: #b83232;
  --gold: #b7902f;

  /* WhatsApp brand */
  --wa: #25D366;
  --wa-dark: #20b858;

  /* layout */
  --mw: 1260px;                            /* max content width */
  --px: clamp(18px, 5vw, 72px);            /* section side padding */
  --nav-h: 64px;                           /* sticky nav height */

  /* fonts (shortcuts) */
  --font-serif: 'Libre Baskerville', Georgia, serif;
  --font-sans: 'Source Sans 3', system-ui, -apple-system, sans-serif;
  --font-mono: 'Courier Prime', monospace;
  --font-ar-body: 'Noto Naskh Arabic', 'Source Sans 3', sans-serif;
  --font-ar-head: 'Noto Kufi Arabic', serif;

  /* shared shadows */
  --shadow-card: 0 4px 20px rgba(23, 80, 140, 0.1);
  --shadow-btn: 0 6px 20px rgba(23, 80, 140, 0.25);
  --shadow-pop: 0 12px 32px rgba(9, 29, 52, 0.15);
}


/* ── 3. RESET / BASE / SCROLLBAR / SELECTION / SCROLL ───────────────────────── */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  /* offset anchor jumps so the sticky nav doesn't cover section tops */
  scroll-padding-top: calc(var(--nav-h) + 12px);
}

body {
  background: var(--off-white);
  color: var(--text-dark);
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  min-height: 100vh;
  text-align: start;
  overflow-x: hidden;       /* hard guard against horizontal scroll */
}

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
button { font-family: inherit; }

/* scrollbar */
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: var(--page-grey); }
::-webkit-scrollbar-thumb { background: var(--blue-light); border-radius: 3px; }

/* selection */
::selection { background: var(--blue-pale); }

/* visible focus for keyboard users (accessibility) */
:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 2px;
  border-radius: 3px;
}


/* ── 4. TYPOGRAPHY HELPERS ───────────────────────────────────────────────────
   .serif  → Libre Baskerville (EN headings)
   .mono   → Courier Prime (eyebrows / labels)
   .eyebrow→ mono uppercase blue-light kicker
   .section-h → big serif section heading                                      */
.serif { font-family: var(--font-serif); }
.mono  { font-family: var(--font-mono); }

.eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--blue-light);
  margin-bottom: 10px;
}

.section-h {
  font-family: var(--font-serif);
  font-size: clamp(28px, 4vw, 46px);
  font-weight: 700;
  color: var(--text-dark);
  line-height: 1.15;
}


/* ── 5. BUTTONS ──────────────────────────────────────────────────────────────
   Shared base + the four named variants. Hover lifts + shadows from reference.
   text-decoration:none so they work equally as <a> or <button>.               */
.btn-primary,
.btn-outline,
.btn-wa,
.btn-grey {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 11px 22px;
  border-radius: 5px;
  font-size: 14px;
  font-weight: 600;
  font-family: inherit;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
  transition: all 0.2s ease;
  border: none;
}

.btn-primary { background: var(--blue); color: #fff; }
.btn-primary:hover {
  background: var(--blue-mid);
  transform: translateY(-1px);
  box-shadow: var(--shadow-btn);
}

.btn-outline {
  background: #fff;
  color: var(--blue);
  border: 1px solid var(--border);
}
.btn-outline:hover { background: var(--blue-pale); }

.btn-wa { background: var(--wa); color: #fff; }
.btn-wa:hover { background: var(--wa-dark); }

.btn-grey { background: var(--page-grey); color: var(--text-mid); }
.btn-grey:hover { background: var(--border); }

/* full-width helper used on forms / mobile menu */
.btn-block { width: 100%; }


/* ── 6. CARDS / TAGS / NAV-LINK / INPUTS / SOCIAL-CHIP / AXIS-TAB ────────────── */

/* Card — subtle hover lift (reference exact) */
.card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 8px;
  transition: box-shadow 0.2s, border-color 0.2s, transform 0.2s;
}
.card:hover {
  box-shadow: var(--shadow-card);
  border-color: var(--blue-light);
  transform: translateY(-2px);
}

/* Tags / pills */
.tag {
  display: inline-flex;
  align-items: center;
  padding: 4px 11px;
  border-radius: 3px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  background: var(--blue-pale);
  color: var(--blue);
}
.tag-urgent { background: rgba(184, 50, 50, 0.1); color: var(--urgent); }
.tag-grey   { background: var(--grey-pale); color: var(--grey-dark); }

/* Nav link */
.nav-link {
  font-size: 14px;
  font-weight: 500;
  color: var(--text-mid);
  cursor: pointer;
  text-decoration: none;
  transition: color 0.2s;
  background: none;
  border: none;
  font-family: inherit;
}
.nav-link:hover { color: var(--blue); }

/* Axis tab (five-axes selector on home) */
.axis-tab {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 16px 20px;
  border: none;
  border-bottom: 2px solid transparent;
  background: none;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s;
}
.axis-tab:hover { background: var(--blue-pale); }
.axis-tab.active { border-bottom-color: var(--blue); background: var(--blue-pale); }

/* Form fields — focus ring uses --blue-dim */
.input-f {
  width: 100%;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--text-dark);
  font-family: inherit;
  font-size: 14px;
  padding: 11px 13px;
  transition: border-color 0.2s, box-shadow 0.2s;
  outline: none;
}
.input-f:focus {
  border-color: var(--blue-light);
  box-shadow: 0 0 0 3px var(--blue-dim);
}
.input-f::placeholder { color: var(--text-dim); }
textarea.input-f { resize: vertical; }

/* Field label (matches reference inline LBL) */
.field-label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--text-light);
  margin-bottom: 6px;
}

/* Social chip — icon button, branded hover handled inline per-network */
.social-chip {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 5px;
  text-decoration: none;
  font-weight: 700;
  transition: transform 0.2s, background 0.2s, color 0.2s, border-color 0.2s;
}
.social-chip:hover { transform: translateY(-2px) scale(1.05); }


/* ── 7. REVEAL ON SCROLL ─────────────────────────────────────────────────────
   site.js adds .is-visible via IntersectionObserver. Default = hidden+down;
   visible = fade up. Honors prefers-reduced-motion.                           */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.6s ease, transform 0.6s ease;
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1;
  transform: none;
}
/* optional stagger via inline style="--reveal-delay:100ms" */
.reveal { transition-delay: var(--reveal-delay, 0ms); }


/* ── 8. KEYFRAMES ────────────────────────────────────────────────────────────
   Used for hero entrance + accents (reference: fadeUp, fadeIn, slideIn, pulse) */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: none; }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes slideIn {
  from { opacity: 0; transform: translateX(16px); }
  to   { opacity: 1; transform: none; }
}
@keyframes pulse {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.08); }
}

/* RTL: slideIn should arrive from the opposite side */
html[lang="ar"] [style*="slideIn"],
html[lang="ar"] .anim-slide-in {
  animation-name: slideInRTL !important;
}
@keyframes slideInRTL {
  from { opacity: 0; transform: translateX(-16px); }
  to   { opacity: 1; transform: none; }
}


/* ── 9. LAYOUT UTILITIES ─────────────────────────────────────────────────────
   .container  → centered max-width wrapper (var(--mw))
   .section    → vertical rhythm + side padding (var(--px))
   .two/three/four-col → responsive grid helpers (collapse at breakpoints)
   .hide-mob / .hamb → show/hide chrome by viewport                            */
.container {
  max-width: var(--mw);
  margin-inline: auto;
  padding-inline: var(--px);
  width: 100%;
}

/* Section vertical padding (reference uses 88px desktop) + side padding */
.section {
  padding-block: clamp(56px, 8vw, 88px);
  padding-inline: var(--px);
}
.section > .container { padding-inline: 0; }   /* avoid double side padding */

/* alternating background helpers */
.bg-white     { background: #fff; }
.bg-offwhite  { background: var(--off-white); }
.bg-pagegrey  { background: var(--page-grey); }
.bg-navy      { background: var(--navy); }

/* Grid helpers — desktop column counts; collapse handled in §16 */
.two-col   { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.three-col { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.four-col  { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }

/* flex row helper used by the axes tab strip */
.axes-row { display: flex; gap: 8px; }

/* visibility helpers (mobile shows hamburger, hides desktop chrome) */
.hide-mob { display: revert; }
.hamb {
  display: none;              /* shown < 960px (see §16) */
  flex-direction: column;
  gap: 5px;
  padding: 6px;
  background: none;
  border: none;
  cursor: pointer;
}
.hamb span {
  width: 22px;
  height: 1.5px;
  background: var(--navy);
  display: block;
  border-radius: 2px;
  transition: transform 0.2s, opacity 0.2s;
}


/* ── 10. SHARED CHROME (canonical, matches partials) ─────────────────────────
   Styles the EXACT markup class names emitted by partials/header.php and
   partials/footer.php (.util-bar, .site-header, .nav-inner, .nav-dd-*,
   .mobile-*, .footer-inner/-name/-col/-col-h, …). Single source of truth for
   the site chrome — every page gets it from this stylesheet (no page-scoped
   bridge). Uses only the design tokens defined in §2.                          */

/* ── Top utility bar (navy) ── */
.util-bar{background:var(--navy);padding:7px 0;border-bottom:1px solid rgba(255,255,255,.06);}
.util-inner{max-width:var(--mw);margin-inline:auto;padding-inline:var(--px);display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;}
.util-left,.util-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.util-left{gap:14px;}
.util-logo{display:inline-flex;align-items:center;background:#fff;border-radius:6px;padding:3px 8px;text-decoration:none;}
.util-logo img{height:28px;display:block;}
.util-logo .logo-fallback-text{display:none;font-family:var(--font-serif);font-weight:700;font-size:13px;color:var(--navy);letter-spacing:.02em;}
.util-logo.logo-fallback{padding:4px 10px;}
.util-logo.logo-fallback .logo-fallback-text{display:inline;}
.util-phone{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:rgba(255,255,255,.85);text-decoration:none;transition:color .2s;}
.util-phone:hover{color:#fff;}
.util-phone-ic{font-size:13px;}
.util-phones{display:flex;align-items:center;gap:6px 16px;flex-wrap:wrap;}
.util-phones .up-label{opacity:.62;font-weight:500;margin-inline-end:2px;}
.util-phones .ph-num{white-space:nowrap;}
@media (max-width:760px){ .util-phones .up-label{display:none;} .util-phones{gap:4px 12px;} }
.util-bar .social-row{display:flex;align-items:center;gap:6px;}
.util-bar .social-chip{width:26px;height:26px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.75);}
.util-qr{display:flex;background:#fff;border-radius:6px;padding:3px;text-decoration:none;}
.util-qr img{width:40px;height:40px;display:block;}
.lang-toggle{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);color:#fff;padding:5px 12px;border-radius:4px;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .2s;}
.lang-toggle:hover{background:rgba(255,255,255,.2);}

/* ── Main sticky nav ── */
.site-header{position:sticky;top:0;z-index:100;background:#fff;border-bottom:1px solid var(--border);transition:background .2s,box-shadow .2s;}
.site-header.scrolled{background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 1px 12px rgba(9,29,52,.06);}
.nav-inner{max-width:var(--mw);margin-inline:auto;padding-inline:var(--px);min-height:var(--nav-h);display:flex;align-items:center;justify-content:space-between;gap:20px;}
.nav-brand{cursor:pointer;flex-shrink:0;text-decoration:none;display:block;}
.nav-brand-name{display:block;font-family:var(--font-serif);font-size:18px;font-weight:700;color:var(--navy);line-height:1.1;}
.nav-brand-role{display:block;font-size:11.5px;color:var(--text-mid);margin-top:2px;}
.nav-links{display:flex;align-items:center;gap:18px;}
.nav-dropdown{position:relative;}
.nav-dd-toggle{display:inline-flex;align-items:center;gap:4px;background:none;border:none;font-family:inherit;}
.nav-dd-caret{font-size:9px;opacity:.7;}
.nav-dd-menu{position:absolute;top:calc(100% + 6px);inset-inline-start:0;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-pop);padding:7px;min-width:250px;z-index:200;opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .18s,transform .18s,visibility .18s;}
.nav-dropdown:hover .nav-dd-menu,.nav-dropdown:focus-within .nav-dd-menu{opacity:1;visibility:visible;transform:none;}
.nav-dd-item{display:block;padding:9px 12px;border-radius:6px;text-decoration:none;font-size:13.5px;font-weight:600;color:var(--navy);transition:background .15s;}
.nav-dd-item:hover{background:var(--blue-pale);}
.nav-cta{display:flex;gap:10px;align-items:center;}
.nav-phone{display:inline-flex;align-items:center;font-size:13px;font-weight:600;color:var(--text-mid);text-decoration:none;}
.nav-phone:hover{color:var(--blue);}
.nav-toggle{display:none;flex-direction:column;gap:5px;padding:6px;background:none;border:none;cursor:pointer;}
.nav-toggle span{width:22px;height:1.5px;background:var(--navy);display:block;border-radius:2px;}

/* ── Mobile menu ── */
.mobile-menu{display:none;background:#fff;border-top:1px solid var(--border);padding:16px 22px;flex-direction:column;gap:4px;}
.mobile-menu.open{display:flex;}
.mobile-menu .nav-link{padding:8px 0;}
.mobile-group{padding:6px 0;}
.mobile-group-title{font-weight:700;font-size:14px;color:var(--navy);margin-bottom:4px;}
.mobile-sub{display:block;padding:6px 0;padding-inline-start:14px;font-size:13.5px;}
.mobile-phone{display:inline-flex;align-items:center;gap:6px;padding:10px 0;font-weight:600;color:var(--text-mid);text-decoration:none;}
.mobile-lang{margin-top:16px;width:100%;justify-content:center;}
.mobile-book{margin-top:8px;width:100%;}
.mobile-wa{margin-top:8px;width:100%;}

/* social-chip branded hover (matches reference per-network) */
.social-chip[data-net="fb"]:hover{background:#1877F2;border-color:#1877F2;color:#fff;}
.social-chip[data-net="ig"]:hover{background:#E4405F;border-color:#E4405F;color:#fff;}
.social-chip[data-net="yt"]:hover{background:#FF0000;border-color:#FF0000;color:#fff;}
.social-chip[data-net="in"]:hover{background:#0A66C2;border-color:#0A66C2;color:#fff;}
.social-chip[data-net="x"]:hover{background:#000;border-color:#000;color:#fff;}
.social-chip[data-net="wa"]:hover{background:var(--wa);border-color:var(--wa);color:#fff;}

/* Brand-COLOURED social icons by default (header + footer), per Dr. Imad.
   Higher specificity (.social-row …) overrides the .util-bar/.footer-brand bases. */
.social-row .social-chip[data-net="fb"]{background:#1877F2;border-color:#1877F2;color:#fff;}
.social-row .social-chip[data-net="ig"]{background:#E4405F;border-color:#E4405F;color:#fff;}
.social-row .social-chip[data-net="yt"]{background:#FF0000;border-color:#FF0000;color:#fff;}
.social-row .social-chip[data-net="x"]{background:#111;border-color:#111;color:#fff;}
.social-row .social-chip[data-net="wa"]{background:#25D366;border-color:#25D366;color:#fff;}
.social-row .social-chip:hover{filter:brightness(1.08);}

/* show hamburger / hide desktop chrome on mobile (mirrors §16) */
@media(max-width:960px){
  .nav-toggle{display:flex;}
  .nav-links,.nav-cta{display:none;}
}


/* ── 11. HERO ────────────────────────────────────────────────────────────────
   Navy gradient, faint vertical gridlines, blurred glow orb, two-column grid
   that collapses on mobile.                                                    */
.hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(165deg, var(--navy) 0%, var(--navy-mid) 100%);
  padding: clamp(56px, 8vw, 96px) var(--px);
}
.hero .container { position: relative; z-index: 1; }
/* decorative vertical gridlines */
.hero-grid-line {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 1px;
  background: rgba(255, 255, 255, 0.03);
}
/* blurred glow — sits on the trailing side (inline-end), mirrors in RTL */
.hero-glow {
  position: absolute;
  top: 20%;
  inset-inline-end: 8%;
  width: 360px;
  height: 360px;
  border-radius: 50%;
  background: var(--blue-glow);
  filter: blur(80px);
  pointer-events: none;
}
.hero-inner {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 72px;
  align-items: center;
}
.hero-copy { animation: fadeUp 0.7s ease 0.1s both; }
.hero-aside { animation: slideIn 0.8s ease 0.3s both; }

.hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 30px;
  padding: 7px 16px;
  margin-bottom: 22px;
}
.hero-badge .mono {
  color: rgba(255, 255, 255, 0.7);
  font-size: 11px;
  letter-spacing: 0.08em;
}
.hero-badge .dot { color: rgba(255, 255, 255, 0.4); font-size: 11px; }

.hero-h1 {
  font-family: var(--font-serif);
  font-size: clamp(36px, 5.5vw, 62px);
  font-weight: 700;
  color: #fff;
  line-height: 1.05;
  margin-bottom: 14px;
}
.hero-role {
  font-family: var(--font-serif);
  font-size: clamp(18px, 2.5vw, 26px);
  font-weight: 400;
  color: var(--blue-light);
  margin-bottom: 22px;
}
.hero-lead {
  font-size: 16px;
  color: rgba(255, 255, 255, 0.6);
  line-height: 1.8;
  max-width: 560px;
  margin-bottom: 30px;
}
.hero-cta-row {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 40px;
}
/* ghost button used for "Our Programmes" in hero */
.btn-ghost-light {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: transparent;
  border: 1.5px solid rgba(255, 255, 255, 0.25);
  color: #fff;
  padding: 13px 26px;
  border-radius: 5px;
  font-size: 14px;
  font-weight: 600;
  font-family: inherit;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s;
}
.btn-ghost-light:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.4);
}

/* credentials row beneath hero CTAs — logical borders mirror in RTL */
.hero-titles {
  display: flex;
  flex-wrap: wrap;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding-top: 22px;
}
.hero-title {
  padding-inline-end: 24px;
  margin-inline-end: 24px;
  border-inline-end: 1px solid rgba(255, 255, 255, 0.1);
  margin-bottom: 8px;
}
.hero-title:last-child { border-inline-end: none; }
.hero-title-k {
  font-family: var(--font-serif);
  font-size: 14px;
  font-weight: 700;
  color: #fff;
}
.hero-title-v {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.45);
  margin-top: 2px;
}

/* hero portrait card + axes mini-grid */
.hero-card {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 12px;
  overflow: hidden;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
.hero-photo {
  height: 220px;
  background: linear-gradient(135deg, rgba(63, 134, 212, 0.27), var(--navy));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
}
.hero-photo::after {
  content: "";
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--blue-light));
}
.hero-axes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 14px;
}
.hero-axis-btn {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 6px;
  padding: 12px 6px;
  cursor: pointer;
  text-align: center;
  font-family: inherit;
  transition: background 0.2s;
}
.hero-axis-btn:hover { background: rgba(255, 255, 255, 0.12); }


/* ── 12. STICKY WHATSAPP FLOAT (.wa-float — RTL aware) ───────────────────────
   Always-visible round green button, bottom corner. Lives on the trailing
   side in LTR (right) and mirrors to the left in RTL.                          */
.wa-float {
  position: fixed;
  bottom: 24px;
  inset-inline-end: 24px;
  z-index: 999;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 56px;
  height: 56px;
  padding: 0 20px;
  border-radius: 28px;
  border: none;
  background: var(--wa);
  color: #fff;
  font-size: 15px;
  font-weight: 700;
  font-family: inherit;
  text-decoration: none;
  cursor: pointer;
  box-shadow: 0 6px 22px rgba(9, 29, 52, 0.35);
  transition: transform 0.2s, background 0.2s, box-shadow 0.2s;
}
.wa-float:hover {
  background: var(--wa-dark);
  transform: translateY(-2px) scale(1.04);
  box-shadow: 0 10px 28px rgba(9, 29, 52, 0.42);
}
.wa-float .wa-float-label { white-space: nowrap; }
/* icon-only collapse on the smallest screens (see §16) */


/* ── 13. FOOTER ──────────────────────────────────────────────────────────────
   Deep navy (#143a5e). Brand + 3 link columns; bottom legal row; disclaimer.  */
.site-footer {
  background: var(--navy-footer);
  padding: 64px var(--px) 28px;
  color: rgba(255, 255, 255, 0.5);
}
/* canonical: partial markup uses .footer-inner wrapper */
.site-footer .footer-inner { max-width: var(--mw); margin-inline: auto; }
.footer-grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1fr;
  gap: 40px;
  margin-bottom: 40px;
}
.footer-brand .footer-name {
  font-family: var(--font-serif);
  font-size: 18px;
  font-weight: 700;
  color: #fff;
  margin-bottom: 4px;
}
.footer-tagline {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--blue-light);
  letter-spacing: 0.14em;
  margin-bottom: 16px;
}
.footer-about {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.45);
  line-height: 1.7;
  margin-bottom: 20px;
  max-width: 340px;
}
.footer-brand .social-row { display: flex; gap: 7px; flex-wrap: wrap; margin-top: 4px; }
.footer-brand .social-chip {
  width: 32px;
  height: 32px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  color: rgba(255, 255, 255, 0.75);
}
.footer-col { display: flex; flex-direction: column; }
.footer-col-h {
  font-size: 12px;
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.08em;
  margin-bottom: 16px;
}
.footer-col .footer-link { margin-bottom: 9px; }
.footer-links {
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.footer-link {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.5);
  text-decoration: none;
  cursor: pointer;
  transition: color 0.2s;
}
.footer-link:hover { color: #fff; }
.footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  padding-top: 24px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.footer-copy { font-size: 12px; color: rgba(255, 255, 255, 0.35); }
.footer-legal {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
}
.footer-legal a {
  font-size: 11.5px;
  color: rgba(255, 255, 255, 0.4);
  text-decoration: none;
  cursor: pointer;
  transition: color 0.2s;
}
.footer-legal a:hover { color: #fff; }
.footer-legal-link {
  font-size: 11.5px;
  color: rgba(255, 255, 255, 0.4);
  text-decoration: none;
  transition: color 0.2s;
}
.footer-legal-link:hover { color: #fff; }
.footer-disclaimer {
  font-size: 10.5px;
  color: rgba(255, 255, 255, 0.25);
  margin-top: 18px;
  line-height: 1.7;
}


/* ── 14. SERVICE-PAGE COMPONENTS (spec §7) ───────────────────────────────────
   Built in the same visual language: breadcrumb, svc-hero, info-grid, steps,
   FAQ accordion (+/− with open state), and the closing CTA band.              */

/* Breadcrumb */
.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 12.5px;
  color: var(--text-light);
  font-family: var(--font-mono);
  letter-spacing: 0.02em;
  margin-bottom: 18px;
}
.breadcrumb a { color: var(--text-light); text-decoration: none; transition: color 0.2s; }
.breadcrumb a:hover { color: var(--blue); }
.breadcrumb .sep { color: var(--border-mid); }
.breadcrumb [aria-current="page"] { color: var(--text-mid); font-weight: 700; }

/* Service hero — navy gradient like the home hero but compact */
.svc-hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(165deg, var(--navy) 0%, var(--navy-mid) 100%);
  padding: clamp(40px, 6vw, 72px) var(--px) clamp(44px, 7vw, 76px);
  color: #fff;
}
.svc-hero .container { position: relative; z-index: 1; max-width: 900px; }
.svc-hero .breadcrumb { color: rgba(255, 255, 255, 0.55); }
.svc-hero .breadcrumb a { color: rgba(255, 255, 255, 0.55); }
.svc-hero .breadcrumb a:hover { color: #fff; }
.svc-hero .breadcrumb .sep { color: rgba(255, 255, 255, 0.3); }
.svc-hero .breadcrumb [aria-current="page"] { color: rgba(255, 255, 255, 0.85); }
.svc-hero .eyebrow { color: var(--blue-light); }
.svc-hero h1 {
  font-family: var(--font-serif);
  font-size: clamp(28px, 4.5vw, 48px);
  font-weight: 700;
  line-height: 1.1;
  color: #fff;
  margin-bottom: 16px;
}
.svc-hero-lead {
  font-size: clamp(15px, 2vw, 17px);
  color: rgba(255, 255, 255, 0.65);
  line-height: 1.8;
  max-width: 620px;
  margin-bottom: 28px;
}
.svc-hero-cta {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
}
/* tel: link styled as an outline-on-dark pill in the svc hero */
.svc-hero-cta .ph-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  font-size: 14px;
  padding: 11px 18px;
  border: 1.5px solid rgba(255, 255, 255, 0.25);
  border-radius: 5px;
  transition: background 0.2s, border-color 0.2s;
}
.svc-hero-cta .ph-link:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.4);
}

/* Info grid — generic 2/3-up card grid for "what it is / who it's for" etc. */
.info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}
.info-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 24px 22px;
  transition: box-shadow 0.2s, border-color 0.2s, transform 0.2s;
}
.info-card:hover {
  box-shadow: var(--shadow-card);
  border-color: var(--blue-light);
  transform: translateY(-2px);
}
.info-card .info-ico { font-size: 24px; margin-bottom: 10px; }
.info-card h3 {
  font-family: var(--font-serif);
  font-size: 17px;
  color: var(--navy);
  margin-bottom: 8px;
  line-height: 1.3;
}
.info-card p { font-size: 13.5px; color: var(--text-mid); line-height: 1.7; }
.info-card ul { margin: 8px 0 0; padding-inline-start: 18px; }
.info-card li { font-size: 13.5px; color: var(--text-mid); line-height: 1.7; margin-bottom: 4px; }

/* Numbered step (diagnosis / treatment / recovery flows) */
.step {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  margin-bottom: 22px;
}
.step:last-child { margin-bottom: 0; }
.step-num {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--blue);
  color: #fff;
  font-weight: 700;
  font-size: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.step-body h3,
.step-body .step-title {
  font-weight: 600;
  font-size: 15px;
  color: var(--navy);
  margin-bottom: 4px;
}
.step-body p { font-size: 13.5px; color: var(--text-mid); line-height: 1.65; }
/* connected vertical rail variant */
.step-list.railed .step { position: relative; }
.step-list.railed .step:not(:last-child)::before {
  content: "";
  position: absolute;
  inset-inline-start: 17px;
  top: 38px;
  bottom: -22px;
  width: 2px;
  background: var(--border);
}

/* FAQ accordion (spec §7) — .faq-q toggles .faq-a; +/− via .open state */
.faq-item { border-bottom: 1px solid var(--border); }
.faq-q {
  width: 100%;
  background: none;
  border: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 18px 4px;
  cursor: pointer;
  text-align: start;
  font-family: inherit;
  color: var(--text-dark);
  font-weight: 600;
  font-size: 14.5px;
  line-height: 1.5;
}
.faq-q:hover { color: var(--blue); }
/* the +/− marker */
.faq-q .faq-icon {
  flex-shrink: 0;
  color: var(--blue);
  font-size: 22px;
  line-height: 1;
  transition: transform 0.2s;
}
.faq-item.open .faq-q .faq-icon { transform: rotate(45deg); }  /* + → × */
/* collapsible answer — animated max-height; .open reveals it */
.faq-a {
  overflow: hidden;
  max-height: 0;
  padding: 0 4px;
  font-size: 14px;
  color: var(--text-mid);
  line-height: 1.75;
  transition: max-height 0.28s ease, padding 0.28s ease, opacity 0.2s ease;
  opacity: 0;
}
.faq-item.open .faq-a {
  max-height: 600px;
  padding: 0 4px 18px;
  opacity: 1;
}

/* CTA band — full-width navy call-to-action at the foot of service pages */
.cta-band {
  background: linear-gradient(135deg, var(--navy), var(--blue-mid));
  color: #fff;
  border-radius: 12px;
  padding: clamp(28px, 5vw, 48px);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-band h2 {
  font-family: var(--font-serif);
  font-size: clamp(22px, 3.5vw, 32px);
  font-weight: 700;
  color: #fff;
  margin-bottom: 12px;
  line-height: 1.2;
}
.cta-band p {
  font-size: 15px;
  color: rgba(255, 255, 255, 0.7);
  line-height: 1.75;
  max-width: 560px;
  margin: 0 auto 24px;
}
.cta-band-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
}
/* tel link inside the band, light outline on dark */
.cta-band .ph-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  font-size: 14px;
  padding: 11px 18px;
  border: 1.5px solid rgba(255, 255, 255, 0.3);
  border-radius: 5px;
  transition: background 0.2s;
}
.cta-band .ph-link:hover { background: rgba(255, 255, 255, 0.1); }

/* Related-services links row (end of service pages) */
.related-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px;
}
.related-card {
  display: block;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 18px 20px;
  text-decoration: none;
  transition: box-shadow 0.2s, border-color 0.2s, transform 0.2s;
}
.related-card:hover {
  box-shadow: var(--shadow-card);
  border-color: var(--blue-light);
  transform: translateY(-2px);
}
.related-card .rc-title { font-family: var(--font-serif); font-size: 15px; color: var(--navy); margin-bottom: 4px; }
.related-card .rc-sub { font-size: 12.5px; color: var(--text-light); }

/* Reusable prose block for service-page body copy */
.prose h2 {
  font-family: var(--font-serif);
  font-size: clamp(22px, 3vw, 30px);
  font-weight: 700;
  color: var(--text-dark);
  line-height: 1.2;
  margin-bottom: 14px;
}
.prose h3 {
  font-family: var(--font-serif);
  font-size: 18px;
  color: var(--navy);
  margin: 22px 0 8px;
}
.prose p { font-size: 15px; color: var(--text-mid); line-height: 1.85; margin-bottom: 16px; }
.prose ul, .prose ol { margin: 0 0 16px; padding-inline-start: 22px; }
.prose li { font-size: 15px; color: var(--text-mid); line-height: 1.8; margin-bottom: 6px; }
.prose a { color: var(--blue); text-decoration: underline; text-underline-offset: 2px; }

/* Medical-disclaimer note (small, muted, used on clinical pages) */
.disclaimer-note {
  background: var(--grey-pale);
  border: 1px solid var(--border);
  border-inline-start: 3px solid var(--blue-light);
  border-radius: 6px;
  padding: 14px 16px;
  font-size: 12.5px;
  color: var(--text-light);
  line-height: 1.7;
}


/* ── 15. INTERNATIONALIZATION (spec §3) ──────────────────────────────────────
   Both languages render inline; CSS hides the inactive one. Arabic swaps fonts
   and the page mirrors via dir="rtl" (set on <html> by site.js) — layouts use
   logical properties throughout, so they flip automatically.                  */

/* hide the inactive language (default page is lang="en") */
html[lang="en"] .ar { display: none !important; }
html[lang="ar"] .en { display: none !important; }

/* Arabic typography */
html[lang="ar"] body {
  font-family: var(--font-ar-body);
}
html[lang="ar"] .serif,
html[lang="ar"] .section-h,
html[lang="ar"] .hero-h1,
html[lang="ar"] .hero-role,
html[lang="ar"] .nav-brand-name,
html[lang="ar"] .footer-name,
html[lang="ar"] .svc-hero h1,
html[lang="ar"] .cta-band h2,
html[lang="ar"] .prose h2,
html[lang="ar"] .prose h3 {
  font-family: var(--font-ar-head);
}
html[lang="ar"] .mono,
html[lang="ar"] .eyebrow,
html[lang="ar"] .breadcrumb,
html[lang="ar"] .footer-tagline {
  font-family: var(--font-ar-head);
}
/* Arabic eyebrows need tighter tracking (reference) */
html[lang="ar"] .eyebrow { letter-spacing: 0.04em; }

/* RTL alignment baseline (logical properties handle the rest of mirroring) */
html[lang="ar"] body,
[dir="rtl"] body { text-align: start; }

/* WhatsApp float already uses inset-inline-end, so it mirrors automatically.
   Explicit safety in case dir is set without lang flipping: */
[dir="rtl"] .wa-float { inset-inline-end: 24px; inset-inline-start: auto; }


/* ── 16. RESPONSIVE BREAKPOINTS ──────────────────────────────────────────────
   Mobile-first refinements. Breakpoints at 960px and 540px (reference), plus a
   360px safety pass so nothing overflows on the smallest phones.              */

/* ≤ 960px — collapse desktop chrome to the mobile layout */
@media (max-width: 960px) {
  .hide-mob { display: none !important; }

  /* two-col layouts stack */
  .two-col { grid-template-columns: 1fr !important; gap: 32px; }

  /* axes tab strip wraps */
  .axes-row { flex-wrap: wrap; }

  /* show hamburger, hide desktop nav cluster + actions */
  .hamb { display: flex !important; }
  .nav-links,
  .nav-actions { display: none; }

  /* hero stacks; trim the big gap and reflow asides under copy */
  .hero-inner { grid-template-columns: 1fr; gap: 40px; }

  /* footer collapses to a single column */
  .footer-grid { grid-template-columns: 1fr; gap: 28px; }
  .footer-bottom { flex-direction: column; align-items: flex-start; }
}

/* ≤ 540px — collapse the denser grids */
@media (max-width: 540px) {
  .three-col { grid-template-columns: 1fr !important; }
  .four-col  { grid-template-columns: 1fr 1fr !important; }

  /* WhatsApp float becomes icon-only to save space */
  .wa-float { padding: 0; min-width: 56px; }
  .wa-float .wa-float-label { display: none; }

  /* tighten section rhythm on phones */
  .section { padding-block: clamp(44px, 10vw, 64px); }

  /* hero credentials drop their dividers when wrapped tight */
  .hero-title {
    padding-inline-end: 0;
    margin-inline-end: 18px;
    border-inline-end: none;
  }
}

/* ≤ 360px — smallest-phone safety: prevent any horizontal overflow */
@media (max-width: 360px) {
  :root { --px: 16px; }
  .four-col { grid-template-columns: 1fr; }   /* even the 2-up grid stacks */
  .hero-h1 { font-size: 30px; }
  .section-h { font-size: 26px; }
  .util-inner { gap: 8px; }
  .nav-brand-name { font-size: 16px; }
}


/* ── ACCESSIBILITY: reduced motion ───────────────────────────────────────────
   Respect users who prefer no animation — disable entrance/scroll animations
   and reveal transitions (content shows immediately).                         */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .reveal { opacity: 1 !important; transform: none !important; }
}
