/* ============================================================
 * marketing-theme.css
 *
 * Light-mode CSS variable overrides for the marketing site (homepage,
 * features, pricing, about, blog, FAQ, login, register, etc.). Each page
 * defines its own dark-mode :root variables inline; this stylesheet
 * supplies the light counterparts so a single theme toggle flips the
 * whole site without page-by-page edits.
 *
 * Trigger: <html data-theme="light"> (set by marketing-theme.js).
 *
 * Brand colors are intentionally untouched — Remotracker purple should
 * stay consistent across themes for recognisability.
 * ============================================================ */

[data-theme="light"] {
  /* Backgrounds — soft off-white surfaces, not pure white, to keep some
     warmth and avoid the "blinding spreadsheet" feel of #FFF everywhere */
  --bg:             #F4F5FA;
  --bg-soft:        #FFFFFF;
  --bg-card:        #FFFFFF;
  --bg-card-hover:  #EEF0F6;

  /* Borders — black at low opacity matches the dark-mode pattern of
     white-at-low-opacity, just inverted */
  --border:         rgba(0,0,0,.08);
  --border-strong:  rgba(0,0,0,.14);

  /* Text — high-contrast near-black for body, mid-greys for hierarchy */
  --text:           #1A1A2E;
  --text-dim:       #4B5563;
  --text-muted:     #6B7280;

  /* Shadows — softened for the lighter background; same offsets, lower
     opacity so cards still lift visually but don't look like cutouts */
  --shadow-lg:      0 20px 50px -15px rgba(15, 15, 35, 0.18);
  --shadow-glow:    0 0 80px -20px rgba(168, 85, 247, 0.25);
}

/* The browser's <meta name="theme-color"> handles status bar colour for
   mobile, but it's set at page load and doesn't change live. So when we
   toggle to light mode, also smooth the page background colour transition
   to avoid a jarring flash. */
html { transition: background-color .25s ease; }

/* ── Theme toggle button (placed in the nav) ── */
.nav-theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: rgba(255,255,255,.04);
  border: 1px solid var(--border);
  color: var(--text);
  cursor: pointer;
  font-size: 17px;
  line-height: 1;
  padding: 0;
  margin-right: 10px;
  transition: background-color .2s ease, transform .2s ease, border-color .2s ease;
  /* Crisp emoji rendering at small sizes — without this the moon glyph
     gets antialiased into mush on Windows. */
  -webkit-font-smoothing: antialiased;
  user-select: none;
}
.nav-theme-toggle:hover  {
  background: rgba(255,255,255,.10);
  border-color: var(--border-strong, rgba(255,255,255,.18));
  transform: translateY(-1px);
}
.nav-theme-toggle:active { transform: scale(.92); }
.nav-theme-toggle:focus-visible {
  outline: 2px solid var(--brand, #818CF8);
  outline-offset: 2px;
}

/* Light-mode button — invert the surface so it still looks like a chip
   on the lighter background */
[data-theme="light"] .nav-theme-toggle        { background: rgba(0,0,0,.04); border-color: var(--border); }
[data-theme="light"] .nav-theme-toggle:hover  { background: rgba(0,0,0,.08); border-color: rgba(0,0,0,.14); }

/* Mobile-menu version of the toggle (shown inside .nav-mobile when the
   burger opens). Same look, full-width tap target. */
.nav-mobile .nav-theme-toggle {
  width: 100%;
  height: 44px;
  justify-content: flex-start;
  padding: 0 16px;
  font-size: 14px;
  font-weight: 500;
  gap: 10px;
  margin-right: 0;
}

/* ============================================================
 * LIGHT-MODE OVERRIDES — comprehensive fix for hardcoded colors
 *
 * Why this section exists: the marketing pages use a mix of CSS
 * variables AND hardcoded hex / rgba colors. Just flipping the
 * variables above isn't enough — every hardcoded value needs its
 * own light-mode counterpart, otherwise we get the "dark text on
 * dark bg" failure mode visible in the screenshots.
 *
 * The general pattern below: anything that hardcoded
 * rgba(255,255,255, X) for a "subtle surface tint on dark"
 * becomes rgba(15,15,35, X) — same opacity, same intent, just
 * inverted for a light background. Anything that hardcoded a
 * dark hex (#0A0A14, #06060D) gets its light equivalent.
 *
 * Specificity: every rule here is [data-theme="light"] +
 * selector, which beats both the page's inline <style> AND
 * public.css at the same selector. No !important needed for
 * style-block rules, only for the few inline gradient attributes
 * on decorative mockups.
 * ============================================================ */

/* ── Body + footer (the two big hardcoded surfaces) ── */
[data-theme="light"] body {
  background: #F4F5FA;
  color: #1A1A2E;
}
[data-theme="light"] .footer {
  background: #FFFFFF;
  border-top: 1px solid rgba(15,15,35,.08);
  color: #4B5563;
}
[data-theme="light"] .footer h4 { color: #1A1A2E; }
[data-theme="light"] .footer a { color: #4B5563; }
[data-theme="light"] .footer a:hover { color: #1A1A2E; }
[data-theme="light"] .footer-tag,
[data-theme="light"] .footer-bot { color: #6B7280; }

/* ── Sticky nav header (uses rgba(10,10,20,.7) glass blur) ── */
[data-theme="light"] .nav {
  background: rgba(255,255,255,.85);
  border-bottom: 1px solid rgba(15,15,35,.08);
}
[data-theme="light"] .logo span { color: #1A1A2E; }

/* ── Announcement bar at top (purple-tinted dark glass) ── */
[data-theme="light"] .announcement {
  background: linear-gradient(135deg, rgba(129,140,248,.10), rgba(168,85,247,.10));
  color: #4338CA;
  border-bottom: 1px solid rgba(15,15,35,.06);
}
[data-theme="light"] .announcement strong { color: #1A1A2E; }
[data-theme="light"] .announcement a { color: #4338CA; }

/* ── Buttons that used rgba white tints ── */
[data-theme="light"] .btn-secondary {
  background: rgba(15,15,35,.05);
  color: #1A1A2E;
  border: 1px solid rgba(15,15,35,.14);
}
[data-theme="light"] .btn-secondary:hover { background: rgba(15,15,35,.10); }
[data-theme="light"] .btn-ghost { color: #1A1A2E; }
[data-theme="light"] .btn-ghost:hover { background: rgba(15,15,35,.05); }

/* ── Nav links + burger menu ── */
/* Base (dark) active/current-page highlight */
.nav-links a.active {
  background: rgba(255,255,255,.08);
  color: #FAFAFA;
  font-weight: 600;
}
[data-theme="light"] .nav-links a { color: #4B5563; }
[data-theme="light"] .nav-links a:hover,
[data-theme="light"] .nav-links a.active {
  background: rgba(15,15,35,.05);
  color: #1A1A2E;
}
[data-theme="light"] .nav-burger {
  background: rgba(15,15,35,.04);
  border-color: rgba(15,15,35,.10);
}
[data-theme="light"] .nav-burger span { background: #1A1A2E; }
/* (v1 light-mode .nav-mobile rules removed — superseded by the v2 block
   further down in this file.) */

/* ── Footer social icons ── */
[data-theme="light"] .footer-social a {
  background: rgba(15,15,35,.04);
  border-color: rgba(15,15,35,.10);
  color: #4B5563;
}
[data-theme="light"] .footer-social a:hover {
  background: rgba(15,15,35,.08);
  color: #1A1A2E;
}

/* ── Hero mockup chips (index.html — the dashboard preview) ── */
[data-theme="light"] .mockup-bar,
[data-theme="light"] .mockup-stat,
[data-theme="light"] .mockup-chart,
[data-theme="light"] .mini-row {
  background: rgba(15,15,35,.04);
  border-color: rgba(15,15,35,.10);
}

/* ── Pricing comparison table (pricing.html) ── */
[data-theme="light"] .compare th { background: rgba(15,15,35,.04); }

/* ── FAQ accordion icon (pricing/faq pages) ── */
[data-theme="light"] .faq-q .ico { background: rgba(15,15,35,.06); }

/* ── Features page visual block (features.html) ── */
/* The .feat-visual element hardcodes a dark gradient inline in <style>;
   we override it with a soft light gradient that keeps the same
   intent (panel showing a sample dashboard view). */
[data-theme="light"] .feat-visual {
  background: linear-gradient(180deg, #F8F9FC, #EEF0F6);
  border-color: rgba(15,15,35,.14);
}
[data-theme="light"] .fv-row {
  background: rgba(15,15,35,.04);
  border-color: rgba(15,15,35,.10);
}

/* ── Section eyebrow chips (the small "PRICING", "FEATURES" labels) ── */
/* Brand purple background works on both themes but the contrast is too
   low on light — bump the tint up slightly so it stays readable. */
[data-theme="light"] .section-eyebrow {
  background: rgba(168,85,247,.10);
  color: #6D28D9;
  border: 1px solid rgba(168,85,247,.25);
}

/* ── Card hover states ── */
[data-theme="light"] .feature-card:hover,
[data-theme="light"] .price-card:hover,
[data-theme="light"] .info-card:hover,
[data-theme="light"] .office-card:hover {
  background: var(--bg-card);
  border-color: rgba(168,85,247,.30);
}

/* ── Hero headline gradient — boost contrast on light bg ── */
/* The .grad text uses a purple-violet gradient that's bright on dark
   but washes out on white. Slightly deeper hues for legibility. */
[data-theme="light"] .grad {
  background: linear-gradient(135deg, #7C3AED 0%, #C026D3 100%);
  -webkit-background-clip: text;
  background-clip: text;
}

/* ── Inline "screenshot mockup" placeholder boxes in features.html ── */
/* These use inline style="background:linear-gradient(135deg,#1E1E3A,#0F0F25)"
   etc. We override with !important since inline style normally wins. */
[data-theme="light"] [style*="background:linear-gradient(135deg,#1E1E3A,#0F0F25)"],
[data-theme="light"] [style*="background:linear-gradient(135deg,#1E2A3A,#0F1525)"],
[data-theme="light"] [style*="background:linear-gradient(135deg,#1E3A2A,#0F2515)"] {
  background: linear-gradient(135deg, #EEF0F6, #F4F5FA) !important;
}


/* ============================================================
 * LIGHT-MODE OVERRIDES — round 2 (Bug #14)
 *
 * The first pass caught the page-level surfaces. This pass catches
 * everything INSIDE those surfaces — mockup containers, illustration
 * frames, badge pills, and inline text that inherits color from a
 * dark ancestor. The pattern is the same: target every selector
 * that uses a hardcoded dark gradient OR a hardcoded light-text
 * color, and supply a light-mode counterpart.
 * ============================================================ */

/* ── "Trusted by 500+" hero badge (image 2 red box) ── */
/* Was rgba(129,140,248,.1) bg + #C7D2FE text — soft lavender on
   pale lavender = invisible. Bumped both for proper contrast. */
[data-theme="light"] .hero-badge {
  background: rgba(129,140,248,.14);
  border-color: rgba(129,140,248,.35);
  color: #4338CA;
}

/* ── Hero browser-mockup frame (image 1: dashboard preview) ── */
/* This is the big dark gradient container that wraps the sidebar +
   stats + chart preview on the landing page. Its hardcoded dark
   gradient and dark sidebar tint were the reason every label inside
   ("Employees", "Tasks", "187h", "62", "Weekly Activity") read as
   ghost text in light mode. Light gradient + paler sidebar tint
   makes everything inside legible. */
[data-theme="light"] .hero-mockup {
  background: linear-gradient(180deg, #FFFFFF, #F8F9FC);
  border-color: rgba(15,15,35,.14);
}
[data-theme="light"] .mockup-bar {
  background: rgba(15,15,35,.03);
  border-bottom-color: rgba(15,15,35,.08);
}
[data-theme="light"] .mockup-bar .url { color: #6B7280; }
[data-theme="light"] .mockup-side {
  background: rgba(15,15,35,.04);
  border-right-color: rgba(15,15,35,.10);
}
[data-theme="light"] .mockup-side .item { color: #4B5563; }
[data-theme="light"] .mockup-side .item.active {
  background: rgba(129,140,248,.15);
  color: #4338CA;
}
[data-theme="light"] .mockup-stat .label  { color: #6B7280; }
[data-theme="light"] .mockup-stat .value  { color: #1A1A2E; }
[data-theme="light"] .mockup-chart .ttl   { color: #1A1A2E; }

/* ── .detail-visual (Team status + Meetings mockup containers) ── */
/* These are the dark cards shown next to "See exactly what your team
   is working on" (image 3) and "Schedule meetings" (image 4). Same
   linear-gradient(#16162E,#0F0F1F) as .hero-mockup, so same fix. */
[data-theme="light"] .detail-visual {
  background: linear-gradient(180deg, #FFFFFF, #F4F5FA);
  border-color: rgba(15,15,35,.14);
}
[data-theme="light"] .detail-list li { color: #4B5563; }

/* Names inside .mini-row inherit body color. In dark mode that's
   white (visible on dark card); after we lit up the card above,
   they need to flip too — explicit dark navy keeps them readable. */
[data-theme="light"] .mini-row { color: #1A1A2E; }

/* ── .section-eyebrow ("PRICING", "BUILT FOR MANAGERS", etc.) ── */
/* The first override only swapped the tint. The text color stayed
   #C7D2FE which is invisible on the new pale lavender background.
   Deep indigo gives ~10:1 contrast — fully accessible. */
[data-theme="light"] .section-eyebrow {
  background: rgba(129,140,248,.14);
  border-color: rgba(129,140,248,.35);
  color: #4338CA;
}

/* ── Announcement bar text color hardening ── */
/* index.html sets the text to #C7D2FE inline-styled — survive that
   by being more specific. */
[data-theme="light"] .announcement,
[data-theme="light"] .announcement a { color: #4338CA; }
[data-theme="light"] .announcement strong { color: #1A1A2E; }

/* ── Hero subtitle / paragraph text under the big H1 ── */
/* Was inheriting #E5E7EB (hardcoded light) on dark; in light mode
   needs to be the new dark-grey body text variant. */
[data-theme="light"] .hero-sub,
[data-theme="light"] .section-sub { color: #4B5563; }

/* ── Trust bar (the row of company logos under hero) ── */
[data-theme="light"] .trustbar { border-top-color: rgba(15,15,35,.08); border-bottom-color: rgba(15,15,35,.08); }
[data-theme="light"] .trustbar-lbl { color: #6B7280; }
[data-theme="light"] .trustbar-logos span { color: #6B7280; }

/* ── Stats numbers + labels (the "500+ companies" row etc.) ── */
[data-theme="light"] .stat-lbl { color: #4B5563; }

/* ── Pricing-card text + FAQ accordion text ── */
[data-theme="light"] .price-features li,
[data-theme="light"] .faq-a,
[data-theme="light"] .compare td { color: #4B5563; }
[data-theme="light"] .faq-q { color: #1A1A2E; }
[data-theme="light"] .compare th { color: #1A1A2E; }

/* ── About / Blog / FAQ / Privacy / Terms — page hero subs ── */
[data-theme="light"] .page-hero { background: transparent; }
[data-theme="light"] .page-title { color: #1A1A2E; }

/* ── Footer link hover + section labels ── */
[data-theme="light"] .footer-col h4 { color: #1A1A2E; }


/* ============================================================
 * LIGHT-MODE OVERRIDES — round 3 + RESPONSIVE polish (Bug #15)
 *
 * Round 3 catches one remaining inline white from index.html (the
 * "$24,800" in the payroll mockup row) by targeting its inline
 * style attribute selector — the cleanest way to override an
 * inline color without editing every page.
 *
 * The responsive section below tightens layout on small screens
 * across every marketing page. The existing breakpoints (640 / 700
 * / 768 / 900 / 992) cover most of it; this block fixes the gaps:
 * pricing table overflow, hero padding on tiny phones, section
 * spacing scale-down, touch-target sizing, mockup overflow.
 * ============================================================ */

/* ── Inline color:#fff on the payroll-row amount in index.html ── */
[data-theme="light"] .mini-row [style*="color:#fff"] {
  color: #1A1A2E !important;
}

/* ============================================================
 * RESPONSIVE DESIGN — phones, small tablets
 * Applies to every marketing page since they share .wrap, .section,
 * .nav, etc.
 * ============================================================ */

/* ── Phones (≤ 600px) — the most-broken viewport without overrides ── */
@media (max-width: 600px) {
  /* Reduce side padding so content gets more breathing room */
  .wrap { padding: 0 16px; }

  /* Tighten section vertical rhythm — 96px is overkill on a phone */
  .section { padding: 56px 0; }
  .section-head { margin-bottom: 40px; }

  /* Hero stays readable but doesn't dominate the screen */
  .hero { padding: 48px 0 32px; }

  /* Buttons stack and use full available width — easier to tap */
  .hero-buttons,
  .cta-buttons {
    flex-direction: column;
    width: 100%;
    align-items: stretch;
  }
  .hero-buttons .btn,
  .cta-buttons .btn { width: 100%; justify-content: center; }

  /* Nav at top stays compact */
  .nav-inner { height: 64px; }
  .logo span { font-size: 17px; }
  .nav-cta .btn-sm { padding: 7px 12px; font-size: 12.5px; }
  /* Hide the secondary "Login" button on tiny screens — it's still
     in the hamburger menu, so no functionality is lost. */
  .nav-cta > a.btn-secondary { display: none; }

  /* Announcement bar — shorter so it doesn't dominate vertical space */
  .announcement { padding: 8px 12px; font-size: 12.5px; }

  /* Browser-mockup on tiny phones — hide the sidebar (already done
     at 700px) and shrink the stat grid columns */
  .mockup-content { grid-template-columns: 1fr; }
  .mockup-side    { display: none; }
  .mockup-stats   { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .mockup-stat    { padding: 10px; }
  .mockup-stat .value { font-size: 17px; }
  .mockup-body    { padding: 16px; }

  /* Stats grid (4 cols on desktop) — go 2 cols on phones */
  .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 20px; }

  /* Footer: Product / Company / Resources stay 3-across on phones too;
     the brand block spans the full width above them. */
  .footer        { padding: 48px 0 24px; }
  .footer-grid   { grid-template-columns: repeat(3, 1fr); gap: 16px; }
  .footer-brand  { grid-column: 1 / -1; max-width: 100%; margin-bottom: 8px; }
  .footer-bot    { flex-direction: column; gap: 12px; text-align: center; }

  /* Pricing card scale-down — 36px padding is too much on a phone */
  .price-card { padding: 26px 20px; }
  /* Featured (PRO) card transform was scale(1.02) on desktop; on a
     phone that pushes the card edge under the viewport — drop it. */
  .price-card.featured { transform: none; }

  /* Detail sections (text + visual) — extra gap on stack */
  .detail { gap: 32px; margin-bottom: 72px; }
  .detail-text h3 { line-height: 1.25; }

  /* Contact form — fill the screen, generous tap targets */
  .contact-form { padding: 22px 18px; }
  .form-group input,
  .form-group select,
  .form-group textarea { padding: 13px 14px; font-size: 16px; /* iOS no-zoom */ }
  /* Form rows that try to be 2-col on phone — keep single column */
  .form-row { grid-template-columns: 1fr; }

  /* About / Blog / FAQ page text shouldn't run edge-to-edge */
  .page-hero { padding: 48px 0 24px; }
  .page-title { font-size: clamp(30px, 8vw, 42px); }
}

/* ── Small phones (≤ 380px) — iPhone SE, Galaxy A03, etc. ── */
@media (max-width: 380px) {
  .nav-cta { gap: 4px; }
  .nav-cta .btn-sm { padding: 6px 10px; font-size: 12px; }
  .nav-theme-toggle { width: 34px; height: 34px; margin-right: 4px; }
  .hero-title { font-size: clamp(30px, 8vw, 40px); }
  .stats-grid { grid-template-columns: 1fr; }
}

/* ── Tablets (601-900px) — between phone and laptop ── */
@media (max-width: 900px) and (min-width: 601px) {
  .wrap { padding: 0 24px; }
  .section { padding: 72px 0; }

  /* Pricing 3-col grid is forced to 1fr only at 900px+. Until then,
     ensure cards remain comfortably sized stacked. */
  .price-card.featured { transform: none; }
}

/* ── Pricing comparison table — horizontal scroll on narrow screens ── */
/* The 5-column "Free / Pro / Enterprise" table can overflow viewport
   below ~720px. Wrapping the table in a scroll container preserves the
   table layout AND gives users a clear horizontal swipe affordance. */
@media (max-width: 720px) {
  .compare {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .compare table { min-width: 600px; }
  .compare th,
  .compare td { padding: 10px 12px; font-size: 13px; }
}

/* ── Universal small-screen hardening ── */
/* Prevent any element from pushing the page wider than the viewport,
   which is the #1 cause of "weird horizontal scrollbar on mobile"
   complaints. Belt-and-suspenders against any future inline overflow. */
@media (max-width: 600px) {
  /* overflow-x: clip (not hidden) — `hidden` would create a containing
     block for fixed-position children, which collapses .nav-mobile to
     body-content height instead of full viewport height on phones.
     `clip` prevents horizontal scroll without that side effect. */
  body { overflow-x: clip; }
  img, video, iframe, svg { max-width: 100%; height: auto; }
  pre, code { overflow-x: auto; max-width: 100%; }
  /* Tap targets — WCAG 2.5.5 recommends min 44x44 for touch */
  .btn-sm { min-height: 38px; }
  .btn    { min-height: 44px; }
  a.btn   { min-height: 44px; }
}

/* ── Reduced motion (accessibility — already present in some pages,
   centralized here so every page respects it) ── */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}


/* ============================================================
 * MOBILE NAV DRAWER — full-bleed brand drawer (Bug #18 — v2)
 *
 * Redesigned around a reference Raihan supplied (Study in North
 * Cyprus). The intent: full-screen brand surface, generous
 * vertical rhythm, minimal chrome, single accent color for
 * affordances.
 *
 * Pattern translated from the reference to Remotracker:
 *
 *   reference                        →  Remotracker
 *   -----------------------------------  --------------------
 *   solid teal surface, full bleed   →   var(--bg) + soft purple
 *                                        ambient glow at top
 *   gold chevrons on linkable items  →   brand-purple chevrons on
 *                                        every primary nav row
 *   no chevron on terminal/auth rows →   no chevron on Login
 *   X close in top-right             →   the hamburger morphs
 *                                        into an X via CSS
 *   no row dividers, no card borders →   same, just whitespace
 *   large bold typography            →   18px/600 in Plus Jakarta
 *
 * Specificity note: each rule below uses the same selector as
 * the inline page CSS (.nav-mobile, .nav-mobile a) so the
 * override is decided by source order — marketing-theme.css
 * loads after every page's inline <style>, so it wins without
 * !important.
 * ============================================================ */

/* ── Drawer container — clean dropdown surface below the sticky nav ── */
.nav-mobile {
  display: none;
  position: fixed;
  inset: 72px 0 auto 0;
  background: var(--bg-card, var(--bg));
  z-index: 49;
  padding: 14px 20px max(20px, env(safe-area-inset-bottom));
  flex-direction: column;
  gap: 2px;
  border-bottom: 1px solid var(--border);
  box-shadow: 0 16px 40px rgba(0,0,0,.14);
  max-height: calc(100vh - 72px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.nav-mobile.open {
  display: flex;
  animation: navMobileFade .22s cubic-bezier(.16,1,.3,1);
}
@keyframes navMobileFade {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Drawer link rows — compact, borderless, no chevrons (scoped to
   DIRECT children so the action buttons keep their real btn styles) ── */
.nav-mobile > a {
  display: block;
  padding: 13px 10px;
  border: none;
  border-radius: 9px;
  background: transparent;
  color: var(--text);
  font-family: 'Plus Jakarta Sans', 'Inter', sans-serif;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.2px;
  transition: background .15s ease, color .15s ease;
}
.nav-mobile > a:hover,
.nav-mobile > a:active,
.nav-mobile > a.active {
  background: rgba(129,140,248,.09);
  color: var(--brand);
}

/* ── Divider before the action buttons ── */
.nav-mobile-divider {
  height: 1px;
  background: var(--border);
  margin: 10px 2px 4px;
}

/* ── Action buttons (Login + Start Free): identical radius, real btn
   styles — Start Free keeps the header's purple gradient (btn-primary),
   Login keeps the outline (btn-secondary), both same rounded corners. ── */
.nav-mobile-actions {
  display: flex;
  gap: 10px;
  margin-top: 8px;
}
.nav-mobile-actions .btn {
  flex: 1;
  justify-content: center;
  text-align: center;
  border-radius: 10px;
  font-size: 14.5px;
  padding: 12px 16px;
}

/* Legacy in-drawer theme toggle — hide if a cached page still ships it */
.nav-mobile .nav-theme-toggle { display: none !important; }

/* ── Mobile header: only the theme toggle + hamburger. Login and
   Start Free are hidden here and live in the drawer instead. ── */
@media (max-width: 899px) {
  .nav-cta > a.btn { display: none; }
}

/* ── Hamburger → X morph when the drawer is open ── */
.nav-burger {
  position: relative;
  transition: background-color .2s ease;
}
.nav-burger span {
  transition: transform .25s cubic-bezier(.4,0,.2,1),
              opacity .15s ease;
  transform-origin: center;
}
.nav-burger[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(6px) rotate(45deg);
}
.nav-burger[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}
.nav-burger[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-6px) rotate(-45deg);
}

/* ── LIGHT mode counterparts ── */
[data-theme="light"] .nav-mobile { background: #FFFFFF; }
[data-theme="light"] .nav-mobile > a { color: #1A1A2E; }
[data-theme="light"] .nav-mobile > a:hover,
[data-theme="light"] .nav-mobile > a:active,
[data-theme="light"] .nav-mobile > a.active {
  color: #6D28D9;
  background: rgba(109,40,217,.07);
}

/* ── Phone breakpoint — match the 64px nav-inner height ── */
@media (max-width: 600px) {
  .nav-mobile {
    inset: 64px 0 auto 0;
    max-height: calc(100vh - 64px);
  }
}
