/* ============================================================================
   BOOSTERO ‚Äî Design System
   Aurora + Bento aesthetic, prestige feel, dark mode default
   
   This file overrides bootstrap.css. Never edit bootstrap.css.
   ============================================================================ */

/* ----------------------------------------------------------------------------
   1. Design Tokens (CSS Custom Properties)
   ---------------------------------------------------------------------------- */

:root {
  /* ‚îÄ‚îÄ Backgrounds (dark scale) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --bg-deepest:   #08041A;
  --bg-dark:      #150B3D;
  --bg-surface:   #1F1248;
  --bg-elevated:  #2A1A5C;
  
  /* ‚îÄ‚îÄ Purple brand ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --purple-deep:    #6D28D9;
  --purple-primary: #7C3AED;
  --purple-light:   #A78BFA;
  --purple-subtle:  #C4B5FD;
  
  /* ‚îÄ‚îÄ Yellow + Orange (logo-derived) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --yellow:  #FACA33;
  --orange:  #F59E0B;
  
  /* ‚îÄ‚îÄ Aurora glow (transparent, backgrounds only) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --glow-purple:  rgba(124, 58, 237, 0.4);
  --glow-magenta: rgba(236, 72, 153, 0.3);
  --glow-yellow:  rgba(250, 202, 51, 0.25);
  
  /* ‚îÄ‚îÄ Text ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --text-primary:   #FFFFFF;
  --text-secondary: rgba(255, 255, 255, 0.7);
  --text-tertiary:  rgba(255, 255, 255, 0.5);
  --text-disabled:  rgba(255, 255, 255, 0.3);
  
  /* ‚îÄ‚îÄ Borders ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --border-subtle:  rgba(167, 139, 250, 0.12);
  --border-default: rgba(167, 139, 250, 0.2);
  --border-strong:  rgba(167, 139, 250, 0.35);
  
  /* ‚îÄ‚îÄ Semantic ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --success: #10B981;
  --error:   #EF4444;
  --warning: #F59E0B;
  --info:    #6D28D9;
  
  /* ‚îÄ‚îÄ Typography ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --font-sans:  'Geist', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono:  'Geist Mono', 'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace;
  --font-serif: 'Times New Roman', Georgia, serif;
  
  /* Type scale (re-tuned 2026-05-22 r2: bigger display sizes for 1366px+ wow factor) */
  --text-xs:   0.8125rem; /* 13px */
  --text-sm:   0.9375rem; /* 15px */
  --text-base: 1.0625rem; /* 17px */
  --text-lg:   1.25rem;   /* 20px */
  --text-xl:   1.375rem;  /* 22px */
  --text-2xl:  1.75rem;   /* 28px */
  --text-3xl:  2.5rem;    /* 40px ‚Äî was 36 */
  --text-4xl:  3.5rem;    /* 56px ‚Äî was 44 */
  --text-5xl:  4.25rem;   /* 68px ‚Äî was 56 */
  --text-6xl:  5rem;      /* 80px ‚Äî was 72 */
  
  /* Font weights */
  --font-regular:    400;
  --font-medium:     500;
  --font-semibold:   600;
  --font-bold:       700;
  --font-extrabold:  800;
  
  /* Line heights */
  --leading-tight:   1.05;
  --leading-snug:    1.15;
  --leading-normal:  1.5;
  --leading-relaxed: 1.65;
  
  /* Letter spacing */
  --tracking-tighter: -0.03em;
  --tracking-tight:   -0.025em;
  --tracking-normal:  0;
  --tracking-wide:    0.05em;
  --tracking-wider:   0.1em;
  --tracking-widest:  0.15em;
  
  /* ‚îÄ‚îÄ Spacing scale ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --space-0:  0;
  --space-1:  0.25rem;
  --space-2:  0.5rem;
  --space-3:  0.75rem;
  --space-4:  1rem;
  --space-5:  1.25rem;
  --space-6:  1.5rem;
  --space-8:  2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --space-32: 8rem;
  
  /* ‚îÄ‚îÄ Border radius ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --radius-sm:   6px;
  --radius-md:   10px;
  --radius-lg:   14px;
  --radius-xl:   20px;
  --radius-pill: 999px;
  --radius-full: 50%;
  
  /* ‚îÄ‚îÄ Shadows & elevation ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --shadow-sm: 0 4px 12px rgba(0, 0, 0, 0.2);
  --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.3);
  --shadow-lg: 0 16px 40px rgba(0, 0, 0, 0.4);
  --shadow-glow-purple: 0 0 40px rgba(124, 58, 237, 0.35);
  --shadow-glow-yellow: 0 0 30px rgba(250, 202, 51, 0.3);
  --shadow-cta: 0 8px 24px rgba(250, 202, 51, 0.25), 0 0 1px rgba(255, 255, 255, 0.1) inset;
  
  /* ‚îÄ‚îÄ Breakpoints (for reference; use media queries with these values) ‚îÄ‚îÄ */
  --bp-sm: 640px;
  --bp-md: 768px;
  --bp-lg: 1024px;
  --bp-xl: 1280px;
  
  /* ‚îÄ‚îÄ Container widths ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --container-sm:     640px;
  --container-md:     768px;
  --container-lg:    1024px;
  --container-xl:    1200px;  /* r6: 1440 ‚Üí 1200 ‚Äî Linear/Vercel standard */
  --container-wide:  1400px;  /* for super-wide hero or large bento grids */
  
  /* ‚îÄ‚îÄ Transitions ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
  --transition-fast:  0.15s ease;
  --transition-default: 0.2s ease;
  --transition-slow:  0.3s ease;
}


/* ----------------------------------------------------------------------------
   2. Base / Reset
   ---------------------------------------------------------------------------- */

*, *::before, *::after {
  box-sizing: border-box;
}

html {
  font-size: 16px;                     /* r6: back to standard 16px after audit (was 20px in r5 ‚Äî measured everything +25% over Linear/Vercel/Stripe baseline) */
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  /* Phase 1.6: clip horizontal overflow from aurora-drift / fixed pseudo-elements.
     Using `clip` (not `hidden`) to preserve sticky positioning. */
  overflow-x: clip;
}

html, body {
  overflow-x: clip;
}

body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--text-primary);
  background-color: var(--bg-deepest);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  /* Phase 1.5 fix: sticky-footer flex pattern ‚Äî eliminates rubber-band purple stripe */
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

main {
  flex: 1 0 auto;  /* main grows to fill viewport when content shorter than vh */
}

/* Aurora gradient on body ‚Äî single continuous backdrop for entire page (r3: unified, r7: animated drift) */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background:
    radial-gradient(ellipse 80% 40% at 15% 15%, var(--glow-purple) 0%, transparent 55%),
    radial-gradient(ellipse 60% 35% at 85% 50%, var(--glow-magenta) 0%, transparent 50%),
    radial-gradient(ellipse 50% 30% at 50% 85%, var(--glow-yellow) 0%, transparent 50%);
  background-size: 200% 200%;
  animation: aurora-drift 24s ease-in-out infinite alternate;
}

@keyframes aurora-drift {
  0%   { background-position:   0%   0%; }
  25%  { background-position: 100%   0%; }
  50%  { background-position: 100% 100%; }
  75%  { background-position:   0% 100%; }
  100% { background-position:   0%   0%; }
}

/* SVG noise texture overlay ‚Äî prevents banding on gradients (r7, r8 z-index 1 ‚Üí 0) */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;                          /* r8: lowered so future modals (z 100+) sit above */
  opacity: 0.025;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}

/* r8: Ensure all main content sits above body::after noise (z-index 0) */
.marketing-header,
.dashboard-header,
.newpage-hero,
.newpage-body,
.newpage-cta,
.section,
.footer {
  position: relative;
  z-index: 1;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0;
  font-weight: var(--font-bold);
  line-height: var(--leading-snug);
  letter-spacing: var(--tracking-tight);
  color: var(--text-primary);
}

p {
  margin: 0;
  line-height: var(--leading-normal);
  color: var(--text-secondary);
}

a {
  color: var(--purple-light);
  text-decoration: none;
  transition: color var(--transition-default);
}

a:hover {
  color: var(--yellow);
}

ul, ol {
  margin: 0;
  padding: 0;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

button {
  font-family: inherit;
  cursor: pointer;
}

/* Focus styles */
:focus-visible {
  outline: 2px solid var(--purple-light);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* Selection */
::selection {
  background: var(--purple-primary);
  color: var(--text-primary);
}


/* ----------------------------------------------------------------------------
   3. Typography utilities
   ---------------------------------------------------------------------------- */

.display-1 {
  font-size: clamp(2.5rem, 4.5vw, 4.5rem);   /* r6: 40-72px ‚Äî tighter for clear hierarchy over section h2 (max 48) */
  font-weight: var(--font-extrabold);
  letter-spacing: var(--tracking-tighter);
  line-height: 1.05;
}

.display-2 {
  font-size: clamp(2rem, 3vw, 2.75rem);      /* r6: 32-44px CTA ‚Äî stays below section h2 (max 48) */
  font-weight: var(--font-bold);
  letter-spacing: var(--tracking-tight);
  line-height: var(--leading-snug);
}

/* Hero h1 multi-line treatment ‚Äî gradient base + accented yellow finale (r6: tamer accent) */
.hero-title-base {
  display: block;
  background: linear-gradient(135deg, var(--purple-light) 0%, #ffffff 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.hero-title-yellow {
  display: block;
  color: var(--yellow);
  font-size: 0.95em;        /* r6: 1.1em ‚Üí 0.95em ‚Äî accent not domination */
  margin-top: 0.15em;       /* r6: 0.25em ‚Üí 0.15em ‚Äî tighter rhythm */
}

/* r8 P2: Hero shimmer ‚≠ê BRAND PATTERN ‚Äî animated gradient on purple hero spans.
   Reused across all future page hero headings (homepage, services, about, etc.).
   Overrides .hero-title-base gradient when both classes applied. */
.hero-title-gradient {
  background: linear-gradient(
    110deg,
    var(--purple-light) 0%,
    var(--purple-primary) 40%,
    var(--text-primary) 60%,
    var(--purple-light) 100%
  );
  background-size: 200% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: shimmer-flow 8s ease-in-out infinite alternate;
}

@keyframes shimmer-flow {
  0%   { background-position:   0% 50%; }
  100% { background-position: 200% 50%; }
}

.heading-section {
  font-size: clamp(2rem, 3vw, 3rem);     /* r6: 32-48px ‚Äî stays below hero h1 (max 72) */
  font-weight: var(--font-bold);
  letter-spacing: var(--tracking-tight);
  line-height: var(--leading-snug);
}

.lead {
  font-size: var(--text-lg);
  color: var(--text-secondary);
  line-height: var(--leading-normal);
}

.text-eyebrow {
  display: inline-block;
  font-size: var(--text-xs);
  color: var(--purple-subtle);
  background: rgba(167, 139, 250, 0.12);
  border: 0.5px solid rgba(167, 139, 250, 0.25);
  border-radius: var(--radius-pill);
  padding: var(--space-1) var(--space-3);
  font-weight: var(--font-medium);
  letter-spacing: var(--tracking-wider);
  text-transform: uppercase;
}

.text-mono {
  font-family: var(--font-mono);
}

.text-secondary { color: var(--text-secondary); }
.text-tertiary { color: var(--text-tertiary); }
.text-yellow { color: var(--yellow); }
.text-purple { color: var(--purple-light); }

/* Gradient text */
.gradient-text {
  background: linear-gradient(135deg, var(--purple-light) 0%, var(--yellow) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.gradient-text-multi {
  background: linear-gradient(90deg, var(--purple-subtle) 0%, #EC4899 50%, var(--orange) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}


/* ----------------------------------------------------------------------------
   4. Layout & containers
   ---------------------------------------------------------------------------- */

.container {
  width: 100%;
  max-width: var(--container-xl);
  margin-inline: auto;
  padding-inline: clamp(1rem, 3vw, 2rem);
}

.section {
  padding-block: var(--space-16);
}

.section-tight {
  padding-block: var(--space-10);
}

.section-loose {
  padding-block: var(--space-24);
}


/* ----------------------------------------------------------------------------
   5. Aurora background utilities
   ---------------------------------------------------------------------------- */

.aurora-soft {
  background:
    radial-gradient(ellipse 60% 50% at 15% 20%, var(--glow-purple) 0%, transparent 55%),
    radial-gradient(ellipse 50% 45% at 85% 75%, var(--glow-magenta) 0%, transparent 50%),
    radial-gradient(ellipse 40% 35% at 50% 100%, var(--glow-yellow) 0%, transparent 50%),
    var(--bg-deepest);
}

.aurora-spotlight {
  background:
    radial-gradient(ellipse 80% 50% at 50% 0%, var(--glow-purple) 0%, transparent 60%),
    var(--bg-deepest);
}

.aurora-center {
  background:
    radial-gradient(ellipse 70% 80% at 50% 50%, var(--glow-purple) 0%, transparent 65%),
    var(--bg-deepest);
}

.aurora-subtle {
  background:
    radial-gradient(ellipse 50% 50% at 50% 0%, rgba(124, 58, 237, 0.15) 0%, transparent 70%),
    var(--bg-dark);
}


/* ----------------------------------------------------------------------------
   6. Tiles & Bento layouts
   ---------------------------------------------------------------------------- */

/* Base tile */
.tile {
  background-color: var(--bg-surface);
  border: 0.5px solid var(--border-subtle);
  border-radius: 16px;            /* polished 2026-05-22: 14 ‚Üí 16 for softer feel */
  padding: var(--space-6);        /* polished 2026-05-22: 1.25 ‚Üí 1.5rem */
  position: relative;
  overflow: hidden;
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);  /* r2: premium easing */
}

.tile:hover {
  transform: translateY(-4px);
  border-color: rgba(167, 139, 250, 0.5);
  box-shadow:
    0 10px 40px -10px rgba(0, 0, 0, 0.5),
    0 0 0 1px rgba(167, 139, 250, 0.2);
}

/* Tile icon ‚Äî accent SVG at top of tile */
.tile-icon {
  width: 32px;                       /* r5: 24 ‚Üí 32 ‚Äî proportional to bigger tile h2 (32.5px after scale) */
  height: 32px;
  color: var(--yellow);
  margin-bottom: var(--space-4);
  stroke-width: 1.75;
  flex-shrink: 0;
}

/* Featured tile ‚Äî yellow accent strip at top + yellow glow on hover */
.tile-featured {
  border-top: 3px solid var(--yellow);
}
.tile-featured:hover {
  box-shadow:
    0 10px 40px -10px rgba(0, 0, 0, 0.5),
    0 0 0 1px var(--yellow),
    0 0 30px -10px var(--yellow);
}

/* Tile variants */
.tile-glass {
  background-color: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

.tile-gradient {
  background: linear-gradient(135deg, #4C1D95 0%, var(--purple-primary) 100%);
  border-color: rgba(167, 139, 250, 0.3);
}

.tile-gradient:hover {
  background: linear-gradient(135deg, #5B21B6 0%, #8B4FFA 100%);
}

.tile-yellow {
  background: var(--yellow);
  color: var(--bg-dark);
  border-color: rgba(0, 0, 0, 0.1);
}

.tile-yellow:hover {
  background: #FCD34D;
}

.tile-orange {
  background: linear-gradient(135deg, var(--yellow) 0%, var(--orange) 100%);
  color: #4A2600;
  border-color: rgba(0, 0, 0, 0.1);
}

.tile-elevated {
  background-color: var(--bg-elevated);
}

/* Vertical-stack tile (opt-in): pins button/link to bottom for equal-height grids */
.tile-vstack {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: var(--space-3);
}
.tile-vstack .btn,
.tile-vstack a.btn,
.tile-vstack > a:last-child {
  margin-top: auto;
}

/* Body text inside tiles & glass cards ‚Äî r4 bump to 18px for full premium readability */
.tile p,
.card-glass p {
  font-size: 1.125rem;                  /* 18px (r4: was 17) */
  line-height: 1.65;                    /* (r4: was 1.6) */
  color: rgba(255, 255, 255, 0.85);
}

/* Tile heading h2 ‚Äî replaces inline style="font-size: var(--text-xl)" in contact.twig (r4) */
.tile h2 {
  font-size: 1.625rem;                  /* 26px */
  font-weight: var(--font-bold);
  margin-bottom: var(--space-3);
}


/* ‚îÄ‚îÄ FAQ native accordion (uses <details>/<summary>) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.faq-item {
  position: relative;
  background: linear-gradient(180deg, rgba(31, 18, 72, 0.6) 0%, rgba(31, 18, 72, 0.3) 100%);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 0.5px solid var(--border-subtle);
  border-radius: 16px;
  margin-bottom: var(--space-3);
  overflow: hidden;
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.faq-item:hover {
  border-color: var(--border-default);
}
.faq-item[open] {
  background: linear-gradient(180deg, rgba(124, 58, 237, 0.15) 0%, rgba(31, 18, 72, 0.5) 100%);
  border-color: rgba(167, 139, 250, 0.4);
}

.faq-item summary {
  list-style: none;             /* remove default disclosure triangle (Firefox/Chrome) */
  cursor: pointer;
  padding: var(--space-5) var(--space-6);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}
.faq-item summary::-webkit-details-marker {
  display: none;                /* Safari */
}
.faq-item summary:focus-visible {
  outline: 2px solid var(--purple-light);
  outline-offset: -2px;
}

.faq-question {
  font-size: 1.5rem;                    /* 24px */
  font-weight: var(--font-bold);
  color: var(--text-primary);           /* r6: yellow ‚Üí white (accent restraint ‚Äî yellow only on logo/CTA/eyebrow line/featured border) */
  line-height: var(--leading-snug);
}

.faq-caret {
  flex-shrink: 0;
  color: var(--purple-light);
  transition: transform var(--transition-default), color var(--transition-default);
}
.faq-item:hover .faq-caret {
  color: var(--text-primary);
}
.faq-item[open] .faq-caret {
  transform: rotate(180deg);
  color: var(--yellow);
}

.faq-answer {
  padding: 0 var(--space-6) var(--space-5);
}
.faq-answer p {
  font-size: 1.125rem;                  /* 18px (r4: was 17) */
  line-height: 1.7;
  color: var(--text-secondary);
  margin: 0;
}


/* ‚îÄ‚îÄ Info callout ‚Äî compact security banner (r7: shrunken from r6, lock icon, lighter weight) */
.info-callout {
  border-left: 2px solid var(--yellow);
  background: rgba(250, 202, 51, 0.04);
  padding: 1.25rem 1.5rem;
  border-radius: 0 12px 12px 0;
  margin: 2rem auto;
  max-width: 1200px;
}
.info-callout-header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
}
.info-callout-icon {
  width: 18px;
  height: 18px;
  color: var(--yellow);
  flex-shrink: 0;
}
.info-callout h2,
.info-callout h3 {
  font-size: 1rem;
  font-weight: var(--font-bold);
  margin: 0;
  color: var(--yellow);
}
.info-callout p {
  font-size: 0.875rem;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.8);
  margin: 0;
}

/* ‚îÄ‚îÄ Brand pullquote ‚Äî minimal italic quote with purple left rule (r6: replaces .brand-statement card)
   Removed: .brand-statement card, ::before Georgia quote mark, .brand-divider */
.brand-pullquote {
  max-width: 720px;
  margin: 4rem auto 2rem;
  padding: 0 2rem;
  border-left: 2px solid rgba(167, 139, 250, 0.3);
}
.brand-pullquote p {
  font-size: 1.125rem;        /* 18px on 16px root */
  line-height: 1.65;
  font-style: italic;
  color: rgba(255, 255, 255, 0.7);
  margin: 0;
}

.brand-divider {
  /* r6: legacy ‚Äî kept only for fallback safety, no longer used in contact.twig */
  width: 60px;
  height: 2px;
  background: var(--yellow);
  margin: 0 auto var(--space-6);
  border-radius: 2px;
}

/* Section eyebrow wrapper ‚Äî yellow line + uppercase label combo above section heading */
.section-eyebrow-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: 1.75rem;       /* r6: 2 ‚Üí 1.75rem (28px gap to h1) */
}

.section-eyebrow-line {
  width: 40px;
  height: 2px;
  background: var(--yellow);
  border-radius: 2px;
}

/* Bento grid patterns */
.bento-row-3 {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 1.25rem;          /* r6: 1.5 ‚Üí 1.25rem (20px) */
}

@media (max-width: 640px) {
  .bento-row-3 {
    grid-template-columns: 1fr;
  }
}

.bento-feature {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr;
  grid-template-rows: auto auto;
  gap: var(--space-2);
}

.bento-feature > :first-child {
  grid-row: span 2;
}

@media (max-width: 768px) {
  .bento-feature {
    grid-template-columns: 1fr 1fr;
  }
  .bento-feature > :first-child {
    grid-column: 1 / -1;
    grid-row: auto;
  }
}

.bento-six {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-3);
}

.bento-six .tile-wide {
  grid-column: span 2;
}

@media (max-width: 768px) {
  .bento-six {
    grid-template-columns: 1fr 1fr;
  }
  .bento-six .tile-wide {
    grid-column: span 2;
  }
}

@media (max-width: 480px) {
  .bento-six {
    grid-template-columns: 1fr;
  }
  .bento-six .tile-wide {
    grid-column: span 1;
  }
}


/* ----------------------------------------------------------------------------
   7. Buttons (override Bootstrap)
   ---------------------------------------------------------------------------- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-6);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  letter-spacing: 0;
  border-radius: var(--radius-md);
  border: 1px solid transparent;
  cursor: pointer;
  transition: all var(--transition-default);
  text-decoration: none;
  white-space: nowrap;
}

.btn-primary,
.btn.btn-primary {
  background-color: var(--purple-primary);
  color: var(--text-primary);
  border-color: var(--purple-primary);
}

.btn-primary:hover,
.btn.btn-primary:hover {
  background-color: var(--purple-deep);
  border-color: var(--purple-deep);
  color: var(--text-primary);
}

.btn-yellow {
  background-color: var(--yellow);
  color: var(--bg-dark);
  border-color: var(--yellow);
  font-weight: var(--font-bold);
}

.btn-yellow:hover {
  background-color: #FCD34D;
  box-shadow: var(--shadow-glow-yellow);
  color: var(--bg-dark);
}

.btn-secondary,
.btn.btn-default {
  background-color: rgba(255, 255, 255, 0.08);
  color: var(--text-primary);
  border-color: rgba(255, 255, 255, 0.2);
}

.btn-secondary:hover,
.btn.btn-default:hover {
  background-color: rgba(255, 255, 255, 0.15);
  color: var(--text-primary);
}

.btn-ghost {
  background-color: transparent;
  color: var(--text-secondary);
  border-color: transparent;
}

.btn-ghost:hover {
  color: var(--text-primary);
  background-color: rgba(255, 255, 255, 0.06);
}

.btn-pill {
  border-radius: var(--radius-pill);
  padding-inline: var(--space-6);
}

.btn-lg {
  font-size: var(--text-base);
  padding: var(--space-4) var(--space-8);
}

.btn-xs {
  font-size: var(--text-xs);
  padding: var(--space-1) var(--space-3);
}

.btn-sm {
  font-size: var(--text-sm);
  padding: var(--space-2) var(--space-4);
}

/* Multi-button row inside .tile-vstack ‚Äî used in Partnerships tile with 2 CTAs */
.tile-button-group {
  display: flex;
  gap: var(--space-2);
  margin-top: auto;
  flex-wrap: wrap;
}
.tile-button-group .btn {
  flex: 1;
  min-width: 0;
  white-space: nowrap;
}


/* ----------------------------------------------------------------------------
   8. Cards
   ---------------------------------------------------------------------------- */

.card {
  background-color: var(--bg-surface);
  border: 0.5px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
}

.card-glass {
  background-color: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

.card-stat {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.card-stat .label {
  font-size: var(--text-xs);
  color: var(--text-tertiary);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wider);
  font-weight: var(--font-medium);
}

.card-stat .value {
  font-size: var(--text-3xl);
  font-weight: var(--font-extrabold);
  color: var(--text-primary);
  line-height: 1;
}

.card-stat .delta {
  font-size: var(--text-xs);
  color: var(--success);
  margin-top: var(--space-1);
}

.card-stat .delta-yellow {
  color: var(--yellow);
}


/* ----------------------------------------------------------------------------
   9. Logo component
   ---------------------------------------------------------------------------- */

.logo {
  display: inline-flex;
  align-items: baseline;
  gap: 1px;
  font-weight: var(--font-bold);
  letter-spacing: var(--tracking-tighter);
  font-size: clamp(20px, 2.5vw, 28px);
  color: var(--text-primary);
  text-decoration: none;
}

.logo:hover {
  color: var(--text-primary);
}

.logo-text {
  color: var(--text-primary);
}

.logo-arrow {
  color: var(--yellow);
  font-size: 1.1em;
  transform: translateY(-3px) rotate(-15deg);
  display: inline-block;
}

.logo img {
  height: clamp(28px, 3.5vw, 40px);
  width: auto;
  object-fit: contain;
  display: block;
}


/* ----------------------------------------------------------------------------
   10. Navigation
   ---------------------------------------------------------------------------- */

/* Override Bootstrap navbar */
.navbar,
.navbar-default {
  background-color: transparent;
  border: none;
  margin-bottom: 0;
}

/* Pill navbar (modern) */
.nav-pill {
  background-color: rgba(255, 255, 255, 0.05);
  border: 0.5px solid rgba(255, 255, 255, 0.12);
  border-radius: var(--radius-pill);
  padding: var(--space-2) var(--space-4);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

.nav-links {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  list-style: none;
}

.nav-links a,
.nav-links li > a {
  color: var(--text-secondary);
  font-size: var(--text-sm);
  text-decoration: none;
  padding: 0.5rem 0.875rem;
  border-radius: var(--radius-sm);
  transition: color var(--transition-default);
}

.nav-links a:hover {
  color: var(--text-primary);
}

.nav-links a.nav-cta {
  color: var(--yellow);
}

.nav-links a.nav-cta-primary {
  background-color: var(--yellow);
  color: var(--bg-dark);
  padding: var(--space-1) var(--space-4);
  border-radius: var(--radius-pill);
  font-weight: var(--font-semibold);
}

.nav-links a.nav-cta-primary:hover {
  background-color: #FCD34D;
  color: var(--bg-dark);
}


/* ----------------------------------------------------------------------------
   11. Forms (override Bootstrap)
   ---------------------------------------------------------------------------- */

.form-group {
  margin-bottom: var(--space-4);
}

.control-label,
label {
  display: block;
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  color: var(--text-secondary);
  margin-bottom: var(--space-2);
}

.form-control {
  width: 100%;
  background-color: var(--bg-surface);
  color: var(--text-primary);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
  font-family: var(--font-sans);
  font-size: var(--text-base);
  transition: border-color var(--transition-default), background-color var(--transition-default);
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

.form-control:focus {
  outline: none;
  border-color: var(--purple-primary);
  background-color: var(--bg-elevated);
}

.form-control::placeholder {
  color: var(--text-tertiary);
}

select.form-control {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23A78BFA' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--space-4) center;
  background-size: 16px;
  padding-right: var(--space-10);
}


/* ----------------------------------------------------------------------------
   12. Alerts (override Bootstrap)
   ---------------------------------------------------------------------------- */

.alert {
  border-radius: var(--radius-md);
  border: 1px solid;
  padding: var(--space-4) var(--space-5);
  margin-bottom: var(--space-4);
  font-size: var(--text-sm);
}

.alert-danger,
.alert-error {
  background-color: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.3);
  color: #FCA5A5;
}

.alert-success {
  background-color: rgba(16, 185, 129, 0.12);
  border-color: rgba(16, 185, 129, 0.3);
  color: #6EE7B7;
}

.alert-info {
  background-color: rgba(124, 58, 237, 0.12);
  border-color: rgba(124, 58, 237, 0.3);
  color: var(--purple-light);
}

.alert-warning {
  background-color: rgba(245, 158, 11, 0.12);
  border-color: rgba(245, 158, 11, 0.3);
  color: var(--yellow);
}

.alert .close {
  background: none;
  border: none;
  color: inherit;
  opacity: 0.6;
  font-size: var(--text-lg);
  padding: 0 0 0 var(--space-3);
  cursor: pointer;
}

.alert .close:hover {
  opacity: 1;
}


/* ----------------------------------------------------------------------------
   13. Tables (override Bootstrap)
   ---------------------------------------------------------------------------- */

.table {
  width: 100%;
  background-color: var(--bg-surface);
  border-radius: var(--radius-lg);
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;
  border: 0.5px solid var(--border-subtle);
}

.table thead th {
  background-color: var(--bg-elevated);
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: var(--font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  padding: var(--space-3) var(--space-4);
  border-bottom: 0.5px solid var(--border-default);
  text-align: left;
}

.table tbody td {
  padding: var(--space-3) var(--space-4);
  color: var(--text-primary);
  font-size: var(--text-sm);
  border-bottom: 0.5px solid var(--border-subtle);
}

.table tbody tr:last-child td {
  border-bottom: none;
}

.table tbody tr:hover {
  background-color: var(--bg-elevated);
}


/* ----------------------------------------------------------------------------
   14. Dropdowns (override Bootstrap)
   ---------------------------------------------------------------------------- */

.dropdown-menu {
  background-color: var(--bg-elevated);
  border: 0.5px solid var(--border-default);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: var(--space-2);
}

.dropdown-menu > li > a,
.dropdown-item {
  color: var(--text-primary);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
}

.dropdown-menu > li > a:hover,
.dropdown-item:hover {
  background-color: var(--bg-surface);
  color: var(--text-primary);
}

.dropdown-menu > .active > a {
  background-color: var(--purple-primary);
  color: var(--text-primary);
}


/* ----------------------------------------------------------------------------
   15. Badges & pills
   ---------------------------------------------------------------------------- */

.badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-1) var(--space-2);
  font-size: var(--text-xs);
  font-weight: var(--font-semibold);
  border-radius: var(--radius-sm);
  background-color: var(--bg-elevated);
  color: var(--text-primary);
}

.badge-success {
  background-color: rgba(16, 185, 129, 0.15);
  color: var(--success);
}

.badge-yellow {
  background-color: rgba(250, 202, 51, 0.15);
  color: var(--yellow);
}

.badge-purple {
  background-color: rgba(124, 58, 237, 0.15);
  color: var(--purple-light);
}

.pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-4);
  font-size: var(--text-sm);
  border-radius: var(--radius-pill);
  background-color: rgba(167, 139, 250, 0.12);
  border: 0.5px solid rgba(167, 139, 250, 0.25);
  color: var(--purple-subtle);
}


/* ----------------------------------------------------------------------------
   16. Footer
   ---------------------------------------------------------------------------- */

.footer {
  background-color: var(--bg-dark);
  border-top: 0.5px solid var(--border-subtle);
  padding-block: var(--space-12);
  margin-top: var(--space-20);
}

.footer a {
  color: var(--text-secondary);
  text-decoration: none;
  transition: color var(--transition-default);
}

.footer a:hover {
  color: var(--text-primary);
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1fr;
  gap: var(--space-8);
  margin-bottom: var(--space-12);
}

.footer-heading {
  font-size: 1rem;                        /* 16px (r4: was 15) */
  font-weight: var(--font-bold);
  color: var(--text-primary);
  margin-bottom: var(--space-4);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
}

.footer-col ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.footer-col a {
  color: var(--text-secondary);
  font-size: 1.0625rem;                   /* 17px (r4: was 16) */
}

.footer-bottom {
  padding-top: var(--space-6);
  border-top: 0.5px solid var(--border-subtle);
}

.footer-bottom p {
  font-size: 1rem;                        /* 16px (r4: was 15) */
  color: var(--text-tertiary);
}

@media (max-width: 768px) {
  .footer-grid {
    grid-template-columns: 1fr 1fr;
  }
  .footer-brand {
    grid-column: 1 / -1;
  }
}


/* ----------------------------------------------------------------------------
   16b. Header (sticky nav)
   ---------------------------------------------------------------------------- */

.marketing-header,
.dashboard-header {
  position: sticky;
  top: 0;
  z-index: 100;
  padding-block: var(--space-4);
  transition: background-color var(--transition-default);
}

.header-scrolled {
  background-color: rgba(8, 4, 26, 0.85);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}


/* ----------------------------------------------------------------------------
   16c. Newpage layouts (used by newpage.twig)
   ---------------------------------------------------------------------------- */

.newpage-hero {
  padding-block: 5rem 3rem;            /* r6: 6/4 ‚Üí 5/3 (80/48px) ‚Äî less vertical noise */
  text-align: center;
}

.newpage-hero .hero-meta {
  margin-bottom: var(--space-6);
}

.newpage-hero h1 {
  max-width: 900px;
  margin-inline: auto;
  margin-bottom: var(--space-6);
}

.newpage-hero .lead {
  max-width: 680px;
  margin-inline: auto;
  font-size: 1.5rem;                   /* 24px (r4: was 22) */
  line-height: 1.55;                   /* (r4: was 1.65) */
  color: rgba(255, 255, 255, 0.75);
}

.newpage-body {
  padding-block: 3.5rem;               /* r6: 4 ‚Üí 3.5rem */
}

.container-narrow {
  max-width: 960px;  /* r6: 1080 ‚Üí 960 ‚Äî pullquotes/FAQ feel intimate */
  margin-inline: auto;
  padding-inline: clamp(1rem, 3vw, 2rem);
}

.container-wide {
  width: 100%;
  max-width: var(--container-wide);
  margin-inline: auto;
  padding-inline: clamp(1rem, 3vw, 2rem);
}

.page-content h2 {
  margin-top: var(--space-12);
  margin-bottom: var(--space-4);
  font-size: var(--text-3xl);
}

.page-content h3 {
  margin-top: var(--space-8);
  margin-bottom: var(--space-3);
  font-size: var(--text-2xl);
}

.page-content p {
  margin-bottom: var(--space-4);
  color: var(--text-secondary);
  line-height: var(--leading-relaxed);
}

.page-content ul,
.page-content ol {
  padding-left: var(--space-6);
  margin-bottom: var(--space-4);
}

.page-content li {
  margin-bottom: var(--space-2);
  color: var(--text-secondary);
}

.page-content a {
  color: var(--purple-light);
}

.page-content a:hover {
  color: var(--yellow);
}

.newpage-cta {
  padding-block: 4rem 5rem;            /* r6: 4/6 ‚Üí 4/5 */
  text-align: center;
  position: relative;
  overflow: hidden;
  /* r3: removed solid background ‚Äî body::before aurora covers everything */
}

.newpage-cta::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 80%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(250, 202, 51, 0.5), transparent);
}

.newpage-cta .lead {
  font-size: 1.5rem;                    /* 24px (r4: was 22) */
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.8);
}

.cta-row {
  display: flex;
  gap: var(--space-4);
  justify-content: center;
  flex-wrap: wrap;
}

.educational-body .page-content {
  font-size: var(--text-lg);
  line-height: var(--leading-relaxed);
}

@media (max-width: 768px) {
  .newpage-hero {
    padding-block: var(--space-12);
  }
  .newpage-cta {
    padding-block: var(--space-12);
  }
  .cta-row {
    flex-direction: column;
    align-items: stretch;
  }
}


/* ----------------------------------------------------------------------------
   17. Utility classes
   ---------------------------------------------------------------------------- */

.text-center { text-align: center; }
.text-left { text-align: left; }
.text-right { text-align: right; }

.flex { display: flex; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.items-start { align-items: flex-start; }
.items-end { align-items: flex-end; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.justify-end { justify-content: flex-end; }

.gap-1 { gap: var(--space-1); }
.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }
.gap-4 { gap: var(--space-4); }
.gap-6 { gap: var(--space-6); }
.gap-8 { gap: var(--space-8); }

.mt-2 { margin-top: var(--space-2); }
.mt-4 { margin-top: var(--space-4); }
.mt-6 { margin-top: var(--space-6); }
.mt-8 { margin-top: var(--space-8); }
.mb-2 { margin-bottom: var(--space-2); }
.mb-4 { margin-bottom: var(--space-4); }
.mb-6 { margin-bottom: var(--space-6); }
.mb-8 { margin-bottom: var(--space-8); }

.hidden { display: none; }
.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;
}


/* ----------------------------------------------------------------------------
   18. RTL support
   ---------------------------------------------------------------------------- */

.rtl-table th,
.rtl-table td {
  text-align: right;
}

.rtl-navbar .nav-links {
  flex-direction: row-reverse;
}

.rtl-form .form-group {
  text-align: right;
}

[dir="rtl"] .logo-arrow {
  transform: translateY(-3px) rotate(15deg) scaleX(-1);
}


/* ----------------------------------------------------------------------------
   19. Responsive media queries
   ---------------------------------------------------------------------------- */

@media (max-width: 768px) {
  .display-1 { font-size: 2rem; }
  .display-2 { font-size: 1.75rem; }
  .heading-section { font-size: var(--text-2xl); }
  
  .section { padding-block: var(--space-10); }
  .section-loose { padding-block: var(--space-16); }
  
  .container { padding-inline: var(--space-4); }
  
  .nav-links {
    gap: var(--space-2);
  }
  
  .nav-links a {
    font-size: var(--text-xs);
  }
}


/* ----------------------------------------------------------------------------
   20. Bootstrap legacy overrides
   These ensure Perfect Panel's existing Bootstrap markup looks our way
   ---------------------------------------------------------------------------- */

/* Reset Bootstrap heading sizes */
h1 { font-size: var(--text-4xl); }
h2 { font-size: var(--text-3xl); }
h3 { font-size: var(--text-2xl); }
h4 { font-size: var(--text-xl); }
h5 { font-size: var(--text-lg); }
h6 { font-size: var(--text-base); }

/* Bootstrap row override (used in PP templates) */
.row { display: flex; flex-wrap: wrap; margin: 0 calc(-1 * var(--space-3)); }
[class*="col-"] { padding: 0 var(--space-3); }
.col-xs-12, .col-sm-12 { flex: 0 0 100%; max-width: 100%; }
.col-xs-6, .col-sm-6 { flex: 0 0 50%; max-width: 50%; }
.col-xs-4, .col-sm-4 { flex: 0 0 33.333%; max-width: 33.333%; }
.col-xs-3, .col-sm-3 { flex: 0 0 25%; max-width: 25%; }

/* Bootstrap container override */
.container-fluid {
  width: 100%;
  padding-inline: var(--space-6);
}

/* Bootstrap "well" used in some PP templates */
.well {
  background-color: var(--bg-surface);
  border: 0.5px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  margin-bottom: var(--space-4);
}

/* Pagination override */
.pagination {
  display: flex;
  gap: var(--space-1);
  list-style: none;
  padding: 0;
}

.pagination > li > a {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  height: 36px;
  padding: 0 var(--space-3);
  background-color: var(--bg-surface);
  border: 0.5px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  text-decoration: none;
  font-size: var(--text-sm);
  transition: all var(--transition-default);
}

.pagination > li > a:hover {
  background-color: var(--bg-elevated);
  color: var(--text-primary);
  border-color: var(--border-default);
}

.pagination > .active > a {
  background-color: var(--purple-primary);
  border-color: var(--purple-primary);
  color: var(--text-primary);
}


/* ----------------------------------------------------------------------------
   END OF style.css
   
   When adding new styles, follow these rules:
   1. Use existing CSS variables (don't introduce arbitrary values)
   2. Test with Bootstrap classes (they still exist in templates)
   3. Mobile-first responsive
   4. Maintain WCAG AA contrast (4.5:1 minimum)
   ---------------------------------------------------------------------------- */


/* ============================================================================
   PREMIUM POLISH r7 ‚Äî audit-driven micro-interactions & atmosphere
   Conic-gradient borders, cursor spotlight, scroll-reveal, FAQ slide,
   yellow glow pulse, featured pulse dot.
   ============================================================================ */

/* ‚îÄ‚îÄ Conic-gradient border glow on tile hover ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
@property --angle {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}

@keyframes spin-angle {
  to { --angle: 360deg; }
}

.tile {
  isolation: isolate;  /* ensure ::before stays within tile stacking context */
}

.tile::before {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  padding: 1px;
  /* r8 P1: full 360deg sweep (was 70-100% comet trail) ‚Äî visible rotation */
  background: conic-gradient(
    from var(--angle),
    transparent 0deg,
    var(--purple-primary) 90deg,
    var(--yellow) 180deg,
    var(--purple-primary) 270deg,
    transparent 360deg
  );
  -webkit-mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
          mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
  z-index: 0;
}

.tile:hover::before {
  opacity: 1;
  animation: spin-angle 4s linear infinite;
}

/* ‚îÄ‚îÄ Cursor spotlight on bento row (CSS vars updated via JS pointermove) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.bento-row-3 {
  position: relative;
}

.bento-row-3::after {
  content: '';
  position: absolute;
  inset: -2rem;
  pointer-events: none;
  /* r8 P3: tighter (400‚Üí280) + sharper (0.08‚Üí0.12 opacity, 60‚Üí65% transparent edge) */
  background: radial-gradient(
    280px circle at var(--mx, 50%) var(--my, 50%),
    rgba(167, 139, 250, 0.12),
    transparent 65%
  );
  border-radius: 24px;
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: 0;
}

.bento-row-3:hover::after {
  opacity: 1;
}

/* ‚îÄ‚îÄ Scroll-reveal (fade-up) ‚Äî uses [data-reveal] attribute ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
[data-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}

[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

[data-reveal][data-delay="1"] { transition-delay: 80ms; }
[data-reveal][data-delay="2"] { transition-delay: 160ms; }
[data-reveal][data-delay="3"] { transition-delay: 240ms; }

/* ‚îÄ‚îÄ FAQ content slide animation (when [open]) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
@keyframes faq-slide {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.faq-item[open] summary ~ * {
  animation: faq-slide 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.faq-caret {
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
              color var(--transition-default);
}

/* ‚îÄ‚îÄ Yellow CTA glow pulse ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.btn-yellow {
  position: relative;
  isolation: isolate;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.btn-yellow::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: inherit;
  background: var(--yellow);
  filter: blur(20px);
  opacity: 0.4;
  z-index: -1;
  transition: opacity 0.3s ease;
}

.btn-yellow:hover {
  transform: translateY(-1px);
}

.btn-yellow:hover::after {
  opacity: 0.7;
}

/* r8 P6: micro-tactile feedback on click */
.btn-yellow:active {
  transform: translateY(0) scale(0.98);
  transition-duration: 0.08s;
}

/* r8 P4: Still-questions / Secondary CTA panel ‚≠ê BRAND PATTERN
   Used wherever a page has a "Still have questions? / Need help?" type closing CTA.
   Tile-glass treatment with subtle purple gradient + radial glow from bottom. */
.still-questions {
  /* Commit 12 (Phase 5+ FINAL): chrome stripped at source globally.
     User design preference shifted across the audit chain ‚Äî card border +
     background gradient + backdrop-filter blur are gone on all 5 pages.
     What remains is a pure layout container: padding, position, rounded
     corners (so Commit 10 box-shadow projects with soft corners), and
     isolation (so content stacks above the .newpage-cta::before halo).
     Visual atmosphere is provided by:
     - .newpage-cta::before halo (Commit 5 lavender bridge above CTA)
     - .still-questions box-shadow (Commit 10 purple wash below card) */
  position: relative;
  padding: var(--space-10) var(--space-8);
  border-radius: 24px;
  isolation: isolate;
}

/* Original .still-questions::before bottom-glow rule REMOVED in Commit 12.
   It was the ŒîE 82.98 cliff source (third-pass auditor diagnosis at Commit 10).
   Commit 10 already neutralized it via content:none; this commit cleans up the
   dead declaration block since chrome is gone globally now. */

/* ‚îÄ‚îÄ Featured tile pulse dot (Telegram tile indicator) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.tile-featured-dot {
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--yellow);
  box-shadow: 0 0 0 0 rgba(250, 202, 51, 0.7);
  /* r8 P5: dampened ‚Äî 2s ‚Üí 3.5s (less aggressive in peripheral vision) */
  animation: pulse-dot 3.5s ease-in-out infinite;
  z-index: 1;
}

@keyframes pulse-dot {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(250, 202, 51, 0.6);
  }
  50% {
    /* r8 P5: 10px ‚Üí 8px shadow expansion (smaller ring, less distracting) */
    box-shadow: 0 0 0 8px rgba(250, 202, 51, 0);
  }
}

/* ‚îÄ‚îÄ prefers-reduced-motion respect (a11y, r8 expanded) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
@media (prefers-reduced-motion: reduce) {
  body::before { animation: none; }
  body::after { opacity: 0; }                  /* r8: also hide noise for motion-sensitive users */
  .tile:hover::before { animation: none; }     /* r8: explicit (was implicit through other rules) */
  .bento-row-3::after { display: none; }
  [data-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .faq-item[open] summary ~ * { animation: none; }
  .tile-featured-dot { animation: none; }
  .hero-title-gradient { animation: none; background-position: 0% 50%; }  /* r8 */
  .aff-h1 { animation: none; background-position: 0% 50%; }  /* Phase 10 Commit 6 ‚Äî a11y parity */
}

/* r8: mobile aurora dampening ‚Äî 24s cycle eats battery, 60s is gentler */
@media (max-width: 768px) {
  body::before { animation-duration: 60s; }
}


/* ============================================================================
   PHASE 1.5 ‚Äî HEADER (premium, scroll-aware, A11y) + FOOTER (semantic, 4-col)
   ============================================================================ */

/* ‚îÄ‚îÄ Skip-to-content link (a11y ‚Äî visible on focus only) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.skip-to-content {
  position: absolute;
  top: -100px;
  left: 1rem;
  z-index: 200;
  padding: 0.75rem 1.25rem;
  background: var(--yellow);
  color: var(--bg-dark);
  font-weight: 600;
  border-radius: 8px;
  text-decoration: none;
  transition: top 0.2s ease;
}
.skip-to-content:focus {
  top: 1rem;
  outline: 2px solid var(--purple-light);
  outline-offset: 2px;
}

/* ‚îÄ‚îÄ Marketing header (scroll-aware frosted glass) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.marketing-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: transparent;
  border-bottom: 1px solid transparent;
  transition:
    background 0.3s cubic-bezier(0.4, 0, 0.2, 1),
    backdrop-filter 0.3s cubic-bezier(0.4, 0, 0.2, 1),
    border-bottom-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.marketing-header.scrolled {
  background: rgba(8, 4, 26, 0.7);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom-color: rgba(124, 58, 237, 0.12);
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-block: 1.25rem;
  gap: 2rem;
}

/* ‚îÄ‚îÄ Logo (with subtle purple glow on hover) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.header-logo {
  display: inline-flex;
  align-items: center;
  position: relative;
  isolation: isolate;
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.header-logo:hover {
  transform: scale(1.03);
}
.header-logo::after {
  content: "";
  position: absolute;
  inset: -8px;
  border-radius: 12px;
  background: radial-gradient(circle, var(--glow-purple), transparent 70%);
  opacity: 0;
  z-index: -1;
  transition: opacity 0.3s ease;
}
.header-logo:hover::after { opacity: 0.5; }

.header-logo-img {
  height: 32px;
  width: auto;
  display: block;
}

/* Fallback text logo (when no admin image uploaded) */
.header-logo .logo-text,
.header-logo .logo-arrow {
  display: inline-block;
  font-weight: 700;
  font-size: 1.25rem;
  letter-spacing: -0.02em;
}
.header-logo .logo-arrow { color: var(--yellow); transform: rotate(-15deg); }

/* ‚îÄ‚îÄ Main navigation list ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.header-nav {
  flex: 1;
  display: flex;
  justify-content: center;
}
.header-nav-list {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.header-nav-item { display: inline-flex; }

/* Nav link with animated underline gradient */
.header-nav-link {
  position: relative;
  display: inline-block;
  padding-block: 0.5rem;
  font-size: 14px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.75);
  text-decoration: none;
  transition: color 0.2s ease;
  white-space: nowrap;
}
.header-nav-link:hover { color: rgba(255, 255, 255, 1); }

.header-nav-link::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 50%;
  width: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--purple-primary), transparent);
  transition:
    width 0.3s cubic-bezier(0.16, 1, 0.3, 1),
    left 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.header-nav-link:hover::after {
  width: 100%;
  left: 0;
}

/* ‚îÄ‚îÄ CTA cluster (Sign in text + Sign up yellow pill) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.header-cta {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.header-signin {
  color: rgba(255, 255, 255, 0.75);
  font-weight: 500;
  font-size: 14px;
  padding: 0.5rem 1rem;
  text-decoration: none;
  transition: color 0.2s ease;
}
.header-signin:hover { color: white; }

.header-signup {
  /* Reuses .btn .btn-yellow base from earlier; r8 glow pulse + scale-on-press apply */
  font-size: 14px;
  padding: 0.5rem 1.25rem;
}

/* ‚îÄ‚îÄ Mobile hamburger (placeholder ‚Äî Phase 1.6 will wire up the overlay) ‚îÄ‚îÄ‚îÄ‚îÄ */
.header-burger {
  /* Phase 1.6: 48x48 touch target, cursor pointer (wired to overlay) */
  display: none;
  width: 48px;
  height: 48px;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 0;
  padding: 0;
  position: relative;
  cursor: pointer;
  flex-direction: column;
  -webkit-tap-highlight-color: transparent;
}
.header-burger span {
  display: block;
  width: 24px;
  height: 2px;
  background: white;
  margin: 5px 0;
  border-radius: 2px;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
              opacity 0.3s ease;
}

/* Hamburger ‚Üí X transform when overlay is open */
.header-burger[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
.header-burger[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
}
.header-burger[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* Phase 1.6: collapse threshold 1024 ‚Üí 959 (iPad landscape gets full desktop nav) */
@media (max-width: 959px) {
  .header-nav,
  .header-cta {
    display: none;
  }
  .header-burger {
    display: flex;
  }
}


/* ============================================================================
   FOOTER (Phase 1.5 ‚Äî semantic <footer>, 4 columns, 40 verbatim links)
   ============================================================================ */

.site-footer {
  position: relative;
  margin-top: 6rem;
  padding-block: 5rem 2rem;
  /* Phase 1.5 fix: opaque footer top eliminates aurora drift bleed-through */
  background: linear-gradient(180deg,
    transparent 0%,
    rgba(8, 4, 26, 0.75) 25%,
    var(--bg-deepest) 60%);
  border-top: 1px solid rgba(124, 58, 237, 0.12);
  isolation: isolate;
  z-index: 1;
}

.site-footer::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  right: 0;
  height: 200px;
  background: radial-gradient(
    ellipse 70% 100% at 50% 0%,
    rgba(124, 58, 237, 0.06),
    transparent 70%);
  /* Phase 1.5 fix: dampened to 0.5 ‚Äî avoids duplicating body::before aurora glow */
  opacity: 0.5;
  pointer-events: none;
  z-index: -1;
}

.footer-grid {
  /* Phase 1.6: fluid grid ‚Äî mobile-first 1-col, 768+ becomes 2-col, 960+ becomes 4-col */
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  margin-bottom: 4rem;
}

@media (min-width: 768px) {
  .footer-grid {
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem;
  }
}

@media (min-width: 960px) {
  .footer-grid {
    grid-template-columns: 1.5fr 1fr 1fr 1fr;
    gap: 3rem;
  }
}

/* ‚îÄ‚îÄ Column 1: Brand + text + social ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.footer-brand .footer-logo {
  display: inline-flex;
  align-items: center;
  margin-bottom: 1.5rem;
  text-decoration: none;
}
.footer-brand .footer-logo-img {
  height: 32px;
  width: auto;
}

.footer-brand-text p {
  font-size: 0.9375rem;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.6);
  margin-bottom: 1rem;
}
.footer-brand-text p:last-child { margin-bottom: 0; }

.footer-social {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 2rem;
  padding: 0;
  list-style: none;
}
.footer-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
  color: rgba(255, 255, 255, 0.7);
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  transition:
    background 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease,
    transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.footer-social a:hover {
  background: rgba(124, 58, 237, 0.08);
  border-color: rgba(124, 58, 237, 0.3);
  color: white;
  transform: translateY(-2px);
}

/* Phase 1.5 polish: SVG icon inside social badge ‚Äî scale on hover with bouncy easing */
.footer-social a svg {
  width: 20px;
  height: 20px;
  display: block;
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.footer-social a:hover svg {
  transform: scale(1.1);
}
@media (prefers-reduced-motion: reduce) {
  .footer-social a svg { transition: none; }
}

/* ‚îÄ‚îÄ Column titles ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.footer-column-title {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.5);
  margin: 0 0 1.25rem 0;
}

/* ‚îÄ‚îÄ Link lists (Quick Links, Platforms, Countries) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.footer-link-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
}

.footer-link-list a {
  position: relative;
  font-size: 0.9375rem;
  color: rgba(255, 255, 255, 0.7);
  text-decoration: none;
  transition: color 0.2s ease, transform 0.2s ease;
  display: inline-block;
}
.footer-link-list a:hover {
  color: white;
  transform: translateX(4px);
}
.footer-link-list a::after {
  content: "‚Üí";
  position: absolute;
  right: -1.25rem;
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity 0.2s ease, transform 0.2s ease;
  color: var(--purple-primary);
}
.footer-link-list a:hover::after {
  opacity: 1;
  transform: translateX(0);
}

/* ‚îÄ‚îÄ Footer bottom (copyright) ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
.site-footer .footer-bottom {
  padding-top: 2rem;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  text-align: center;
}

.footer-copyright {
  font-size: 0.875rem;
  color: rgba(255, 255, 255, 0.5);
  margin: 0;
}

/* Phase 1.6: footer-grid breakpoints moved inline above (mobile-first 1 ‚Üí 2 ‚Üí 4 cols at 768/960) */

/* ‚îÄ‚îÄ A11y: reduced-motion overrides for new header/footer interactions ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ‚îÄ */
@media (prefers-reduced-motion: reduce) {
  .header-logo,
  .header-logo::after,
  .header-nav-link::after,
  .footer-social a,
  .footer-link-list a,
  .footer-link-list a::after,
  .marketing-header {
    transition: none;
  }
}


/* ============================================================================
   PHASE 1.6 ‚Äî Mobile overlay menu + touch hit areas
   ============================================================================ */

.mobile-overlay {
  position: fixed;
  inset: 0;
  z-index: 100;
  background: var(--bg-deepest);
  transform: translateX(100%);
  transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  visibility: hidden;
}

.mobile-overlay.is-open {
  transform: translateX(0);
  visibility: visible;
}

/* Subtle aurora bg inside overlay (less intense than body::before) */
.mobile-overlay::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 40% at 20% 30%, var(--glow-purple), transparent 60%),
    radial-gradient(ellipse 50% 30% at 80% 70%, var(--glow-magenta), transparent 60%);
  opacity: 0.4;
  pointer-events: none;
  z-index: -1;
}

.mobile-overlay-inner {
  min-height: 100vh;
  padding: 1.5rem 1.5rem 2rem;
  padding-top: env(safe-area-inset-top, 1.5rem);
  padding-bottom: calc(env(safe-area-inset-bottom, 0) + 2rem);
  display: flex;
  flex-direction: column;
  position: relative;
}

.mobile-overlay-close {
  position: absolute;
  top: 1.5rem;
  right: 1.5rem;
  width: 48px;
  height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
  color: rgba(255, 255, 255, 0.7);
  cursor: pointer;
  transition: all 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}
.mobile-overlay-close:hover,
.mobile-overlay-close:focus-visible {
  background: rgba(124, 58, 237, 0.1);
  border-color: rgba(124, 58, 237, 0.3);
  color: white;
}

.mobile-overlay-logo {
  display: inline-block;
  margin-bottom: 3rem;
  align-self: flex-start;
}
.mobile-overlay-logo img {
  height: 32px;
  width: auto;
}

.mobile-overlay-nav {
  flex: 1;
  margin-bottom: 2rem;
}
.mobile-overlay-nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.mobile-overlay-nav a {
  display: block;
  padding: 1rem 0;
  font-size: 1.5rem;
  font-weight: 500;
  color: white;
  text-decoration: none;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  transition: color 0.2s ease, padding 0.2s ease;
  -webkit-tap-highlight-color: rgba(124, 58, 237, 0.2);
}
.mobile-overlay-nav a:hover,
.mobile-overlay-nav a:focus-visible {
  color: var(--purple-light);
  padding-left: 0.5rem;
}

.mobile-overlay-cta {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin-bottom: 2rem;
}
.mobile-overlay-cta .btn {
  width: 100%;
  text-align: center;
  padding: 1rem;
  font-size: 1rem;
}

.mobile-overlay-social {
  display: flex;
  justify-content: center;
  gap: 0.75rem;
  list-style: none;
  padding: 0;
  margin: 0;
  flex-wrap: wrap;
}
.mobile-overlay-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.7);
  transition: all 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}
.mobile-overlay-social a:hover,
.mobile-overlay-social a:focus-visible {
  background: rgba(124, 58, 237, 0.1);
  border-color: rgba(124, 58, 237, 0.3);
  color: white;
  transform: translateY(-2px);
}
.mobile-overlay-social svg {
  width: 20px;
  height: 20px;
}

/* Body scroll lock when overlay open */
body.no-scroll {
  overflow: hidden;
}

/* Mobile touch hit areas (‚â§959px) */
@media (max-width: 959px) {
  .footer-link-list a {
    padding-block: 0.5rem;
    min-height: 44px;
    display: flex;
    align-items: center;
  }
  .footer-social a {
    width: 44px;
    height: 44px;
  }
  .btn,
  .header-burger,
  .footer-link-list a,
  .footer-social a,
  .mobile-overlay-nav a,
  .mobile-overlay-social a,
  .mobile-overlay-close {
    touch-action: manipulation;
  }
}

/* Reduced-motion overrides */
@media (prefers-reduced-motion: reduce) {
  .mobile-overlay,
  .mobile-overlay-nav a,
  .mobile-overlay-social a,
  .mobile-overlay-close,
  .header-burger span {
    transition: none;
  }
}


/* ============================================================
   PHASE 1.6 COMMIT 2A ‚Äî Critical Polish (23. maj 2026)
   Fix-evi bazirani na Claude Chrome live audit-u.
   ============================================================ */

/* === Fix #1: Purple stripe ispod footera ===================
   body::before aurora drift curi kroz ~50px gap jer <html>
   ima transparent bg. Solid bg na html canvasu maskira fixed
   pseudo-element u gap zoni. Testirano live = radi. */
:root,
html {
  background-color: #08041A;
  -webkit-tap-highlight-color: rgba(167, 139, 250, 0.18);
}

/* === Fix #2: Blue focus ring ‚Üí premium amethyst =============
   :focus-visible = keyboard-only (ne pali na mouse click). */
:where(a, button, summary, [role="button"], input, select, textarea) {
  outline: none;
}

:where(a, button, summary, [role="button"]):focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 2px;
  border-radius: 6px;
}

/* === Fix #3: Sign up CTA ≈æuti focus (WCAG 2.4.7) ============ */
.btn-primary:focus-visible,
a[href*="signup"]:focus-visible,
a[href*="sign-up"]:focus-visible,
.cta-signup:focus-visible {
  outline: 2px solid #FACA33;
  outline-offset: 3px;
  box-shadow: 0 0 0 4px rgba(250, 202, 51, 0.25);
}

/* === Fix #4: Mobile overlay focus polish ==================== */
#mobile-overlay a:focus-visible,
.mobile-overlay a:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 4px;
}

/* === Fix #5: Hamburger min 44√ó44 (touch target) ============= */
.header-burger,
.hamburger,
button.header-burger {
  min-width: 44px;
  min-height: 44px;
}

/* === Fix #6: Footer text linkovi 44px touch area ============ */
.site-footer .footer-col a,
.site-footer nav a,
.site-footer ul a {
  display: inline-block;
  padding-block: 0.5rem;
  min-height: 44px;
  box-sizing: border-box;
}

/* Reset: social SVG linkovi su veƒá 44√ó44, ne diraj. */
.site-footer .footer-social a,
.site-footer .social-icons a {
  padding-block: 0;
  min-height: unset;
}

/* ============================================================
   END Phase 1.6 Commit 2A
   ============================================================ */


/* ============================================================
   PHASE 1.6 COMMIT 2B ‚Äî Mobile Polish iz Chrome Audit-a
   23. maj 2026
   ============================================================ */

/* === Fix #1: Mobile overlay focus ‚Äî pokrij sva 3 scenarija ====
   Commit 2A :focus-visible radi za Tab keyboard, ali NE za
   programmatic .focus() (overlay open) ni za tap. Default plavi
   :focus curio. Reset za sve ne-keyboard fokus dogaƒëaje. */
:where(a, button, summary, [role="button"]):focus:not(:focus-visible) {
  outline: none;
}

#mobile-overlay a:focus,
#mobile-overlay button:focus,
.mobile-overlay a:focus,
.mobile-overlay button:focus {
  outline: none;
}

#mobile-overlay a:focus-visible,
#mobile-overlay button:focus-visible,
.mobile-overlay a:focus-visible,
.mobile-overlay button:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 4px;
  background: rgba(167, 139, 250, 0.10);
  border-radius: 8px;
}

/* === Fix #2: Sakri pullquote duplikat na mobile ===============
   .brand-pullquote je premium typographic device (italic +
   purple accent border) ‚Äî radi savr≈°eno ‚â•768px. Na narrow
   mobile border je na x=0 izgleda kao bug + duplikat sa
   .footer-brand-text. Sakri na <768. */
@media (max-width: 767px) {
  .brand-pullquote {
    display: none;
  }
}

/* === Fix #3: Button overflow fix (.btn-lg intrinsic 266px) ====
   Telegram + Open ticket buttons forsirali 16px horizontal
   overflow na narrow viewport. Full-width na mobile + manji
   padding. */
.btn-lg {
  min-width: 0;
  padding-inline: 20px;
}

@media (max-width: 479px) {
  .btn-lg {
    width: 100%;
  }
}

@media (min-width: 480px) {
  .btn-lg {
    padding-inline: 32px;
  }
}

/* === Fix #4: Fluid font scaling (clamp) =======================
   Hero title, lead paragraf, FAQ heading, bento h2 ‚Äî sve
   skaliraju glatko od mobile do desktop bez breakpoint jumps. */

.display-1 {
  font-size: clamp(1.75rem, 5vw + 1rem, 3.5rem);
  line-height: 1.08;
  letter-spacing: -0.02em;
}

.lead {
  font-size: clamp(1rem, 1.6vw + 0.6rem, 1.25rem);
  line-height: 1.55;
  font-weight: 400;
}

.heading-section {
  font-size: clamp(1.5rem, 3vw + 0.5rem, 2.25rem);
  line-height: 1.18;
}

.bento-row-3 h2,
.reach-card h2 {
  font-size: clamp(1.25rem, 2vw + 0.5rem, 1.625rem);
  line-height: 1.25;
  word-break: normal;
  hyphens: auto;
  -webkit-hyphens: auto;
}

/* === Fix #5: Sub-360 safety net ===============================
   Vrlo uski ekrani (galaxy fold, etc.) ‚Äî hero title jo≈° manji. */
@media (max-width: 359px) {
  .display-1 {
    font-size: 1.5rem;
    line-height: 1.1;
  }
}

/* ============================================================
   END Phase 1.6 Commit 2B
   ============================================================ */


/* ============================================================
   PHASE 1.6 COMMIT 2C ‚Äî Overlay & Footer Polish
   23. maj 2026 ‚Äî bazirano na Claude Chrome audit-u
   ============================================================ */

/* === Fix #1: Mobile overlay link tipografija ==================
   Commit 1 imao hardcoded 24px (touch-friendly ali preglomazno).
   Fluid 18‚Üí22px sa min-height 48px za zadr≈æan 44+ touch target. */
#mobile-overlay nav a,
#mobile-overlay .mobile-overlay-link,
.mobile-overlay nav a,
.mobile-overlay .mobile-overlay-link {
  font-size: clamp(1.125rem, 1.5vw + 1rem, 1.375rem);
  line-height: 1.4;
  font-weight: 500;
  padding-block: 14px;
  min-height: 48px;
  display: flex;
  align-items: center;
  letter-spacing: -0.01em;
}

/* === Fix #2: Overlay safe-area + logo breathing room ==========
   iPhone notch/Dynamic Island prekrivao gornjih ~44-59px.
   env(safe-area-inset-top) + min 24px fallback za ureƒëaje bez
   notch-a. Close X dobija isti tretman u top-right. */
#mobile-overlay,
.mobile-overlay {
  padding-top: max(24px, env(safe-area-inset-top));
  padding-bottom: max(24px, env(safe-area-inset-bottom));
  padding-inline: max(16px, env(safe-area-inset-left), env(safe-area-inset-right));
}

#mobile-overlay .mobile-overlay-inner,
.mobile-overlay .mobile-overlay-inner {
  padding-top: 0;
  padding-bottom: 32px;
}

.mobile-overlay-logo {
  display: inline-block;
  margin-top: 4px;
  margin-bottom: 32px;
}

.mobile-overlay-close {
  position: absolute;
  top: max(16px, env(safe-area-inset-top));
  right: max(16px, env(safe-area-inset-right));
}

/* === Fix #3: Footer social balanced centering =================
   justify-content: normal (default) bio left-aligned sa 7+2 / 6+3
   orphan rows. max-width forsira 5+4 elegantni split. center na
   svim viewport-ima (mobile + desktop) per user spec. */
.footer-social {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 10px 14px;
  padding: 0;
  margin: 32px auto 0;
  list-style: none;
  max-width: 280px;
}

@media (min-width: 960px) {
  .footer-social {
    gap: 8px 12px;
    max-width: 248px;
    /* margin: 32px auto 0 ostaje ‚Äî center u footer-brand koloni (330px) */
  }
}

/* ============================================================
   END Phase 1.6 Commit 2C
   ============================================================ */


/* ============================================================
   PHASE 1.6 COMMIT 2D ‚Äî Aurora Drift Restore
   23. maj 2026
   ============================================================ */

/* === Reverse Commit 2A Fix #1: vrati html transparent ========
   body::before aurora drift (3√ó radial-gradient @ 24s alternate)
   bio je pokriven solid bg-om. Restore brand animation.
   NAPOMENA: -webkit-tap-highlight-color iz Commit 2A ostaje
   netaknut (cascade ‚Äî samo background-color se override-uje). */
:root,
html {
  background-color: transparent;
}

/* === Sticky footer pattern ‚Äî eliminira gap ispod footera =====
   Body flex column, main flex-grows, footer margin-top auto.
   Footer uvek dosegne bottom viewport-a ‚Üí body::before aurora
   nema gap zonu gde bi se izvirivala ispod copyright-a. */
html,
body {
  min-height: 100dvh;
}

body {
  display: flex;
  flex-direction: column;
}

main {
  flex: 1 0 auto;
}

.site-footer {
  margin-top: auto;
  flex-shrink: 0;
}

/* ============================================================
   END Phase 1.6 Commit 2D
   ============================================================ */


/* ============================================================
   PHASE 1.6 COMMIT 2E ‚Äî Aurora Cover + Social Layout + Overlay Tight
   23. maj 2026
   ============================================================ */

/* === Fix #1: Footer extension cover ==========================
   Sticky footer pattern (2D) ne radi savr≈°eno ‚Äî aurora curi
   ispod copyright-a. footer::after sa 100vh solid bg pokriva
   sve ispod footera bez breakanja sticky footer pattern-a
   (defense-in-depth, oba rade zajedno). */
.site-footer {
  position: relative;
}

.site-footer::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  height: 100vh;
  background-color: #08041A;
  pointer-events: none;
  z-index: 0;
}

/* === Fix #2: Footer social ‚Äî cluster LEFT, icons centered =====
   Override Commit 2C (centriran cluster) ‚Üí vraƒáamo na LEFT,
   uz brand text. Plus svaka SVG ikona centered u svojoj box-i
   pomoƒáu inline-flex. */
.footer-social {
  justify-content: flex-start;
  margin: 32px 0 0;
  max-width: none;
}

@media (min-width: 960px) {
  .footer-social {
    max-width: none;
    margin: 32px 0 0;
  }
}

/* Centriraj SVG u svojoj rounded boxi (svaki social link) */
.footer-social a,
.footer-social li > a,
.footer-social > li > a,
.social-icons a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* === Fix #3: Overlay link tighter ============================
   9 nav linkova + Sign in/up ne staju sa 18-22px + 48px min-height.
   16-18px + 44px min-height + 10px padding daje 9 linkova √ó ~44px
   = 396px ‚â§ 500px iPhone content area bez scroll-a. */
#mobile-overlay nav a,
#mobile-overlay .mobile-overlay-link,
.mobile-overlay nav a,
.mobile-overlay .mobile-overlay-link {
  font-size: clamp(1rem, 0.75vw + 0.875rem, 1.125rem);
  line-height: 1.35;
  padding-block: 10px;
  min-height: 44px;
}

/* ============================================================
   END Phase 1.6 Commit 2E
   ============================================================ */


/* ============================================================
   PHASE 1.6 COMMIT 2F ‚Äî Sticky Footer Refactor
   23. maj 2026 ‚Äî eliminira footer::after extension, force sticky
   ============================================================ */

/* === Fix #1: Rollback Commit 2E footer::after =================
   height: 100vh extends scrollable document area za ceo viewport.
   Korisnik vidi OGROMAN tamni prazan section ispod copyright-a.
   Ukloni ‚Äî sticky footer iz Fix #2 ispod pokriva sve potrebe. */
.site-footer::after {
  display: none !important;
  content: none !important;
}

/* === Fix #2: Force sticky footer pattern ======================
   Body flex column + min-height fallback (100vh) i modern (100dvh).
   Footer margin-top: auto + flex-shrink: 0 garantuje da footer
   dosegne bottom viewport-a ‚Üí nema gap zone gde aurora curi. */
html,
body {
  min-height: 100vh;
  min-height: 100dvh;
}

body {
  display: flex;
  flex-direction: column;
}

/* Sva direktna deca body-ja zadr≈æe svoju visinu ‚Äî samo flex
   distribuira vi≈°ka prostor kroz auto margin */
body > * {
  flex-shrink: 0;
}

/* Footer push to bottom ‚Äî margin-top: auto u flex column
   computes na sav vi≈°ka prostor izmeƒëu prethodnog sibling-a
   i footer-a */
.site-footer {
  margin-top: auto !important;
  flex-shrink: 0 !important;
  position: relative;
  z-index: 1;
}

/* Eventualni intermediate wrapper-i (page, content, main) ‚Äî
   nemaju flex-grow, samo zadr≈æe natural visinu */
body > main,
body > .page-wrapper,
body > .content-wrapper,
body > #app,
body > .main-content {
  flex: 0 1 auto;
}

/* ============================================================
   END Phase 1.6 Commit 2F
   ============================================================ */


/* ============================================================
   PHASE 1.6 COMMIT 2G ‚Äî Aurora Z-Index Stacking
   23. maj 2026 ‚Äî arhitekturalni fix umesto sticky footer
   ============================================================ */

/* === Fix #1: Vrati html SOLID bg (override Commit 2D 2F) =====
   html canvas #08041A pokriva sve gap regije ispod body content.
   Aurora drift ƒáe biti vidljiv via z-index stacking ispod. */
:root,
html {
  background-color: #08041A;
}

/* === Fix #2: Rollback sticky footer pattern (2D + 2F) ========
   Sticky footer ne radi savr≈°eno na ovom template-u. Vi≈°e nije
   potreban jer html canvas pokriva gap zone. */
html,
body {
  min-height: auto;
}

body {
  display: block;
}

body > * {
  flex-shrink: initial;
}

.site-footer {
  margin-top: 0;
  flex-shrink: initial;
}

/* === Fix #3: Aurora drift IZNAD html canvas =================
   body::before originalno z-index -1 (IZA html canvas, sakriveno
   sa Commit 2G html bg solid). Pomeri na z-index 0 = iznad html
   canvas, ispod body content. */
body::before {
  z-index: 0;
}

/* === Fix #4: Body content IZNAD aurora =====================
   Sva direktna body deca (header, main, footer, copyright)
   dobijaju z-index 1 da budu IZNAD aurora drift-a. Footer ima
   svoj gradient bg koji pokriva auroru u svojoj zoni. */
body > * {
  position: relative;
  z-index: 1;
}

/* ============================================================
   END Phase 1.6 Commit 2G
   ============================================================ */


/* ============================================================
   PHASE 1.6 COMMIT 2H ‚Äî Aurora Leak DEFINITIVE Fix
   23. maj 2026 ‚Äî Claude Chrome live audit prona≈°ao root cause

   Boostero base CSS ima body { padding-bottom: 50px }. Kroz 5
   commit-a niko nije inspect-ovao body padding. Ta 50px zona je
   INSIDE body, ispod footera, bez ijednog child-a ‚Äî kroz nju
   curi body::before aurora drift (fixed, z-index 0).

   Fix: jedna linija CSS-a override-uje base padding.
   Aurora OSTAJE vidljiva na ostatku stranice. Leak NESTAJE.

   Napomena: overrides iz Commit 2D/2E/2F/2G postaju delimiƒçno
   suvi≈°ni (sticky footer pattern, footer::after disable, body > *
   z-index). Funkcionalno ne ≈°kode, ali CSS je overgrown. Cleanup
   mo≈æe biti odvojen "Commit 3" ako se odluƒçi.
   ============================================================ */

body {
  padding-bottom: 0;
}

/* ============================================================
   END Phase 1.6 Commit 2H ‚Äî Phase 1.6 = DONE üéâ
   ============================================================ */


/* ============================================================
   COMMIT 3 ‚Äî Header Centering + Footer Polish
   23. maj 2026 ‚Äî Claude Chrome audit identifikovao 3 root cause-a
   ============================================================ */

/* === P1: Spreƒçi Sign in wrapping (uzrok header visine asimetrije) ===
   .header-signin wrap-ovao na 2 reda (white-space: normal) ‚Üí
   .header-cta visina 58px (vs logo 32, nav 37) ‚Üí vizuelni utisak
   "top alignment" iako je flex align-items: center veƒá radio. */
.header-signin {
  white-space: nowrap;
}

/* === P2: Footer column headlines stand out ===================
   Headlines 12px / 0.5Œ± bili MANJI i TAMNIJI od linkova ispod
   (15px / 0.7Œ±). Sad: veƒái, bolder, amethyst accent boja iz
   brand palete + wider letter-spacing za eyebrow feel. */
.footer-column-title {
  font-size: 14px;
  font-weight: 700;
  color: #A78BFA;
  letter-spacing: 1.5px;
  margin-bottom: 16px;
}

/* === P3: Footer link padding ‚Äî desktop tighter, mobile WCAG ====
   Commit 2A dodao min-height: 44px za touch target. Na desktop
   previ≈°e prostora, mouse je precizan. Desktop override; mobile
   zadr≈æava 44px za WCAG 2.5.5. */
@media (min-width: 768px) {
  .footer-column a {
    padding-block: 4px;
    min-height: 0;
  }
}

/* ============================================================
   END Commit 3
   ============================================================ */


/* ============================================================
   COMMIT 3.1 ‚Äî Footer Linkovi Tighter (desktop only)
   23. maj 2026
   ============================================================ */

@media (min-width: 768px) {
  /* Link padding jo≈° manji + tighter line-height */
  .footer-column a,
  .site-footer .footer-col a,
  .site-footer nav a,
  .site-footer ul a {
    padding-block: 2px;
    line-height: 1.3;
    min-height: 0;
  }

  /* List items ‚Äî ukloni eventualni margin izmeƒëu */
  .footer-column li,
  .footer-column-list li,
  .site-footer li {
    margin-block: 0;
    padding-block: 0;
  }

  /* Parent UL ‚Äî ako postoji flex/grid gap */
  .footer-column ul,
  .footer-column-list,
  .site-footer .footer-col ul {
    gap: 0;
    row-gap: 0;
  }
}

/* ============================================================
   END Commit 3.1
   ============================================================ */


/* ============================================================
   COMMIT 3.2 ‚Äî Footer linkovi middle ground
   23. maj 2026 ‚Äî Commit 3.1 previ≈°e stisnut, vraƒáamo balans
   ============================================================ */

@media (min-width: 768px) {
  .footer-column a,
  .site-footer .footer-col a,
  .site-footer nav a,
  .site-footer ul a {
    padding-block: 5px;
    line-height: 1.5;
    min-height: 0;
  }
}

/* ============================================================
   END Commit 3.2
   ============================================================ */


/* ============================================================
   COMMIT 4 ‚Äî Tipografija + Spacing Polish
   23. maj 2026 ‚Äî Claude Chrome audit, 6 priority-ja u 8 deklaracija
   ============================================================ */

/* === P1 + P3: Manji .lead font (3-u-1: hero + FAQ + Still have q) ===
   .lead se koristi na 3 mesta. Jedan clamp() pokriva sve.
   24px ‚Üí 18px (-25%), line-height 1.55 ‚Üí 1.6 za bolji ritam. */
.lead {
  font-size: clamp(0.9375rem, 1.4vw + 0.5rem, 1.125rem);
  line-height: 1.6;
}

/* === P2: Tighter hero ‚Üí REACH US gap ==========================
   Bilo: 138px (48 padding-bottom + 56 padding-top + 20 margin-bottom).
   Sad: 90px (24 + 32 + 20). -35% prostora. */
.newpage-hero {
  padding-bottom: 24px;
}

.newpage-body {
  padding-top: 32px;
}

/* === P4 + P5: Sakrij .brand-pullquote + smanji panel/footer padding ===
   .brand-pullquote je 100% duplikat prve reƒçenice footer brand-text-a.
   Sakrivanje u≈°tedi 118px + eliminira redundantni copy. Plus padding
   smanjenja: panel.bottom 80‚Üí48, footer.top 80‚Üí56. Total gap:
   342px ‚Üí 128px (-63%). */
.brand-pullquote {
  display: none;
}

.newpage-cta {
  padding-bottom: 48px;
}

.site-footer {
  padding-top: 56px;
}

/* === P6: Ukloni social ikone iz mobile overlay-a ==============
   Overlay sad: X / Logo / 9 nav linkova / Sign in / Sign up.
   Clean nav only. U≈°teda 288px. */
.mobile-overlay-social {
  display: none;
}

/* ============================================================
   END Commit 4
   ============================================================ */


/* ============================================================
   COMMIT 4.1 ‚Äî Mobile Overlay CTA Up (uz nav)
   23. maj 2026 ‚Äî posle .mobile-overlay-social hide-a,
   eliminiraj prazan prostor izmeƒëu nav i CTA
   ============================================================ */

/* Overlay container ‚Äî ne push CTA na bottom */
#mobile-overlay,
.mobile-overlay,
.mobile-overlay-inner {
  justify-content: flex-start;
}

/* Nav lista ‚Äî ne uzimaj vi≈°ka prostor */
.mobile-overlay-nav {
  flex-grow: 0;
  flex: 0 0 auto;
  margin-bottom: 0;
  padding-bottom: 0;
}

/* CTA blok ‚Äî normalna spacing iznad, ne push na bottom */
.mobile-overlay-cta {
  margin-top: 24px;
  align-self: stretch;
}

/* ============================================================
   END Commit 4.1
   ============================================================ */


/* ============================================================
   COMMIT 4.2 ‚Äî .lead font jo≈° manji (15-18px ‚Üí 14-16px)
   23. maj 2026 ‚Äî Commit 4 P1 i dalje 18px na desktop, korisnik
   ≈æeli tighter premium feel
   ============================================================ */

.lead {
  font-size: clamp(0.875rem, 1vw + 0.4rem, 1rem);
  line-height: 1.6;
}

/* ============================================================
   END Commit 4.2
   ============================================================ */


/* ============================================================
   COMMIT 5 ‚Äî Specificity Escalation Fixes
   23. maj 2026 ‚Äî Chrome audit otkrio specificity war
   ============================================================ */

/* === P1: .lead font escalation =================================
   Vendor CSS ima .newpage-hero .lead i .still-questions .lead
   (0,2,0) koji su pobeƒëivali moj .lead (0,1,0). Iste selektore
   sad sa novim clamp 15-17px. */
.newpage-hero .lead,
.still-questions .lead,
.newpage-cta .lead {
  font-size: clamp(0.9375rem, 0.6vw + 0.75rem, 1.0625rem);
  line-height: 1.6;
}

/* === P2: Footer social escalation ==============================
   Vendor CSS ima .site-footer .footer-social { gap: 0 } koji
   je pobeƒëivao moj .footer-social. Eskaliraj sa parent ancestor.
   max-width 248px = 5 √ó 40px ikona + 4 √ó 12px gap ‚Üí 5+4 split. */
.site-footer .footer-social {
  max-width: 248px;
  gap: 12px;
}

/* ============================================================
   END Commit 5
   ============================================================ */


/* ============================================================
   COMMIT 7 ‚Äî Premium Polish (9 fix-eva, pre Phase 2)
   23. maj 2026 ‚Äî Claude Chrome premium audit
   ============================================================ */

/* === #1 Typography refinement ‚Äî Geist stylistic features =====
   cv11, ss01, ss03 alternates + kern + calt + optimizeLegibility.
   Linear/Vercel/GitHub standard. */
body {
  font-feature-settings: 'cv11', 'ss01', 'ss03', 'kern' 1, 'calt' 1;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.tabular,
[class*="stat-"],
.copyright {
  font-variant-numeric: tabular-nums;
}

/* === #2 Bento card hover lift =================================
   -2px translateY (Stripe standard), amethyst border glow,
   soft drop-shadow. Cubic-bezier 0.16/1/0.3/1 = premium ease. */
.tile {
  transition:
    transform 0.4s cubic-bezier(0.16, 1, 0.3, 1),
    box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1),
    border-color 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.tile:hover {
  transform: translateY(-2px);
  border-color: rgba(167, 139, 250, 0.35);
  box-shadow:
    0 12px 32px -12px rgba(0, 0, 0, 0.5),
    0 0 0 1px rgba(167, 139, 250, 0.08);
}

/* === #3 Featured tile static elevation (Telegram card) =======
   Ambient amethyst glow signalizira "recommended channel" bez
   badge-a. Stripe pricing tier pattern. */
.tile-featured {
  border-color: rgba(167, 139, 250, 0.2);
  box-shadow:
    0 0 0 1px rgba(167, 139, 250, 0.08),
    0 24px 48px -24px rgba(124, 58, 237, 0.4);
}

/* === #5 Button glow expand ====================================
   .btn-yellow ima transition ali box-shadow:none ‚Äî fix toplim
   yellow halo + -1px hover lift + active press feedback. */
.btn-yellow {
  box-shadow: 0 4px 14px -4px rgba(250, 202, 51, 0.4);
}

.btn-yellow:hover {
  box-shadow: 0 8px 24px -6px rgba(250, 202, 51, 0.6);
  transform: translateY(-1px);
}

.btn-yellow:active {
  transform: translateY(0);
  transition-duration: 0.1s;
}

.btn-secondary {
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.btn-secondary:hover {
  border-color: rgba(167, 139, 250, 0.5);
  background: rgba(167, 139, 250, 0.08);
}

/* === #6 Custom scrollbar ‚Äî amethyst floating thumb ============
   Default 15px sivi bar ‚Üí 10px amethyst sa border matching body
   bg (floating efekat). Linear/Vercel pattern. */
* {
  scrollbar-width: thin;
  scrollbar-color: rgba(167, 139, 250, 0.3) transparent;
}

*::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

*::-webkit-scrollbar-track {
  background: transparent;
}

*::-webkit-scrollbar-thumb {
  background: rgba(167, 139, 250, 0.25);
  border-radius: 5px;
  border: 2px solid #08041A;
}

*::-webkit-scrollbar-thumb:hover {
  background: rgba(167, 139, 250, 0.45);
}

/* === #7 Noise texture overlay (3% opacity) ===================
   Subtle SVG noise breakuje RGB banding na aurori + dodaje "grain"
   premium feel. Koristimo html::after da ne konfliktuje sa
   postojeƒáim body::after iz Boostero base. */
html::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: 0.025;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  background-size: 160px 160px;
}

/* === #8 prefers-reduced-motion safety (WCAG 2.3.3 AAA) =======
   Vestibular disorder accessibility. Aurora drift 24s, shimmer 8s,
   pulse 3.5s, 23 reveals ‚Äî svi suspended za users sa reduced motion. */
@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;
  }

  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* === #9 Nav link underline ‚Äî grow-from-center =================
   Underline raste iz centra ka oba kraja (left: 50% ‚Üí 0 +
   width: 0 ‚Üí 100%). Stripe/Linear signature move. */
.header-nav a {
  position: relative;
  transition: color 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.header-nav a::after {
  transition:
    width 0.3s cubic-bezier(0.16, 1, 0.3, 1),
    left 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  left: 50%;
}

.header-nav a:hover::after,
.header-nav a:focus-visible::after {
  width: 100%;
  left: 0;
}

/* === #10 FAQ summary polish ==================================
   transition: all je anti-pattern (animira sve). Specifiƒçni
   property-jevi = controlled feel. Plus chevron rotate na open. */
.faq-item summary {
  transition: color 0.25s ease, background-color 0.25s ease;
  cursor: pointer;
  border-radius: 8px;
}

.faq-item summary:hover {
  color: rgb(167, 139, 250);
}

.faq-item summary:focus-visible {
  outline: 2px solid rgba(167, 139, 250, 0.5);
  outline-offset: 4px;
}

.faq-item[open] summary svg,
.faq-item[open] summary .faq-chevron {
  transform: rotate(180deg);
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

/* ============================================================
   END Commit 7 ‚Äî Premium Polish
   ============================================================ */


/* ============================================================
   COMMIT 7B ‚Äî Response Badge "Kvantni Skok"
   23. maj 2026 ‚Äî pulsing green trust signal na Telegram card
   ============================================================ */

/* Green pill badge sa pulsing dot ‚Äî Intercom/Cal.com pattern.
   Pozicioniran top of .tile-featured (Telegram card). */
.response-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  margin-bottom: 16px;
  border-radius: 999px;
  background: rgba(34, 197, 94, 0.1);
  border: 1px solid rgba(34, 197, 94, 0.25);
  color: rgb(134, 239, 172);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  width: fit-content;
}

.response-badge::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgb(34, 197, 94);
  box-shadow: 0 0 6px rgb(34, 197, 94);
  animation: pulse-online 2s ease-in-out infinite;
}

@keyframes pulse-online {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

/* Reduce motion safety ‚Äî veƒá globalno u Commit 7 #8 pokriveno,
   ali eksplicitno za pulse animation: */
@media (prefers-reduced-motion: reduce) {
  .response-badge::before {
    animation: none;
  }
}

/* ============================================================
   END Commit 7B
   ============================================================ */


/* ============================================
   PHASE 2 - Commit 2: 4-Step Process + Platform Sub-Grid
   - Kills <ol> default decimal numbering
   - Large gradient numerals (01-04)
   - Vertical connecting line (purple ‚Üí amethyst ‚Üí yellow ‚Üí fade)
   - Step body grid offset
   - 5-col platform sub-grid with monogram tiles
   ============================================ */

/* ---- 4-Step Process container ---- */
.newpage-body .process-steps {
  list-style: none;
  padding-left: 0;
  margin: var(--space-12, 3rem) 0 0;
  display: flex;
  flex-direction: column;
  gap: clamp(2.5rem, 5vw, 4rem);
  position: relative;
}

/* Vertical connecting line - threads through numerals */
.process-steps::before {
  content: "";
  position: absolute;
  top: 1.5rem;
  bottom: 1.5rem;
  left: clamp(1.75rem, 4vw, 2.75rem);
  width: 2px;
  background: linear-gradient(to bottom,
    var(--purple-primary, #6D28D9) 0%,
    var(--amethyst, #A78BFA) 40%,
    var(--yellow-cta, #FACA33) 75%,
    transparent 100%);
  opacity: 0.35;
  pointer-events: none;
}

/* ---- Individual step layout (grid: numeral | body) ---- */
.process-step {
  display: grid;
  grid-template-columns: clamp(70px, 10vw, 120px) 1fr;
  gap: clamp(1rem, 2.5vw, 1.75rem);
  align-items: start;
  position: relative;
}

/* ---- Numeral (large gradient text) ---- */
.process-step-numeral {
  font-size: clamp(2.75rem, 6.5vw, 5rem);
  font-weight: 700;
  line-height: 0.9;
  letter-spacing: -0.04em;
  background: linear-gradient(135deg,
    var(--purple-primary, #6D28D9) 0%,
    var(--amethyst, #A78BFA) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  position: relative;
  z-index: 2;
  font-feature-settings: "tnum", "ss01";
  user-select: none;
}

/* ---- Step body (right side) ---- */
.process-step-body {
  padding-top: 0.5rem;
  min-width: 0;
}

.process-step-body .process-step-title {
  font-size: clamp(1.375rem, 2.5vw, 1.875rem);
  font-weight: 600;
  color: var(--purple-light, #C4B5FD);
  margin: 0 0 var(--space-4, 1rem);
  letter-spacing: -0.015em;
  line-height: 1.2;
}

.process-step-body p {
  font-size: clamp(0.9375rem, 1.4vw, 1.0625rem);
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.78);
  margin: 0 0 var(--space-4, 1rem);
}

.process-step-body p:last-child {
  margin-bottom: 0;
}

.process-step-body a {
  color: var(--amethyst, #A78BFA);
  text-decoration: none;
  border-bottom: 1px solid rgba(167, 139, 250, 0.3);
  transition: border-color 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              color 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.process-step-body a:hover {
  color: var(--yellow-cta, #FACA33);
  border-bottom-color: var(--yellow-cta, #FACA33);
}

/* ---- Step 4 inner list (kill default bullets, custom yellow arrow) ---- */
.newpage-body .process-step-list {
  list-style: none;
  padding-left: 0;
  margin: var(--space-4, 1rem) 0;
}

.process-step-list li {
  position: relative;
  padding-left: 1.75rem;
  color: rgba(255, 255, 255, 0.78);
  line-height: 1.7;
  margin-bottom: var(--space-2, 0.5rem);
  font-size: clamp(0.9375rem, 1.4vw, 1.0625rem);
}

.process-step-list li::before {
  content: "‚Üí";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--yellow-cta, #FACA33);
  font-weight: 600;
}

/* ---- Platform sub-grid (Step 3 inline 5-col) ---- */
.newpage-body .platform-grid {
  list-style: none;
  padding: 0;
  margin: var(--space-8, 2rem) 0;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: clamp(0.5rem, 1.2vw, 0.875rem);
}

.platform-tile {
  margin: 0;
  padding: 0;
}

.platform-tile-link {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-3, 0.75rem);
  padding: clamp(0.875rem, 2vw, 1.25rem) clamp(0.5rem, 1.5vw, 0.875rem);
  background: linear-gradient(180deg,
    rgba(167, 139, 250, 0.04),
    rgba(167, 139, 250, 0.08));
  border: 1px solid rgba(167, 139, 250, 0.15);
  border-radius: 14px;
  text-decoration: none !important;
  color: inherit;
  height: 100%;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              background 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.platform-tile-link:hover {
  transform: translateY(-2px);
  border-color: rgba(167, 139, 250, 0.4);
  background: linear-gradient(180deg,
    rgba(167, 139, 250, 0.08),
    rgba(167, 139, 250, 0.12));
  box-shadow: 0 4px 24px rgba(109, 40, 217, 0.15);
}

.platform-tile-monogram {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 11px;
  background: linear-gradient(135deg,
    var(--purple-primary, #6D28D9),
    var(--amethyst, #A78BFA));
  color: white;
  font-weight: 700;
  font-size: 0.875rem;
  letter-spacing: 0.04em;
  box-shadow: 0 2px 12px rgba(109, 40, 217, 0.25);
  flex-shrink: 0;
  font-feature-settings: "ss01";
}

.platform-tile-name {
  font-size: 0.9375rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.95);
  margin: 0;
  line-height: 1.25;
}

.platform-tile-features {
  font-size: 0.8125rem;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.6);
  margin: 0;
}

/* ---- Responsive: 4-step process ---- */
@media (max-width: 768px) {
  .process-step {
    grid-template-columns: clamp(55px, 14vw, 75px) 1fr;
    gap: var(--space-4, 1rem);
  }
  .process-step-body { padding-top: 0.25rem; }
  .process-steps::before { left: clamp(1.25rem, 7vw, 1.75rem); }
}

/* ---- Responsive: platform grid (5 ‚Üí 3 ‚Üí 2 cols) ---- */
@media (max-width: 1024px) {
  .newpage-body .platform-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 560px) {
  .newpage-body .platform-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .newpage-body .platform-grid > .platform-tile:nth-child(5) {
    grid-column: 1 / -1;
    max-width: 60%;
    margin-inline: auto;
  }
}

/* ---- Reduced motion (WCAG) ---- */
@media (prefers-reduced-motion: reduce) {
  .platform-tile-link,
  .process-step-body a {
    transition: none;
  }
  .platform-tile-link:hover {
    transform: none;
  }
}


/* ============================================
   PHASE 2 - Commit 3: Differentiator Grid + Platform Insights + Prose Block
   - Differentiator grid: 3+2 layout (3 top row, 2 centered bottom)
   - Platform insights: glass pill cards 2-col grid sa accent bar
   - Prose block: max-width centered za Behind the Scenes
   ============================================ */

/* ---- Differentiator grid (3+2 layout via 6-col grid) ---- */
.newpage-body .differentiator-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: clamp(1rem, 2vw, 1.5rem);
  margin: var(--space-8, 2rem) auto 0;
  max-width: 1200px;
}

.differentiator-grid > .differentiator {
  grid-column: span 2;
  margin: 0;
}

/* Items 4 i 5 idu u row 2, offset za centriranje */
.differentiator-grid > .differentiator:nth-child(4) {
  grid-column: 2 / span 2;
}

.differentiator-grid > .differentiator:nth-child(5) {
  grid-column: 4 / span 2;
}

/* Tablet: 2-col (5 items ‚Üí 2-col grid sa orphan 5th centered) */
@media (max-width: 1024px) {
  .newpage-body .differentiator-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .differentiator-grid > .differentiator,
  .differentiator-grid > .differentiator:nth-child(4),
  .differentiator-grid > .differentiator:nth-child(5) {
    grid-column: auto;
  }
  .differentiator-grid > .differentiator:nth-child(5) {
    grid-column: 1 / -1;
    max-width: 50%;
    margin-inline: auto;
  }
}

/* Mobile: 1-col stacked */
@media (max-width: 600px) {
  .newpage-body .differentiator-grid {
    grid-template-columns: 1fr;
  }
  .differentiator-grid > .differentiator:nth-child(5) {
    max-width: 100%;
  }
}

/* ---- Platform insights (Across Different Platforms list ‚Üí pill cards) ---- */
.newpage-body .platform-insights {
  list-style: none;
  padding: 0;
  margin: var(--space-8, 2rem) auto 0;
  max-width: 1100px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(0.75rem, 1.5vw, 1.25rem);
}

.platform-insights > li {
  position: relative;
  padding: clamp(1.125rem, 2vw, 1.5rem) clamp(1.25rem, 2.5vw, 1.75rem);
  padding-left: clamp(1.5rem, 3vw, 2rem);
  background: linear-gradient(180deg,
    rgba(167, 139, 250, 0.04),
    rgba(167, 139, 250, 0.07));
  border: 1px solid rgba(167, 139, 250, 0.12);
  border-radius: 14px;
  font-size: clamp(0.9375rem, 1.4vw, 1rem);
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.78);
  overflow: hidden;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              background 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Vertical accent bar (yellow ‚Üí amethyst gradient) na levoj strani */
.platform-insights > li::before {
  content: "";
  position: absolute;
  top: clamp(1rem, 2vw, 1.25rem);
  bottom: clamp(1rem, 2vw, 1.25rem);
  left: 0;
  width: 3px;
  background: linear-gradient(180deg,
    var(--yellow-cta, #FACA33),
    var(--amethyst, #A78BFA));
  border-radius: 0 2px 2px 0;
  opacity: 0.75;
}

.platform-insights > li:hover {
  transform: translateY(-1px);
  border-color: rgba(167, 139, 250, 0.25);
  background: linear-gradient(180deg,
    rgba(167, 139, 250, 0.06),
    rgba(167, 139, 250, 0.1));
}

.platform-insights > li strong {
  color: var(--purple-light, #C4B5FD);
  font-weight: 600;
  letter-spacing: -0.005em;
}

/* Mobile: 1-col stacked */
@media (max-width: 768px) {
  .newpage-body .platform-insights {
    grid-template-columns: 1fr;
  }
}

/* ---- Prose block (Behind the Scenes container) ---- */
.newpage-body .prose-block {
  max-width: 760px;
  margin: var(--space-8, 2rem) auto 0;
  text-align: left;
}

.prose-block > p {
  font-size: clamp(1rem, 1.5vw, 1.0625rem);
  line-height: 1.75;
  color: rgba(255, 255, 255, 0.78);
  margin: 0 0 var(--space-4, 1rem);
}

.prose-block > p:last-child {
  margin-bottom: 0;
}

/* First paragraf u prose-block dobija subtle elevation */
.prose-block > p:first-child {
  font-size: clamp(1.0625rem, 1.6vw, 1.1875rem);
  color: rgba(255, 255, 255, 0.88);
  font-weight: 400;
}

/* ---- Reduced motion (WCAG) ---- */
@media (prefers-reduced-motion: reduce) {
  .platform-insights > li {
    transition: none;
  }
  .platform-insights > li:hover {
    transform: none;
  }
}


/* ============================================
   PHASE 2 - Commit 4: Audit cleanup
   - Brand pullquote: ensure always renders (CSS safety net pored HTML fix-a)
   - Horizontal overflow safety na narrow viewports
   - Long headings break gracefully
   ============================================ */

/* ---- Brand pullquote: hard-render override ---- */
.section > .brand-pullquote,
.section > .brand-pullquote[data-reveal] {
  display: block;
  opacity: 1;
  transform: none;
}

/* ---- Horizontal overflow safety net ---- */
html {
  overflow-x: hidden;
}

body {
  overflow-x: clip;
}

/* ---- Long headings: clean break on narrow viewports ---- */
.display-1,
.heading-section,
.process-step-title,
.platform-tile-name,
.faq-question {
  overflow-wrap: anywhere;
  word-wrap: break-word;
  hyphens: auto;
}


/* ============================================
   PHASE 2 - Commit 5: Platform icon SVG sizing safety
   - Real brand SVGs (Instagram, YouTube, TikTok, Facebook, X) replace text monograms
   - Ensure SVGs render at correct size inside .platform-tile-monogram
   ============================================ */

.platform-tile-monogram svg {
  width: 22px;
  height: 22px;
  fill: currentColor;
  display: block;
  flex-shrink: 0;
}


/* ============================================
   PHASE 2 - Commit 6: Behind the Scenes redesign
   - 3 horizontal icon cards umesto prose-block
   - Icon left (purple‚Üíamethyst gradient bg), title + paragraph desno
   - Subtle yellow‚Üíamethyst accent bar na levoj ivici (signature touch)
   - Hover lift (premium restraint, -2px)
   ============================================ */

.newpage-body .bts-grid {
  display: flex;
  flex-direction: column;
  gap: clamp(0.875rem, 1.5vw, 1.25rem);
  max-width: 920px;
  margin: var(--space-8, 2rem) auto 0;
}

.bts-item {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: clamp(1rem, 2vw, 1.5rem);
  align-items: start;
  padding: clamp(1.125rem, 2vw, 1.5rem) clamp(1.25rem, 2.5vw, 1.75rem);
  padding-left: clamp(1.5rem, 3vw, 2rem);
  background: linear-gradient(135deg,
    rgba(167, 139, 250, 0.05) 0%,
    rgba(167, 139, 250, 0.02) 100%);
  border: 1px solid rgba(167, 139, 250, 0.12);
  border-radius: 16px;
  position: relative;
  overflow: hidden;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              background 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Subtle vertical accent na levoj ivici (signature yellow ‚Üí amethyst) */
.bts-item::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(180deg,
    var(--yellow-cta, #FACA33) 0%,
    var(--amethyst, #A78BFA) 100%);
  opacity: 0.5;
  pointer-events: none;
}

.bts-item:hover {
  transform: translateY(-2px);
  border-color: rgba(167, 139, 250, 0.25);
  background: linear-gradient(135deg,
    rgba(167, 139, 250, 0.08) 0%,
    rgba(167, 139, 250, 0.04) 100%);
  box-shadow: 0 4px 24px rgba(109, 40, 217, 0.12);
}

/* Icon box (gradient bg, white outline SVG) */
.bts-icon {
  width: 48px;
  height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg,
    var(--purple-primary, #6D28D9),
    var(--amethyst, #A78BFA));
  border-radius: 12px;
  color: white;
  flex-shrink: 0;
  box-shadow: 0 2px 12px rgba(109, 40, 217, 0.25);
}

.bts-icon svg {
  width: 24px;
  height: 24px;
  display: block;
}

.bts-content {
  min-width: 0;
}

.bts-content .bts-title {
  font-size: clamp(1.0625rem, 1.7vw, 1.25rem);
  font-weight: 600;
  color: var(--purple-light, #C4B5FD);
  margin: 0 0 var(--space-2, 0.5rem);
  letter-spacing: -0.01em;
  line-height: 1.3;
}

.bts-content p {
  font-size: clamp(0.9375rem, 1.4vw, 1rem);
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.78);
  margin: 0;
}

/* Mobile: icon na vrhu, content ispod */
@media (max-width: 640px) {
  .bts-item {
    grid-template-columns: 1fr;
    gap: var(--space-3, 0.75rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  .bts-item {
    transition: none;
  }
  .bts-item:hover {
    transform: none;
  }
}

/* ============================================
   PHASE 3 - Commit 2: Hero video pattern
   Lazy-load YouTube thumb + glass frame + play overlay
   ============================================ */

/* Container ‚Äî glass frame with subtle ambient amethyst glow */
.hero-video {
  position: relative;
  max-width: 880px;
  margin: var(--space-8, 3rem) auto 0;
  border-radius: 20px;
  overflow: hidden;
  isolation: isolate;
  background: linear-gradient(135deg, rgba(109, 40, 217, 0.18), rgba(167, 139, 250, 0.08));
  border: 1px solid rgba(167, 139, 250, 0.2);
  box-shadow:
    0 24px 60px -20px rgba(109, 40, 217, 0.35),
    inset 0 0 0 1px rgba(196, 181, 253, 0.05);
  transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.32s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Hover lift only when thumb still showing ‚Äî not during playback */
.hero-video:not(.is-playing):hover {
  transform: translateY(-2px);
  box-shadow:
    0 32px 80px -20px rgba(109, 40, 217, 0.5),
    inset 0 0 0 1px rgba(196, 181, 253, 0.15);
}

/* Thumb button ‚Äî covers full container, cursor pointer */
.hero-video-thumb {
  position: relative;
  display: block;
  width: 100%;
  padding: 0;
  margin: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  outline: none;
}

.hero-video-thumb:focus-visible {
  outline: 2px solid var(--amethyst, #A78BFA);
  outline-offset: 4px;
}

/* Thumbnail image ‚Äî cover, brightness boost on hover */
.hero-video-thumb-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: brightness(0.85) saturate(1.05);
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              filter 0.32s cubic-bezier(0.16, 1, 0.3, 1);
}

.hero-video-thumb:hover .hero-video-thumb-img {
  transform: scale(1.04);
  filter: brightness(0.95) saturate(1.15);
}

/* Subtle dark overlay so play button always pops */
.hero-video-thumb::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(
    ellipse at center,
    rgba(8, 4, 26, 0.1) 0%,
    rgba(8, 4, 26, 0.4) 100%
  );
  z-index: 1;
  pointer-events: none;
  transition: opacity 0.32s cubic-bezier(0.16, 1, 0.3, 1);
}

.hero-video-thumb:hover::before {
  opacity: 0.7;
}

/* Play button overlay ‚Äî centered, yellow gradient, halo glow */
.hero-video-play {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 88px;
  height: 88px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--yellow-cta, #FACA33) 0%, #F4A621 100%);
  color: var(--bg-deepest, #08041A);
  transform: translate(-50%, -50%);
  z-index: 2;
  box-shadow:
    0 10px 32px rgba(250, 202, 51, 0.4),
    0 0 0 8px rgba(250, 202, 51, 0.15),
    0 0 0 16px rgba(250, 202, 51, 0.06);
  transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.32s cubic-bezier(0.16, 1, 0.3, 1);
}

.hero-video-play svg {
  width: 36px;
  height: 36px;
  margin-left: 4px; /* visual nudge ‚Äî play triangle's center of mass is left of geometric center */
}

.hero-video-thumb:hover .hero-video-play {
  transform: translate(-50%, -50%) scale(1.08);
  box-shadow:
    0 14px 40px rgba(250, 202, 51, 0.55),
    0 0 0 10px rgba(250, 202, 51, 0.2),
    0 0 0 20px rgba(250, 202, 51, 0.08);
}

.hero-video-thumb:active .hero-video-play {
  transform: translate(-50%, -50%) scale(0.96);
}

/* Playing state ‚Äî iframe replaces thumb */
.hero-video.is-playing .hero-video-thumb {
  display: none;
}

.hero-video iframe {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: none;
}

/* Mobile (<640px) ‚Äî smaller play button + tighter spacing */
@media (max-width: 640px) {
  .hero-video {
    margin-top: var(--space-6, 2rem);
    border-radius: 16px;
  }

  .hero-video-play {
    width: 64px;
    height: 64px;
    box-shadow:
      0 8px 24px rgba(250, 202, 51, 0.4),
      0 0 0 6px rgba(250, 202, 51, 0.15),
      0 0 0 12px rgba(250, 202, 51, 0.06);
  }

  .hero-video-play svg {
    width: 26px;
    height: 26px;
  }
}

/* WCAG reduced motion safety */
@media (prefers-reduced-motion: reduce) {
  .hero-video,
  .hero-video-thumb-img,
  .hero-video-thumb::before,
  .hero-video-play {
    transition: none;
  }

  .hero-video:not(.is-playing):hover,
  .hero-video-thumb:hover .hero-video-thumb-img,
  .hero-video-thumb:hover .hero-video-play {
    transform: none;
  }
}

/* ============================================
   PHASE 3 - Commit 3: Press Wall pattern
   16 outlet logos, 4√ó4 grayscale grid ‚Üí hover saturate (Stripe.com style)
   ============================================ */

/* Container ‚Äî 4-col grid with hairline dividers via 1px gap trick */
.press-wall {
  list-style: none;
  padding: 0;
  margin: var(--space-6, 2rem) auto 0;
  max-width: 1120px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: rgba(167, 139, 250, 0.12); /* amethyst hairline shows through gap */
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid rgba(167, 139, 250, 0.18);
}

/* Each cell ‚Äî dark glass background, breathing room around logo */
.press-wall-item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-5, 1.5rem) var(--space-4, 1rem);
  background: rgba(8, 4, 26, 0.6);
  min-height: 96px;
  transition: background 0.32s cubic-bezier(0.16, 1, 0.3, 1);
}

.press-wall-item:hover {
  background: rgba(109, 40, 217, 0.12); /* subtle purple tint on cell hover */
}

/* Link wraps logo, full-cell coverage */
.press-wall-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  text-decoration: none;
  outline: none;
}

.press-wall-link:focus-visible {
  outline: 2px solid var(--amethyst, #A78BFA);
  outline-offset: -2px;
  border-radius: 4px;
}

/* Logo image ‚Äî grayscale + dim by default */
.press-wall-img {
  display: block;
  max-width: 100%;
  max-height: 48px;
  width: auto;
  height: auto;
  object-fit: contain;
  filter: grayscale(1) brightness(0.85) contrast(1.1);
  opacity: 0.65;
  transition: filter 0.32s cubic-bezier(0.16, 1, 0.3, 1),
              opacity 0.32s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.32s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Hover/focus state ‚Äî full color, full opacity, subtle scale lift */
.press-wall-link:hover .press-wall-img,
.press-wall-link:focus-visible .press-wall-img {
  filter: grayscale(0) brightness(1) contrast(1);
  opacity: 1;
  transform: scale(1.05);
}

/* Tablet (‚â§1024px) ‚Äî 3 columns */
@media (max-width: 1024px) {
  .press-wall {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* Mobile (‚â§768px) ‚Äî 2 columns + smaller logos */
@media (max-width: 768px) {
  .press-wall {
    grid-template-columns: repeat(2, 1fr);
    max-width: 480px;
  }

  .press-wall-item {
    min-height: 80px;
    padding: var(--space-4, 1rem) var(--space-3, 0.75rem);
  }

  .press-wall-img {
    max-height: 40px;
  }
}

/* Reduced motion safety */
@media (prefers-reduced-motion: reduce) {
  .press-wall-item,
  .press-wall-img {
    transition: none;
  }

  .press-wall-link:hover .press-wall-img {
    transform: none;
  }
}

/* ============================================
   PHASE 3 - Commit 4: Audience Pills pattern
   4 audience indicators (Creators / Agencies / Businesses / Resellers)
   Horizontal glass pills with amethyst icon badge + caps label
   ============================================ */

/* Container ‚Äî horizontal row, centered, wraps on mobile */
.audience-pills {
  list-style: none;
  padding: 0;
  margin: 0 auto var(--space-6, 2rem);
  max-width: 720px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
}

/* Each pill ‚Äî glass tile, pill-shape, icon + label inline */
.audience-pill {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px 10px 14px;
  border-radius: 9999px;
  background: rgba(167, 139, 250, 0.08);
  border: 1px solid rgba(167, 139, 250, 0.2);
  transition: background 0.32s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.32s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.32s cubic-bezier(0.16, 1, 0.3, 1);
}

.audience-pill:hover {
  background: rgba(167, 139, 250, 0.15);
  border-color: rgba(167, 139, 250, 0.4);
  transform: translateY(-1px);
}

/* Icon container ‚Äî circular badge sa subtle purple‚Üíamethyst gradient */
.audience-pill-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: linear-gradient(135deg, rgba(109, 40, 217, 0.3), rgba(167, 139, 250, 0.2));
  color: var(--amethyst, #A78BFA);
  flex-shrink: 0;
}

.audience-pill-icon svg {
  width: 16px;
  height: 16px;
  display: block;
}

/* Label ‚Äî caps, tight letter-spacing, white/.92 */
.audience-pill-label {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.92);
  white-space: nowrap;
}

/* Mobile (‚â§640px) ‚Äî slightly more compact */
@media (max-width: 640px) {
  .audience-pills {
    gap: 8px;
  }

  .audience-pill {
    padding: 8px 14px 8px 10px;
    gap: 8px;
  }

  .audience-pill-icon {
    width: 24px;
    height: 24px;
  }

  .audience-pill-icon svg {
    width: 14px;
    height: 14px;
  }

  .audience-pill-label {
    font-size: 12px;
  }
}

/* Reduced motion safety */
@media (prefers-reduced-motion: reduce) {
  .audience-pill {
    transition: none;
  }

  .audience-pill:hover {
    transform: none;
  }
}

/* ============================================
   PHASE 3 - Commit 5: Differentiation pass (B1 + B2 + B3)
   Scoped overrides via :has() and [data-variant] ‚Äî Phase 2 untouched
   ============================================ */

/* ---- B1: 8-tile platform grid centering (scoped via :has) ---- */
.platform-grid:has(> .platform-tile:nth-child(8)) {
  grid-template-columns: repeat(4, 1fr);
}

@media (max-width: 1024px) {
  .platform-grid:has(> .platform-tile:nth-child(8)) {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ---- B2: Speed section differentiation ---- */
/* Section context for radial glow positioning */
.newpage-body[data-variant="speed"] {
  position: relative;
  isolation: isolate;
}

/* Radial amethyst-to-purple glow behind content */
.newpage-body[data-variant="speed"]::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(960px, 92%);
  height: 78%;
  transform: translate(-50%, -50%);
  background: radial-gradient(
    ellipse at center,
    rgba(167, 139, 250, 0.10) 0%,
    rgba(109, 40, 217, 0.05) 35%,
    transparent 70%
  );
  z-index: -1;
  pointer-events: none;
}

/* Yellow accent on eyebrow text (vs default purple/amethyst) */
.newpage-body[data-variant="speed"] .text-eyebrow {
  color: var(--yellow-cta, #FACA33);
}

/* Yellow accent on eyebrow line */
.newpage-body[data-variant="speed"] .section-eyebrow-line {
  background: linear-gradient(90deg, transparent, var(--yellow-cta, #FACA33), transparent);
  opacity: 0.6;
}

/* Lead paragraph emphasis ‚Äî first paragraph slightly bigger + brighter */
.newpage-body[data-variant="speed"] .prose-block > p:first-of-type {
  font-size: 18px;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.92);
}

/* ---- B3: Building Trust amethyst palette shift ---- */
/* Icon background: deeper purple ‚Üí soft lavender (vs default purple-dominant) */
.bts-grid[data-variant="trust"] .bts-icon {
  background: linear-gradient(135deg, var(--purple-primary, #6D28D9) 0%, var(--purple-light, #C4B5FD) 100%);
}

/* H3/title color: amethyst (vs default purple-primary) */
.bts-grid[data-variant="trust"] .bts-title {
  color: var(--amethyst, #A78BFA);
}

/* Accent stripe: amethyst-only (no yellow), softer fade */
.bts-grid[data-variant="trust"] .bts-item::before {
  background: linear-gradient(180deg, rgba(167, 139, 250, 0.7), rgba(196, 181, 253, 0.2));
}

/* ============================================
   PHASE 3 - Commit 6: Bold differentiation v2 + polish
   B3 layout inversion (asymmetric featured) + B2 numbered grid + CTA fallback
   ============================================ */

/* ============================================
   B3 v2: Trust asymmetric featured grid (1+2 layout)
   ============================================ */

.bts-grid[data-variant="trust"] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-areas:
    "featured featured"
    "secondary tertiary";
  gap: 20px;
}

/* Featured card (1st item ‚Äî Quality Guarantee) ‚Äî hero treatment */
.bts-grid[data-variant="trust"] .bts-item:nth-child(1) {
  grid-area: featured;
  padding: 36px 32px;
  position: relative;
}

/* Soft amethyst elevation glow behind featured card */
.bts-grid[data-variant="trust"] .bts-item:nth-child(1)::after {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  background: linear-gradient(
    135deg,
    rgba(167, 139, 250, 0.18),
    rgba(196, 181, 253, 0.06)
  );
  z-index: -1;
  opacity: 0.7;
  pointer-events: none;
}

/* Featured card icon scaled up */
.bts-grid[data-variant="trust"] .bts-item:nth-child(1) .bts-icon {
  width: 64px;
  height: 64px;
}

.bts-grid[data-variant="trust"] .bts-item:nth-child(1) .bts-icon svg {
  width: 30px;
  height: 30px;
}

/* Featured card title scaled up */
.bts-grid[data-variant="trust"] .bts-item:nth-child(1) .bts-title {
  font-size: 22px;
}

/* Secondary cards */
.bts-grid[data-variant="trust"] .bts-item:nth-child(2) {
  grid-area: secondary;
}

.bts-grid[data-variant="trust"] .bts-item:nth-child(3) {
  grid-area: tertiary;
}

/* B3 specificity-boosted palette overrides (in case Commit 5 lost cascade battle) */
.bts-grid[data-variant="trust"] .bts-item .bts-icon {
  background: linear-gradient(135deg, #6D28D9 0%, #C4B5FD 100%);
}

.bts-grid[data-variant="trust"] .bts-item .bts-title {
  color: #A78BFA;
}

/* Mobile fallback ‚Äî stack all 3 cards in single column */
@media (max-width: 768px) {
  .bts-grid[data-variant="trust"] {
    grid-template-columns: 1fr;
    grid-template-areas:
      "featured"
      "secondary"
      "tertiary";
  }

  .bts-grid[data-variant="trust"] .bts-item:nth-child(1) {
    padding: 24px;
  }

  .bts-grid[data-variant="trust"] .bts-item:nth-child(1) .bts-icon {
    width: 48px;
    height: 48px;
  }

  .bts-grid[data-variant="trust"] .bts-item:nth-child(1) .bts-icon svg {
    width: 24px;
    height: 24px;
  }

  .bts-grid[data-variant="trust"] .bts-item:nth-child(1) .bts-title {
    font-size: 18px;
  }
}

/* ============================================
   B2 v2: Speed numbered 3-column grid (CSS counters)
   ============================================ */

.newpage-body[data-variant="speed"] .prose-block {
  counter-reset: speed-step;
  max-width: 960px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
  text-align: left;
  margin-left: auto;
  margin-right: auto;
}

/* Each paragraph becomes a numbered column ‚Äî selector explicit covers :first-of-type
   to override Commit 5 lead-bump cascade */
.newpage-body[data-variant="speed"] .prose-block > p,
.newpage-body[data-variant="speed"] .prose-block > p:first-of-type {
  counter-increment: speed-step;
  position: relative;
  padding-top: 64px;
  font-size: 15px;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.78);
  margin: 0;
}

/* Large yellow gradient numeral 01/02/03 anchor */
.newpage-body[data-variant="speed"] .prose-block > p::before {
  content: counter(speed-step, decimal-leading-zero);
  position: absolute;
  top: 0;
  left: 0;
  font-size: 44px;
  font-weight: 700;
  line-height: 1;
  background: linear-gradient(135deg, #FACA33, #F4A621);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

/* Mobile ‚Äî collapse to single column */
@media (max-width: 768px) {
  .newpage-body[data-variant="speed"] .prose-block {
    grid-template-columns: 1fr;
    gap: 28px;
    max-width: 600px;
  }

  .newpage-body[data-variant="speed"] .prose-block > p,
  .newpage-body[data-variant="speed"] .prose-block > p:first-of-type {
    padding-top: 56px;
  }

  .newpage-body[data-variant="speed"] .prose-block > p::before {
    font-size: 38px;
  }
}

/* ============================================
   Polish: CTA H2 gradient text fallback color
   Prevents invisible heading on browsers without background-clip: text support
   ============================================ */

.still-questions .gradient-text {
  color: var(--purple-light, #C4B5FD);
}

@supports (-webkit-background-clip: text) or (background-clip: text) {
  .still-questions .gradient-text {
    color: transparent;
  }
}

/* ============================================
   PHASE 3 - Commit 8: Ship blockers + accessibility
   Audit-driven fixes (Claude Chrome diagnostic):
   - Gradient-text @supports-not fallback (CTA H2 + Speed numerals)
   - Trust H3/padding clean integer values (vs Phase 2 clamp artifacts)
   - Universal :focus-visible for inline links
   ============================================ */

/* Fix 1: Gradient-text fallback for browsers without background-clip:text support.
   Sets BOTH color AND -webkit-text-fill-color (latter overrides former in WebKit;
   Commit 6 attempt missed this and audit caught the regression). */
@supports not (-webkit-background-clip: text) {
  .still-questions .gradient-text {
    color: #C4B5FD;
    -webkit-text-fill-color: #C4B5FD;
    background: none;
  }

  .newpage-body[data-variant="speed"] .prose-block > p::before {
    color: #FACA33;
    -webkit-text-fill-color: #FACA33;
    background: none;
  }
}

/* Fix 2: Trust secondary H3s ‚Äî clean 18px (overrides Phase 2 clamp() resolving to 18.037px) */
.bts-grid[data-variant="trust"] .bts-item:nth-child(n+2) .bts-title {
  font-size: 18px;
}

/* Fix 3: Trust secondary card padding ‚Äî clean values
   (overrides Phase 2 clamp() shorthand resolving to 21.22/26.525px) */
.bts-grid[data-variant="trust"] .bts-item:nth-child(n+2) {
  padding: 24px 28px;
}

/* Fix 4: Universal :focus-visible for inline links.
   Phase 2 baseline scoped focus to .btn ‚Äî this catches bare <a> like support@boostero.com */
a:not(.btn):focus-visible {
  outline: 2px solid var(--amethyst, #A78BFA);
  outline-offset: 2px;
  border-radius: 2px;
}

/* ============================================
   PHASE 3 - Commit 8.1: Content + SEO polish
   - Speed‚ÜíFAQ‚ÜíCTA breathing rhythm
   ============================================ */

/* Extra breathing room on whichever .newpage-body is immediately before CTA
   (currently FAQ section after Commit 8.1 insertion).
   Apple/Linear pre-CTA convention ‚Äî "land" before conversion panel. */
.newpage-body:has(+ .newpage-cta) {
  padding-bottom: 88px;
}

@media (max-width: 768px) {
  .newpage-body:has(+ .newpage-cta) {
    padding-bottom: 64px;
  }
}

/* ============================================
   PHASE 3 - Commit 8.2: Motion + atmosphere polish
   Final pre-audit polish layer:
   - Hero play button idle breath (attention-pull on primary CTA)
   - Trust featured card enhanced hover (-4px + subtle scale)
   - Audience pill icon micro-scale on pill hover
   All wrapped in prefers-reduced-motion guards.
   ============================================ */

/* ‚Äî Hero play button: idle breath
   Subtle scale 1 ‚Üí 1.025 ‚Üí 1 over 3.2s, pauses on hover so the
   Commit 2 :hover scale(1.05) takes over cleanly without jumps. */
@keyframes hero-play-breath {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  50%      { transform: translate(-50%, -50%) scale(1.025); }
}

.hero-video:not(.is-playing) .hero-video-play {
  animation: hero-play-breath 3.2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

.hero-video:not(.is-playing) .hero-video-play:hover,
.hero-video:not(.is-playing) .hero-video-play:focus-visible {
  animation: none;
}

/* ‚Äî Trust featured card (Quality Guarantee = first .bts-item in trust grid):
   Enhanced hover lift. Doubles baseline -2px to -4px + micro-scale.
   NOTE: does not touch box-shadow ‚Äî baseline amethyst elevation glow
   from Commit 6 stays intact on hover. */
.bts-grid[data-variant="trust"] .bts-item:first-child {
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.bts-grid[data-variant="trust"] .bts-item:first-child:hover {
  transform: translateY(-4px) scale(1.005);
}

/* ‚Äî Audience pill icon: micro-scale on pill hover.
   Icon "responds" when user hovers the pill ‚Äî tactile feedback layer. */
.audience-pill .audience-pill-icon {
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.audience-pill:hover .audience-pill-icon {
  transform: scale(1.08);
}

/* ‚Äî Reduced motion: kill all 8.2 keyframe animations */
@media (prefers-reduced-motion: reduce) {
  .hero-video-play {
    animation: none !important;
  }
  .bts-grid[data-variant="trust"] .bts-item:first-child:hover {
    transform: none;
  }
  .audience-pill:hover .audience-pill-icon {
    transform: none;
  }
}

/* ============================================
   PHASE 3 - Commit 8.4: Mobile platform grid fix
   ============================================ */

/* Phase 2 unconditionally centers .platform-tile:nth-child(5) at mobile
   breakpoints (grid-column: 1/-1 + max-width: 60%). That was correct for
   Phase 2's original 5-tile grid (5th tile = centered alone in last row).
   With Phase 3's 8-tile expansion (added Spotify/LinkedIn/Telegram),
   X(Twitter) is now the 5th tile and gets stuck spanning the full row,
   breaking the 2-col mobile rhythm: ends up as 2-2-1-2-1 instead of
   the expected 2-2-2-2.
   Override only when total tiles = 8 (via :has() ‚Äî Phase 2's 5-tile
   case stays untouched). */
.platform-grid:has(> .platform-tile:nth-child(8)) > .platform-tile:nth-child(5) {
  grid-column: auto;
  max-width: none;
  margin-inline: 0;
}

/* ============================================
   PHASE 3 - Commit 9: Premium polish pass
   ============================================ */

/* 1. Sub-pixel cleanup ‚Äî round Phase 2 clamp() artifacts to whole pixels.
   Audit found: .bts-title 18.037px, .bts-grid gap 15.915px, .bts-item
   padding 21.22/26.525/31.83. Whole-pixel values rasterize cleaner.
   Trust featured (first child of [data-variant="trust"]) keeps its
   Commit 6 22px H3 and larger padding via specificity. */
.bts-grid {
  gap: 16px;
}
.bts-grid:not([data-variant="trust"]) .bts-item,
.bts-grid[data-variant="trust"] .bts-item:not(:first-child) {
  padding: 24px 28px 32px;
}
.bts-grid:not([data-variant="trust"]) .bts-title,
.bts-grid[data-variant="trust"] .bts-item:not(:first-child) .bts-title {
  font-size: 18px;
  line-height: 1.4;
}

/* 2. Mobile CTA truncation fix ‚Äî primary button was clipping
   "Create your free accou‚Ä¶" on 430px. Constrain width + center. */
@media (max-width: 480px) {
  .newpage-cta .btn-yellow,
  .newpage-cta .btn-secondary,
  .newpage-cta .btn-primary,
  .still-questions .btn-primary {
    width: 100%;
    max-width: 320px;
    justify-content: center;
  }
}

/* 3. FAQ caret rotation ‚Äî Phase 2 details had transition: all ‚Üí 0s
   (instant snap). Add smooth caret rotation on open. */
.faq-caret {
  transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1);
}
details[open] > summary .faq-caret,
.faq-item[open] > summary .faq-caret {
  transform: rotate(180deg);
}

@media (prefers-reduced-motion: reduce) {
  .faq-caret {
    transition: none;
  }
}

/* 4. Speed numerals ‚Äî demote from full yellow #FACA33 to 0.7 opacity
   so the final CTA + Sign-up + play disc remain the rarest yellow
   moments on the page. Yellow rarity = premium signal. */
[data-variant="speed"] .prose-block > p::before {
  opacity: 0.7;
}

/* ============================================
   PHASE 4 - Commit 1: Resellers page patterns
   - Hero pill eyebrow + sizing
   - bts-grid 2√ó2 variant for 4 feature cards
   - .step-grid + CSS counter for 01/02/03/04 numerals
   - data-variant="steps" subtle yellow ambient + eyebrow
   - .trust-grid horizontal cards (icon left + body right)
   - Final CTA polish (get-started block, button row)
   ============================================ */

/* ‚Äî Hero polish ‚Äî */
.hero-eyebrow {
  display: inline-block;
  padding: 6px 16px;
  border: 1px solid rgba(167, 139, 250, 0.25);
  border-radius: 9999px;
  background: rgba(167, 139, 250, 0.06);
}
.reseller-h1 {
  text-align: center;
  margin-top: var(--space-5, 24px);
}
.reseller-subhead {
  text-align: center;
  margin-top: var(--space-4, 16px);
  max-width: 880px;
  margin-inline: auto;
}
.reseller-hero-leads {
  max-width: 880px;
  margin-inline: auto;
  margin-top: var(--space-5, 24px);
}
.reseller-hero-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
  margin-top: var(--space-6, 32px);
}

/* ‚Äî Section 2: Feature cards 2√ó2 (4 items) ‚Äî */
.bts-grid[data-variant="reseller-features"] {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}
@media (max-width: 768px) {
  .bts-grid[data-variant="reseller-features"] {
    grid-template-columns: 1fr;
  }
}

/* ‚Äî Section 3: How It Works steps ‚Äî */
.step-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  counter-reset: step-num;
  margin-top: var(--space-6, 32px);
}
.step {
  counter-increment: step-num;
  position: relative;
  padding: 32px 24px;
  border-radius: 16px;
  border: 1px solid rgba(167, 139, 250, 0.14);
  background: linear-gradient(180deg, rgba(167, 139, 250, 0.04) 0%, rgba(167, 139, 250, 0.01) 100%);
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.step:hover {
  transform: translateY(-2px);
  border-color: rgba(167, 139, 250, 0.24);
}
.step::before {
  content: counter(step-num, decimal-leading-zero);
  display: block;
  font-size: 44px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.02em;
  background: linear-gradient(135deg, #C4B5FD 0%, #A78BFA 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  margin-bottom: 16px;
  opacity: 0.85;
}
@supports not (-webkit-background-clip: text) {
  .step::before {
    color: #C4B5FD;
    -webkit-text-fill-color: #C4B5FD;
  }
}
.step-title {
  font-size: 18px;
  line-height: 1.4;
  font-weight: 600;
  margin: 0 0 12px;
  color: #C4B5FD;
}
.step p {
  font-size: 15px;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.72);
  margin: 0;
}
.step p a {
  color: #C4B5FD;
  text-decoration: underline;
  text-underline-offset: 2px;
}
@media (max-width: 1024px) {
  .step-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 640px) {
  .step-grid {
    grid-template-columns: 1fr;
  }
}

/* data-variant="steps" ‚Äî subtle yellow ambient + yellow eyebrow
   (mirrors Phase 3 data-variant="speed" treatment) */
.newpage-body[data-variant="steps"] {
  position: relative;
  overflow: hidden;
}
.newpage-body[data-variant="steps"] .section-eyebrow-wrapper .text-eyebrow {
  color: #FACA33;
}
.newpage-body[data-variant="steps"]::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(ellipse 60% 50% at 50% 0%,
              rgba(250, 202, 51, 0.05) 0%, transparent 70%);
  z-index: 0;
}
.newpage-body[data-variant="steps"] > .container {
  position: relative;
  z-index: 1;
}

/* ‚Äî Section 4: Trust grid horizontal cards ‚Äî */
.trust-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  margin-top: var(--space-6, 32px);
}
.trust-card {
  display: flex;
  gap: 20px;
  align-items: flex-start;
  padding: 28px 28px 28px 24px;
  border-radius: 16px;
  border: 1px solid rgba(167, 139, 250, 0.14);
  background: linear-gradient(180deg, rgba(167, 139, 250, 0.04) 0%, rgba(167, 139, 250, 0.01) 100%);
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.trust-card:hover {
  transform: translateY(-2px);
  border-color: rgba(167, 139, 250, 0.26);
}
.trust-card-icon {
  flex-shrink: 0;
  width: 56px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: linear-gradient(135deg,
              rgba(109, 40, 217, 0.18) 0%,
              rgba(167, 139, 250, 0.10) 100%);
  color: #C4B5FD;
}
.trust-card-body {
  flex: 1;
  min-width: 0;
}
.trust-card-title {
  font-size: 18px;
  line-height: 1.4;
  font-weight: 600;
  color: #C4B5FD;
  margin: 0 0 10px;
}
.trust-card-body p {
  font-size: 15px;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.74);
  margin: 0;
}
@media (max-width: 768px) {
  .trust-grid {
    grid-template-columns: 1fr;
  }
  .trust-card {
    padding: 24px 20px;
    gap: 16px;
  }
  .trust-card-icon {
    width: 48px;
    height: 48px;
  }
}

/* Why-choose lead constraint */
.reseller-why-lead {
  max-width: 720px;
  margin-inline: auto;
}

/* ‚Äî Section 5: Final CTA polish ‚Äî */
.reseller-cta-h2 {
  margin-bottom: var(--space-4, 16px);
  max-width: 720px;
  margin-inline: auto;
}
.reseller-cta-leads {
  max-width: 720px;
  margin-inline: auto;
  margin-top: var(--space-4, 16px);
}
.get-started-block {
  margin-top: var(--space-6, 32px);
  padding-top: var(--space-6, 32px);
  border-top: 1px solid rgba(167, 139, 250, 0.10);
}
.get-started-eyebrow {
  display: inline-block;
  margin-bottom: 12px;
  color: #FACA33;
}
.reseller-cta-closing {
  max-width: 720px;
  margin-inline: auto;
  margin-top: 0;
}
.reseller-cta-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
  margin-top: var(--space-6, 32px);
}
.reseller-cta-buttons .btn svg {
  margin-right: 8px;
  vertical-align: middle;
}

/* Mobile width constraint for hero + final CTA buttons (Phase 3 Commit 9 pattern) */
@media (max-width: 480px) {
  .reseller-hero-cta .btn,
  .reseller-cta-buttons .btn {
    width: 100%;
    max-width: 320px;
    justify-content: center;
  }
}

/* ============================================
   PHASE 4 - Commit 2: Section 2 bts-item paragraph fix
   ============================================ */

/* Phase 2 baseline .bts-item is display: grid with auto-flow that
   places direct children in implicit columns. With 3 direct children
   (icon + h3 + p), the body <p> falls into column 1 row 2 ‚Äî a narrow
   ~56px column matching the icon's width ‚Äî causing word-per-line
   vertical stacking.
   Fix: in our reseller-features variant, span the body paragraph
   across all grid columns + add vertical centering on icon+title row
   for clean header alignment. */
.bts-grid[data-variant="reseller-features"] .bts-item {
  align-items: center;
  row-gap: 16px;
}
.bts-grid[data-variant="reseller-features"] .bts-item > p {
  grid-column: 1 / -1;
  margin: 0;
}

/* ============================================
   PHASE 4 - Commit 3: Premium audit polish (12 fixes)
   Based on internal + external Claude Chrome audits.
   See commit message for itemized list.
   ============================================ */

/* Transition tokens ‚Äî single source of truth */
:root {
  --ease-premium: cubic-bezier(0.16, 1, 0.3, 1);
  --dur-hover: 240ms;
}

/* FIX 1 ‚Äî .bts-item asymmetric grid bug
   Phase 2 baseline .bts-item is display: grid; grid-template-columns: 56px 1fr.
   When cards in the same row stretch to tallest sibling AND Commit 2 had
   align-items: center, extra height distributed into rows, pushing card #0's
   icon+title down 13px (60.75px row vs 48px on cards 1-3) ‚Üí visible gap of
   40.15px vs 27.4px on neighbors.
   Fix: lock row 1 to 48px (icon height), let row 2 auto, push extra height
   to BOTTOM of card via align-content: start; vert-center title only. */
.bts-grid[data-variant="reseller-features"] .bts-item {
  align-items: start;
  align-content: start;
  grid-template-rows: 48px auto;
}
.bts-grid[data-variant="reseller-features"] .bts-item .bts-title {
  align-self: center;
}

/* FIX 2 ‚Äî Convert fixed-pixel grid tracks to fluid
   Phase 2 baseline had hardcoded 450px 450px columns causing 141px dead
   margin in 1061px container. Convert to fluid 1fr tracks with !important
   to override the baseline rule. */
.bts-grid[data-variant="reseller-features"] {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
}
.step-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
@media (max-width: 1024px) {
  .step-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .step-grid { grid-template-columns: minmax(0, 1fr); }
}

/* FIX 3 ‚Äî Universal :focus-visible rings (WCAG 2.4.7)
   External audit verified ZERO focus indicators across entire page.
   One rule covers links, buttons, interactive cards. */
:where(a, button, [role="button"], .bts-item, .step, .trust-card):focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 3px;
  border-radius: inherit;
}

/* FIX 4 ‚Äî prefers-reduced-motion guard (a11y)
   Page's reveal IntersectionObserver and card transitions ignored user's
   OS-level motion preference. Linear/Stripe both honor this. */
@media (prefers-reduced-motion: reduce) {
  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .bts-item, .step, .trust-card, .btn, .btn-yellow, .btn-secondary {
    transition: none !important;
  }
}

/* FIX 5 ‚Äî Transition harmonization
   Was: 3 competing durations (300/300/500ms) and 2 easings
   (premium + Material on .btn-yellow). Now: one token everywhere. */
.bts-item, .step, .trust-card, .btn, .btn-yellow, .btn-secondary {
  transition: transform var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium),
              box-shadow var(--dur-hover) var(--ease-premium),
              color var(--dur-hover) var(--ease-premium);
}
.newpage-hero a:not(.btn),
.newpage-body a:not(.btn),
.newpage-cta a:not(.btn) {
  transition: color 200ms var(--ease-premium),
              border-color 200ms var(--ease-premium);
}

/* FIX 6 ‚Äî Yellow rarity (12 ‚Üí ~5-6 uses)
   GLOBAL CHANGE: also affects Phase 3 About Us page.
   Demote: section-eyebrow-line (3 instances per page) + GET STARTED TODAY
   eyebrow ‚Üí amethyst. Yellow preserved on: 3 CTA buttons + H1 gradient end
   + Steps section eyebrow (intentional ambient). */
.section-eyebrow-line {
  background: #A78BFA;
}
.get-started-eyebrow {
  color: #C4B5FD;
}

/* FIX 7 ‚Äî Step card padding parity
   Was 32px 24px (asymmetric horizontal vs other cards' 28px). */
.step {
  padding: 32px 28px;
}

/* FIX 8 ‚Äî Step numeral breathing
   16px between 44px numeral and 18px title felt crowded. */
.step::before {
  margin-bottom: 20px;
}

/* FIX 9 ‚Äî Trust card padding harmonize
   Was 28/28/28/24 asymmetric. Normalize. */
.trust-card {
  padding: 28px;
}

/* FIX 10 ‚Äî Body opacity harmonization
   Was: feature 0.72, step 0.72, trust 0.74. Pick 0.74 across all. */
.bts-grid[data-variant="reseller-features"] .bts-item > p,
.step p,
.trust-card-body p {
  color: rgba(255, 255, 255, 0.74);
}

/* FIX 11 ‚Äî H1 mobile clamp
   Was hard 56px, clipping at narrow viewports. */
.reseller-h1 {
  font-size: clamp(40px, 4.5vw + 1rem, 56px);
  letter-spacing: clamp(-1.4px, -0.025em, -0.8px);
}

/* ============================================
   PHASE 4 - Commit 4 (hotfix): Focus rings
   Commit 3 used :where(a, button, ...):focus-visible which has
   specificity 0 (that's :where()'s feature, not a bug ‚Äî it strips
   inner specificity). Theme baseline a:focus { outline: none }
   beat it everywhere. Re-issue with direct selectors + !important
   to guarantee the WCAG 2.4.7 ring renders on every focusable.
   ============================================ */
a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
.btn:focus-visible,
.btn-yellow:focus-visible,
.btn-secondary:focus-visible,
.bts-item:focus-visible,
.step:focus-visible,
.trust-card:focus-visible,
[data-reveal] a:focus-visible {
  outline: 2px solid #A78BFA !important;
  outline-offset: 3px !important;
  border-radius: inherit;
}

/* ============================================
   PHASE 4 - Commit 5: Real-device mobile fixes + section flow polish
   Based on user testing on iPhone Safari (real device).
   Commit 3 desktop !important rules were beating media-query overrides.
   ============================================ */

/* FIX 1 ‚Äî Section 2 single-column on real mobile
   Commit 3 set .bts-grid[data-variant="reseller-features"] columns
   with !important on desktop. The @media (max-width: 768px) override
   lacked !important so it lost in cascade on real iPhone (390px).
   Restore single-column at <=768px with !important. */
@media (max-width: 768px) {
  .bts-grid[data-variant="reseller-features"] {
    grid-template-columns: 1fr !important;
  }
}

/* FIX 2+3 ‚Äî Hero CTA + Final CTA buttons center on mobile
   Theme baseline .btn has justify-content: flex-start (left-align).
   Previous mobile rule lacked !important; theme baseline won.
   Make buttons full-width with centered text on mobile. */
@media (max-width: 480px) {
  .reseller-hero-cta .btn,
  .reseller-cta-buttons .btn {
    width: 100% !important;
    max-width: 100% !important;
    justify-content: center !important;
    text-align: center !important;
  }
  .reseller-hero-cta,
  .reseller-cta-buttons {
    align-items: stretch;
  }
}

/* FIX 4 ‚Äî Soften visible section break between Section 2 (features)
   and Section 3 (steps).
   Approach: extend Steps section's yellow ambient gradient UPWARD past
   the section boundary (~160px) so it bleeds into the void from below
   the features section. Combined with tighter padding-top on steps and
   padding-bottom on the preceding section (via :has()) the transition
   reads as a smooth gradient bridge instead of a hard cut. */
.newpage-body[data-variant="steps"]::before {
  inset: -160px 0 0 0;
  background: radial-gradient(ellipse 70% 65% at 50% 12%,
              rgba(250, 202, 51, 0.06) 0%,
              rgba(250, 202, 51, 0.02) 45%,
              transparent 80%);
}
.newpage-body[data-variant="steps"] {
  padding-top: 48px;
}
.newpage-body:has(+ .newpage-body[data-variant="steps"]) {
  padding-bottom: 48px;
}

/* ============================================
   PHASE 4 - Commit 6: Round 2 audit polish (13 fixes)
   External Claude Chrome second-pass audit. Includes critical mobile
   bug fix (trust-card overflow), signature moment (step connector
   line), and 11 micro-polish items across icon language, typography,
   spacing, motion, and a11y contrast.

   GLOBAL IMPACT: fixes 3, 6, 9, 10, 12 also affect Phase 3 About Us
   page (design-system level changes). All net improvements.
   ============================================ */

/* FIX 1 ‚Äî CRITICAL: Trust card mobile horizontal overflow
   At <560px viewports the .trust-card flex-direction: row with the
   56px icon-block + body content pushes document width past viewport
   (~22px horizontal scroll on real iPhone narrow widths). Stack to
   column with adjusted padding + smaller icon. */
@media (max-width: 560px) {
  .trust-card {
    flex-direction: column !important;
    gap: 12px !important;
    padding: 24px !important;
  }
  .trust-card-icon {
    width: 48px !important;
    height: 48px !important;
  }
}

/* FIX 2 ‚Äî Demote Steps section eyebrow from yellow to lavender
   Commit 3 missed this exact selector. The [data-variant=steps]
   .text-eyebrow rule from Commit 1 still painted #FACA33. The ambient
   ::before glow remains yellow (signature moment); only the text
   label demotes. Yellow count drops 8 ‚Üí 7. */
.newpage-body[data-variant="steps"] .section-eyebrow-wrapper .text-eyebrow {
  color: #C4B5FD;
}

/* FIX 3 ‚Äî Icon-chip language unification (GLOBAL ‚Äî also affects About Us)
   .bts-icon was opaque saturated badge (gradient #7C3AED ‚Üí #A78BFA,
   white icon, no border) while .trust-card-icon was translucent tinted
   chip. Two vocabularies in same design system. Align .bts-icon on the
   trust translucent treatment ‚Äî more sophisticated and on-palette (the
   #7C3AED was off-token; documented palette is #6D28D9/#A78BFA/#C4B5FD). */
.bts-icon {
  background: linear-gradient(135deg,
              rgba(109, 40, 217, 0.18) 0%,
              rgba(167, 139, 250, 0.10) 100%) !important;
  border: 1px solid rgba(167, 139, 250, 0.18);
  color: #C4B5FD;
}
.bts-icon svg {
  stroke: currentColor;
}

/* FIX 4 ‚Äî Step-card connector line (signature moment)
   1px translucent amethyst line behind the step grid passing through
   the numeral's vertical center (32px card padding + 22px numeral half
   = 54px from step-grid top). Visible only in the 24px gaps between
   cards because .step has z-index: 1 above the line. This is the
   Linear/Vercel-tier 4-step sequence visualization. Hidden at <1024px
   where step cards stack vertically (no horizontal connector logic). */
.step-grid {
  position: relative;
}
.step-grid::after {
  content: "";
  position: absolute;
  top: 54px;
  left: 28px;
  right: 28px;
  height: 1px;
  background: linear-gradient(90deg,
              transparent 0%,
              rgba(167, 139, 250, 0.22) 12%,
              rgba(167, 139, 250, 0.22) 88%,
              transparent 100%);
  z-index: 0;
  pointer-events: none;
}
.step {
  position: relative;
  z-index: 1;
}
@media (max-width: 1024px) {
  .step-grid::after { display: none; }
}

/* FIX 5 ‚Äî Inline link affordance (Stripe pattern)
   Currently only color (#A78BFA) distinguishes links. Add 1px
   translucent amethyst border-bottom that thickens + color-lifts to
   #C4B5FD on hover. Adds the page's only currently-unused
   micro-interaction vocabulary. Also unifies link transition to the
   240ms premium token. */
.newpage-hero p a,
.newpage-body p a,
.newpage-cta p a {
  border-bottom: 1px solid rgba(167, 139, 250, 0.35);
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.newpage-hero p a:hover,
.newpage-body p a:hover,
.newpage-cta p a:hover {
  color: #C4B5FD;
  border-bottom-color: rgba(167, 139, 250, 0.85);
}

/* FIX 6 ‚Äî Card title weight harmonization (GLOBAL)
   .bts-title was 700 (Bootstrap-y at 18px) while .step-title and
   .trust-card-title were 600. Unify on 600 ‚Äî lighter, more refined,
   matches the lavender token weight. */
.bts-title {
  font-weight: 600;
}

/* FIX 7 ‚Äî Hero eyebrow explicit transition (was 'all' resolving to no-op)
   Reading border-color shift on focus required actual property
   listing, not the 'all' shorthand which doesn't transition border
   property changes reliably. */
.hero-eyebrow {
  transition: border-color var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium),
              color var(--dur-hover) var(--ease-premium);
}

/* FIX 8 ‚Äî Trust section padding-bottom normalize
   Was 88px outlier vs other section padding-bottoms at 48-56px.
   Tightens to 56 for cross-section rhythm. */
.newpage-body:has(.trust-grid) {
  padding-bottom: 56px;
}

/* FIX 9 ‚Äî Section eyebrow line visibility (GLOBAL)
   After Commit 3 demoted to amethyst, 2px lavender hairline above a
   lavender pill became sub-perceptual. Bump height to 3px to restore
   visual cue without changing color (preserves yellow rarity). */
.section-eyebrow-line {
  height: 3px;
}

/* FIX 10 ‚Äî Card border alpha unification (GLOBAL)
   .bts-item border was at rgba(167,139,250,0.12); .step and
   .trust-card at 0.14. Unify all cards on 0.14 (more visible of the
   three) for consistency. */
.bts-item {
  border-color: rgba(167, 139, 250, 0.14);
}

/* FIX 11 ‚Äî Step numeral margin-bottom 20 ‚Üí 24px
   Gradient-clipped 44px numeral creates a phantom visual descender
   that makes 20px feel tight against the 18px title underneath.
   24px restores proper visual rhythm. */
.step::before {
  margin-bottom: 24px;
}

/* FIX 12 ‚Äî Secondary button silhouette (GLOBAL)
   .btn-secondary background at rgba(255,255,255,0.08) was nearly
   invisible against dark canvas. Bump to 0.10 + add matching
   translucent 1px border so the silhouette reads clearly. */
.btn-secondary {
  background-color: rgba(255, 255, 255, 0.10);
  border: 1px solid rgba(255, 255, 255, 0.10);
}

/* FIX 13 ‚Äî Yellow CTA focus ring contrast
   Amethyst (#A78BFA) outline on yellow (#FACA33) = 2.6:1, passes WCAG
   3:1 non-text minimum but weak. Switch to dark plum (#150B3D, the
   btn-yellow text color) for ~14:1 contrast on yellow surfaces. */
.btn-yellow:focus-visible {
  outline-color: #150B3D !important;
}

/* ============================================
   PHASE 4 - Commit 7: Connector line removal + stronger section bridge
   ============================================ */

/* FIX 1 ‚Äî Remove step-grid connector line
   Plan was: line at z-index 0, cards at z-index 1 ‚Üí line visible only
   in 24px gaps between cards. Reality: step cards have translucent
   background (rgba 0.04 ‚Üí 0.01) so the line shows THROUGH the cards too,
   making it look like a continuous line across the page (bug-like).
   Cleanest fix: remove. The 01/02/03/04 lavender numerals + sequential
   horizontal card layout already communicate "ordered steps" without
   needing a connector. */
.step-grid::after {
  display: none;
}

/* FIX 2 ‚Äî Section 2 ‚Üí Section 3 bridge: actually bridge it
   Commit 5 set ambient at rgba(250,202,51,0.06) center fading to 0.02.
   That was too subtle to visibly close the gap on a #08041A canvas.
   Bump opacity meaningfully (0.10 center) + introduce a lavender
   secondary tone at the gradient mid-stop (0.04 lavender) so the
   bridge feels intentional + on-brand. Tighter padding (48 ‚Üí 24) on
   both sides of the transition closes the physical void too. */
.newpage-body[data-variant="steps"]::before {
  inset: -200px 0 0 0;
  background: radial-gradient(ellipse 85% 70% at 50% 18%,
              rgba(250, 202, 51, 0.10) 0%,
              rgba(167, 139, 250, 0.04) 35%,
              transparent 80%);
}
.newpage-body[data-variant="steps"] {
  padding-top: 24px;
}
.newpage-body:has(+ .newpage-body[data-variant="steps"]) {
  padding-bottom: 24px;
}

/* ============================================
   PHASE 4 - Commit 8: Unlock Steps ambient bleed-up
   ============================================ */

/* ROOT CAUSE ‚Äî Commit 1 set overflow: hidden on the Steps section to
   contain the radial gradient. Commits 5+7 added negative inset
   (-160px, -200px) to bleed the ambient UPWARD into Section 2 ‚Äî but
   overflow: hidden was CLIPPING the bleed-up at section boundary. The
   ambient never escaped, so no matter how strong the gradient, the
   bridge couldn't visually reach Section 2.

   Fix: overflow: visible. The ambient ::before with bottom: 0 and
   left/right: 0 can't escape sideways or downward (inset constrains
   it), only top: -240px lets it bleed UP into Section 2. Combined
   with the strengthened gradient from Commit 7, the warm/lavender
   ambient now colonizes the bottom of Section 2 ‚Äî sections visually
   merge into one continuous canvas. */
.newpage-body[data-variant="steps"] {
  overflow: visible;
}

/* Slightly stronger bleed since it finally reaches Section 2 */
.newpage-body[data-variant="steps"]::before {
  inset: -240px 0 0 0;
  background: radial-gradient(ellipse 90% 75% at 50% 22%,
              rgba(250, 202, 51, 0.12) 0%,
              rgba(167, 139, 250, 0.05) 35%,
              rgba(109, 40, 217, 0.02) 60%,
              transparent 85%);
}

/* ============================================
   PHASE 4 - Commit 9: Close padding void entirely
   (revert Commit 8 overflow leak)
   ============================================ */

/* User feedback after Commit 8: section breaks now visible at MULTIPLE
   places, not just at the Section 2 ‚Üí 3 joint. Root cause: overflow:
   visible let the ambient gradient bleed too far up creating a wide
   warm zone that highlighted Section 2's top edge too. Net effect:
   MORE visible boundaries, not fewer.

   New strategy: stop trying to "bridge" with ambient. Just close the
   physical padding void to ZERO between the two sections so they
   touch directly with no empty band. The eyebrow gets its own
   breathing via internal container padding. */

/* Revert Commit 8 overflow change ‚Äî restore containment */
.newpage-body[data-variant="steps"] {
  overflow: hidden;
}

/* Close the void entirely on both sides of the transition */
.newpage-body[data-variant="steps"] {
  padding-top: 0;
}
.newpage-body:has(+ .newpage-body[data-variant="steps"]) {
  padding-bottom: 0;
}

/* Reset Section 3 ambient: contained inside section, peaked at its
   TOP edge (50% 0%) so the warm halo appears right at the joint with
   Section 2 ‚Äî it bridges visually within Section 3's own boundary. */
.newpage-body[data-variant="steps"]::before {
  inset: 0;
  background: radial-gradient(ellipse 80% 70% at 50% 0%,
              rgba(250, 202, 51, 0.10) 0%,
              rgba(167, 139, 250, 0.04) 35%,
              transparent 75%);
}

/* Eyebrow gets explicit breathing room since section padding-top is 0 */
.newpage-body[data-variant="steps"] > .container {
  padding-top: 80px;
}

/* ============================================
   PHASE 4 - Commit 10: Real fix for Section 2 ‚Üí 3 joint
   Diagnosed via Chrome DOM inspection.
   ============================================ */

/* Root cause: Features grid bottom (1503px) extends 24px BELOW its
   parent section's bottom (1479px). The .bts-grid overflows the
   container/section box. Commits 5-9 tried to bridge with ambient
   gradient + padding tricks; none addressed the actual protrusion.

   Commit 10 fixes the cause + removes the visual section marker. */

/* FIX A ‚Äî Clip features section so grid can't protrude past boundary */
.newpage-body:has(+ .newpage-body[data-variant="steps"]) {
  overflow: hidden;
}

/* FIX B ‚Äî Hide the section-eyebrow-line on Steps section
   This 3px lavender hairline above "GETTING STARTED" is the strongest
   visual marker saying "new section starts here." With Section 2 and 3
   touching directly, the line creates the perceived "break" ‚Äî kill it
   on Steps specifically to soften the transition. The pill chip itself
   remains. */
.newpage-body[data-variant="steps"] .section-eyebrow-line {
  display: none;
}

/* FIX C ‚Äî Tighten Steps container padding-top now that card protrusion
   is clipped (no need for 80px buffer) */
.newpage-body[data-variant="steps"] > .container {
  padding-top: 48px;
}

/* FIX D ‚Äî Stronger ambient halo at the joint so the 48px breathing
   zone reads as INTENTIONAL warm canvas, not empty dark void */
.newpage-body[data-variant="steps"]::before {
  inset: 0;
  background: radial-gradient(ellipse 75% 60% at 50% 0%,
              rgba(250, 202, 51, 0.18) 0%,
              rgba(167, 139, 250, 0.06) 35%,
              transparent 70%);
}

/* ============================================
   PHASE 4 - Commit 11: Move Steps gradient anchor (MATH-DRIVEN ROOT FIX)

   External Claude Chrome did pixel-level diagnostic. Real root cause
   of the persistent section joint after 6 failed bridge attempts:

   Anchor at 50% 0% + overflow: hidden creates a 1-pixel ŒîE=24
   hue+luminance cliff at the seam. Yellow peak (alpha 0.18) renders
   rgb(51,40,31) at y=seam; body bg rgb(8,4,26) renders 1px above.
   ŒîE > 20 = jarring visible boundary. Raising opacity in Commits 5-10
   only made ŒîE worse, never moved the anchor.

   Fix: anchor gradient at 50% 40% so the peak sits BEHIND the h2 and
   step grid. At the seam, the gradient is now in its skirt zone
   (alpha ‚âà 0). ŒîE at seam drops to 0. Signature moment (warm halo)
   relocates to behind the step cards where it belongs ‚Äî not on the
   boundary it was trying to hide. Math verified:

     seam (y=1459):   d=0.729 > 0.65 stop ‚Üí Œ±=0     ‚Üí rgb(8,4,26)    ŒîE=0 ‚úÖ
     h2 (y=1565):     d=0.390              ‚Üí Œ±=0.06 lavender ‚Üí soft cool halo
     step grid (y=1639): d=0.154           ‚Üí Œ±=0.15 yellow‚Üílavender mix ‚Üí signature
   ============================================ */

.newpage-body[data-variant="steps"]::before {
  background: radial-gradient(80% 55% at 50% 40%,
              rgba(250, 202, 51, 0.22) 0%,
              rgba(167, 139, 250, 0.08) 30%,
              transparent 65%);
}

/* Belt-and-suspenders: kill the 1px lavender bottom border on the last
   row of feature cards. The card border at y=seam was a secondary
   reference line the eye uses to anchor "where's the boundary". With
   gradient ŒîE now at 0, removing this hairline closes the last cue. */
.bts-grid[data-variant="reseller-features"] > .bts-item:nth-last-child(-n+2) {
  border-bottom-color: transparent;
}

/* ============================================
   PHASE 5 - FAQ page specific tokens
   Reuses .faq-item accordion pattern from Phase 2/3 (details/summary
   with caret rotation). Adds page-specific layout: narrower container
   for readability, category grouping, hero center alignment.
   ============================================ */

.faq-h1 {
  text-align: center;
  max-width: 880px;
  margin-left: auto;
  margin-right: auto;
}

.faq-hero-lead {
  text-align: center;
  max-width: 640px;
  margin: 24px auto 0;
}

.faq-container {
  max-width: 880px;
}

.faq-category {
  margin-bottom: 64px;
}
.faq-category:last-child {
  margin-bottom: 0;
}

.faq-category-title {
  font-size: 24px;
  font-weight: 600;
  color: #C4B5FD;
  letter-spacing: -0.25px;
  margin: 0 0 24px 0;
  line-height: 1.3;
}

.faq-stack {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.faq-q {
  font-weight: 500;
  font-size: 16px;
  color: rgba(255, 255, 255, 0.92);
  letter-spacing: -0.1px;
  line-height: 1.5;
  flex: 1;
  padding-right: 16px;
}

.faq-a {
  padding: 0 24px 24px 24px;
  color: rgba(255, 255, 255, 0.74);
  line-height: 1.7;
  font-size: 15px;
}
.faq-a p {
  margin: 0 0 14px;
}
.faq-a p:last-child {
  margin-bottom: 0;
}
.faq-a ul {
  padding-left: 24px;
  margin: 0 0 14px;
}
.faq-a li {
  margin-bottom: 8px;
}
.faq-a li:last-child {
  margin-bottom: 0;
}

@media (max-width: 768px) {
  .faq-container { padding-left: 20px; padding-right: 20px; }
  .faq-category-title { font-size: 22px; margin-bottom: 20px; }
  .faq-category { margin-bottom: 48px; }
  .faq-a { padding: 0 20px 20px 20px; font-size: 14.5px; }
  .faq-q { font-size: 15.5px; padding-right: 12px; }
}

/* ============================================
   PHASE 5 - Commit 2: Round 1 audit polish (14 fixes + sticky nav rail)
   External Claude Chrome audit identified ports of Phase 4 patterns
   that were missed in Phase 5 Commit 1 (typographic punctuation,
   H1 clamp, transition tokens) + new UX upgrade (sticky category nav).
   ============================================ */

/* FIX 1 ‚Äî Hero eyebrow token (was rendering 17px/400/white ‚Äî wrong)
   Phase 4 scoped .hero-eyebrow styles to .reseller-hero-leads parent;
   FAQ page uses .hero-eyebrow-row so the style didn't apply.
   Globalize with !important to ensure consistency across all pages. */
.hero-eyebrow {
  display: inline-block;
  font-size: 13px !important;
  font-weight: 500 !important;
  letter-spacing: 1.3px !important;
  text-transform: uppercase !important;
  color: #C4B5FD !important;
  padding: 6px 14px;
  border: 1px solid rgba(167, 139, 250, 0.25);
  border-radius: 9999px;
  background-color: transparent;
}

/* FIX 2 ‚Äî H1 clamp port from Phase 4 Commit 3
   H1 was hard-coded 56px on FAQ ‚Üí clips on narrow viewports.
   Reuses the proven clamp formula. */
.faq-h1 {
  font-size: clamp(40px, 4.5vw + 1rem, 56px) !important;
  letter-spacing: clamp(-1.4px, -0.025em, -0.5px) !important;
  line-height: 1.15;
}

/* FIX 3 ‚Äî Drop the 24px translateY reveal on .faq-category
   With 16 categories, the 16 successive 24px snap-ups read as judder
   on a content-density page. Keep opacity fade (still feels premium),
   drop the transform. Hero + CTA islands still get the lift. */
.faq-category[data-reveal] {
  transform: none !important;
  transition: opacity 500ms cubic-bezier(0.16, 1, 0.3, 1) !important;
}

/* FIX 4 ‚Äî Open-state gradient palette (off-palette #7C3AED ‚Üí #6D28D9)
   Boostero palette is #6D28D9 (Purple 700) not #7C3AED (Violet 600). */
details.faq-item[open] {
  background: linear-gradient(180deg,
              rgba(109, 40, 217, 0.15) 0%,
              rgba(31, 18, 72, 0.5) 100%);
}

/* FIX 5 ‚Äî Promote .faq-a font-size 15px ‚Üí 16px (reading hierarchy)
   Answer text should equal or exceed question size, not be smaller.
   Also unify body opacity at 0.74 (was inconsistent 0.7 on inner p). */
.faq-a {
  font-size: 16px;
  color: rgba(255, 255, 255, 0.74);
}
.faq-a p {
  color: inherit;
}

/* FIX 6 ‚Äî Replace .faq-a transition: all (cascade-pollution) */
.faq-a {
  transition: padding var(--dur-hover) var(--ease-premium);
}

/* FIX 7 ‚Äî details[open] easing token (was Material 0.4, 0, 0.2, 1) */
details.faq-item {
  transition: background var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}

/* FIX 8 ‚Äî summary transition tokens (was default ease) */
details.faq-item summary {
  transition: color var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium);
}

/* FIX 9 ‚Äî Summary focus ring system alignment (was 50% alpha) */
details.faq-item summary:focus-visible {
  outline: 2px solid #A78BFA !important;
  outline-offset: 3px !important;
}

/* FIX 10 ‚Äî Category count chip beside title */
.cat-count {
  display: inline-block;
  font-size: 13px;
  font-weight: 500;
  color: rgba(196, 181, 253, 0.55);
  letter-spacing: 0.1px;
  margin-left: 8px;
  vertical-align: middle;
}

/* FIX 11 ‚Äî .faq-stack gap 10px ‚Üí 8px (tighter rhythm) */
.faq-stack {
  gap: 8px;
}

/* ============================================
   FIX 12 ‚Äî Sticky category nav rail (>1100px viewport only)
   Fills the dead 517px side-margin space; converts 10-screen scroll
   into one-click navigation. IntersectionObserver in twig file sets
   aria-current on active section.
   ============================================ */
.faq-toc {
  display: none;
}

@media (min-width: 1100px) {
  .newpage-body[data-variant="faq-content"] .faq-container {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 56px;
    max-width: 1136px;
    align-items: start;
  }

  .faq-categories-col {
    grid-column: 2;
    display: flex;
    flex-direction: column;
    gap: 64px;
    min-width: 0;
  }

  .faq-toc {
    display: block;
    position: sticky;
    top: 128px;
    grid-column: 1;
    padding-top: 4px;
    max-height: calc(100vh - 144px);
    overflow-y: auto;
  }
  /* Hide scrollbar on rail ‚Äî content is short enough that it shouldn't need it visually */
  .faq-toc::-webkit-scrollbar { width: 0; }
  .faq-toc { scrollbar-width: none; }

  .faq-toc-label {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 1.4px;
    text-transform: uppercase;
    color: rgba(196, 181, 253, 0.5);
    margin: 0 0 16px 12px;
  }

  .faq-toc-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }

  .faq-toc a {
    display: block;
    padding: 7px 12px;
    font-size: 13.5px;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.6);
    text-decoration: none;
    border-left: 2px solid transparent;
    border-radius: 0;
    transition: color var(--dur-hover) var(--ease-premium),
                border-color var(--dur-hover) var(--ease-premium),
                background-color var(--dur-hover) var(--ease-premium);
    letter-spacing: 0.1px;
  }

  .faq-toc a:hover {
    color: #C4B5FD;
    background-color: rgba(167, 139, 250, 0.04);
  }

  .faq-toc a[aria-current="true"] {
    color: #C4B5FD;
    border-left-color: #A78BFA;
    background-color: rgba(167, 139, 250, 0.06);
  }

  /* .faq-category sits inside .faq-categories-col flex ‚Äî no per-item grid-column needed */
}

/* Smooth scroll for in-page nav anchor clicks */
html {
  scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .faq-category[data-reveal] { transition: none !important; }
}

/* Anchor offset: account for sticky header so #cat-X scrolls land below it */
.faq-category[id] {
  scroll-margin-top: 128px;
}


/* PHASE 5 - Commit 3 hotfix: at desktop the flex .faq-categories-col controls
   gap via flex; reset per-category margin so we don't double 64+64=128px */
@media (min-width: 1100px) {
  .faq-categories-col .faq-category {
    margin-bottom: 0;
  }
}
/* ============================================
   PHASE 5 - Commit 4: Round 2 audit polish (rail rhythm + CTA bridge)
   External Claude Chrome Round 2 audit identified 6 surgical fixes:
   3 for rail visual quality (group rhythm, opacity grading, anchor)
   3 for FAQ ‚Üí CTA junction (axis align, compress, halo bridge)
   ============================================ */

/* FIX 1A ‚Äî Group eyebrows for rail rhythm (Linear/Stripe/Tailwind pattern)
   Replaces visually monotonous 16-flat-list with 3 rhythm groups:
   ESSENTIALS (4) / PLATFORMS (10) / EXTRAS (2). Eye lands on labels,
   not items. Labels at 35% lavender keep them sub-active relative to
   the active link white. */
.faq-toc-group-label {
  display: block;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: rgba(196, 181, 253, 0.35);
  padding: 16px 12px 6px;
  margin: 0;
}
.faq-toc-group-label--first,
.faq-toc-group-label:first-child {
  padding-top: 4px;
}

/* FIX 1B ‚Äî Opacity-grade non-active items + raise active state contrast
   Was: inactive 0.6 white, active lavender 100% (low delta, fights bg)
   Now: inactive 0.42 white, active 100% white on 10% lavender wash
   (clean "you are here" pop, Linear/Stripe pattern) */
@media (min-width: 1100px) {
  .faq-toc a {
    color: rgba(255, 255, 255, 0.42);
  }
  .faq-toc a:hover {
    color: rgba(255, 255, 255, 0.85);
    background: transparent;
  }
  .faq-toc a[aria-current="true"] {
    color: rgb(255, 255, 255);
    background: rgba(167, 139, 250, 0.10);
    border-left-color: rgb(167, 139, 250);
  }
}

/* FIX 1C ‚Äî "Back to top" anchor at rail bottom (visual closure) */
.faq-toc-end {
  display: block;
  margin-top: 20px;
  padding: 7px 12px;
  font-size: 12px;
  letter-spacing: 0.2px;
  color: rgba(255, 255, 255, 0.30);
  cursor: pointer;
  text-decoration: none;
  border-left: 2px solid transparent;
  transition: color var(--dur-hover) var(--ease-premium);
}
.faq-toc-end:hover {
  color: rgba(196, 181, 253, 0.85);
}
.faq-toc-end::before {
  content: "‚Üë  ";
}

/* FIX 2A REVERTED in Commit 5 ‚Äî pushing CTA into grid col 2 was math-
   correct (axis aligned x=1080) but visually broken: it left the entire
   left half of the CTA section empty (orphan zone where rail used to be),
   which read as a layout bug rather than intentional alignment. CTA now
   stays centered in section (matches Phase 4 Resellers CTA pattern).
   Compensated for the original "128px horizontal snap" concern via a
   stronger halo bridge (FIX 2C in this same block) which provides
   visual continuity without forcing axis alignment. */

/* FIX 2B ‚Äî Compress dead vertical band from 244px to 188px
   FAQ bottom 88‚Üí56px (-32), CTA top 64‚Üí48px (-16) = 48px reclaimed.
   ::before yellow line (1px rgba(250,202,51,0.5)) was invisible AND
   counted toward yellow rarity ‚Äî replaced by halo bridge in 2C. */
.newpage-body[data-variant="faq-content"] {
  padding-bottom: 56px;
}
.newpage-cta {
  padding-top: 48px;
  position: relative;
  isolation: isolate;
}

/* FIX 2C ‚Äî Soft lavender halo bridge across the FAQ‚ÜíCTA seam (240px tall,
   straddles the boundary 120px each side). Same technique as Phase 4
   Resellers Section 2‚Üí3 joint diagnostic (radial-gradient anchored
   inside content area). Eye reads gradient-fade across the seam
   instead of "section ends / new section begins". 
   Overrides the old 1px yellow ::before line. */
.newpage-cta::before {
  content: "" !important;
  display: block !important;
  position: absolute !important;
  inset: -160px 0 auto 0 !important;
  height: 320px !important;
  width: auto !important;
  background: radial-gradient(
    ellipse 55% 100% at 50% 50%,
    rgba(167, 139, 250, 0.18) 0%,
    rgba(167, 139, 250, 0.04) 40%,
    rgba(167, 139, 250, 0) 65%
  ) !important;
  pointer-events: none !important;
  z-index: -1 !important;
}

/* FIX 4 from Commit 5 REMOVED in Commit 6 ‚Äî the .still-questions card pattern
   (matching About Us) provides intrinsic visual containment via its border +
   subtle purple gradient background, making the extra ::after atmospheric
   backdrop redundant. The ::before halo bridge (above) still operates across
   the seam zone. */


/* PHASE 5 - Commit 5 marker ‚Äî header offset + Fix 2A revert + halo strengthen + atmospheric backdrop */


/* PHASE 5 - Commit 6 marker ‚Äî FAQ CTA refactored to .still-questions card pattern */

/* ============================================
   COMMIT 7 ‚Äî Site-wide CTA seam fix (ONE-LINE root-cause)

   External Claude Chrome audit (5-page diagnostic) revealed that all
   prior bridge work (Commit 4 halo, Commit 5 strengthening to 0.18
   alpha / 320px / -160px inset, Commit 6 .still-questions card)
   was correctly authored but blocked at paint time by .newpage-cta's
   overflow:hidden (inherited from theme baseline). The halo's upper
   160px ‚Äî the half designed to extend INTO the preceding section's
   bottom padding and dissolve the seam ‚Äî was being clipped away.

   Auditor's pixel proof:
   - Halo nominal range: CTA.top - 160px ‚Üí CTA.top + 160px
   - Halo VISIBLE range: CTA.top + 0px ‚Üí CTA.top + 160px (top half clipped)
   - Sampled bg at card.top - 20: flat rgb(8,4,26) ‚Äî halo not painting
   - Sampled bg at card.top - 100: flat rgb(8,4,26) ‚Äî bridge zone empty
   - Test with overflow:visible: seam visually dissolves on all 5 pages

   The .newpage-cta::before is pointer-events:none, z-index:-1,
   left:0 right:0 (can't leak horizontally), extends only 160px
   vertically into preceding section's padding-bottom zone (56-88px
   on every page) where halo alpha falloff (‚âà0.04-0.08) is sub-
   perceptual against any content. Zero risk to layout, clicks, or
   adjacent components. Applies universally desktop + mobile.

   Pages fixed: FAQ, About Us, Resellers, Contact, How it works
   (and any future page using .newpage-cta + .still-questions). */

.newpage-cta {
  overflow: visible !important;
}

/* ============================================
   COMMIT 8 ‚Äî Center button content in .cta-row (mobile alignment)

   Pixel proof on 500px viewport, FAQ page:
   - Card center_x: 250 (perfectly centered)
   - .cta-row center_x: 250 (perfectly centered)
   - Btn center_x: 250 (each button container perfectly centered)
   - But button uses display:flex without justify-content
   - Default justify-content:flex-start ‚Üí text hugs left edge
   - "Open a ticket" text starts at viewport x=81 while button center
     is at x=250 ‚Äî visible 119px left-pull of text
   - On desktop the row is horizontal so each button is content-sized;
     issue is invisible. On mobile (column flex, stretched buttons),
     buttons are 402px wide with short text, so misalignment shows.

   Scoped to .cta-row .btn ‚Äî affects only FAQ / About Us / Resellers
   / Contact / How it works CTA buttons. Other buttons on the site
   (yellow Sign Up in header, secondary actions inside cards, etc.)
   keep their existing flex alignment. */

.cta-row .btn {
  justify-content: center;
  text-align: center;
}

/* Commit 9 mask-image block REMOVED in Commit 12 ‚Äî with chrome stripped at
   source there is no card top/bottom edge to fade. The mask is dead code. */

/* ============================================
   COMMIT 10 ‚Äî Replace interior bottom glow with outer atmospheric shadow

   FINAL CTA card separation fix. The previous 3 commits (7 overflow,
   8 button center, 9 mask) all touched the wrong layer. Third-pass
   auditor pinpointed the actual ŒîE-cliff source:

   .still-questions::before {
     background: radial-gradient(80% 60% at 50% 100%,
       rgba(124,58,237,0.4), transparent 70%);
   }

   That 40%-alpha purple cloud was painted at maximum intensity at
   the card's bottom-edge pixel, then nothing outside the card.
   Sampled ŒîE between card-bottom-inside and card-bottom-outside:
   82.98. That's 3.46√ó the original seam ŒîE that prompted the
   whole audit chain. Mask softened the EDGE PIXEL but not the
   1.6 ŒîE-per-pixel ramp leading up to it.

   The fix moves the purple atmosphere OUTSIDE the card via
   box-shadow ‚Äî which paints beyond the border-box, unaffected by
   mask-image (mask clips own paint only) and unaffected by
   backdrop-filter (different paint phase). The atmospheric
   purple continues across the section bg below the card for
   ~120px, smoothly falling to zero. The cliff dissolves at
   the source. */

.still-questions::before {
  content: none;   /* kill the interior bottom radial glow ‚Äî the actual cliff source */
}

.still-questions {
  box-shadow:
    0 80px 120px -20px rgba(124, 58, 237, 0.28),   /* primary glow, projects 120px below card */
    0 24px 48px  -8px rgba(124, 58, 237, 0.12);    /* secondary tighter, smooths upper falloff */
}

/* Commit 11 FAQ-only strip block REMOVED in Commit 12 ‚Äî chrome is now
   stripped at source globally (line ~1795). The scoped !important strip
   is no longer needed because there is no chrome left to strip. */


/* PHASE 5+ COMMIT 12 ‚Äî chrome stripped at source globally. See line 1795. */

/* ============================================
   COMMIT 13 ‚Äî Remove box-shadow (THE actual card outline source)

   Twelve commits kept this box-shadow in place because each prior
   audit assumed it was part of the solution (atmospheric continuity
   below the card). Fourth-pass audit live-verified it's actually
   what's painting the perceived card silhouette in negative space.

   Mechanism: box-shadow paints OUTSIDE the border-box. With the
   card transparent (Commit 12), border-radius: 24px rounded, and
   shadow at 0.28 alpha + 120px blur, the shadow forms a rounded-
   rectangle ring in negative space. The brain's edge detector reads
   the inside/outside shadow boundary as a card outline.

   Verified ŒîE peaks at card.top + 10 (20.1) and card.bottom + 10
   (27.3) ‚Äî exactly the card's border-box boundary. Live JS toggle
   of box-shadow:none on all 5 pages ‚Äî silhouette disappears.

   The .newpage-cta::before halo above remains (radial gradient
   anchored at section top, no card geometry ‚Äî cannot produce a
   card outline). The CTA is now truly chrome-free at all paint
   layers. */

.still-questions {
  box-shadow: none !important;
}

/* ============================================
   COMMIT 14 was the body::before nuke; SUPERSEDED by Commit 15 below.
   Commit 14 removed brand aurora globally; user reported the loss.
   Commit 15 restores aurora at ~1/4 original alpha (subtle brand warmth
   that does not produce perceived card-frame against transparent CTA). */

/* COMMIT 14 nuke superseded ‚Äî body::before allowed to render again */


/* ============================================
   COMMIT 15 ‚Äî Restore subtle aurora + kill footer border-top line

   User wanted brand aurora back after Commit 14 removed it. The audit
   was correct that the ORIGINAL alphas (0.40/0.30/0.25) painted strong
   enough corner glows to be reconstructed as card-frame around the
   transparent CTA. Solution: restore at ~1/4 alpha ‚Äî enough brand
   warmth, not enough to create perceived frame.

   Also: .site-footer has border-top: 1px solid rgba(124,58,237,0.12)
   from theme baseline. That's the second visible section separator
   user has been reporting ‚Äî a literal 1px purple line at the top of
   the footer. Replaced with a soft gradient fade for visual transition
   without a literal line.
   ============================================ */

/* (a) Subtle aurora ‚Äî peaks reduced to 1/4 of original Phase 2 values */
/* Commit 15 body::before (3-radial corner pattern) superseded by Commit 16.
   Commit 16 unified to top+bottom vertical-axis radials at conservative
   alpha (0.12/0.06 ‚Äî under 0.15 corner-frame threshold).
   Commit 17 bumps to full Phase 2 brand intensity since vertical-axis
   geometry is exempt from corner-frame reconstruction (horizontal bands,
   not corner points). */
body::before {
  content: "" !important;
  background-image:
    radial-gradient(120% 80% at 50% 0%,   rgba(167, 139, 250, 0.40) 0%, rgba(0,0,0,0) 60%),
    radial-gradient(120% 80% at 50% 100%, rgba(236, 72, 153, 0.25)  0%, rgba(0,0,0,0) 60%),
    radial-gradient(80% 50% at 50% 70%,   rgba(250, 202, 51, 0.08)  0%, rgba(0,0,0,0) 65%)
    !important;
}

/* (b) Remove footer literal border-top line */
.site-footer {
  border-top: 0 !important;
  position: relative;
}

/* (c) Soft gradient fade above footer instead of the hard line */
.site-footer::before {
  content: "";
  position: absolute;
  top: -64px;
  left: 0;
  right: 0;
  height: 64px;
  background: linear-gradient(
    to bottom,
    rgba(124, 58, 237, 0) 0%,
    rgba(124, 58, 237, 0.04) 100%
  );
  pointer-events: none;
}


/* ============================================
   COMMIT 16 ‚Äî Unify atmosphere, retire CTA halo

   Audit 5 confirmed zero measurable ŒîE cliffs remain on the page
   (max sequential 0.30, max 100px-window 5.57 ‚Äî sub-threshold).
   Perceived separation now driven by composition: two discrete
   warmth patches (Commit 15 aurora top + Commit 5/7 CTA halo
   middle) with a darker midband between them. Brain reads the gap
   as a section boundary.

   Single structural move: unify the page atmosphere into ONE
   continuous top-to-bottom gradient on body::before (above), and
   retire the .newpage-cta::before halo that was creating the
   second patch. Continuous gradient cannot have a "gap between
   itself," so the composition that produced the perceived
   midband boundary is gone.

   New aurora geometry: lavender from top (50% 0% anchor) + rose
   from bottom (50% 100% anchor), both 120% width √ó 80% height
   radial. Alphas chosen above the 0.06-0.08 visibility threshold
   for brand warmth to register, and well below the 0.15 frame-
   reconstruction threshold so transparent CTA doesn't produce
   card outline. */

.newpage-cta::before {
  content: none !important;
  background-image: none !important;
}


/* ============================================
   COMMIT 17 ‚Äî Full brand intensity aurora (vertical-axis geometry safe).

   Audit 5 picked conservative 0.12/0.06 to stay under the 0.15 corner-
   frame reconstruction threshold. That threshold only applies to corner-
   anchored radials (geometry that can reconstruct as a 4-corner card
   frame around transparent CTA). Commit 16's geometry uses vertical-
   axis anchors (50% 0%, 50% 100%) which produce horizontal bands ‚Äî
   geometrically incapable of forming a corner frame at any alpha.

   Commit 17 returns to full Phase 2 brand intensity:
   - Top lavender 0.40 ‚Äî matches original purple at 15% 15%
   - Bottom rose 0.25 ‚Äî matches original yellow at 50% 85%
   - Yellow accent 0.08 at 50% 70% ‚Äî subtle brand primary, scroll
     position below typical CTA viewport center so doesn't frame
     CTA content

   Brand atmosphere fully visible. Card-frame perception cannot
   reconstruct because no corner anchors exist. */

/* ============================================
   COMMIT 18 ‚Äî DESIGN RESTORATION
   ============================================

   Reverts the drift introduced in Commits 9-17 of this session.
   Restores brand patterns from Phase 1 (r8 polish on Contact page)
   and Phase 2 (Home page corner aurora baseline).

   Background:
   Phase 1 r8 audit established .still-questions as Brand Pattern #2
   of five site signatures: "Glass panel with backdrop-blur 12px and
   radial purple glow from bottom edge." Used as secondary CTA
   template on Contact, About Us, Resellers, FAQ, Contact, How it
   works. Phase 2 added the body::before corner aurora drift as the
   page-level brand atmosphere.

   During this session's CTA debugging chain, I incrementally
   stripped the .still-questions chrome (Commits 9/10/12/13)
   chasing perceived "card separation" ‚Äî destroying the brand
   pattern at its source. Commits 14/16 then nuked and replaced
   the body::before aurora with conservative vertical-axis
   geometry that the user correctly identified as drift from the
   theme. Commit 17 over-corrected the aurora to 0.40/0.25/0.08
   which read as too bright.

   Audit 4 was correct that box-shadow on a transparent card
   draws a silhouette ring ‚Äî but the correct fix was to restore
   the card chrome (so box-shadow attaches to a visible surface),
   not to strip the chrome and remove the shadow. We took the
   wrong fork.

   This commit takes the right fork retroactively. Append-only
   restoration ‚Äî later cascade order wins. */

/* (1) .still-questions ‚Äî restore original Phase 1 r8 glass panel */
.still-questions {
  position: relative !important;
  padding: 40px 32px !important;
  border-radius: 24px !important;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.06) 0%,
    rgba(124, 58, 237, 0.02) 100%) !important;
  background-image: linear-gradient(180deg,
    rgba(124, 58, 237, 0.06) 0%,
    rgba(124, 58, 237, 0.02) 100%) !important;
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  backdrop-filter: blur(12px) !important;
  isolation: isolate !important;
  /* Explicitly clear session destructive overrides */
  box-shadow: none !important;
  -webkit-mask-image: none !important;
  mask-image: none !important;
}

/* (2) .still-questions::before ‚Äî restore Phase 1 r8 interior bottom glow */
.still-questions::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  border-radius: inherit !important;
  background: radial-gradient(
    ellipse 80% 60% at 50% 100%,
    rgba(124, 58, 237, 0.4),
    transparent 70%
  ) !important;
  background-image: radial-gradient(
    ellipse 80% 60% at 50% 100%,
    rgba(124, 58, 237, 0.4),
    transparent 70%
  ) !important;
  opacity: 0.6 !important;
  z-index: -1 !important;
  pointer-events: none !important;
}

/* (3) body::before ‚Äî restore Phase 2 corner-anchored aurora at compromise alphas
   Original Phase 2 alphas were 0.40 / 0.30 / 0.25 (too bright per user)
   Commit 15 went to 0.10 / 0.08 / 0.06 (too subtle per user)
   Compromise: 0.22 / 0.16 / 0.12 ‚Äî visible brand atmosphere without
   over-saturating. Corner geometry restored (matches Phase 2 baseline). */
body::before {
  content: "" !important;
  position: fixed !important;
  inset: 0 !important;
  z-index: -1 !important;
  pointer-events: none !important;
  background-image:
    radial-gradient(80% 40% at 15% 15%, rgba(124, 58, 237, 0.40) 0%, rgba(0,0,0,0) 55%),
    radial-gradient(60% 35% at 85% 50%, rgba(236, 72, 153, 0.30) 0%, rgba(0,0,0,0) 50%),
    radial-gradient(50% 30% at 50% 85%, rgba(250, 202, 51, 0.25) 0%, rgba(0,0,0,0) 50%)
    !important;
}

/* ============================================
   COMMIT 20 ‚Äî Unblock body::before aurora visibility

   Commit 18/19 restored body::before with full Phase 2 corner-anchored
   aurora at 0.40/0.30/0.25 alphas. Computed values all correct, pseudo
   element exists with proper geometry. But invisible to the user.

   Diagnostic via Chrome: body { background-color: rgb(8, 4, 26) } paints
   over body::before because pseudo at z-index:-1 is below body's own
   background painting layer. Aurora is technically there but completely
   masked by body bg.

   Fix: make body transparent. The html element has the same rgb(8, 4, 26)
   background, which serves as canvas. Removing body bg means html canvas
   shows through, body::before aurora paints on top of it visibly, and
   body content paints on top of aurora. */

body {
  background-color: transparent !important;
}

/* ============================================
   COMMIT 21 ‚Äî Footer social grid: 5+4 on mobile

   Issue: on mobile (430px viewport), .footer-social container is
   248px wide. With gap:12px between 9 icons of 44px, only 4 fit
   per row ‚Üí produces ugly 4+4+1 layout (1 orphan icon in row 3).

   Fix: at ‚â§600px, reduce column-gap to 7px (math: 5*44 + 4*7 = 248px
   exact container fit). Items wrap 5+4 cleanly. Row-gap stays 12px
   to preserve vertical breathing between the two rows.

   Desktop CSS unchanged ‚Äî flex-wrap continues to fit all 9 icons
   in one row at wider container widths. */

@media (max-width: 600px) {
  .site-footer .footer-social {
    column-gap: 7px;
    row-gap: 12px;
  }
}

/* ============================================
   COMMIT 22 ‚Äî Contact page dual-button height equalization

   Issue: Card 3 ("Pricing & Resellers") on Contact page has 2 buttons
   (Telegram + Open ticket) using btn-sm class ‚Äî 41px tall. Cards 1+2
   single buttons (Sign in to open a ticket, Message on Telegram) use
   regular btn ‚Äî 47px tall. 6px height mismatch reads as inconsistent.

   User explicitly requested: width stays smaller (split in half is
   correct), only height should match.

   Fix: min-height on .tile-button-group .btn-sm to 47px. Padding +
   font-size stay at btn-sm sizing (keeps text fitting in 154px
   narrow buttons). Just centers content vertically in the taller box. */

.tile-button-group .btn-sm {
  min-height: 47px;
}

/* ============================================================================
   PHASE 6 ‚Äî Terms page (terms.twig)
   ============================================================================

   Two-column layout with sticky side TOC navigation on desktop, collapsible
   drawer on mobile. Three article sections (Terms & Conditions, Refund
   Policy, Privacy Policy) with anchor-scrollable sub-sections.

   Layout breakpoints:
   - ‚â•1024px: 280px sticky TOC + 1fr prose
   - <1024px: single column, TOC becomes collapsible drawer with toggle button
   - <480px: tightened typography and padding

   Reuses brand patterns:
   - Phase 1 r8 hero-title-gradient on H1
   - Phase 2 body::before aurora (compatible ‚Äî terms-body is transparent)
   - Phase 1 r8 .still-questions glass panel CTA
   - Phase 5 FAQ TOC group-label rhythm + active scroll-spy
   ============================================================================ */

/* === Container layout ===================================================== */

.terms-body {
  /* Body section background stays transparent so aurora shows through */
  padding-block: var(--space-12) var(--space-16);
}

.terms-container {
  max-width: 1136px;
  /* Default mobile: single column flow (toggle + drawer + prose stack) */
}

@media (min-width: 1024px) {
  .terms-container {
    display: grid;
    grid-template-columns: 280px 1fr;
    column-gap: 64px;
    align-items: start;
  }
  .terms-toc-toggle {
    display: none; /* desktop: TOC always visible, no toggle */
  }
}

/* === Mobile TOC toggle (button) =========================================== */

.terms-toc-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 12px 16px;
  margin-bottom: 24px;
  background: rgba(167, 139, 250, 0.06);
  border: 1px solid rgba(167, 139, 250, 0.18);
  border-radius: 12px;
  color: rgba(255, 255, 255, 0.88);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.1px;
  cursor: pointer;
  transition: background var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.terms-toc-toggle:hover {
  background: rgba(167, 139, 250, 0.10);
  border-color: rgba(167, 139, 250, 0.32);
}
.terms-toc-toggle-label {
  flex: 1;
  text-align: left;
}
.terms-toc-toggle-caret {
  transition: transform 240ms var(--ease-premium);
  flex-shrink: 0;
  color: #C4B5FD;
}
.terms-toc-toggle[aria-expanded="true"] .terms-toc-toggle-caret {
  transform: rotate(180deg);
}

/* === Side TOC nav ========================================================= */

.terms-toc {
  /* Mobile: collapsed by default ‚Äî drawer expands when .is-open added.
     visibility:hidden when collapsed prevents focus from landing on
     invisible TOC links via Tab nav (a11y).  */
  max-height: 0;
  overflow: hidden;
  visibility: hidden;
  transition: max-height 360ms var(--ease-premium),
              visibility 0s linear 360ms;
  margin-bottom: 24px;
}
.terms-toc.is-open {
  max-height: 720px;
  padding-block: 8px 12px;
  visibility: visible;
  transition: max-height 360ms var(--ease-premium),
              visibility 0s linear 0s;
}

@media (min-width: 1024px) {
  .terms-toc {
    /* Desktop: always visible, sticky in grid column 1 */
    position: sticky;
    top: 128px;
    grid-column: 1;
    max-height: calc(100vh - 160px);
    overflow-y: auto;
    visibility: visible;
    margin-bottom: 0;
    padding-block: 0;
    transition: none;
  }
  /* Hide scrollbar visually ‚Äî content is rarely tall enough to need it */
  .terms-toc::-webkit-scrollbar { width: 0; }
  .terms-toc { scrollbar-width: none; }
}

.terms-toc-group-label {
  display: block;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: rgba(196, 181, 253, 0.45);
  padding: 16px 12px 6px;
  margin: 0;
}
.terms-toc-group-label--first,
.terms-toc-group-label:first-child {
  padding-top: 4px;
}

.terms-toc-list {
  list-style: none;
  padding: 0;
  margin: 0 0 4px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.terms-toc a {
  display: block;
  padding: 7px 12px;
  font-size: 13.5px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.5);
  text-decoration: none;
  border-left: 2px solid transparent;
  letter-spacing: 0.1px;
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium);
}
.terms-toc a:hover {
  color: rgba(255, 255, 255, 0.88);
  background: rgba(167, 139, 250, 0.04);
}
.terms-toc a[aria-current="true"] {
  color: rgb(255, 255, 255);
  background: rgba(167, 139, 250, 0.10);
  border-left-color: rgb(167, 139, 250);
}
.terms-toc a:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 2px;
  border-radius: 4px;
}
.terms-toc-toggle:focus-visible,
.terms-toc-end:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 2px;
}


.terms-toc-end {
  display: block;
  margin-top: 20px;
  padding: 7px 12px;
  font-size: 12px;
  letter-spacing: 0.2px;
  color: rgba(255, 255, 255, 0.32);
  text-decoration: none;
  transition: color var(--dur-hover) var(--ease-premium);
}
.terms-toc-end:hover {
  color: rgba(196, 181, 253, 0.85);
}
.terms-toc-end::before {
  content: "‚Üë  ";
}

/* === Prose column ========================================================= */

.terms-prose-col {
  /* Mobile: spans full width below TOC drawer.
     Desktop: grid column 2 (set via .terms-container grid). */
  min-width: 0; /* prevents flex/grid blowout from long URLs */
}

@media (min-width: 1024px) {
  .terms-prose-col {
    grid-column: 2;
    max-width: 760px; /* readable measure cap on wide viewports */
  }
}

/* === Article (section group) ============================================== */

.terms-article {
  position: relative;
  padding: 40px 40px 32px;
  margin-bottom: 48px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.04) 0%,
    rgba(124, 58, 237, 0.01) 100%);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 20px;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  isolation: isolate;
}
.terms-article:last-child {
  margin-bottom: 0;
}

.terms-article-header {
  margin-bottom: 24px;
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.terms-article-eyebrow {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: rgba(196, 181, 253, 0.55);
  margin: 0 0 8px;
}

.terms-h2 {
  font-size: clamp(28px, 2.2vw + 0.5rem, 32px);
  font-weight: 600;
  letter-spacing: -0.4px;
  color: #FFFFFF;
  line-height: 1.2;
  margin: 0;
}

/* === Section (anchor target) ============================================== */

.terms-section {
  scroll-margin-top: 128px; /* clears sticky site header on anchor jump */
  margin-bottom: 48px;
}
.terms-section:last-child {
  margin-bottom: 0;
}

.terms-h3 {
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -0.15px;
  color: #C4B5FD;
  line-height: 1.3;
  margin: 0 0 16px;
}

/* === Prose typography ===================================================== */

.terms-section p {
  font-size: 15.5px;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.78);
  margin: 0 0 14px;
}
.terms-section p:last-child {
  margin-bottom: 0;
}

.terms-list {
  margin: 0 0 14px;
  padding-left: 24px;
  color: rgba(255, 255, 255, 0.78);
  font-size: 15.5px;
  line-height: 1.7;
}
.terms-list li {
  margin-bottom: 8px;
}
.terms-list li:last-child {
  margin-bottom: 0;
}
.terms-list li::marker {
  color: rgba(196, 181, 253, 0.7);
  font-weight: 600;
}

/* === Inline links inside prose (preserve global focus + hover) ============ */

.terms-section a:not(.btn) {
  color: #C4B5FD;
  text-decoration: none;
  border-bottom: 1px solid rgba(196, 181, 253, 0.3);
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.terms-section a:not(.btn):hover {
  color: #FFFFFF;
  border-color: rgba(255, 255, 255, 0.6);
}

/* === Mobile tightening ==================================================== */

@media (max-width: 768px) {
  .terms-body {
    padding-block: var(--space-8) var(--space-12);
  }
  .terms-article {
    padding: 28px 24px 24px;
    margin-bottom: 24px;
    border-radius: 16px;
  }
  .terms-article-header {
    margin-bottom: 20px;
    padding-bottom: 16px;
  }
  .terms-section {
    margin-bottom: 28px;
  }
  .terms-section p,
  .terms-list {
    font-size: 15px;
  }
}

@media (max-width: 480px) {
  .terms-article {
    padding: 24px 20px 20px;
    border-radius: 14px;
  }
  .terms-h3 {
    font-size: 17px;
  }
  .terms-section p,
  .terms-list {
    font-size: 14.5px;
    line-height: 1.7;
  }
  .terms-list {
    padding-left: 20px;
  }
}

/* ============================================================================
   PHASE 6 ‚Äî Commit 3: TOC toggle visibility cascade fix

   Bug diagnosed via Claude Chrome audit: at ‚â•1024px both the side nav
   AND the mobile toggle button were visible simultaneously. Root cause:
   the Commit 1 desktop rule `.terms-toc-toggle { display: none }` was
   declared INSIDE @media (min-width: 1024px) at line ~6600, BEFORE the
   unconditional base `.terms-toc-toggle { display: inline-flex }` at
   line ~6614. Equal specificity (0,0,1,0) + later source order = base
   rule wins on all viewports.

   Fix: append definitive end-of-file media-query blocks with !important
   on the desktop side. Cascade order + !important together guarantee
   correct visibility on all viewports.

   Mobile note: the .terms-toc display:none/block switch below will
   override the Commit 2 max-height + visibility drawer animation
   (display can't transition). The drawer now snaps open/closed
   instead of smoothly sliding. Trade-off accepted per user direction
   ‚Äî visibility correctness wins over animation polish here.
   ============================================================================ */

/* Desktop: side-nav visible, toggle hidden */
@media (min-width: 1024px) {
  .terms-toc-toggle {
    display: none !important;
  }

  .terms-toc {
    display: block;
    visibility: visible;
  }
}

/* Mobile/tablet: only toggle + collapsible drawer */
@media (max-width: 1023.98px) {
  .terms-toc-toggle {
    display: flex;
    visibility: visible;
  }

  .terms-toc {
    display: none;
  }

  .terms-toc.is-open {
    display: block;
  }

  /* Grid on mobile: single column */
  .terms-container {
    grid-template-columns: 1fr;
    gap: 20px;
  }
}

/* ============================================================================
   PHASE 7 ‚Äî API page (api.twig)
   ============================================================================

   Hybrid+ strategy: PP {{ methods }} loop renders glass-paneled method cards.
   Layout: hero + API info panel + 2-col body (sticky TOC + method cards) +
   PHP CTA + Still Questions CTA. Prism.js for JSON syntax highlighting.

   Layout breakpoints:
   - ‚â•1024px: 280px sticky TOC + 1fr method cards
   - <1024px: single column, TOC becomes drawer with toggle
   - <768px / <480px: tightened typography + spacing

   Reuses brand patterns:
   - Phase 1 r8 hero-title-gradient on H1
   - Phase 2 body::before aurora bleed-through
   - Phase 1 r8 .still-questions glass panel CTA
   - Phase 5/6 TOC group-label rhythm + IntersectionObserver scroll-spy
   ============================================================================ */

/* === API info glass panel (top, above main 2-col body) ==================== */

.api-info-section {
  padding-block: var(--space-6) var(--space-8);
}

.api-info-panel {
  max-width: 880px;
  margin: 0 auto;
  padding: 28px 32px;
  border-radius: 20px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.08) 0%,
    rgba(124, 58, 237, 0.02) 100%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  isolation: isolate;
}

.api-info-row {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 16px;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}
.api-info-row:last-child {
  border-bottom: none;
}

.api-info-label {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.3px;
  color: rgba(196, 181, 253, 0.85);
}

.api-info-value {
  font-size: 14.5px;
  color: rgba(255, 255, 255, 0.85);
  line-height: 1.5;
}

.api-info-value a {
  color: #C4B5FD;
  text-decoration: none;
  border-bottom: 1px solid rgba(196, 181, 253, 0.4);
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.api-info-value a:hover {
  color: #FFFFFF;
  border-color: rgba(255, 255, 255, 0.7);
}

/* === POST badge (yellow pill, monospace) ================================== */

.api-method-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--yellow);
  color: #08041A;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.5px;
  font-family: var(--font-mono, ui-monospace, "JetBrains Mono", monospace);
  text-transform: uppercase;
}

/* === API URL + inline code styling ======================================== */

.api-url {
  font-family: var(--font-mono, ui-monospace, "JetBrains Mono", monospace);
  font-size: 13.5px;
  color: #C4B5FD;
  background: rgba(167, 139, 250, 0.10);
  padding: 6px 12px;
  border-radius: 8px;
  border: 1px solid rgba(167, 139, 250, 0.18);
  display: inline-block;
  word-break: break-all;
}

.api-inline-code {
  font-family: var(--font-mono, ui-monospace, "JetBrains Mono", monospace);
  font-size: 13px;
  color: #C4B5FD;
  background: rgba(167, 139, 250, 0.10);
  padding: 3px 8px;
  border-radius: 4px;
}

/* === Two-column body layout =============================================== */

.api-body {
  padding-block: var(--space-8) var(--space-16);
}

.api-container {
  max-width: 1280px;
  /* Default mobile: single-column flow */
}

@media (min-width: 1024px) {
  .api-container {
    display: grid;
    grid-template-columns: 280px 1fr;
    column-gap: 64px;
    align-items: start;
  }
}

/* === Mobile TOC toggle ==================================================== */

.api-toc-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 12px 16px;
  margin-bottom: 24px;
  background: rgba(167, 139, 250, 0.06);
  border: 1px solid rgba(167, 139, 250, 0.18);
  border-radius: 12px;
  color: rgba(255, 255, 255, 0.88);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.1px;
  cursor: pointer;
  transition: background var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.api-toc-toggle:hover {
  background: rgba(167, 139, 250, 0.10);
  border-color: rgba(167, 139, 250, 0.32);
}
.api-toc-toggle-label {
  flex: 1;
  text-align: left;
}
.api-toc-toggle-caret {
  flex-shrink: 0;
  color: #C4B5FD;
  transition: transform 240ms var(--ease-premium);
}
.api-toc-toggle[aria-expanded="true"] .api-toc-toggle-caret {
  transform: rotate(180deg);
}
.api-toc-toggle:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 2px;
}

/* === Side TOC nav ========================================================= */

.api-toc {
  /* Mobile default: hidden (display:none toggled via .is-open) */
  margin-bottom: 24px;
}

@media (min-width: 1024px) {
  .api-toc {
    position: sticky;
    top: 128px;
    grid-column: 1;
    max-height: calc(100vh - 160px);
    overflow-y: auto;
    margin-bottom: 0;
    padding: 4px 0 8px;
  }
  .api-toc::-webkit-scrollbar { width: 0; }
  .api-toc { scrollbar-width: none; }
}

.api-toc-group-label {
  display: block;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: rgba(196, 181, 253, 0.45);
  padding: 4px 12px 6px;
  margin: 0 0 4px;
}

.api-toc-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.api-toc-link {
  display: block;
  padding: 7px 12px;
  font-size: 13.5px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.5);
  text-decoration: none;
  border-left: 2px solid transparent;
  letter-spacing: 0.1px;
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium);
}
.api-toc-link:hover {
  color: rgba(255, 255, 255, 0.88);
  background: rgba(167, 139, 250, 0.04);
}
.api-toc-link.is-active {
  color: rgb(255, 255, 255);
  background: rgba(167, 139, 250, 0.10);
  border-left-color: rgb(167, 139, 250);
}
.api-toc-link:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 2px;
  border-radius: 4px;
}

.api-toc-end {
  display: block;
  margin-top: 20px;
  padding: 7px 12px;
  font-size: 12px;
  letter-spacing: 0.2px;
  color: rgba(255, 255, 255, 0.32);
  text-decoration: none;
  transition: color var(--dur-hover) var(--ease-premium);
}
.api-toc-end::before {
  content: "‚Üë  ";
}
.api-toc-end:hover {
  color: rgba(196, 181, 253, 0.85);
}
.api-toc-end:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 2px;
}

/* === Prose column ========================================================= */

.api-prose-col {
  min-width: 0;
}
@media (min-width: 1024px) {
  .api-prose-col {
    grid-column: 2;
  }
}

/* === Method card (one per method in PP loop) ============================== */

.api-method-card {
  position: relative;
  padding: 32px;
  margin-bottom: 48px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.06) 0%,
    rgba(124, 58, 237, 0.02) 100%);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 24px;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  isolation: isolate;
  scroll-margin-top: 128px;
}
.api-method-card:last-of-type {
  margin-bottom: 0;
}

.api-method-header {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 24px;
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.api-method-title {
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.25px;
  color: #C4B5FD;
  line-height: 1.2;
  margin: 0;
}

/* === Service type selector (special 'add' method) ========================= */

.api-service-selector {
  margin-bottom: 20px;
  padding: 16px;
  background: rgba(167, 139, 250, 0.05);
  border: 1px solid rgba(167, 139, 250, 0.15);
  border-radius: 12px;
}

.api-select-label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: rgba(196, 181, 253, 0.7);
  margin-bottom: 8px;
}

.api-select {
  width: 100%;
  padding: 10px 16px;
  background: rgba(8, 4, 26, 0.6);
  color: #FFFFFF;
  border: 1px solid rgba(167, 139, 250, 0.25);
  border-radius: 8px;
  font-size: 14px;
  font-family: inherit;
  cursor: pointer;
  transition: border-color var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium);
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none'%3E%3Cpath d='M3.5 5.25L7 8.75L10.5 5.25' stroke='%23C4B5FD' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 36px;
}
.api-select:hover {
  border-color: rgba(167, 139, 250, 0.45);
  background-color: rgba(8, 4, 26, 0.8);
}
.api-select:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 2px;
}

/* === Params table ========================================================= */

.api-params-table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 24px;
  font-size: 14px;
}

.api-params-table th {
  text-align: left;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.3px;
  text-transform: uppercase;
  color: rgba(196, 181, 253, 0.85);
  padding: 12px 16px;
  border-bottom: 2px solid rgba(167, 139, 250, 0.3);
  background: rgba(167, 139, 250, 0.04);
}

.api-params-table td {
  padding: 14px 16px;
  color: rgba(255, 255, 255, 0.75);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  vertical-align: top;
  line-height: 1.55;
}

.api-params-table tbody tr:nth-child(odd) td {
  background: rgba(124, 58, 237, 0.03);
}
.api-params-table tbody tr:last-child td {
  border-bottom: none;
}

.api-params-table td code {
  font-family: var(--font-mono, ui-monospace, "JetBrains Mono", monospace);
  font-size: 13px;
  color: #C4B5FD;
  background: rgba(167, 139, 250, 0.12);
  padding: 2px 6px;
  border-radius: 4px;
  white-space: nowrap;
}

/* === Example response code block (Prism.js styling overrides) ============ */

.api-example {
  margin-top: 8px;
}

.api-example-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: rgba(196, 181, 253, 0.7);
  margin-bottom: 10px;
}

.api-code-block {
  background: #0D0623 !important;
  border: 1px solid rgba(167, 139, 250, 0.2);
  border-radius: 12px;
  padding: 20px;
  font-size: 13px;
  line-height: 1.6;
  font-family: var(--font-mono, ui-monospace, "JetBrains Mono", monospace) !important;
  overflow-x: auto;
  margin: 0;
}

/* Prism.js token color overrides ‚Äî aurora palette (Tomorrow Night base) */
.api-code-block code[class*="language-"],
.api-code-block pre[class*="language-"] {
  font-family: var(--font-mono, ui-monospace, "JetBrains Mono", monospace) !important;
  text-shadow: none;
  background: transparent;
}
.api-code-block .token.property { color: #C4B5FD; }    /* JSON keys ‚Äî lavender */
.api-code-block .token.string,
.api-code-block .token.attr-value { color: #FACA33; }  /* strings ‚Äî soft yellow */
.api-code-block .token.number { color: #A78BFA; }      /* numbers ‚Äî amethyst */
.api-code-block .token.boolean { color: #F59E0B; }     /* booleans ‚Äî orange */
.api-code-block .token.null { color: #EC4899; }        /* null ‚Äî magenta */
.api-code-block .token.punctuation { color: rgba(255, 255, 255, 0.5); }
.api-code-block .token.operator { color: rgba(255, 255, 255, 0.5); }

/* === PHP code CTA (preserves /example.txt link) =========================== */

.api-php-section {
  margin-top: 40px;
  text-align: center;
}

.api-php-cta {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 14px 28px;
  background: var(--yellow);
  color: #08041A;
  border-radius: 12px;
  font-weight: 700;
  font-size: 14.5px;
  letter-spacing: 0.1px;
  text-decoration: none;
  transition: transform var(--dur-hover) var(--ease-premium),
              box-shadow var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium);
}
.api-php-cta:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 24px -8px rgba(250, 202, 51, 0.4);
  background: #FFD24D;
}
.api-php-cta:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 3px;
}

.api-php-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 6px;
  background: rgba(8, 4, 26, 0.18);
  font-family: var(--font-mono, ui-monospace, "JetBrains Mono", monospace);
  font-size: 13px;
  font-weight: 800;
  color: #08041A;
}

/* === Responsive tightening ================================================ */

@media (max-width: 768px) {
  .api-info-section {
    padding-block: var(--space-4) var(--space-6);
  }
  .api-info-panel {
    padding: 20px 22px;
    border-radius: 16px;
  }
  .api-info-row {
    grid-template-columns: 120px 1fr;
    gap: 12px;
    padding: 10px 0;
  }
  .api-info-label {
    font-size: 12px;
  }
  .api-info-value,
  .api-url {
    font-size: 13px;
  }
  .api-body {
    padding-block: var(--space-6) var(--space-12);
  }
  .api-method-card {
    padding: 24px 20px;
    margin-bottom: 32px;
    border-radius: 18px;
  }
  .api-method-title {
    font-size: 20px;
  }
  .api-params-table {
    font-size: 13px;
  }
  .api-params-table th {
    padding: 10px 12px;
  }
  .api-params-table td {
    padding: 12px 12px;
  }
  .api-code-block {
    font-size: 12px;
    padding: 16px;
    border-radius: 10px;
  }
}

@media (max-width: 480px) {
  .api-info-row {
    grid-template-columns: 1fr;
    gap: 6px;
  }
  .api-method-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .api-params-table {
    font-size: 12.5px;
  }
  .api-params-table th,
  .api-params-table td {
    padding: 10px;
  }
  .api-params-table td code {
    font-size: 12px;
    white-space: normal;
    word-break: break-word;
  }
  .api-php-cta {
    padding: 12px 20px;
    font-size: 13.5px;
  }
}

/* ============================================================================
   PHASE 7 ‚Äî Critical cascade fix (lesson learned from Phase 6 Commit 3)

   Toggle/nav visibility on a per-viewport basis, declared at END of file
   with !important on the desktop side to guarantee cascade victory.
   ============================================================================ */

@media (min-width: 1024px) {
  .api-toc-toggle {
    display: none !important;
  }
  .api-toc {
    display: block;
    visibility: visible;
  }
}

@media (max-width: 1023.98px) {
  .api-toc-toggle {
    display: flex;
    visibility: visible;
  }
  .api-toc {
    display: none;
  }
  .api-toc.is-open {
    display: block;
  }
  .api-container {
    grid-template-columns: 1fr;
    gap: 20px;
  }
}

/* ============================================================================
   PHASE 8 ‚Äî Sign Up page (signup.twig)
   ============================================================================

   Hybrid+ strategy: PP dynamic form ({% for field in fields %}) wrapped in
   glass card + 5 verbatim marketing sections (hero, features, platforms,
   steps, amplify CTA).

   Layout breakpoints:
   - >=1024px: features 2x2, platforms 4x2, steps 4-col
   - <1024px: progressively stack (steps 2x2, platforms 2x4)
   - <768px: features 1x4, platforms 2x4, steps 2x2
   - <480px: everything single-column

   Reuses brand patterns from earlier phases (hero-title-gradient,
   .still-questions glass CTA, body::before aurora bleed-through).
   ============================================================================ */

/* === Hero subtitle paragraphs (preserve original H1/H2 text strings) ====== */

.signup-hero-tagline {
  font-size: clamp(20px, 1.8vw + 0.5rem, 26px);
  font-weight: 600;
  letter-spacing: -0.3px;
  color: rgba(255, 255, 255, 0.92);
  line-height: 1.3;
  margin: 16px 0 6px;
}

.signup-hero-subtagline {
  font-size: clamp(15px, 1vw + 0.5rem, 17px);
  font-weight: 500;
  color: rgba(196, 181, 253, 0.85);
  line-height: 1.45;
  margin: 0 0 4px;
}

.signup-hero-lead {
  max-width: 720px;
}

/* === Signup form glass card =============================================== */

.signup-form-section {
  /* Phase 8 Commit 3 B3 fix: Commit 2's 16px was over-corrected (40px measured
     gap was too tight). Restored to 32px top / 60px bottom ‚Äî measured ~72px
     hero‚Üíform gap, optimal vertical rhythm. */
  padding: 32px 0 60px;
}

.signup-form-wrapper {
  display: flex;
  justify-content: center;
  padding: 0 16px;
}

.signup-form-card {
  width: 100%;
  max-width: 520px;
  padding: 40px 36px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.08) 0%,
    rgba(124, 58, 237, 0.03) 100%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 24px;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  box-shadow: 0 24px 60px -20px rgba(0, 0, 0, 0.5);
  isolation: isolate;
}

/* === Google Sign-In wrapper + divider ===================================== */

.signup-google-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: 8px;
}

.signup-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 16px 0 24px;
}
.signup-divider::before,
.signup-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: rgba(255, 255, 255, 0.1);
}
.signup-divider span {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.5px;
  color: rgba(255, 255, 255, 0.5);
  text-transform: lowercase;
}

/* === Form fields (override Bootstrap form-control) ======================== */

.signup-form-group {
  margin-bottom: 16px;
}

.signup-label {
  display: block;
  font-size: 13px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.85);
  margin-bottom: 6px;
  letter-spacing: 0.1px;
}

.signup-form .signup-input,
.signup-form input.form-control {
  width: 100%;
  /* Phase 8 Commit 3 B2 fix: defeat Bootstrap .form-control height:34px which
     was winning cascade and squashing inputs to ~34px. height:auto + min-height
     enforces ~48px touch target for mobile a11y. */
  height: auto !important;
  min-height: 48px;
  padding: 14px 16px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(167, 139, 250, 0.2);
  border-radius: 10px;
  color: #FFFFFF;
  font-size: 15px;
  font-family: inherit;
  line-height: 1.4;
  transition: background-color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium),
              box-shadow var(--dur-hover) var(--ease-premium);
}
.signup-form .signup-input::placeholder {
  color: rgba(255, 255, 255, 0.35);
}
.signup-form .signup-input:hover {
  border-color: rgba(167, 139, 250, 0.32);
  background: rgba(255, 255, 255, 0.05);
}
.signup-form .signup-input:focus,
.signup-form .signup-input:focus-visible {
  outline: none;
  border-color: rgba(167, 139, 250, 0.55);
  background: rgba(255, 255, 255, 0.06);
  box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.12);
}

/* === Captcha wrapper ====================================================== */

.signup-captcha-wrapper {
  display: flex;
  justify-content: center;
  margin: 16px 0;
}

/* === Terms checkbox ======================================================= */

.signup-terms-group {
  margin: 18px 0 8px;
}

.signup-terms-label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-weight: 400;
}

.signup-terms-checkbox {
  flex-shrink: 0;
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  margin-top: 2px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(167, 139, 250, 0.35);
  border-radius: 4px;
  cursor: pointer;
  transition: background-color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
  position: relative;
}
.signup-terms-checkbox:hover {
  border-color: rgba(167, 139, 250, 0.6);
}
.signup-terms-checkbox:checked {
  background: rgb(167, 139, 250);
  border-color: rgb(167, 139, 250);
}
.signup-terms-checkbox:checked::after {
  content: "";
  position: absolute;
  inset: 2px 0 0 5px;
  width: 6px;
  height: 11px;
  border-right: 2px solid #08041A;
  border-bottom: 2px solid #08041A;
  transform: rotate(45deg);
}
.signup-terms-checkbox:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 2px;
}

.signup-terms-text {
  font-size: 13.5px;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.75);
}
.signup-terms-link {
  color: #C4B5FD;
  text-decoration: none;
  border-bottom: 1px solid rgba(196, 181, 253, 0.4);
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.signup-terms-link:hover {
  color: var(--yellow);
  border-color: rgba(250, 202, 51, 0.6);
}

/* === Submit button (override Bootstrap btn-primary) ======================= */

.signup-form .signup-submit,
.signup-form .signup-submit.btn-primary,
.signup-form button.signup-submit {
  display: block;
  width: 100%;
  margin-top: 24px;
  padding: 14px 24px;
  background: var(--yellow) !important;
  color: #08041A !important;
  border: 1px solid var(--yellow) !important;
  border-radius: 12px;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.2px;
  cursor: pointer;
  transition: transform var(--dur-hover) var(--ease-premium),
              box-shadow var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium);
}
.signup-form .signup-submit:hover {
  transform: translateY(-2px);
  background: #FFD24D !important;
  box-shadow: 0 10px 24px -8px rgba(250, 202, 51, 0.4);
}
.signup-form .signup-submit:active {
  transform: translateY(0);
}
.signup-form .signup-submit:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 3px;
}

/* === Sign-in link row ===================================================== */

.signup-signin-row {
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  text-align: center;
  font-size: 13.5px;
  color: rgba(255, 255, 255, 0.6);
}
.signup-signin-text {
  margin-right: 4px;
}
.signup-signin-link {
  color: #C4B5FD;
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.signup-signin-link:hover {
  color: var(--yellow);
  border-color: rgba(250, 202, 51, 0.6);
}

/* === Bootstrap alert restyle (dark aurora theme) ========================== */

.signup-form .alert {
  position: relative;
  padding: 14px 44px 14px 16px;
  margin-bottom: 18px;
  border-radius: 10px;
  font-size: 14px;
  line-height: 1.5;
}
.signup-form .alert-danger {
  background: rgba(239, 68, 68, 0.1);
  border: 1px solid rgba(239, 68, 68, 0.3);
  color: #FCA5A5;
}
.signup-form .alert-success {
  background: rgba(16, 185, 129, 0.1);
  border: 1px solid rgba(16, 185, 129, 0.3);
  color: #6EE7B7;
}
.signup-form .alert .close {
  position: absolute;
  top: 50%;
  right: 12px;
  transform: translateY(-50%);
  background: transparent;
  border: none;
  font-size: 20px;
  line-height: 1;
  color: inherit;
  opacity: 0.6;
  cursor: pointer;
  padding: 0 6px;
}
.signup-form .alert .close:hover {
  opacity: 1;
}

/* === Section headings (shared across features/platforms/steps/amplify) ==== */

.signup-section-head {
  text-align: center;
  max-width: 800px;
  margin: 0 auto 48px;
}
.signup-section-head h2 {
  margin-bottom: 16px;
}
.signup-section-lead {
  font-size: 15.5px;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.75);
  margin: 0 auto;
}
.signup-section-lead a {
  color: #C4B5FD;
  text-decoration: none;
  border-bottom: 1px solid rgba(196, 181, 253, 0.4);
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.signup-section-lead a:hover {
  color: #FFFFFF;
  border-color: rgba(255, 255, 255, 0.6);
}

/* === Features section (4 glass cards, 2x2 desktop) ======================== */

.signup-features-section {
  padding-block: var(--space-12) var(--space-12);
}

.signup-features-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  max-width: 1080px;
  margin: 0 auto;
}

.signup-feature-card {
  padding: 32px 28px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.06) 0%,
    rgba(124, 58, 237, 0.02) 100%);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 20px;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  transition: transform var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.signup-feature-card:hover {
  transform: translateY(-2px);
  border-color: rgba(167, 139, 250, 0.2);
}

.signup-feature-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  background: rgba(167, 139, 250, 0.12);
  border: 1px solid rgba(167, 139, 250, 0.22);
  color: #C4B5FD;
  margin-bottom: 18px;
}

.signup-feature-title {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -0.2px;
  color: #C4B5FD;
  line-height: 1.3;
  margin: 0 0 10px;
}

.signup-feature-text {
  font-size: 14.5px;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.75);
  margin: 0;
}
.signup-feature-text a {
  color: #C4B5FD;
  text-decoration: none;
  border-bottom: 1px solid rgba(196, 181, 253, 0.4);
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.signup-feature-text a:hover {
  color: #FFFFFF;
  border-color: rgba(255, 255, 255, 0.6);
}

/* === Platforms section (8 glass cards, 4x2 desktop) ======================= */

.signup-platforms-section {
  padding-block: var(--space-12) var(--space-12);
}

.signup-platforms-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  max-width: 1200px;
  margin: 0 auto;
}

.signup-platform-card {
  display: block;
  padding: 26px 22px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.06) 0%,
    rgba(124, 58, 237, 0.02) 100%);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 18px;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  text-decoration: none;
  color: inherit;
  transition: transform var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium),
              box-shadow var(--dur-hover) var(--ease-premium);
}
.signup-platform-card:hover {
  transform: translateY(-3px);
  border-color: rgba(167, 139, 250, 0.25);
  box-shadow: 0 12px 32px -12px rgba(124, 58, 237, 0.4);
}

.signup-platform-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.06);
  margin-bottom: 14px;
}

.signup-platform-title {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: -0.15px;
  color: #FFFFFF;
  margin: 0 0 8px;
}

.signup-platform-text {
  font-size: 13.5px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.7);
  margin: 0;
}

/* === Steps section (4 horizontal cards with numbered badges) ============== */

.signup-how-section {
  padding-block: var(--space-12) var(--space-12);
}

.signup-steps-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  max-width: 1200px;
  margin: 0 auto;
}

.signup-step-card {
  position: relative;
  padding: 32px 24px 28px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.06) 0%,
    rgba(124, 58, 237, 0.02) 100%);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 20px;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  text-align: center;
  transition: transform var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.signup-step-card:hover {
  transform: translateY(-2px);
  border-color: rgba(167, 139, 250, 0.2);
}

.signup-step-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--yellow);
  color: #08041A;
  font-size: 14px;
  font-weight: 800;
  font-family: var(--font-mono, ui-monospace, "JetBrains Mono", monospace);
  margin: 0 auto 16px;
  box-shadow: 0 4px 12px -2px rgba(250, 202, 51, 0.3);
}

.signup-step-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  background: rgba(167, 139, 250, 0.12);
  border: 1px solid rgba(167, 139, 250, 0.22);
  color: #C4B5FD;
  margin: 0 auto 16px;
}

.signup-step-title {
  font-size: 16px;
  font-weight: 700;
  letter-spacing: -0.1px;
  color: #C4B5FD;
  line-height: 1.3;
  margin: 0 0 10px;
}

.signup-step-text {
  font-size: 13.5px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.75);
  margin: 0;
}

/* === Amplify section (centered prose) ===================================== */

.signup-amplify-section {
  padding-block: var(--space-12) var(--space-16);
}

.signup-amplify-content {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}
.signup-amplify-content h2 {
  margin-bottom: 24px;
}

.signup-amplify-text {
  font-size: 16px;
  line-height: 1.8;
  color: rgba(255, 255, 255, 0.78);
  margin: 0 0 18px;
}
.signup-amplify-text:last-child {
  margin-bottom: 0;
}

/* === Responsive breakpoints =============================================== */

@media (max-width: 1024px) {
  .signup-platforms-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .signup-steps-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
  }
}

@media (max-width: 768px) {
  .signup-form-card {
    padding: 32px 24px;
    border-radius: 20px;
  }
  .signup-features-grid {
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .signup-platforms-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }
  .signup-feature-card,
  .signup-platform-card,
  .signup-step-card {
    padding: 24px 20px;
  }
  .signup-section-head {
    margin-bottom: 32px;
  }
  .signup-section-lead {
    font-size: 14.5px;
  }
  .signup-feature-text,
  .signup-platform-text,
  .signup-step-text {
    font-size: 14px;
  }
  .signup-amplify-text {
    font-size: 15px;
    line-height: 1.75;
  }
}

@media (max-width: 480px) {
  .signup-form-card {
    padding: 28px 20px;
  }
  .signup-platforms-grid,
  .signup-steps-grid {
    grid-template-columns: 1fr;
  }
  .signup-hero-tagline {
    font-size: 18px;
  }
  .signup-hero-subtagline {
    font-size: 14px;
  }
  .signup-feature-title,
  .signup-step-title {
    font-size: 16px;
  }
  .signup-platform-title {
    font-size: 16px;
  }
}

/* ============================================================================
   PHASE 8 ‚Äî Commit 2: Targeted polish (8 audit fixes)

   Applied via Python:
   - P1: .signup-form-section padding-block 32px ‚Üí 16px (vertical rhythm)
   - P2: .signup-label color 0.7 ‚Üí 0.85 alpha (AA contrast)
   - P3: .signup-input padding 12px ‚Üí 14px (mobile touch target ~48px)
   Applied via HTML restructure:
   - C1: page_url('signin') already correct at source (audit saw rendered HTML)
   - P9: <form action="/signup"> (was empty ‚Äî strips ?nocache= carryover)
   - P10: terms link onclick="event.stopPropagation()" (prevents checkbox toggle)
   - P5: amplify content wrapped in .signup-amplify-card glass container
   - P6: CTA copy "browse services" instead of "open ticket"
   Appended below:
   - C2: .signup-input :focus-visible state (WCAG 2.4.7 fix)
   - P5: .signup-amplify-card glass styling
   - P11: AltCha checkbox dark theme protective override
   ============================================================================ */

/* C2 ‚Äî Focus-visible state on form inputs (WCAG 2.4.7 ‚Äî Focus Visible)
   Commit 1 had :focus and :focus-visible declared together with the same
   styling. This override locks in the visible focus ring with proper
   layering (lavender border + soft 3px halo) and provides a :focus fallback
   for browsers that don't support :focus-visible (mainly older Safari). */
/* Phase 8 Commit 3 A2 fix: cascade-war winner via compound selector
   .signup-form-card input.signup-input:focus = 0,0,3,1 specificity (vs
   Bootstrap .form-control:focus = 0,0,2,0). Plus !important on every
   declaration for belt-and-suspenders. */
.signup-form-card input.signup-input:focus,
.signup-form-card input.signup-input:focus-visible {
  outline: none !important;
  border-color: rgba(167, 139, 250, 0.6) !important;
  background: rgba(255, 255, 255, 0.06) !important;
  box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.25) !important;
}
/* Belt: explicit -webkit-box-shadow to defeat Safari/iOS bundled focus ring */
.signup-form-card input.signup-input:focus {
  -webkit-box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.25) !important;
}

/* P5 ‚Äî Amplify section glass card wrapper
   Replaces the previous "centered prose floating in section" with a contained
   glass panel ‚Äî mirrors the Brand Pattern #2 .still-questions visual weight
   but for the marketing closing rather than support CTA. */
.signup-amplify-card {
  max-width: 800px;
  margin: 0 auto;
  padding: 48px 56px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.06) 0%,
    rgba(124, 58, 237, 0.02) 100%);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 24px;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  text-align: center;
  isolation: isolate;
}
@media (max-width: 640px) {
  .signup-amplify-card {
    padding: 32px 24px;
    border-radius: 18px;
  }
}

/* ============================================================================
   Phase 8 Commit 4 ‚Äî AltCha native theming API (replaces dead Commit 2/3 selectors)

   AltCha is a Web Component using Shadow DOM. Class selectors we invented
   in Commit 2 (.altcha-checkbox-wrapper) and Commit 3 (.altcha, [data-altcha])
   never matched anything because AltCha's actual DOM uses the custom-element
   tag <altcha-widget> + shadow internals that external CSS can't reach via
   regular class selectors.

   Three valid mechanisms for styling AltCha through its shadow boundary:
   1. CSS custom properties (inherit through shadow root ‚Äî most reliable)
   2. ::part() pseudo-element (only AltCha-exposed parts: checkbox/label/
      verified/error/spinner)
   3. data-theme="dark" attribute on widget OR ancestor (triggers built-in
      dark theme inside shadow root)

   This block uses (1) + (2). Layer 2 (data-theme attribute) is applied in
   signup.twig. Layer 3 (MutationObserver) sets data-theme defensively if
   missing + repositions the late-injected widget before the submit button.
   ============================================================================ */

altcha-widget {
  /* CSS custom props ‚Äî inherit through Shadow DOM, AltCha reads inside */
  --altcha-color-base: rgba(255, 255, 255, 0.04);
  --altcha-color-base-rgb: 255, 255, 255;
  --altcha-color-border: rgba(167, 139, 250, 0.25);
  --altcha-color-text: rgba(255, 255, 255, 0.9);
  --altcha-color-text-rgb: 255, 255, 255;
  --altcha-color-footer-bg: rgba(255, 255, 255, 0.02);
  --altcha-color-error: #FCA5A5;
  --altcha-color-error-rgb: 252, 165, 165;
  --altcha-border-radius: 10px;
  --altcha-max-width: 100%;

  /* Outer-element direct styles ‚Äî these apply to the host element */
  display: block;
  width: 100%;
  margin: 16px 0;
  border-radius: 10px;
}

/* Shadow piercing via ::part() ‚Äî AltCha-exposed theming parts */
altcha-widget::part(checkbox) {
  accent-color: var(--yellow, #FACA33);
}

altcha-widget::part(label) {
  color: rgba(255, 255, 255, 0.9);
  font-size: 13px;
}

altcha-widget::part(verified) {
  background: rgba(167, 139, 250, 0.15);
  color: #C4B5FD;
  border-color: rgba(167, 139, 250, 0.3);
}

altcha-widget::part(error) {
  color: #FCA5A5;
}

altcha-widget::part(spinner) {
  border-top-color: var(--yellow, #FACA33);
}

/* Wrapper around late-injected widget (margin preservation post-position-fix) */
.signup-captcha-wrapper {
  margin: 16px 0;
}


/* ============================================================================
   PHASE 8 ‚Äî Commit 5: A2 focus state NUCLEAR fix (max specificity + outline fallback)

   Audit history:
   - Commit 1: .signup-input:focus-visible           specificity 0,0,2,0
   - Commit 2: explicit :focus + :focus-visible      specificity 0,0,2,0
   - Commit 3: .signup-form-card input.signup-input:focus   specificity 0,0,3,1
              + !important on every declaration
   - DEPLOYED Commit 3 still showed Bootstrap default focus styles in browser.

   Hypotheses why Commit 3 lost:
   (H2) PP loads bootstrap.css AFTER style.css with !important somewhere
   (H3) Vendor bootstrap.css has higher specificity rule we can't see

   This commit applies maximum specificity attainable + outline fallback
   that wins via native browser focus indicator + JS inline-style backup
   in signup.twig (highest possible cascade priority ‚Äî browser-enforced).

   Compound selector specificity: 0,0,5,2 (highest .signup-input rule in file).
   Source order: APPENDED LATEST IN FILE so cascade later-wins applies.
   ============================================================================ */

form.signup-form .signup-form-card input.signup-input:focus,
form.signup-form .signup-form-card input.signup-input:focus-visible,
.signup-form-card input.form-control.signup-input:focus,
.signup-form-card input.form-control.signup-input:focus-visible {
  outline: 2px solid rgba(167, 139, 250, 0.6) !important;
  outline-offset: 0 !important;
  border-color: rgba(167, 139, 250, 0.6) !important;
  background: rgba(255, 255, 255, 0.06) !important;
  box-shadow:
    0 0 0 3px rgba(167, 139, 250, 0.25),
    inset 0 0 0 1px rgba(167, 139, 250, 0.6) !important;
}

/* Defensive blanket: any input within signup form card gets focus outline.
   Lower specificity but guaranteed visible if vendor CSS strips border/shadow. */
.signup-form-card input:focus,
.signup-form-card input:focus-visible {
  outline-color: rgba(167, 139, 250, 0.6) !important;
}

/* ============================================================================
   PHASE 9 ‚Äî Services page (best-smm-services.twig)
   Commit 2 HOTFIX: rewrite for PP-default HTML structure (verbatim from
   defaults/services.twig). All selectors target Bootstrap classes that PP
   bundles (.nav.nav-pills, .dropdown, .well.well-float, .table) ‚Äî no
   custom HTML structure to fight, no display:none cascade wars.

   Replaces Commit 1's broken structure (data-* hooks moved from TD to TR
   killed PP JS lookups). Commit 1 mobile cards-mode also removed ‚Äî
   horizontal-scroll table on mobile is more reliable when PP JS needs
   to find rows.
   ============================================================================ */

/* === Hero subtitle paragraphs (kept from Commit 1) ======================== */

.services-hero-tagline {
  font-size: clamp(20px, 1.8vw + 0.5rem, 26px);
  font-weight: 600;
  letter-spacing: -0.3px;
  color: rgba(255, 255, 255, 0.92);
  line-height: 1.3;
  margin: 16px 0 6px;
}

.services-hero-subtagline {
  font-size: clamp(15px, 1vw + 0.5rem, 17px);
  font-weight: 500;
  color: rgba(196, 181, 253, 0.85);
  line-height: 1.45;
  margin: 0 0 4px;
}

.services-hero-lead {
  max-width: 760px;
}

/* === Service browser scoping wrapper ====================================== */

.services-browser {
  /* Phase 9 Commit 5: container constraint (user-requested aesthetic).
     Table no longer full-width ‚Äî capped at 1280px and horizontally
     centered like other content sections of the page. */
  max-width: 1280px;
  margin: 0 auto 60px;
  padding: 0 20px;
}

.services-browser .row {
  margin: 0;
}

.services-browser .col-lg-12 {
  padding: 0;
}

/* ============================================================================
   Phase 9 Commit 9 ‚Äî Filter bar polish (Claude Chrome live-patch verified)

   Replaces Commit 2/5 filter bar block. Key changes:
   - Filter button: 174x44px touch target (was 76x36) + visible "All Categories"
     fallback label via [data-filter-active-category]:empty::before pseudo-element
   - Dropdown menu: z-index 2001 (was 100 ‚Äî insufficient against table-well
     stacking context) + alternating subtle stripes for 231-item scannability
   - Search container: locked 320px width with flex:0 0 auto (was 200-320px
     min/flex range that overflowed)
   - .well.well-float overflow: hidden ‚Üí visible (allows dropdown to escape
     catalog wrapper clipping)

   All values verified working via Claude Chrome DevTools live injection
   before commit (filter button 174x44, dropdown stacks above table, no
   overflow on search container, 231 categories scroll in 400px max-height).
   ============================================================================ */

/* 1. Filter bar container ‚Äî flex layout + own stacking context */
.services-browser .nav.nav-pills.services-nav-pills {
  position: relative;
  z-index: 50;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  padding: 16px 20px;
  max-width: 100%;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.08) 0%,
    rgba(124, 58, 237, 0.03) 100%);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 16px;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  list-style: none;
  margin: 0 0 24px 0;
}

.services-browser .nav.nav-pills > li {
  margin: 0;
  float: none;
  list-style: none;
}

/* 2. Filter button ‚Äî visible "All Categories" label + 44px WCAG touch target */
.services-browser .dropdown .btn.dropdown-toggle.btn-primary {
  background: rgba(167, 139, 250, 0.15) !important;
  border: 1px solid rgba(167, 139, 250, 0.35) !important;
  color: #FFFFFF !important;
  padding: 10px 18px !important;
  min-height: 44px !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  border-radius: 10px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  box-shadow: none !important;
  transition: background-color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}

.services-browser .dropdown .btn.dropdown-toggle.btn-primary:hover,
.services-browser .dropdown.open .btn.dropdown-toggle.btn-primary {
  background: rgba(167, 139, 250, 0.22) !important;
  border-color: rgba(167, 139, 250, 0.55) !important;
}

.services-browser .dropdown .btn.dropdown-toggle.btn-primary:focus-visible {
  outline: 2px solid rgba(167, 139, 250, 0.6) !important;
  outline-offset: 2px !important;
}

/* Fallback "All Categories" label when PP hasn't set active-category text */
.services-browser [data-filter-active-category]:empty::before {
  content: "All Categories";
  color: rgba(255, 255, 255, 0.95);
}

.services-browser .dropdown .btn.dropdown-toggle .caret {
  border-top-color: rgba(196, 181, 253, 0.9) !important;
  margin-left: 6px;
}

/* 3. Dropdown menu ‚Äî elevated z-index + alternating stripes for scannability */
.services-browser .nav.nav-pills > li.dropdown {
  position: relative;
}

.services-browser .dropdown.open {
  z-index: 2000;
}

.services-browser .dropdown-menu {
  position: absolute !important;
  top: 100% !important;
  left: 0 !important;
  z-index: 2001 !important;
  margin-top: 4px !important;
  min-width: 280px !important;
  max-height: 400px !important;
  overflow-y: auto !important;
  background: #0D0623 !important;
  border: 1px solid rgba(167, 139, 250, 0.3) !important;
  border-radius: 12px !important;
  padding: 8px !important;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.5) !important;
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
}

.services-browser .dropdown-menu > li > a,
.services-browser .dropdown-menu .dropdown-item {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 8px 12px !important;
  color: rgba(255, 255, 255, 0.9) !important;
  border-radius: 8px !important;
  font-size: 13px !important;
  text-decoration: none !important;
  transition: background-color var(--dur-hover) var(--ease-premium),
              color var(--dur-hover) var(--ease-premium);
}

.services-browser .dropdown-menu > li > a:hover,
.services-browser .dropdown-menu .dropdown-item:hover,
.services-browser .dropdown-menu .dropdown-item:focus,
.services-browser .dropdown-menu > li.active > a {
  background: rgba(167, 139, 250, 0.18) !important;
  color: #FFFFFF !important;
}

/* Alternating subtle stripes ‚Äî improves scannability for long category list */
.services-browser .dropdown-menu > li:nth-child(even) > a,
.services-browser .dropdown-menu .dropdown-item:nth-child(even) {
  background: rgba(167, 139, 250, 0.04);
}

.services-browser .dropdown-menu .dropdown-item .fa-star {
  color: var(--yellow, #FACA33);
}

.services-browser .dropdown-menu img.img-responsive {
  width: 16px !important;
  height: 16px !important;
  object-fit: contain;
  display: inline-block !important;
  margin: 0 !important;
}

/* 4. Search container ‚Äî Phase 9 Commit 14 Option C (verified inline grow)
   Commit 12 pin-right (margin-left: auto + width: 480px) created 407px
   dead-space gap between filter cluster and search bar at wide viewports.
   Option C: kill auto-margin, let search grow inline with filter row.
   flex: 1 1 320px grows from 320 basis up to whatever room remains ‚Äî
   industry SaaS pattern (Linear, Stripe service catalogs use this). */
.services-browser ul.nav.nav-pills > li.search,
.services-browser ul.nav.nav-pills > li.pull-right.search {
  margin-left: 0 !important;          /* OVERRIDE Commit 12 auto-margin */
  flex: 1 1 320px !important;          /* grow naturally with row */
  width: auto !important;
  max-width: none !important;         /* Phase 9 Commit 17 ‚Äî NO cap (search grows do desne ivice, nav padding-right keeps 20px breathing) */
  min-width: 280px !important;
  float: none !important;
  clear: none !important;
  position: relative !important;
  right: auto !important;
}

/* Phase 9 Commit 15 ‚Üí 17 ‚Üí 18 ‚Äî Desktop nav-pills padding-right 32px (breathing from right edge) */
@media (min-width: 768px) {
  .services-browser ul.nav.nav-pills.services-nav-pills {
    padding-right: 32px !important;
  }
}

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 9 Commit 19 ‚Äî Yellow accent pass (brand balance, no layout changes)
   3 surgical touches:
     (a) Service prices (Rate) ‚Üí #FACA33 bold ‚Äî primary value pop
     (b) Marketing bullets ‚Üí yellow ‚úì markers (replaces default disc bullets)
     (c) Category banners (mobile) ‚Üí 8px yellow corner dot with glow
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */

/* Phase 9 Commit 20 ‚Äî REVERT: prices back to white bold (yellow on every row was too much visual noise) */
#service-table.services-table tbody tr.service-row > td:nth-child(3) {
  color: #FFFFFF !important;
  font-weight: 700 !important;
}

/* Mobile ::before label STAYS lavender (so only the price value is yellow) */
@media (max-width: 767px) {
  html body #service-table.services-table tbody tr.service-row > td:nth-child(3)::before {
    color: rgba(196, 181, 253, 0.7) !important;
    font-weight: 500 !important;
  }

  /* Phase 9 Commit 20 ‚Äî REMOVED corner dot ::after (redundant with full yellow banner treatment) */
}

/* (b) Marketing bullet markers ‚Äî yellow ‚úì checkmarks */
.services-marketing ul.services-bullet-list,
.services-marketing-section ul.services-bullet-list,
.services-marketing-section ul,
section[class*="marketing"] ul {
  list-style: none !important;
  padding-left: 0 !important;
}

.services-marketing ul.services-bullet-list li,
.services-marketing-section ul.services-bullet-list li,
.services-marketing-section ul li,
section[class*="marketing"] ul li {
  position: relative !important;
  padding-left: 28px !important;
  margin-bottom: 10px !important;
  line-height: 1.6 !important;
}

.services-marketing ul.services-bullet-list li::before,
.services-marketing-section ul.services-bullet-list li::before,
.services-marketing-section ul li::before,
section[class*="marketing"] ul li::before {
  content: "‚úì" !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  color: #FACA33 !important;
  font-weight: 700 !important;
  font-size: 16px !important;
  line-height: 1.6 !important;
}

/* Phase 9 Commit 20 ‚Äî Filter funnel + search magnifier icons yellow (FA icon coloring) */
.services-browser ul.nav.nav-pills > li .btn .fa-filter,
.services-browser ul.nav.nav-pills > li .dropdown-toggle .fa-filter,
.services-browser ul.nav.nav-pills > li .fal.fa-filter,
.services-browser ul.nav.nav-pills > li .fa.fa-filter,
.services-browser ul.nav.nav-pills > li svg[class*="filter"] {
  color: #FACA33 !important;
  fill: #FACA33 !important;
}

.services-browser ul.nav.nav-pills > li.search .input-group-btn .btn .fa-search,
.services-browser ul.nav.nav-pills > li.search .input-group-btn .btn .fa.fa-search,
.services-browser ul.nav.nav-pills > li.search button[data-filter-serch-btn] .fa-search,
.services-browser ul.nav.nav-pills > li.search button[data-filter-serch-btn] svg,
.services-browser ul.nav.nav-pills > li.search .input-group-btn .btn svg {
  color: #FACA33 !important;
  fill: #FACA33 !important;
}

/* Search button subtle yellow on hover */
.services-browser ul.nav.nav-pills > li.search .input-group-btn .btn:hover {
  background: rgba(250, 202, 51, 0.12) !important;
  border-color: #FACA33 !important;
}

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 9 Commit 21 ‚Äî Premium Polish Pass
   1 BUG fix (universal) + 4 polish wins (desktop only). CSS-only, ~40 lines.
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */

/* FIX 1 ‚Äî Description yellow leak (BUG, universal ‚Äî all viewports)
   Cascade trap: description rows inherit data-filter-table-category-id from
   their sibling category context; an external sibling rule colors the text
   yellow without a :not(.service-description-row) exclusion. We override
   directly on the description td to restore readable body text. */
html body #service-table.services-table tbody tr.service-description-row > td,
html body #service-table.services-table tbody tr.service-description-row.is-open > td {
  color: rgba(255, 255, 255, 0.85) !important;
  line-height: 1.65 !important;
}

/* POLISH 1 ‚Äî Service row hover rail (desktop only) ‚Äî lavender inset 3px + bg tint */
@media (min-width: 768px) {
  #service-table.services-table tbody tr.service-row {
    transition: background-color 0.2s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
  }
  #service-table.services-table tbody tr.service-row:hover {
    background-color: rgba(167, 139, 250, 0.05) !important;
    box-shadow: inset 3px 0 0 0 rgba(167, 139, 250, 0.55) !important;
  }
}

/* POLISH 2 ‚Äî Tabular numerals (Rate/Min/Max, universal) ‚Äî decimal alignment */
#service-table.services-table tbody tr.service-row > td:nth-child(3),
#service-table.services-table tbody tr.service-row > td:nth-child(4),
#service-table.services-table tbody tr.service-row > td:nth-child(5) {
  font-variant-numeric: tabular-nums !important;
  font-feature-settings: "tnum" 1, "kern" 1 !important;
}

/* POLISH 3 ‚Äî Details button micro-lift (desktop only) ‚Äî translateY + yellow glow */
@media (min-width: 768px) {
  #service-table.services-table tbody tr.service-row .btn-desc-toggle,
  #service-table.services-table tbody tr.service-row button.btn-desc-toggle {
    transition: transform 0.18s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.18s cubic-bezier(0.16, 1, 0.3, 1),
                background-color 0.18s ease !important;
  }
  /* Phase 9 Commit 24 ‚Äî desktop micro-lift sync: explicit yellow text preserve, stronger glow */
  #service-table.services-table tbody tr.service-row .btn-desc-toggle:hover,
  #service-table.services-table tbody tr.service-row button.btn-desc-toggle:hover {
    transform: translateY(-1px) !important;
    color: #FACA33 !important;
    background-color: rgba(250, 202, 51, 0.10) !important;
    box-shadow: 0 4px 12px rgba(250, 202, 51, 0.25),
                0 0 0 1px rgba(250, 202, 51, 0.6) inset !important;
  }
  #service-table.services-table tbody tr.service-row .btn-desc-toggle:active,
  #service-table.services-table tbody tr.service-row button.btn-desc-toggle:active {
    transform: translateY(0) !important;
    box-shadow: 0 1px 4px rgba(250, 202, 51, 0.12) inset !important;
  }
}

/* POLISH 4 ‚Äî Card glass depth (desktop only) ‚Äî services-catalog-well box-shadow lift */
@media (min-width: 768px) {
  .services-browser .well.well-float.services-catalog-well {
    box-shadow: 0 20px 60px -20px rgba(124, 58, 237, 0.25),
                inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
  }
}

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 9 Commit 22 ‚Äî Description border/bg leak fix
   Lesson #4 cascade trap (same root as Commit 21 text leak):
   description rows share data-filter-table-category-id with category banners,
   so Commit 20 yellow gradient bg + 4px yellow border-left also paints them.
   We force neutral dark on the description tr + transparent on inner td.
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */
html body #service-table.services-table tbody tr.service-description-row,
html body #service-table.services-table tbody tr.service-description-row.is-open {
  border-left: 0 !important;
  background: rgba(8, 4, 26, 0.6) !important;
  box-shadow: none !important;
}

html body #service-table.services-table tbody tr.service-description-row > td,
html body #service-table.services-table tbody tr.service-description-row.is-open > td {
  background: transparent !important;
  border-left: 0 !important;
}

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 9 Commit 25 ‚Äî Category banner bottom hairline + .btn-default fallback
   (the bulk of Commit 21 desktop polish is mirrored in twig <style> backup
    to bypass PP Style Editor @media drop on external CSS ‚Äî see Lesson #10)
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */

/* Phase 9 Commit 26 ‚Äî REMOVED Commit 25 banner bottom hairline (redundant with solid yellow bg) */

/* .btn-default fallback (in case PP renders Details w/o .btn-desc-toggle class) */
@media (min-width: 768px) {
  html body #service-table.services-table tbody tr.service-row a.btn-default,
  html body #service-table.services-table tbody tr.service-row .btn-default {
    transition: transform 0.18s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.18s cubic-bezier(0.16, 1, 0.3, 1),
                background-color 0.18s ease,
                color 0.18s ease !important;
  }
  html body #service-table.services-table tbody tr.service-row a.btn-default:hover,
  html body #service-table.services-table tbody tr.service-row .btn-default:hover {
    transform: translateY(-1px) !important;
    color: #FACA33 !important;
    background-color: rgba(250, 202, 51, 0.10) !important;
    box-shadow: 0 6px 14px rgba(250, 202, 51, 0.22),
                inset 0 0 0 1px rgba(250, 202, 51, 0.7) !important;
  }
  html body #service-table.services-table tbody tr.service-row a.btn-default:active,
  html body #service-table.services-table tbody tr.service-row .btn-default:active {
    transform: translateY(0) !important;
  }
}

/* Phase 9 Commit 12 ‚Äî REMOVE vertical divider (was Layout C+ feature, no
   longer needed when search is right-pinned with auto-margin gap). */
.services-browser ul.nav.nav-pills > li.search::before {
  display: none !important;
}

/* Defensive: kill Bootstrap input legacy float inside flex input-group */
.services-browser .input-group > .form-control.services-search-input {
  float: none !important;
}

.services-browser .nav.nav-pills > li.search .input-group {
  width: 100% !important;
  display: flex !important;
  align-items: stretch !important;
}

.services-browser .nav.nav-pills > li.search .input-group .form-control.services-search-input {
  flex: 1 1 auto !important;
  width: auto !important;
  height: auto !important;
  min-height: 44px !important;
  padding: 10px 14px !important;
  background: rgba(255, 255, 255, 0.04);
  color: #FFFFFF;
  border: 1px solid rgba(167, 139, 250, 0.25);
  border-radius: 10px 0 0 10px !important;
  font-size: 14px;
  transition: background-color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium),
              box-shadow var(--dur-hover) var(--ease-premium);
}
.services-browser .nav.nav-pills > li.search .input-group .form-control.services-search-input::placeholder {
  color: rgba(255, 255, 255, 0.4);
}
.services-browser .nav.nav-pills > li.search .input-group .form-control.services-search-input:hover {
  border-color: rgba(167, 139, 250, 0.4);
}
.services-browser .nav.nav-pills > li.search .input-group .form-control.services-search-input:focus,
.services-browser .nav.nav-pills > li.search .input-group .form-control.services-search-input:focus-visible {
  outline: 2px solid rgba(167, 139, 250, 0.6) !important;
  outline-offset: 0 !important;
  border-color: rgba(167, 139, 250, 0.6) !important;
  background: rgba(255, 255, 255, 0.06) !important;
  box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.25) !important;
}

.services-browser .nav.nav-pills > li.search .input-group-btn .btn {
  flex: 0 0 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 14px !important;
  min-height: 44px !important;
  background: rgba(167, 139, 250, 0.15) !important;
  color: #C4B5FD !important;
  border: 1px solid rgba(167, 139, 250, 0.25) !important;
  border-left: none !important;
  border-radius: 0 10px 10px 0 !important;
  cursor: pointer;
  transition: background-color var(--dur-hover) var(--ease-premium),
              color var(--dur-hover) var(--ease-premium);
}
.services-browser .nav.nav-pills > li.search .input-group-btn .btn:hover {
  background: rgba(167, 139, 250, 0.25) !important;
  color: #FFFFFF !important;
}

/* === Catalog wrapper ‚Äî target Bootstrap .well.well-float ================== */

.services-browser .well.well-float.services-catalog-well {
  background: linear-gradient(180deg,
    rgba(8, 4, 26, 0.5) 0%,
    rgba(8, 4, 26, 0.3) 100%) !important;
  border: 1px solid rgba(167, 139, 250, 0.15) !important;
  border-radius: 16px !important;
  padding: 0 !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  /* Phase 9 Commit 9: overflow: hidden ‚Üí visible so filter dropdown can
     escape the catalog wrapper clipping context (dropdown z-index 2001 +
     position absolute relies on no ancestor overflow:hidden). */
  overflow: visible !important;
  margin: 0;
}

/* === Service table ‚Äî target #service-table (preserves PP id) ============= */

#service-table.services-table.table {
  width: 100%;
  margin: 0;
  background: transparent;
  color: rgba(255, 255, 255, 0.85);
  border-collapse: separate;
  border-spacing: 0;
}

#service-table.services-table thead {
  background: rgba(124, 58, 237, 0.1);
}

#service-table.services-table thead th {
  text-align: left;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: rgba(196, 181, 253, 0.9);
  padding: 14px 16px;
  background: transparent;
  border-bottom: 2px solid rgba(167, 139, 250, 0.25);
  border-top: none;
}

#service-table.services-table thead th .fa-exclamation-circle {
  margin-left: 4px;
  color: rgba(196, 181, 253, 0.5);
  font-size: 12px;
}

#service-table.services-table tbody tr {
  border-bottom: 1px solid rgba(255, 255, 255, 0.04);
  transition: background-color 200ms var(--ease-premium);
}

/* Category header rows (those whose td has colspan attribute) */
#service-table.services-table tbody tr:has(> td[colspan]) {
  background: linear-gradient(90deg,
    rgba(167, 139, 250, 0.12) 0%,
    rgba(124, 58, 237, 0.06) 100%);
}
#service-table.services-table tbody tr td[colspan] {
  padding: 14px 16px;
  font-size: 14px;
  color: #C4B5FD;
  border-bottom: 1px solid rgba(167, 139, 250, 0.15);
}
#service-table.services-table tbody tr td[colspan] strong {
  color: #FFFFFF;
  font-weight: 700;
  font-size: 15px;
  margin-left: 6px;
}

/* Service rows ‚Äî alternate zebra + hover */
#service-table.services-table tbody tr:not(:has(> td[colspan])):nth-of-type(odd) {
  background: rgba(167, 139, 250, 0.025);
}
#service-table.services-table tbody tr:not(:has(> td[colspan])):hover {
  background: rgba(167, 139, 250, 0.08);
}

#service-table.services-table tbody tr td {
  padding: 12px 16px;
  font-size: 14px;
  color: rgba(255, 255, 255, 0.85);
  border: none;
  vertical-align: middle;
}

/* Service ID column (data-filter-table-service-id) ‚Äî monospace lavender */
#service-table.services-table tbody tr td[data-filter-table-service-id] {
  font-family: var(--font-mono, ui-monospace, "JetBrains Mono", "Geist Mono", monospace);
  color: #A78BFA;
  font-size: 13px;
  font-weight: 500;
}

/* Service name */
#service-table.services-table tbody tr td.service-name {
  color: rgba(255, 255, 255, 0.95);
  font-weight: 500;
}

/* Favorite star button */
#service-table.services-table tbody tr td span[data-favorite-service-id] {
  cursor: pointer;
  color: rgba(255, 255, 255, 0.3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 6px;
  transition: color var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium),
              transform var(--dur-hover) var(--ease-premium);
}
#service-table.services-table tbody tr td span[data-favorite-service-id]:hover {
  color: var(--yellow, #FACA33);
  background: rgba(250, 202, 51, 0.08);
  transform: scale(1.1);
}
#service-table.services-table tbody tr td span[data-favorite-service-id].favorite-active {
  color: var(--yellow, #FACA33);
}

/* Mobile description row ‚Äî Bootstrap visible-xs/sm pattern preserved */
#service-table.services-table tbody tr.service-description.visible-xs td,
#service-table.services-table tbody tr.service-description.visible-sm td {
  padding: 6px 16px 14px;
  background: rgba(8, 4, 26, 0.4);
  font-size: 13px;
  color: rgba(255, 255, 255, 0.7);
  line-height: 1.55;
  border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}

/* === Marketing block (kept from Commit 1) ================================ */

.services-marketing-section {
  padding-block: var(--space-12) var(--space-10);
}

.services-section-head {
  text-align: center;
  max-width: 800px;
  margin: 0 auto 40px;
}
.services-section-head h2 {
  margin-bottom: 16px;
}

.services-marketing-content {
  max-width: 800px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 36px;
}

.services-marketing-article {
  padding: 28px 32px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.04) 0%,
    rgba(124, 58, 237, 0.01) 100%);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 18px;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}

.services-marketing-h3 {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.2px;
  color: #C4B5FD;
  line-height: 1.3;
  margin: 0 0 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(167, 139, 250, 0.15);
}

.services-marketing-article p {
  font-size: 15px;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.78);
  margin: 0 0 14px;
}
.services-marketing-article p:last-child {
  margin-bottom: 0;
}
.services-marketing-article a {
  color: #C4B5FD;
  text-decoration: none;
  border-bottom: 1px solid rgba(196, 181, 253, 0.4);
  transition: color var(--dur-hover) var(--ease-premium),
              border-color var(--dur-hover) var(--ease-premium);
}
.services-marketing-article a:hover {
  color: #FFFFFF;
  border-color: rgba(255, 255, 255, 0.6);
}

.services-bullet-intro {
  margin-bottom: 12px !important;
  color: rgba(255, 255, 255, 0.88) !important;
}

.services-bullet-list {
  list-style: none;
  padding: 0;
  margin: 0 0 8px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.services-bullet-list li {
  position: relative;
  padding-left: 22px;
  font-size: 15px;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.78);
}
.services-bullet-list li::before {
  content: "‚óÜ";
  position: absolute;
  left: 0;
  top: 0;
  color: #C4B5FD;
  font-size: 11px;
  line-height: 1.8;
}

/* === Sign Up CTA section (kept from Commit 1) ============================ */

.services-signup-cta-section {
  padding-block: var(--space-10) var(--space-12);
}

.services-signup-cta-card {
  max-width: 820px;
  margin: 0 auto;
  padding: 56px 48px;
  text-align: center;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.08) 0%,
    rgba(124, 58, 237, 0.03) 100%);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 24px;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  isolation: isolate;
}
.services-signup-cta-card h2 {
  margin-bottom: 20px;
}

.services-signup-cta-text {
  font-size: 16px;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.85);
  max-width: 640px;
  margin: 0 auto 24px;
}

.services-signup-cta-buttons {
  display: flex;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
}

.services-signup-cta-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 32px;
  background: var(--yellow, #FACA33);
  color: #08041A;
  border: 1px solid var(--yellow, #FACA33);
  border-radius: 12px;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.2px;
  text-decoration: none;
  transition: transform var(--dur-hover) var(--ease-premium),
              box-shadow var(--dur-hover) var(--ease-premium),
              background-color var(--dur-hover) var(--ease-premium);
}
/* Phase 9 Commit 24 ‚Äî CTA hover refinement (same yellow fill, just stronger glow + inset highlight ring) */
.services-signup-cta-btn:hover,
a.services-signup-cta-btn:hover {
  transform: translateY(-2px);
  background: #FACA33;
  color: #08041A;
  text-decoration: none;
  box-shadow: 0 10px 28px rgba(250, 202, 51, 0.45),
              0 0 0 1px rgba(255, 255, 255, 0.15) inset;
}
.services-signup-cta-btn:focus-visible {
  outline: 2px solid #A78BFA;
  outline-offset: 3px;
}

/* === Admin services text wrapper (kept from Commit 1) ==================== */

.services-admin-text-section {
  padding-block: var(--space-6) var(--space-10);
}
.services-admin-text-wrapper {
  max-width: 760px;
  margin: 0 auto;
  padding: 28px 32px;
  background: linear-gradient(180deg,
    rgba(124, 58, 237, 0.04) 0%,
    rgba(124, 58, 237, 0.01) 100%);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 16px;
  font-size: 15px;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.78);
}

/* === Modal dark theme override (defensive ‚Äî still applies if used) ======= */

.modal-content {
  background: linear-gradient(180deg, rgba(8, 4, 26, 0.95), rgba(8, 4, 26, 0.92));
  border: 1px solid rgba(167, 139, 250, 0.2);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
  border-radius: 24px;
  color: rgba(255, 255, 255, 0.9);
  box-shadow: 0 24px 60px -20px rgba(0, 0, 0, 0.6);
}
.modal-content .modal-header,
.modal-content .modal-footer {
  border-color: rgba(167, 139, 250, 0.12);
}
.modal-content .modal-title {
  color: #FFFFFF;
  font-weight: 700;
}
.modal-content .close,
.modal-content button.close {
  color: rgba(255, 255, 255, 0.6);
  text-shadow: none;
  opacity: 1;
}
.modal-content .close:hover {
  color: #FFFFFF;
}

/* === Responsive ‚Äî mobile filter bar stack + horizontal-scroll table ====== */

@media (max-width: 1024px) {
  .services-browser .nav.nav-pills.services-nav-pills {
    padding: 16px 18px;
  }
}

@media (max-width: 767.98px) {
  .services-browser {
    margin-bottom: 40px;
  }
  .services-browser .nav.nav-pills.services-nav-pills {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    padding: 14px;
  }
  .services-browser .nav.nav-pills > li.pull-right.search {
    margin-left: 0;
    flex: 1;
    width: 100%;
  }
  .services-browser .nav.nav-pills > li {
    width: 100%;
  }
  .services-browser .nav.nav-pills > li .dropdown {
    width: 100%;
  }
  .services-browser .nav.nav-pills > li .dropdown .btn.btn-primary.dropdown-toggle {
    width: 100%;
    justify-content: space-between;
  }
  .services-browser .nav.nav-pills > li .dropdown-menu {
    width: 100%;
  }

  /* Horizontal-scroll table on mobile ‚Äî keeps table structure intact so PP JS
     can still find rows. Bootstrap .hidden-xs already hides extra columns. */
  .services-browser .well.well-float.services-catalog-well {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  #service-table.services-table {
    min-width: 480px;
  }
  #service-table.services-table thead th,
  #service-table.services-table tbody td {
    padding: 10px 12px;
    font-size: 13px;
  }
  .services-marketing-section,
  .services-signup-cta-section {
    padding-block: var(--space-8) var(--space-8);
  }
  .services-marketing-article {
    padding: 22px 22px;
  }
  .services-signup-cta-card {
    padding: 40px 24px;
    border-radius: 20px;
  }
  .services-signup-cta-text {
    font-size: 15px;
  }
}

@media (max-width: 480px) {
  .services-marketing-h3 {
    font-size: 18px;
  }
  .services-marketing-article p,
  .services-bullet-list li {
    font-size: 14px;
  }
  .services-signup-cta-btn {
    padding: 12px 24px;
    font-size: 14.5px;
  }
}


/* ============================================================================
   PHASE 9 ‚Äî Commit 3: Services table polish (column widths + description
   collapse + category emphasis)

   3 audit-driven fixes:
     - Fix 1: table-layout fixed via <colgroup> ‚Äî description col 110px,
              service col grows via auto; no more 40% description hogging
     - Fix 2: description always-visible row ‚Üí Details button toggles on
              desktop (CSS hides default, .is-open class shows). Mobile
              keeps visible-xs/sm always-visible PP default.
     - Fix 3: category row emphasis ‚Äî stronger gradient + left accent +
              uppercase tracking on container, readable strong (name)
   ============================================================================ */

/* === Phase 9 Commit 5 ‚Äî NUCLEAR fix (Path B verified via live patch) =====
   Commit 3 used table-layout:fixed + colgroup col widths.
   Commit 4 specificity-bumped col selectors to beat Bootstrap .col-* catch-all.
   Neither broke through ‚Äî service col still collapsed under some cascade event.

   Path B (verified working via Claude Chrome DevTools injection):
   - Switch table-layout back to AUTO so browser distributes via intrinsic widths
   - Hide <colgroup> entirely with display:none ‚Äî removes the col-width vector
     that Bootstrap grid utilities were hijacking
   - Use TH/TD direct width hints with the "width: 1%" shrink-to-fit pattern
     on nowrap columns (auto layout treats 1% as minimum, then shrinks)
   - service-name gets explicit width:auto + min-width:280px so it
     flex-grows to fill remaining row width without collapse risk
   - Added .services-browser max-width:1280px so table is no longer
     full viewport-width (user requested aesthetic constraint)
   ========================================================================== */

#service-table {
  table-layout: auto !important;
  width: 100% !important;
}

/* Hide colgroup entirely ‚Äî let browser distribute via TH/TD width hints
   (this is the path that survived Bootstrap grid utility cascade attack) */
#service-table colgroup {
  display: none !important;
}

#service-table th,
#service-table td {
  padding: 10px 12px;
  vertical-align: middle;
}

/* ID column ‚Äî first child (or second if favorites enabled) ‚Äî compact */
#service-table th:first-child:not(.width-service-name),
#service-table td:first-child:not(.service-name) {
  width: 60px !important;
}

/* Service name ‚Äî flex grow, min-width safeguard, wrap to multiline if long */
#service-table th.width-service-name,
#service-table td.service-name {
  width: auto !important;
  min-width: 280px !important;
  max-width: none !important;
  white-space: normal !important;
  word-break: break-word !important;
}

/* Numeric columns (.nowrap) ‚Äî shrink-to-fit pattern with tabular numerics */
#service-table th.nowrap,
#service-table td.nowrap {
  width: 1% !important;
  white-space: nowrap !important;
  font-variant-numeric: tabular-nums !important;
}

#service-table td.nowrap {
  text-align: right;
}
#service-table th.nowrap {
  text-align: center;
}

/* Details action cell ‚Äî locked 110px + centered button */
#service-table th.service-description__th,
#service-table td.service-description-cell {
  width: 110px !important;
  text-align: center !important;
}

#service-table td.text-right {
  text-align: right;
}

/* === FIX 2: Description collapse mechanics =============================== */

/* Phase 9 Commit 20 ‚Äî Details button yellow outline ‚Üí filled hover (interactive yellow accent) */
.btn-desc-toggle,
button.btn-desc-toggle,
.services-table .btn-desc-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 14px !important;
  background: transparent !important;
  border: 1.5px solid #FACA33 !important;
  color: #FACA33 !important;
  border-radius: 8px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  font-family: inherit;
  cursor: pointer !important;
  white-space: nowrap;
  transition: all 0.2s ease !important;
}

/* Phase 9 Commit 24 ‚Äî Details btn hover refinement (yellow text PRESERVE, no fill flip) */
.btn-desc-toggle:hover,
button.btn-desc-toggle:hover,
.services-table .btn-desc-toggle:hover {
  background: rgba(250, 202, 51, 0.10) !important;
  color: #FACA33 !important;
  border-color: #FACA33 !important;
  box-shadow: 0 4px 14px rgba(250, 202, 51, 0.25),
              0 0 0 1px rgba(250, 202, 51, 0.6) inset !important;
}

.btn-desc-toggle:focus,
.btn-desc-toggle:focus-visible,
button.btn-desc-toggle:focus {
  outline: 2px solid #FACA33 !important;
  outline-offset: 2px !important;
}

.btn-desc-toggle .chev {
  display: inline-block;
  font-size: 10px;
  transition: transform 200ms ease;
}

.btn-desc-toggle[aria-expanded="true"] .chev {
  transform: rotate(180deg);
}

.btn-desc-toggle[aria-expanded="true"] {
  background: rgba(250, 202, 51, 0.15);
  border-color: rgba(250, 202, 51, 0.4);
  color: var(--yellow, #FACA33);
}

/* Description row ‚Äî desktop hides by default; .is-open promotes to table-row.
   Mobile keeps Bootstrap visible-xs/sm pattern (always-visible). */
@media (min-width: 768px) {
  #service-table tr.service-description-row.visible-xs.visible-sm {
    display: none !important;
  }
  #service-table tr.service-description-row.visible-xs.visible-sm.is-open {
    display: table-row !important;
  }
  #service-table tr.service-description-row td {
    background: rgba(167, 139, 250, 0.04) !important;
    border-left: 3px solid rgba(167, 139, 250, 0.5);
    padding: 16px 20px !important;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
    font-size: 14px;
  }
}

/* === FIX 3: Category row emphasis (gradient + left accent + uppercase) === */

/* === Phase 9 Commit 27 ‚Äî Desktop category banner Variant E hybrid (audit 9.4/10) ===
   Gradient yellow 20% ‚Üí lavender 8% @ 135¬∞ + 4px yellow rail + white bold uppercase
   text + inset bottom rule + soft outer glow. Brand harmony ties to hero gradient. */
#service-table tbody tr[data-filter-table-category-id] > td[colspan] {
  background: linear-gradient(135deg, rgba(250, 202, 51, 0.20) 0%, rgba(124, 58, 237, 0.08) 100%) !important;
  background-image: linear-gradient(135deg, rgba(250, 202, 51, 0.20) 0%, rgba(124, 58, 237, 0.08) 100%) !important;
  border: none !important;
  border-left: 4px solid #FACA33 !important;
  box-shadow: inset 0 -2px 0 rgba(250, 202, 51, 0.35),
              0 2px 12px rgba(250, 202, 51, 0.10) !important;
  padding: 16px 20px !important;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #FFFFFF !important;
}

/* Category name <strong> ‚Äî white on hybrid gradient */
#service-table tbody tr[data-filter-table-category-id] > td[colspan] strong,
#service-table tbody tr[data-filter-table-category-id] > td[colspan] b {
  display: inline-block;
  font-size: 15px;
  letter-spacing: 0.02em;
  text-transform: none;
  color: #FFFFFF !important;
  font-weight: 700;
  margin-left: 4px;
}

/* Defensive nuclear-specificity desktop override (in case external CSS specificity
   competes with Commit 14 mobile nuclear prefix already established) */
@media (min-width: 768px) {
  html body #service-table.services-table tbody tr[data-filter-table-category-id]:not(.service-row):not(.service-description-row) {
    background: transparent !important;
    box-shadow: none !important;
  }
  html body #service-table.services-table tbody tr[data-filter-table-category-id]:not(.service-row):not(.service-description-row) > td {
    background: linear-gradient(135deg, rgba(250, 202, 51, 0.20) 0%, rgba(124, 58, 237, 0.08) 100%) !important;
    background-image: linear-gradient(135deg, rgba(250, 202, 51, 0.20) 0%, rgba(124, 58, 237, 0.08) 100%) !important;
    border-left: 4px solid #FACA33 !important;
    box-shadow: inset 0 -2px 0 rgba(250, 202, 51, 0.35),
                0 2px 12px rgba(250, 202, 51, 0.10) !important;
    color: #FFFFFF !important;
    font-weight: 700 !important;
  }
  html body #service-table.services-table tbody tr[data-filter-table-category-id]:not(.service-row):not(.service-description-row) > td strong,
  html body #service-table.services-table tbody tr[data-filter-table-category-id]:not(.service-row):not(.service-description-row) > td b {
    color: #FFFFFF !important;
    font-weight: 700 !important;
  }
}

/* Optional D (deferred to a follow-up commit): sticky category headers
   via position: sticky; top: 0; z-index: 5; backdrop-filter: blur(8px); */


/* Phase 9 Commit 4 numeric column rule + Commit 4 description-cell center
   align ‚Äî now consolidated into the Path B nuclear block above (see Commit 5
   comment header). This stub kept as a marker so future grep audits don't
   confuse-find missing rules. */


/* ============================================================================
   PHASE 9 ‚Äî Commit 7: 6 audit-driven small fixes bundle
   ============================================================================

   V1 (CRITICAL) ‚Äî Description body inherits text-transform:uppercase +
     letter-spacing from Commit 3 category eyebrow rule (td[colspan] selector
     matched description row's td[colspan="100%"] inadvertently). Reset.
   V2 (HTML)     ‚Äî header "Description" ‚Üí "Details" (no wrap, matches button)
   V6            ‚Äî empty cells render em-dash placeholder (no broken look)
   V8            ‚Äî service row hover state (lavender wash, 150ms transition)
   A4 (HTML)     ‚Äî search input aria-label for screen readers
   A7 (global)   ‚Äî prefers-reduced-motion guard for data-reveal animations
   ============================================================================ */

/* V1 ‚Äî Description body NOT uppercase (cascade reset) */
#service-table tr.service-description-row > td {
  text-transform: none !important;
  letter-spacing: normal !important;
  font-size: 14px !important;
  line-height: 1.6 !important;
  color: rgba(255, 255, 255, 0.85) !important;
}

/* V6 retry (Commit 8) ‚Äî empty cell placeholder via Twig conditional + .cell-placeholder
   span. Replaces :empty pseudo-class which didn't match PP's empty-string TDs
   (only matches absolute-empty elements). */
#service-table td .cell-placeholder {
  color: rgba(196, 181, 253, 0.35);
  font-weight: 400;
}

/* V8 retry (Commit 8) ‚Äî service row hover via .service-row class (no :has() needed).
   Replaces :not(:has(td[colspan])):not(.service-description-row) selector chain
   which silently failed in some browser CSS support edge cases. */
#service-table tbody tr.service-row:hover {
  background: rgba(167, 139, 250, 0.06) !important;
  transition: background 150ms ease;
}

/* Search empty state row (lazy-created by Commit 8 JS handler) */
#service-table tbody tr.search-empty-state td {
  padding: 60px 24px;
  text-align: center;
  color: rgba(196, 181, 253, 0.7);
  font-size: 16px;
}
#service-table tbody tr.search-empty-state .empty-query {
  color: var(--yellow, #FACA33);
  font-weight: 600;
}

/* A7 ‚Äî Global prefers-reduced-motion guard (site-wide a11y) */
@media (prefers-reduced-motion: reduce) {
  [data-reveal],
  *[data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
  }
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}


/* ============================================================================
   Phase 9 Commit 11 ‚Äî Mobile responsive comprehensive block

   Claude Chrome mobile audit identified 7 critical issues (M1-M7) with
   ZERO services-specific @media rules below 768px. This block ships all
   mobile fixes at once:

     M1 ‚Äî Hero typography scaled for narrow viewports (32px H1 vs 56px desktop)
     M2 ‚Äî Filter bar stacks vertically (filter + currency + search on own rows)
     M3 ‚Äî Table fits viewport (hide Min/Max/Avg columns, table-layout flexes)
          + safety-net horizontal-scroll on catalog well
     M5 ‚Äî Description column visible on mobile via Details button toggle
          (overrides desktop hidden-xs hidden-sm + visible-xs visible-sm flip)
     M6 ‚Äî Sign Up CTA button full-width touch target
     M7 ‚Äî Marketing sections + signup CTA reduced padding for mobile density

   Tablet block (768-1023px) hides the vertical divider that would crowd the
   filter bar at narrow desktop widths.
   ============================================================================ */

@media (max-width: 767px) {

  /* --- M1: Hero typography --- */
  .services-hero {
    padding: 32px 16px 16px !important;
  }
  .services-hero h1,
  .services-hero h1.display-1 {
    font-size: 32px !important;
    line-height: 1.15 !important;
    margin: 0 0 16px !important;
    padding: 0 !important;
  }
  .services-hero h2 {
    font-size: 22px !important;
  }
  .services-hero .lead,
  .services-hero p.lead {
    font-size: 16px !important;
    line-height: 1.5 !important;
  }

  /* --- M2: Filter bar mobile stack --- */
  .services-browser ul.nav.nav-pills {
    flex-direction: column !important;
    align-items: stretch !important;
    padding: 12px 16px !important;
  }
  .services-browser ul.nav.nav-pills > li {
    width: 100% !important;
    display: block !important;
  }
  .services-browser ul.nav.nav-pills > li .dropdown,
  .services-browser ul.nav.nav-pills > li .btn.dropdown-toggle {
    width: 100% !important;
    justify-content: space-between !important;
  }
  .services-browser ul.nav.nav-pills > li.search,
  .services-browser ul.nav.nav-pills > li.pull-right.search {
    flex: 1 1 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
  }

  /* Hide vertical divider on mobile (stacked layout, no longer makes sense) */
  .services-browser ul.nav.nav-pills > li.search::before {
    display: none !important;
  }

  /* Dropdown menu full-width on mobile */
  .services-browser .dropdown-menu {
    width: 100% !important;
    min-width: 100% !important;
    max-width: 100% !important;
  }

  /* --- Phase 9 Commit 14 ‚Äî Mobile cards NUCLEAR width containment (verified via Claude Chrome)
     Replaces Commit 13. Adds html body prefix for nuclear specificity, neutralizes
     min-width chain (table 480, service-name 280, well 100%), hides AvgTime
     column, 3-col 32% stats grid replaces 4-col 24%. --- */


  /* === Phase 9 Commit 14 ‚Äî Mobile cards NUCLEAR width containment ===
     Commit 13 still had overflow because chain of min-width declarations
     (table 480px, service-name 280px, well 100%) won cascade against
     mobile block. Plus existing rules outside @media targeted same
     selectors with !important ‚Äî tie went to source-order, not specificity.
     Fix: html body prefix raises specificity to 0,1,3+ (nuclear), explicit
     min-width:0 cascade-resets all chain links, hide AvgTime (rarely set),
     and 3-col 32% stats grid replaces 4-col 24%. */

  /* Layout containment ‚Äî neutralize min-width chain up the entire ancestor tree */
  html body .services-browser,
  html body .services-browser .row,
  html body .services-browser .col-lg-12 {
    min-width: 0 !important;
    max-width: 100% !important;
    width: 100% !important;
    overflow-x: hidden !important;
  }

  /* Filter bar ‚Äî clean stack, no min-width inheritance */
  html body .services-browser ul.nav.nav-pills {
    flex-wrap: wrap !important;
    width: 100% !important;
    min-width: 0 !important;
    flex-direction: column !important;
    align-items: stretch !important;
    padding: 12px 16px !important;
  }
  html body .services-browser ul.nav.nav-pills > li {
    flex: 1 1 100% !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin-left: 0 !important;
  }

  /* Well + table chain ‚Äî kill min-widths */
  html body .well.well-float.services-catalog-well,
  html body #service-table.services-table,
  html body #service-table.services-table tbody,
  html body #service-table.services-table tbody tr.service-row {
    min-width: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  html body .well.well-float.services-catalog-well {
    padding: 0 16px !important;            /* Phase 9 Commit 16 ‚Äî lateral breathing room (was 8px) */
    background: transparent !important;
    border: none !important;
    overflow: visible !important;
  }

  /* Disassemble table to block layout */
  html body #service-table.services-table,
  html body #service-table.services-table tbody {
    display: block !important;
  }
  html body #service-table.services-table thead,
  html body #service-table.services-table colgroup {
    display: none !important;
  }

  /* === Phase 9 Commit 27 ‚Äî Mobile category banner Variant E hybrid (audit 9.4/10) ===
     Gradient yellow 20% ‚Üí lavender 8% @ 135¬∞ + 3px yellow rail + white bold text
     centered; styling moved to > td (PP renders yellow bg on TD, not TR) */
  html body #service-table.services-table tbody tr[data-filter-table-category-id]:not(.service-row):not(.service-description-row) {
    display: block !important;
    width: 100% !important;
    margin: 24px 0 8px !important;
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    border-radius: 12px !important;
    box-shadow: none !important;
    box-sizing: border-box !important;
    position: relative !important;
    overflow: hidden !important;
  }
  html body #service-table.services-table tbody tr[data-filter-table-category-id]:not(.service-row):not(.service-description-row) > td {
    display: block !important;
    width: 100% !important;
    padding: 14px 18px !important;
    background: linear-gradient(135deg, rgba(250, 202, 51, 0.20) 0%, rgba(124, 58, 237, 0.08) 100%) !important;
    background-image: linear-gradient(135deg, rgba(250, 202, 51, 0.20) 0%, rgba(124, 58, 237, 0.08) 100%) !important;
    border: 0 !important;
    border-left: 3px solid #FACA33 !important;
    border-radius: 12px !important;
    box-shadow: inset 0 -1px 0 rgba(250, 202, 51, 0.30),
                0 1px 8px rgba(250, 202, 51, 0.08) !important;
    color: #FFFFFF !important;
    font-weight: 700 !important;
    font-size: 15px !important;
    text-align: center !important;
    box-sizing: border-box !important;
  }

  /* Service card */
  html body #service-table.services-table tbody tr.service-row {
    display: block !important;
    box-sizing: border-box !important;
    margin: 12px 0 !important;
    padding: 14px 12px !important;
    background: linear-gradient(180deg, rgba(167,139,250,0.08), rgba(124,58,237,0.04)) !important;
    border: 1px solid rgba(167,139,250,0.15) !important;
    border-radius: 16px !important;
    position: relative !important;
  }
  html body #service-table.services-table tbody tr.service-row > td {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-sizing: border-box !important;
  }

  /* ID ‚Äî first child, monospace + "ID #" prefix */
  html body #service-table.services-table tbody tr.service-row > td:nth-child(1) {
    text-align: center !important;
    font-family: monospace !important;
    font-size: 13px !important;
    color: #C4B5FD !important;
    margin-bottom: 8px !important;
  }
  html body #service-table.services-table tbody tr.service-row > td:nth-child(1)::before {
    content: "ID #" !important;
    margin-right: 4px !important;
    font-size: 11px !important;
    letter-spacing: 0.1em !important;
    color: rgba(196,181,253,0.5) !important;
  }

  /* Service name ‚Äî kill 280px min-width chain leak */
  html body #service-table.services-table tbody tr.service-row > td.service-name,
  html body #service-table.services-table tbody tr.service-row > td:nth-child(2) {
    min-width: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    text-align: center !important;
    font-size: 13px !important;
    color: #FFFFFF !important;
    line-height: 1.5 !important;
    margin-bottom: 16px !important;
    word-break: break-word !important;
    white-space: normal !important;
  }

  /* HIDE Average Time (6th td) ‚Äî empty for most services */
  html body #service-table.services-table tbody tr.service-row > td:nth-child(6) {
    display: none !important;
  }

  /* 3-col stats grid: Rate / Min / Max (each 32%) */
  html body #service-table.services-table tbody tr.service-row > td:nth-child(3),
  html body #service-table.services-table tbody tr.service-row > td:nth-child(4),
  html body #service-table.services-table tbody tr.service-row > td:nth-child(5) {
    display: inline-block !important;
    width: 32% !important;
    vertical-align: top !important;
    text-align: center !important;
    padding: 8px 2px !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    color: #FFFFFF !important;
    box-sizing: border-box !important;
  }
  /* Visual dividers between Rate|Min and Min|Max */
  html body #service-table.services-table tbody tr.service-row > td:nth-child(3),
  html body #service-table.services-table tbody tr.service-row > td:nth-child(4) {
    border-right: 1px solid rgba(167, 139, 250, 0.15) !important;
  }
  /* UPPERCASE label captions above each stat value via attr(data-label) */
  html body #service-table.services-table tbody tr.service-row > td:nth-child(3)::before,
  html body #service-table.services-table tbody tr.service-row > td:nth-child(4)::before,
  html body #service-table.services-table tbody tr.service-row > td:nth-child(5)::before {
    content: attr(data-label) !important;
    display: block !important;
    font-size: 10px !important;
    font-weight: 500 !important;
    color: rgba(196,181,253,0.7) !important;
    text-transform: uppercase !important;
    letter-spacing: 0.05em !important;
    margin-bottom: 4px !important;
  }

  /* Details action cell ‚Äî last child */
  html body #service-table.services-table tbody tr.service-row > td:last-child {
    text-align: center !important;
    margin-top: 12px !important;
    padding-top: 12px !important;
    border-top: 1px solid rgba(167,139,250,0.15) !important;
  }

  /* Description row ‚Äî collapsed default, .is-open shows full-width */
  html body #service-table.services-table tbody tr.service-description-row {
    display: none !important;
  }
  html body #service-table.services-table tbody tr.service-description-row.is-open {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin: -8px 0 12px !important;
    padding: 16px !important;
    background: rgba(8,4,26,0.6) !important;
    border-radius: 12px !important;
    box-sizing: border-box !important;
  }
  html body #service-table.services-table tbody tr.service-description-row.is-open > td {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 0 !important;
    color: rgba(255,255,255,0.85) !important;
    line-height: 1.6 !important;
    font-size: 13px !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    white-space: normal !important;
    word-break: break-word !important;
  }

  /* Phase 9 Commit 15 ‚Äî Mobile search input-group containment (fixes magnifier button cutoff) */
  html body .services-browser ul.nav.nav-pills > li.search .input-group {
    display: flex !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
  html body .services-browser ul.nav.nav-pills > li.search .input-group .form-control.services-search-input {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: calc(100% - 50px) !important;
    border-radius: 10px 0 0 10px !important;
  }
  html body .services-browser ul.nav.nav-pills > li.search .input-group .input-group-btn {
    flex: 0 0 50px !important;
    width: 50px !important;
  }
  html body .services-browser ul.nav.nav-pills > li.search .input-group .input-group-btn .btn {
    width: 50px !important;
    min-width: 50px !important;
    border-radius: 0 10px 10px 0 !important;
  }

  /* --- M1 + M6 + M7: Marketing sections mobile typography + padding --- */
  .services-marketing-section,
  .services-marketing-content {
    padding: 24px 16px !important;
  }
  .services-marketing-content article,
  .services-marketing-section article {
    padding: 20px 16px !important;
    margin-bottom: 20px !important;
  }
  .services-marketing-content h2,
  .services-marketing-section h2 {
    font-size: 26px !important;
    margin-bottom: 20px !important;
  }
  .services-marketing-content h3,
  .services-marketing-section h3 {
    font-size: 20px !important;
    margin-top: 24px !important;
    margin-bottom: 12px !important;
  }
  .services-marketing-content p {
    font-size: 15px !important;
    line-height: 1.6 !important;
  }

  /* --- M6: Sign Up CTA mobile --- */
  .services-signup-cta-section,
  .services-signup-cta-card {
    padding: 32px 20px !important;
    margin: 0 16px !important;
  }
  .services-signup-cta-card h2 {
    font-size: 28px !important;
  }
  .services-signup-cta-btn {
    width: 100% !important;
    max-width: 100% !important;
    padding: 14px 24px !important;
    font-size: 16px !important;
    justify-content: center !important;
  }

  /* Container max-width ‚Äî full bleed on mobile (escape 1280px desktop cap)
     Phase 9 Commit 16 ‚Äî reduce to 4px; .well already adds 16px ‚Üí combined 20px from viewport edge */
  .services-browser {
    max-width: 100% !important;
    padding: 0 4px !important;
  }

  /* === Phase 9 Commit 17 ‚Äî Direct lateral margin on cards + category banners ===
     Container/well padding alone wasn't visually winning because tr cards still
     stretched to 100% of their immediate parent. Apply margin directly on the
     block-level mobile cards and shrink width by 32px (16px each side). */
  html body #service-table.services-table tbody tr.service-row,
  html body #service-table.services-table tbody tr[data-filter-table-category-id]:not(.service-row):not(.service-description-row),
  html body #service-table.services-table tbody tr.service-description-row.is-open {
    margin-left: 16px !important;
    margin-right: 16px !important;
    width: calc(100% - 32px) !important;
    max-width: calc(100% - 32px) !important;
    box-sizing: border-box !important;
  }
}

/* === Tablet (768-1023px) ‚Äî slight adjustments === */
@media (min-width: 768px) and (max-width: 1023px) {
  /* Hide vertical divider on tablets ‚Äî filter bar gets cramped at 768-1023 */
  .services-browser ul.nav.nav-pills > li.search::before {
    display: none;
  }
  .services-hero h1.display-1 {
    font-size: 44px;
  }
}


/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 9 Commit 28 ‚Äî 3 final polish issues
   (1) Description NEUTRALIZE ‚Äî kill yellow box-shadow/border-image/bg leak
       from Commit 27 banner cascade onto description rows (Lesson #4 round 3)
   (2) CTA card max-width match marketing-content (800px) ‚Äî was 820px wider
   (3) Tighter vertical rhythm ‚Äî reduce CTA top gap + mobile compact spacing
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */

/* FIX 1 ‚Äî Description NEUTRAL force (universal ‚Äî both viewports) */
html body #service-table.services-table tbody tr.service-description-row,
html body #service-table.services-table tbody tr.service-description-row.is-open {
  box-shadow: none !important;
  border: none !important;
  border-left: 0 !important;
  background: rgba(8, 4, 26, 0.6) !important;
  background-image: none !important;
}

html body #service-table.services-table tbody tr.service-description-row > td,
html body #service-table.services-table tbody tr.service-description-row.is-open > td {
  box-shadow: none !important;
  border: none !important;
  border-left: 0 !important;
  border-top: 0 !important;
  border-bottom: 0 !important;
  background: transparent !important;
  background-image: none !important;
}

/* FIX 2 ‚Äî CTA card max-width MATCH marketing-content (800px, was 820px) */
.services-signup-cta-card {
  max-width: 800px !important;
  width: auto !important;
  box-sizing: border-box !important;
}

/* FIX 3 ‚Äî Tighter vertical rhythm */
/* (3a) Reduce CTA section top gap (was --space-10, ~80px; bring to ~48px) */
.services-signup-cta-section {
  padding-block: 48px var(--space-12) !important;
}

/* (3b) Tighten gap between marketing articles (was 36px ‚Üí 28px for mobile rhythm match) */
.services-marketing-content {
  gap: 28px !important;
}

/* (3c) Mobile compact spacing */
@media (max-width: 767px) {
  .services-signup-cta-section {
    padding-block: 32px 48px !important;
  }
  .services-signup-cta-card {
    padding: 36px 24px !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .services-marketing-section {
    padding-block: 32px 24px !important;
  }
  .services-marketing-content {
    gap: 20px !important;
  }
}

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 9 Commit 29 ‚Äî Uniform CTA gap (match marketing sub-section rhythm)
   Step 1 audit confirmed actual classes:
     .services-marketing-section (NOT .services-marketing)
     .services-signup-cta-section (NOT .services-signup-cta)
   Total gap before CTA was ~128px desktop / ~56px mobile (marketing pad-bottom
   var(--space-10) + CTA pad-top 48px). Sub-sections use 28px desktop / 20px
   mobile. Target: 24px universal gap (between sub-sections and to CTA).
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */

/* (1) Zero marketing-section bottom padding (it was contributing 80px desktop) */
html body .services-marketing-section {
  padding-bottom: 0 !important;
}

/* (2) Set CTA-section top padding to exactly 24px (uniform rhythm) */
html body .services-signup-cta-section,
html body section.services-signup-cta-section {
  padding-top: 24px !important;
  margin-top: 0 !important;
}

/* (3) Neutralize last marketing article's bottom margin (safety belt) */
html body .services-marketing-content > .services-marketing-article:last-child,
html body .services-marketing-section .services-marketing-article:last-of-type {
  margin-bottom: 0 !important;
}

/* (4) Match sub-section article gap to 24px (desktop) ‚Äî was 28px */
html body .services-marketing-content {
  gap: 24px !important;
}

/* Mobile ‚Äî same 24px universal */
@media (max-width: 767px) {
  html body .services-marketing-section {
    padding-bottom: 0 !important;
  }
  html body .services-signup-cta-section,
  html body section.services-signup-cta-section {
    padding-top: 24px !important;
    margin-top: 0 !important;
  }
  html body .services-marketing-content {
    gap: 24px !important;
  }
}

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 9 Commit 30 ‚Äî Platform grid section (24 cards between hero + filter)
   Aurora+Glass cards, brand-colored Simple Icons, hover lift + lavender glow,
   responsive 6 ‚Üí 4 ‚Üí 2 columns. ALL Services card featured yellow.
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */
/* Phase 9 Commit 33 ‚Äî margin-bottom 28px ‚Üí 24px to equalize platform‚Üífilter gap
   with the filter‚Üítable gap (nav-pills margin-bottom: 24px, line ~8520). */
.services-platforms {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto 24px;
  padding: 0 4px;
  box-sizing: border-box;
}
.services-platforms-head {
  text-align: center;
  margin: 0 0 16px;
}
.services-platforms-eyebrow {
  display: inline-block;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #C4B5FD;
  background: rgba(167, 139, 250, 0.12);
  padding: 6px 16px;
  border-radius: 999px;
}
.services-platforms-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 12px;
}
.platform-card {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  background: linear-gradient(180deg, rgba(167, 139, 250, 0.08), rgba(124, 58, 237, 0.04));
  border: 1px solid rgba(167, 139, 250, 0.15);
  border-radius: 12px;
  text-decoration: none;
  color: #FFFFFF;
  font-weight: 600;
  font-size: 13px;
  box-sizing: border-box;
  transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.2s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.2s ease,
              background 0.2s ease;
}
.platform-card:hover {
  transform: translateY(-2px);
  border-color: rgba(167, 139, 250, 0.45);
  box-shadow: 0 8px 24px rgba(124, 58, 237, 0.22);
  background: linear-gradient(180deg, rgba(167, 139, 250, 0.14), rgba(124, 58, 237, 0.07));
  text-decoration: none;
  color: #FFFFFF;
}
.platform-ico {
  width: 22px;
  height: 22px;
  flex-shrink: 0;
  object-fit: contain;
}
.platform-name {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.3;
}
/* ALL Services featured (yellow) */
.platform-card-all {
  background: #FACA33 !important;
  border-color: #FACA33 !important;
  color: #08041A !important;
  font-weight: 700;
}
.platform-card-all:hover {
  background: #FACA33 !important;
  border-color: #FACA33 !important;
  color: #08041A !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(250, 202, 51, 0.35),
              0 0 0 1px rgba(255, 255, 255, 0.15) inset;
}
/* Responsive: 6 ‚Üí 4 ‚Üí 2 */
@media (max-width: 1024px) {
  .services-platforms-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 767px) {
  .services-platforms { padding: 0 16px; }
  .services-platforms-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .platform-card { padding: 12px 10px; font-size: 12px; gap: 8px; }
  .platform-ico { width: 20px; height: 20px; }
}

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 10 ‚Äî Affiliate Program page (.aff-)
   /smm-affiliate-program ‚Äî Aurora+Bento+Glass static content page.
   Responsive via auto-fit grid + clamp() typography ‚Äî NO @media queries
   (avoids PP Style Editor @media-drop entirely, Lesson #10).
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */
.aff-page {
  max-width: 1120px;
  margin: 0 auto;
  padding: 0 20px 64px;
  box-sizing: border-box;
  color: #fff;
}
.aff-hero { text-align: center; padding: 24px 0 8px; }
.aff-eyebrow {
  display: inline-block; font-size: 12px; font-weight: 600;
  letter-spacing: 0.14em; text-transform: uppercase; color: #C4B5FD;
  background: rgba(167,139,250,0.12); padding: 6px 16px; border-radius: 999px;
  margin-bottom: 20px;
}
.aff-h1 {
  font-size: clamp(30px, 5.5vw, 52px); font-weight: 800; line-height: 1.1;
  margin: 0 0 12px; letter-spacing: -0.02em;
  /* Phase 10 Commit 6 ‚Äî match site-wide animated headline (.hero-title-gradient):
     same gradient + background-size + reused shimmer-flow keyframes (NO new keyframes) */
  background: linear-gradient(
    110deg,
    var(--purple-light) 0%,
    var(--purple-primary) 40%,
    var(--text-primary) 60%,
    var(--purple-light) 100%
  );
  background-size: 200% 100%;
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  color: transparent;
  animation: shimmer-flow 8s ease-in-out infinite alternate;
  filter: drop-shadow(0 4px 24px rgba(167,139,250,0.28));
}
.aff-h2 { font-size: clamp(20px, 3.5vw, 32px); font-weight: 700; line-height: 1.25; margin: 0 0 24px; color: #fff; }
.aff-yellow { color: #FACA33; }
.aff-lead {
  max-width: 760px; margin: 0 auto 16px; font-size: clamp(15px, 1.6vw, 17px);
  line-height: 1.7; color: rgba(255,255,255,0.8);
}
.aff-inline-link {
  color: #A78BFA;
  text-decoration: underline;
  text-decoration-color: rgba(167,139,250,0.45);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: text-decoration-color 0.2s ease, color 0.2s ease;
}
.aff-inline-link:hover { text-decoration-color: #A78BFA; color: #C4B5FD; }
.aff-stats {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; margin: 32px auto 0; max-width: 720px;
}
.aff-stat {
  flex: 1 1 160px; background: linear-gradient(180deg, rgba(167,139,250,0.08), rgba(124,58,237,0.04));
  border: 1px solid rgba(167,139,250,0.15); border-radius: 16px; padding: 20px 16px; text-align: center;
  transition: transform 0.2s ease, border-color 0.2s ease;
}
.aff-stat:hover {
  transform: translateY(-2px);
  border-color: rgba(250,202,51,0.4);
}
.aff-stat-num { display: block; font-size: clamp(24px, 3vw, 32px); font-weight: 800; color: #FACA33; line-height: 1; }
.aff-stat-label { display: block; margin-top: 8px; font-size: 13px; color: rgba(196,181,253,0.8); }

.aff-section { margin-top: 56px; }
.aff-hero + .aff-section { margin-top: 88px; }
.aff-section-title {
  font-size: clamp(24px, 3.5vw, 34px); font-weight: 700; text-align: center; margin: 0 0 12px; color: #fff;
}
.aff-section-intro { text-align: center; color: rgba(255,255,255,0.75); margin: 0 0 32px; font-size: 16px; }
.aff-callout {
  max-width: 820px; margin: 0 auto 32px; padding: 20px 24px;
  background: linear-gradient(90deg, rgba(250,202,51,0.12), rgba(250,202,51,0.02));
  border-left: 4px solid #FACA33; border-radius: 12px;
  color: rgba(255,255,255,0.85); line-height: 1.6; font-size: 15px;
}
.aff-callout-label { font-weight: 700; color: #FACA33; }

.aff-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr)); gap: 18px;
}
.aff-card {
  background: linear-gradient(180deg, rgba(167,139,250,0.08), rgba(124,58,237,0.04));
  border: 1px solid rgba(167,139,250,0.15); border-radius: 16px; padding: 24px 20px;
  transition: transform 0.2s cubic-bezier(0.16,1,0.3,1), box-shadow 0.2s, border-color 0.2s;
}
.aff-card:hover {
  transform: translateY(-4px); border-color: rgba(167,139,250,0.4);
  box-shadow: 0 16px 40px rgba(124,58,237,0.28);
}
.aff-ico {
  display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px;
  border-radius: 12px; background: rgba(167,139,250,0.12); color: #A78BFA; margin-bottom: 16px;
}
.aff-ico svg { width: 26px; height: 26px; }
.aff-card-title { font-size: 18px; font-weight: 700; margin: 0 0 10px; color: #fff; }
.aff-card-text { font-size: 14px; line-height: 1.65; color: rgba(255,255,255,0.75); margin: 0; }

.aff-grid-steps .aff-step {
  position: relative; background: linear-gradient(180deg, rgba(167,139,250,0.08), rgba(124,58,237,0.04));
  border: 1px solid rgba(167,139,250,0.15); border-radius: 16px; padding: 24px 20px;
  transition: transform 0.2s cubic-bezier(0.16,1,0.3,1), box-shadow 0.2s, border-color 0.2s;
}
.aff-grid-steps .aff-step:hover {
  transform: translateY(-4px); border-color: rgba(167,139,250,0.4); box-shadow: 0 16px 40px rgba(124,58,237,0.28);
}
.aff-step-num {
  display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px;
  border-radius: 50%; background: #FACA33; color: #08041A; font-weight: 800; font-size: 18px; margin-bottom: 16px;
}
.aff-grid-steps .aff-card-title { min-height: 2.6em; }

.aff-cta {
  margin-top: 56px; text-align: center; padding: 48px 24px;
  background: linear-gradient(180deg, rgba(167,139,250,0.10), rgba(124,58,237,0.05));
  border: 1px solid rgba(167,139,250,0.15); border-radius: 20px;
}
.aff-cta-title { font-size: clamp(26px, 4vw, 38px); font-weight: 800; margin: 0 0 12px; color: #fff; }
.aff-cta-text { max-width: 620px; margin: 0 auto 28px; font-size: 16px; line-height: 1.7; color: rgba(255,255,255,0.8); }
.aff-cta-btn {
  display: inline-flex; align-items: center; gap: 10px; background: #FACA33; color: #08041A;
  padding: 14px 32px; border-radius: 10px; font-weight: 700; font-size: 16px; text-decoration: none;
  box-shadow: 0 4px 14px rgba(250,202,51,0.22);
  transition: transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
}
.aff-cta-btn:hover, .aff-cta-btn:focus, .aff-cta-btn:focus-visible {
  transform: translateY(-2px); color: #150B3D !important; text-decoration: none !important;
  box-shadow: 0 12px 28px rgba(250,202,51,0.35);
  filter: brightness(1.05);
}

/* ===== Phase 10 Commit 5 ‚Äî Global nav active-state (wayfinding + a11y) ===== */
.header-nav-link.is-active-nav { color: #FACA33; }
.mobile-overlay-nav ul li a.is-active-nav { color: #FACA33; }

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 13 ‚Äî Crypto Landing Page (/smm-panel-crypto)
   Aurora+Bento+Glass + crypto elements (coin strip, payment badges, security
   icons). Responsive via minmax(min()) + clamp() ‚Äî NO @media (Lesson #10).
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */
.crypto-page { max-width: 1120px; margin: 0 auto; padding: 48px 20px 80px; color: #fff; }
.crypto-hero { text-align: center; }
.crypto-eyebrow { display: inline-block; padding: 6px 16px; border-radius: 999px; background: rgba(167,139,250,0.12); border: 1px solid rgba(167,139,250,0.25); color: #C4B5FD; font-size: 13px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 20px; }
.crypto-h1 { font-size: clamp(32px, 6vw, 56px); font-weight: 800; line-height: 1.1; margin: 0 0 10px; letter-spacing: -0.02em; background: linear-gradient(110deg, var(--purple-light) 0%, var(--purple-primary) 40%, var(--text-primary) 60%, var(--purple-light) 100%); background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; animation: shimmer-flow 8s ease-in-out infinite alternate; filter: drop-shadow(0 4px 24px rgba(167,139,250,0.28)); }
.crypto-sub { font-size: clamp(18px, 2.6vw, 26px); font-weight: 700; margin: 0 0 20px; color: #FACA33; }
.crypto-lead { max-width: 760px; margin: 0 auto 28px; font-size: 17px; line-height: 1.7; color: rgba(255,255,255,0.8); }
.crypto-stats { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; margin: 0 auto 28px; }
.crypto-stat { flex: 1 1 180px; max-width: 240px; padding: 20px 16px; border-radius: 16px; background: rgba(167,139,250,0.06); border: 1px solid rgba(167,139,250,0.15); display: flex; flex-direction: column; gap: 4px; transition: transform 0.2s ease, border-color 0.2s ease; }
.crypto-stat:hover { transform: translateY(-2px); border-color: rgba(250,202,51,0.4); }
.crypto-stat-val { font-size: 24px; font-weight: 800; color: #FACA33; }
.crypto-stat-label { font-size: 13px; color: rgba(196,181,253,0.8); }
.crypto-cta-btn { display: inline-block; padding: 16px 32px; border-radius: 10px; background: #FACA33; color: #150B3D; font-weight: 700; font-size: 16px; text-decoration: none; transition: transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease; }
.crypto-cta-btn:hover, .crypto-cta-btn:focus, .crypto-cta-btn:focus-visible { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(250,202,51,0.35); filter: brightness(1.05); color: #150B3D !important; text-decoration: none !important; }
.crypto-cta-btn-lg { padding: 18px 40px; font-size: 17px; }
.crypto-coins { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 36px auto 0; max-width: 820px; }
.crypto-coin { display: inline-flex; align-items: center; gap: 8px; padding: 8px 16px 8px 8px; border-radius: 999px; background: rgba(255,255,255,0.04); border: 1px solid rgba(167,139,250,0.18); font-size: 14px; font-weight: 600; color: rgba(255,255,255,0.9); transition: transform 0.2s ease, border-color 0.2s ease; }
.crypto-coin:hover { transform: translateY(-2px); border-color: rgba(167,139,250,0.4); }
.crypto-coin-badge { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; color: #fff; font-size: 15px; font-weight: 700; }
.crypto-coin-more { padding: 8px 16px; color: rgba(196,181,253,0.7); }
.crypto-section { margin-top: 56px; }
.crypto-hero + .crypto-section { margin-top: 88px; }
.crypto-section-title { text-align: center; font-size: clamp(24px, 3.4vw, 34px); font-weight: 800; margin: 0 0 12px; color: #fff; }
.crypto-section-intro { text-align: center; max-width: 680px; margin: 0 auto 32px; font-size: 16px; color: rgba(255,255,255,0.75); line-height: 1.6; }
.crypto-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 20px; }
.crypto-grid > * { flex: 1 1 300px; max-width: 340px; }
.crypto-grid-steps { display: flex; flex-wrap: wrap; justify-content: center; gap: 20px; }
.crypto-grid-steps > * { flex: 1 1 220px; max-width: 260px; }
.crypto-card { display: block; padding: 28px 24px; border-radius: 16px; text-decoration: none; background: rgba(255,255,255,0.03); border: 1px solid rgba(167,139,250,0.15); transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; }
.crypto-card:hover { transform: translateY(-4px); border-color: rgba(167,139,250,0.4); box-shadow: 0 16px 40px rgba(124,58,237,0.28); }
.crypto-platform-icon { width: 40px; height: 40px; margin-bottom: 16px; display: block; }
.crypto-ico { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 12px; margin-bottom: 16px; background: rgba(167,139,250,0.12); color: #A78BFA; }
.crypto-card-title { font-size: 18px; font-weight: 700; margin: 0 0 10px; color: #fff; }
.crypto-grid-steps .crypto-card-title { min-height: 2.6em; }
.crypto-card-text { font-size: 15px; line-height: 1.6; color: rgba(255,255,255,0.75); margin: 0; }
.crypto-step { position: relative; padding: 28px 24px; border-radius: 16px; background: rgba(255,255,255,0.03); border: 1px solid rgba(167,139,250,0.15); transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; }
.crypto-step:hover { transform: translateY(-4px); border-color: rgba(167,139,250,0.4); box-shadow: 0 16px 40px rgba(124,58,237,0.28); }
.crypto-step-num { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; margin-bottom: 16px; background: #FACA33; color: #150B3D; font-size: 18px; font-weight: 800; }
.crypto-pay { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; max-width: 820px; margin: 0 auto; }
.crypto-pay-badge { padding: 9px 18px; border-radius: 10px; font-size: 14px; font-weight: 600; background: rgba(255,255,255,0.04); border: 1px solid rgba(167,139,250,0.15); color: rgba(255,255,255,0.82); }
.crypto-pay-crypto { border-color: rgba(250,202,51,0.4); color: #FACA33; background: rgba(250,202,51,0.06); }
.crypto-final-cta { text-align: center; padding: 48px 32px; border-radius: 24px; background: radial-gradient(120% 120% at 50% 0%, rgba(167,139,250,0.12), rgba(124,58,237,0.04) 60%, transparent); border: 1px solid rgba(167,139,250,0.18); }
.crypto-final-title { font-size: clamp(24px, 3.6vw, 36px); font-weight: 800; margin: 0 0 14px; color: #fff; }
.crypto-final-text { max-width: 680px; margin: 0 auto 28px; font-size: 16px; line-height: 1.7; color: rgba(255,255,255,0.8); }
.crypto-support { margin: 20px 0 0; font-size: 14px; color: rgba(255,255,255,0.7); }
.crypto-inline-link { color: #A78BFA; text-decoration: underline; text-decoration-color: rgba(167,139,250,0.45); text-underline-offset: 3px; transition: text-decoration-color 0.2s ease, color 0.2s ease; }
.crypto-inline-link:hover { text-decoration-color: #A78BFA; color: #C4B5FD; }

/* Phase 13 Commit 4 ‚Äî card-anchor hover leak fix (global a:hover underlines + yellow-shifts) */
.crypto-card:hover, .crypto-card:focus, .crypto-card:focus-visible { text-decoration: none !important; }
.crypto-card:hover .crypto-card-title, .crypto-card:focus .crypto-card-title { color: #fff !important; }
.crypto-card:hover .crypto-card-text, .crypto-card:focus .crypto-card-text { color: rgba(255,255,255,0.75) !important; }

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 13/14 ‚Äî Premium depth pass (crypto + paypal shared .crypto-* system)
   Adds 2-3 depth layers (gradient + inset highlight + cast shadow) on-brand
   (lavender #A78BFA / yellow #FACA33 / dark #08041A). CSS-only, no @media.
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */

/* Orphan centering fix: grow:0 so every row (incl. lone orphan) centers reliably */
.crypto-grid > * { flex: 0 1 340px; }
.crypto-grid-steps > * { flex: 0 1 240px; }

/* Hero atmosphere ‚Äî masked radial glow + faint grid (clipped to hero) */
.crypto-hero { position: relative; z-index: 0; }
.crypto-hero::before {
  content: ""; position: absolute; inset: -40px -20px 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(60% 50% at 50% 0%, rgba(167,139,250,0.18), transparent 70%),
    radial-gradient(42% 40% at 16% 82%, rgba(250,202,51,0.10), transparent 70%),
    radial-gradient(42% 40% at 84% 28%, rgba(124,58,237,0.16), transparent 70%);
  filter: blur(22px);
}
.crypto-hero::after {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image:
    linear-gradient(rgba(167,139,250,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(167,139,250,0.05) 1px, transparent 1px);
  background-size: 56px 56px;
  -webkit-mask: radial-gradient(62% 60% at 50% 28%, #000, transparent 78%);
  mask: radial-gradient(62% 60% at 50% 28%, #000, transparent 78%);
}
.crypto-eyebrow {
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 4px 16px rgba(124,58,237,0.18);
}

/* Card depth ‚Äî dual-stop glass surface + 3-stop layered hover shadow + deeper snappy lift */
.crypto-card, .crypto-step {
  background: linear-gradient(180deg, rgba(255,255,255,0.045), rgba(255,255,255,0.015));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05);
  transition: transform 0.25s cubic-bezier(.2,.7,.2,1), box-shadow 0.25s ease, border-color 0.2s ease;
}
.crypto-card:hover, .crypto-step:hover {
  transform: translateY(-6px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 20px 50px rgba(124,58,237,0.32), 0 0 0 1px rgba(167,139,250,0.12);
}

/* Icon tile depth ‚Äî corner-lit radial + inner highlights + cast shadow */
.crypto-ico {
  background: radial-gradient(120% 120% at 30% 20%, rgba(167,139,250,0.35), rgba(167,139,250,0.08) 70%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.12), inset 0 -1px 0 rgba(0,0,0,0.2), 0 8px 22px rgba(124,58,237,0.22);
}

/* Step number ‚Äî minted yellow gradient coin */
.crypto-step-num {
  background: linear-gradient(180deg, #FFE07A, #FACA33 60%, #E0A800);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), 0 6px 16px rgba(250,202,51,0.3);
}

/* CTA buttons ‚Äî physical 3-stop gradient (color/text-decoration fix from Commit 3 preserved) */
.crypto-cta-btn {
  background: linear-gradient(180deg, #FFE07A, #FACA33 55%, #F0B400);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.5), inset 0 -2px 0 rgba(180,130,0,0.3), 0 8px 22px rgba(250,202,51,0.28);
}
.crypto-cta-btn:hover {
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.5), 0 14px 32px rgba(250,202,51,0.42);
}

/* Coin / trust chip polish ‚Äî gradient bead + inset highlight + hover halo */
.crypto-coin {
  background: linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06);
}
.crypto-coin:hover { box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 10px 24px rgba(124,58,237,0.28); }
.crypto-coin-badge { box-shadow: inset 0 1px 0 rgba(255,255,255,0.25), 0 4px 10px rgba(0,0,0,0.35); }

/* Promoted payment badge (Cryptomus/Binance/PayPal) ‚Äî gradient + glow so it radiates */
.crypto-pay-crypto {
  background: linear-gradient(180deg, rgba(250,202,51,0.16), rgba(250,202,51,0.06));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.15), 0 6px 18px rgba(250,202,51,0.22);
}

/* Stat badge ‚Äî radial top-glow + yellow value punch */
.crypto-stat {
  background: radial-gradient(120% 80% at 50% 0%, rgba(167,139,250,0.14), transparent 60%), rgba(167,139,250,0.06);
}
.crypto-stat-val { text-shadow: 0 0 24px rgba(250,202,51,0.4); }

/* Phase 15 ‚Äî .platform-tile-link hover leak fix (About Us tiles, defensive consistency) */
.platform-tile-link:hover,
.platform-tile-link:focus,
.platform-tile-link:focus-visible {
  color: inherit;
  text-decoration: none;
}

/* ===== Phase 15 ‚Äî Marketing header frosted glass (consistent bg, no content bleed) ===== */
.marketing-header {
  background: rgba(8, 4, 26, 0.55);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.marketing-header.scrolled,
.marketing-header.header-scrolled,
header.header-scrolled {
  background: rgba(8, 4, 26, 0.9);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 16 ‚Äî Platform pages (.plat-* additions; reuse .crypto-* system)
   Hero platform icon + color-coded order-status legend. CSS-only, no @media.
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */
.plat-hero-badge { width: 92px; height: 92px; display: flex; align-items: center; justify-content: center; margin: 0 auto 20px; border-radius: 22px; background: linear-gradient(160deg, rgba(255,255,255,0.08), rgba(255,255,255,0.02)); border: 1px solid rgba(167,139,250,0.22); box-shadow: inset 0 1px 0 rgba(255,255,255,0.12), 0 14px 44px -14px rgba(167,139,250,0.5); position: relative; }
.plat-hero-badge::before { content: ""; position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(120% 120% at 50% 0%, rgba(167,139,250,0.28), transparent 62%); pointer-events: none; }
.plat-hero-icon { width: 52px; height: 52px; display: block; position: relative; }
.plat-status-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; max-width: 940px; margin: 0 auto; }
.plat-status { flex: 0 1 280px; padding: 16px 18px; border-radius: 14px; background: linear-gradient(180deg, rgba(255,255,255,0.045), rgba(255,255,255,0.015)); border: 1px solid rgba(167,139,250,0.15); box-shadow: inset 0 1px 0 rgba(255,255,255,0.05); }
.plat-status-name { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; font-size: 15px; margin-bottom: 6px; color: #C4B5FD; }
.plat-status-name::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: currentColor; flex: none; }
.plat-status-desc { font-size: 14px; line-height: 1.55; color: rgba(255,255,255,0.72); margin: 0; }
.plat-status-completed .plat-status-name { color: #34D399; }
.plat-status-canceled .plat-status-name { color: #F87171; }
.plat-status-partial .plat-status-name { color: #FACA33; }
.plat-status-refilling .plat-status-name { color: #60A5FA; }

/* ===== Phase 16 Commit 3 ‚Äî Platform hero stats bar ===== */
.plat-stats { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; margin: 38px auto 0; max-width: 780px; }
.plat-stat { flex: 1 1 150px; min-width: 132px; max-width: 200px; padding: 18px 16px; border-radius: 16px; background: linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.015)); border: 1px solid rgba(167,139,250,0.16); box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 10px 30px -16px rgba(124,58,237,0.4); text-align: center; }
.plat-stat-num { display: block; font-size: 26px; font-weight: 800; line-height: 1.1; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.plat-stat-label { display: block; margin-top: 6px; font-size: 12.5px; color: rgba(255,255,255,0.62); font-weight: 500; }
.plat-stat-services .plat-stat-num { color: #C4B5FD; }
.plat-stat-users .plat-stat-num { color: #FACA33; }
.plat-stat-completion .plat-stat-num { color: #34D399; }
.plat-stat-time .plat-stat-num { color: #60A5FA; }

/* ===== Phase 16 Commit 4 ‚Äî Order-form preview ===== */
.lp-order-section { max-width: 1100px; margin: 0 auto; padding: 20px 20px 8px; }
.lp-order-head { text-align: center; max-width: 640px; margin: 0 auto 28px; }
.lp-order-sub { color: rgba(255,255,255,0.62); font-size: 15px; line-height: 1.6; margin: 10px 0 0; }
.lp-form { max-width: 560px; margin: 0 auto; padding: 26px 24px 24px; border-radius: 22px; background: linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.015)); border: 1px solid rgba(167,139,250,0.18); box-shadow: inset 0 1px 0 rgba(255,255,255,0.07), 0 30px 70px -30px rgba(124,58,237,0.5); position: relative; }
.lp-form-header { display: flex; align-items: center; gap: 12px; padding-bottom: 18px; margin-bottom: 18px; border-bottom: 1px solid rgba(167,139,250,0.12); }
.lp-form-icon { width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; border-radius: 12px; background: rgba(255,255,255,0.04); border: 1px solid rgba(167,139,250,0.16); flex: none; }
.lp-form-title { font-weight: 700; font-size: 16px; color: #fff; }
.lp-form-subtitle { font-size: 13px; color: rgba(255,255,255,0.55); margin-top: 2px; }
.lp-field { margin-bottom: 16px; }
.lp-label { display: block; font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: rgba(196,181,253,0.7); margin-bottom: 7px; }
.lp-select-wrap { position: relative; }
.lp-select-wrap::after { content: "\25BE"; position: absolute; right: 14px; top: 50%; transform: translateY(-50%); pointer-events: none; color: rgba(196,181,253,0.7); font-size: 12px; }
.lp-select, .lp-input { width: 100%; box-sizing: border-box; padding: 13px 14px; border-radius: 12px; background: rgba(8,4,26,0.55); border: 1px solid rgba(167,139,250,0.2); color: #fff; font-size: 14px; font-family: inherit; outline: none; transition: border-color 0.15s ease, box-shadow 0.15s ease; }
.lp-select { -webkit-appearance: none; appearance: none; padding-right: 36px; cursor: pointer; }
.lp-select option { background: #150B3D; color: #fff; }
.lp-select:focus, .lp-input:focus { border-color: rgba(167,139,250,0.5); box-shadow: 0 0 0 3px rgba(167,139,250,0.15); }
.lp-input::placeholder { color: rgba(255,255,255,0.35); }
.lp-presets { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.lp-preset { flex: 1 1 auto; min-width: 52px; padding: 8px 6px; border-radius: 9px; background: rgba(167,139,250,0.08); border: 1px solid rgba(167,139,250,0.2); color: #C4B5FD; font-size: 13px; font-weight: 600; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; }
.lp-preset:hover { background: rgba(167,139,250,0.16); color: #fff; }
.lp-minmax { font-size: 12px; color: rgba(255,255,255,0.5); margin-top: 8px; }
.lp-summary { margin: 20px 0 18px; padding: 16px 18px; border-radius: 14px; background: rgba(8,4,26,0.5); border: 1px solid rgba(167,139,250,0.14); }
.lp-summary-row { display: flex; justify-content: space-between; align-items: center; font-size: 14px; color: rgba(255,255,255,0.7); }
.lp-summary-total { margin-top: 12px; padding-top: 12px; border-top: 1px solid rgba(167,139,250,0.14); font-size: 16px; font-weight: 700; color: #fff; }
.lp-summary-total span:last-child { color: #34D399; font-size: 22px; }
.lp-order-btn { display: block; text-align: center; padding: 15px; border-radius: 13px; background: linear-gradient(180deg, #FFE07A, #FACA33 60%, #E0A800); color: #150B3D !important; font-weight: 700; font-size: 15px; text-decoration: none !important; box-shadow: 0 12px 30px -10px rgba(250,202,51,0.5); transition: transform 0.15s ease, box-shadow 0.15s ease; }
.lp-order-btn:hover, .lp-order-btn:focus, .lp-order-btn:focus-visible { color: #150B3D !important; text-decoration: none !important; transform: translateY(-2px); box-shadow: 0 16px 38px -10px rgba(250,202,51,0.6); }
.lp-form-foot { text-align: center; font-size: 13px; color: rgba(255,255,255,0.55); margin: 14px 0 0; }
.lp-status { text-align: center; font-size: 13px; color: rgba(196,181,253,0.8); margin: 10px 0 0; min-height: 1px; }

/* ===== Phase 16 Commit 5 ‚Äî service card icons ===== */
.crypto-card-icon { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; margin-bottom: 14px; border-radius: 12px; background: linear-gradient(160deg, rgba(167,139,250,0.18), rgba(167,139,250,0.05)); border: 1px solid rgba(167,139,250,0.2); color: #C4B5FD; box-shadow: inset 0 1px 0 rgba(255,255,255,0.08); }
.crypto-card-icon svg { width: 22px; height: 22px; }

/* ===== Phase 16 Commit 6 ‚Äî mobile width fix: steps + status grids fill width (no @media) ===== */
.crypto-grid-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 20px; align-items: stretch; justify-content: stretch; }
.crypto-grid-steps .crypto-step { max-width: none; width: auto; }
.plat-status-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr)); gap: 14px; align-items: stretch; justify-content: stretch; }
.plat-status-grid .plat-status { max-width: none; width: auto; }

/* ===== Phase 16 Commit 7 ‚Äî custom dark dropdown (replaces native select) ===== */
.lp-dd { position: relative; }
.lp-dd-toggle { width: 100%; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 13px 14px; border-radius: 12px; background: rgba(8,4,26,0.55); border: 1px solid rgba(167,139,250,0.2); color: #fff; font-size: 14px; font-family: inherit; text-align: left; cursor: pointer; transition: border-color 0.15s ease, box-shadow 0.15s ease; }
.lp-dd-toggle:hover { border-color: rgba(167,139,250,0.38); }
.lp-dd.open .lp-dd-toggle { border-color: rgba(167,139,250,0.55); box-shadow: 0 0 0 3px rgba(167,139,250,0.15); }
.lp-dd-value { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lp-dd-value.placeholder { color: rgba(255,255,255,0.4); }
.lp-dd-caret { flex: none; color: rgba(196,181,253,0.85); transition: transform 0.2s ease; }
.lp-dd.open .lp-dd-caret { transform: rotate(180deg); }
.lp-dd-panel { position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 40; display: none; flex-direction: column; max-height: 340px; border-radius: 14px; background: linear-gradient(180deg, #1B1138, #150C30); border: 1px solid rgba(167,139,250,0.28); box-shadow: 0 24px 60px -20px rgba(0,0,0,0.7), inset 0 1px 0 rgba(255,255,255,0.05); overflow: hidden; }
.lp-dd.open .lp-dd-panel { display: flex; animation: lpDdIn 0.16s ease; }
@keyframes lpDdIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
.lp-dd-search-wrap { padding: 10px; border-bottom: 1px solid rgba(167,139,250,0.14); }
.lp-dd-search { width: 100%; box-sizing: border-box; padding: 9px 12px; border-radius: 9px; background: rgba(8,4,26,0.6); border: 1px solid rgba(167,139,250,0.2); color: #fff; font-size: 13px; font-family: inherit; outline: none; }
.lp-dd-search::placeholder { color: rgba(255,255,255,0.35); }
.lp-dd-search:focus { border-color: rgba(167,139,250,0.45); }
.lp-dd-list { overflow-y: auto; padding: 6px; }
.lp-dd-item { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding: 10px 12px; border-radius: 9px; font-size: 13.5px; line-height: 1.35; color: rgba(255,255,255,0.82); cursor: pointer; transition: background 0.12s ease, color 0.12s ease; }
.lp-dd-item:hover, .lp-dd-item.active { background: rgba(167,139,250,0.15); color: #fff; }
.lp-dd-item.selected { background: rgba(167,139,250,0.1); color: #fff; }
.lp-dd-item-label { flex: 1; }
.lp-dd-check { flex: none; color: #C4B5FD; font-weight: 700; margin-top: 1px; }
.lp-dd-empty { padding: 16px 12px; text-align: center; font-size: 13px; color: rgba(255,255,255,0.4); }
.lp-dd-list::-webkit-scrollbar { width: 8px; }
.lp-dd-list::-webkit-scrollbar-thumb { background: rgba(167,139,250,0.3); border-radius: 8px; }
.lp-dd-list::-webkit-scrollbar-track { background: transparent; }

/* ===== Phase 16 Commit 9 ‚Äî category icon in dropdown ===== */
.lp-dd-toggle-icon { flex: none; width: 22px; height: 22px; border-radius: 5px; object-fit: cover; }
.lp-dd-icon-slot { flex: none; width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; margin-top: 1px; }
.lp-dd-icon { width: 22px; height: 22px; border-radius: 5px; object-fit: cover; }

/* ===== Phase 16 Commit 10 ‚Äî video reviews marquee + lightbox ===== */
.lp-reviews { max-width: 1280px; margin: 0 auto; padding: 24px 0 8px; overflow: hidden; }
.lp-reviews-head { text-align: center; max-width: 640px; margin: 0 auto 30px; padding: 0 20px; }
.lp-marquee { position: relative; width: 100%; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
.lp-marquee-track { display: flex; width: max-content; animation: lpMarquee 45s linear infinite; }
.lp-marquee:hover .lp-marquee-track { animation-play-state: paused; }
@keyframes lpMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.lp-review-card { flex: none; margin-right: 18px; width: clamp(150px, 42vw, 196px); aspect-ratio: 9 / 16; border: none; padding: 0; border-radius: 16px; overflow: hidden; position: relative; cursor: pointer; background: #150B3D; box-shadow: 0 16px 40px -18px rgba(0,0,0,0.7), inset 0 0 0 1px rgba(167,139,250,0.12); transition: transform 0.2s ease; }
.lp-review-card:hover { transform: translateY(-5px); }
.lp-review-thumb { width: 100%; height: 100%; object-fit: cover; display: block; }
.lp-review-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 50px; height: 50px; border-radius: 50%; background: rgba(250,202,51,0.95); display: flex; align-items: center; justify-content: center; box-shadow: 0 6px 20px rgba(0,0,0,0.45); transition: transform 0.2s ease; }
.lp-review-card:hover .lp-review-play { transform: translate(-50%, -50%) scale(1.08); }
.lp-review-play svg { width: 22px; height: 22px; color: #150B3D; margin-left: 2px; }
.lp-lightbox { position: fixed; inset: 0; z-index: 1000; display: none; align-items: center; justify-content: center; padding: 20px; box-sizing: border-box; }
.lp-lightbox.open { display: flex; }
.lp-lightbox-backdrop { position: absolute; inset: 0; background: rgba(4,2,12,0.82); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.lp-lightbox-inner { position: relative; z-index: 1; width: min(90vw, 360px); aspect-ratio: 9 / 16; max-height: 84vh; }
.lp-lightbox-frame { width: 100%; height: 100%; border-radius: 18px; overflow: hidden; box-shadow: 0 30px 80px rgba(0,0,0,0.6); background: #000; }
.lp-lightbox-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.lp-lightbox-close { position: absolute; top: -46px; right: 0; width: 38px; height: 38px; border-radius: 50%; border: none; background: rgba(255,255,255,0.14); color: #fff; font-size: 24px; line-height: 1; cursor: pointer; transition: background 0.15s ease; }
.lp-lightbox-close:hover { background: rgba(255,255,255,0.26); }

/* ===== Phase 16 Commit 11 ‚Äî draggable/swipeable reviews marquee ===== */
.lp-marquee { touch-action: pan-y; cursor: grab; }
.lp-marquee.dragging { cursor: grabbing; }
.lp-marquee-track { animation: none; -webkit-user-select: none; user-select: none; will-change: transform; }
.lp-review-thumb, .lp-review-play { pointer-events: none; }
.lp-review-thumb { -webkit-user-drag: none; }

/* ===== Phase 16 Commit 12 ‚Äî a11y focus rings + disabled presets ===== */
.lp-dd-toggle:focus-visible, .lp-input:focus-visible, .lp-preset:focus-visible, .lp-dd-search:focus-visible, .lp-order-btn:focus-visible, .lp-review-card:focus-visible, .lp-lightbox-close:focus-visible { outline: 2px solid #A78BFA; outline-offset: 2px; }
.lp-preset:disabled, .lp-preset-disabled { opacity: 0.32; cursor: not-allowed; }

/* ===== Phase 16 Commit 15 ‚Äî hero dual CTA ===== */
html { scroll-behavior: smooth; }
.crypto-hero-cta { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; align-items: center; margin: 32px auto 0; }
.crypto-hero-cta .crypto-cta-btn { margin: 0; }
.crypto-cta-btn-outline { background: rgba(167,139,250,0.1) !important; color: #C4B5FD !important; border: 1px solid rgba(167,139,250,0.4) !important; box-shadow: inset 0 1px 0 rgba(255,255,255,0.06) !important; }
.crypto-cta-btn-outline:hover, .crypto-cta-btn-outline:focus, .crypto-cta-btn-outline:focus-visible { background: rgba(167,139,250,0.18) !important; color: #fff !important; border-color: rgba(167,139,250,0.65) !important; text-decoration: none !important; }

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 18 ‚Äî Country section-head (eyebrow + title + sub centered)
   Country pages place eyebrow+sub inside .crypto-section content blocks
   (platform pages use bare title only). This centers the trio.
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */
.crypto-section-head {
  text-align: center;
  max-width: 640px;
  margin: 0 auto 28px;
}
.crypto-section-head .crypto-eyebrow { margin-bottom: 12px; }
.crypto-section-head .crypto-section-title { margin-top: 0; }

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 18 ‚Äî Country section layouts (USA redesign). All scoped .ctry-*;
   does NOT touch .crypto-* / .platform-tile-* definitions.
   Responsive via minmax (NO @media ‚Äî Lesson #10: PP strips @media from style.css).
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */

/* Sekcija 1 ‚Äî Why Choose: stacked feature-row list */
.ctry-feature-list {
  max-width: 760px; margin: 0 auto; display: flex; flex-direction: column;
  border: 1px solid rgba(167,139,250,0.14); border-radius: 16px; overflow: hidden;
}
.ctry-feature-row {
  display: flex; gap: 16px; align-items: flex-start;
  padding: 18px 20px; border-bottom: 1px solid rgba(167,139,250,0.1);
  background: rgba(255,255,255,0.015); transition: background .2s ease;
}
.ctry-feature-row:last-child { border-bottom: none; }
.ctry-feature-row:hover { background: rgba(167,139,250,0.05); }
.ctry-feature-icon {
  flex-shrink: 0; width: 42px; height: 42px; border-radius: 11px;
  background: rgba(167,139,250,0.1); border: 1px solid rgba(167,139,250,0.22);
  display: flex; align-items: center; justify-content: center; color: #C4B5FD;
}
.ctry-feature-icon svg { width: 20px; height: 20px; }
.ctry-feature-title { font-size: 16px; font-weight: 600; color: #fff; margin: 0 0 4px; }
.ctry-feature-desc { font-size: 13.5px; line-height: 1.55; color: rgba(255,255,255,0.6); margin: 0; }

/* Sekcija 2 ‚Äî Comprehensive: platform catalog tiles w/ brand icons */
.ctry-plat-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr));
  gap: 12px; max-width: 860px; margin: 0 auto;
}
.ctry-plat-tile {
  display: flex; gap: 14px; align-items: flex-start; padding: 16px 18px;
  border-radius: 14px; background: rgba(255,255,255,0.02);
  border: 1px solid rgba(167,139,250,0.13); transition: border-color .2s, transform .2s;
}
.ctry-plat-tile:hover { border-color: rgba(167,139,250,0.3); transform: translateY(-2px); }
.ctry-plat-ico { flex-shrink: 0; width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; }
.ctry-plat-ico svg { width: 22px; height: 22px; }
.ctry-plat-body { min-width: 0; }
.ctry-plat-title { font-size: 15px; font-weight: 600; color: #fff; margin: 0 0 4px; }
.ctry-plat-desc { font-size: 12.5px; line-height: 1.5; color: rgba(255,255,255,0.58); margin: 0; }
.ctry-plat-desc a.crypto-inline-link { color: #C4B5FD; }

/* Sekcija 3 ‚Äî Every Need: numbered editorial (01-04 via counter) */
.ctry-seg-list { max-width: 720px; margin: 0 auto; counter-reset: ctryseg; }
.ctry-seg { display: flex; gap: 18px; align-items: flex-start; padding: 18px 0; border-top: 1px solid rgba(167,139,250,0.1); counter-increment: ctryseg; }
.ctry-seg:first-child { border-top: none; }
.ctry-seg::before {
  content: counter(ctryseg, decimal-leading-zero);
  flex-shrink: 0; font-size: 28px; font-weight: 700; line-height: 1;
  color: rgba(167,139,250,0.4); width: 46px; font-variant-numeric: tabular-nums;
}
.ctry-seg-title { font-size: 16px; font-weight: 600; color: #fff; margin: 0 0 4px; }
.ctry-seg-desc { font-size: 13.5px; line-height: 1.55; color: rgba(255,255,255,0.6); margin: 0; }

/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   a11y ‚Äî yellow CTA focus ring (shared: all .crypto-cta-btn across 23 platform
   + country pages). .crypto-cta-btn is an <a>, so a:not(.btn):focus-visible
   (0,2,1) was the highest match and its ring read dark/invisible on the yellow
   fill (#FACA33). This later, equal-specificity (a.crypto-cta-btn = 0,2,1) rule
   with !important guarantees a visible amethyst ring ‚Äî matches the form/dropdown
   focus ring (.lp-* already use #A78BFA). Hover/focus yellow glow (line ~10447)
   is preserved (this only adds outline).
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */
a.crypto-cta-btn:focus-visible,
.crypto-cta-btn:focus-visible {
  outline: 2px solid #A78BFA !important;
  outline-offset: 2px;
}


/* ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê
   Phase 19 ‚Äî Blog dashboard (Aurora card grid). All scoped .blog-*; reuses
   .crypto-*/.lp-*/.crypto-final-cta elsewhere. Responsive via flex/minmax
   (NO @media ‚Äî Lesson #10).
   ‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê */
.blog-intro { max-width: 640px; margin: 0 auto; }
.blog-intro p { margin: 0 0 10px; }

.blog-filter { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin: 28px auto 40px; max-width: 760px; }
.blog-filter-btn { appearance: none; cursor: pointer; font: inherit; font-size: 13px; font-weight: 600; padding: 8px 16px; border-radius: 999px; color: #C4B5FD; background: rgba(167,139,250,0.1); border: 1px solid rgba(167,139,250,0.25); transition: background .2s, color .2s, border-color .2s; }
.blog-filter-btn:hover { background: rgba(167,139,250,0.18); color: #fff; }
.blog-filter-btn.active { background: #FACA33; color: #150B3D; border-color: #FACA33; }

.blog-posts { max-width: 1100px; margin: 0 auto; padding: 0 20px; }

.blog-featured { display: flex; flex-wrap: wrap; gap: 24px; align-items: start; margin: 0 0 72px; padding: 24px; border-radius: 18px; background: rgba(255,255,255,0.035); border: 1px solid rgba(167,139,250,0.16); }
.blog-feat-media { flex: 1 1 280px; }
.blog-feat-body { flex: 2 1 340px; min-width: 0; display: flex; flex-direction: column; }
.blog-feat-title { font-size: clamp(20px, 2.6vw, 28px); font-weight: 800; color: #fff; margin: 12px 0 10px; }

.blog-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: 24px; margin-bottom: 72px; }
.blog-card { display: flex; flex-direction: column; border-radius: 16px; overflow: hidden; background: rgba(255,255,255,0.02); border: 1px solid rgba(167,139,250,0.14); transition: transform .2s, border-color .2s; }
.blog-card:hover { transform: translateY(-3px); border-color: rgba(167,139,250,0.32); }
.blog-card-body { padding: 20px; display: flex; flex-direction: column; min-width: 0; }
.blog-card-title { font-size: 17px; font-weight: 700; color: #fff; margin: 12px 0 8px; line-height: 1.35; }

.blog-thumb-slot { width: 100%; aspect-ratio: 16 / 9; border-radius: 12px; background-size: cover; background-position: center; background-color: rgba(124,58,237,0.12); }
.blog-feat-media .blog-thumb-slot { aspect-ratio: 16 / 10; height: auto; min-height: 0; width: 100%; }
.blog-thumb-fallback { display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, rgba(124,58,237,0.3), rgba(167,139,250,0.15)); }
.blog-thumb-ph { font-size: 38px; opacity: 0.7; }

.blog-chips { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.blog-chip { font-size: 11.5px; font-weight: 600; padding: 4px 10px; border-radius: 999px; }
.blog-chip-cat { background: rgba(250,202,51,0.14); color: #FACA33; border: 1px solid rgba(250,202,51,0.3); text-transform: uppercase; letter-spacing: 0.04em; }
.blog-chip-author { background: rgba(167,139,250,0.12); color: #C4B5FD; text-decoration: none; }
.blog-chip-meta { font-size: 11.5px; color: rgba(255,255,255,0.45); }

.blog-excerpt { font-size: 13.5px; line-height: 1.55; color: rgba(255,255,255,0.6); margin: 0 0 14px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.blog-feat-body .blog-excerpt { -webkit-line-clamp: 4; }
.blog-content-raw { display: none !important; }

.blog-readmore { align-self: flex-start; margin-top: auto; }
.blog-card-readmore { margin-top: auto; align-self: flex-start; font-size: 13px; font-weight: 600; color: #C4B5FD; text-decoration: none; }
.blog-card-readmore:hover { color: #fff; }

.blog-pag { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; padding: 0; margin: 32px 0 0; }
.blog-pag li a { display: inline-flex; align-items: center; justify-content: center; min-width: 38px; height: 38px; padding: 0 12px; border-radius: 10px; color: #C4B5FD; text-decoration: none; background: rgba(167,139,250,0.08); border: 1px solid rgba(167,139,250,0.2); transition: background .2s, color .2s; }
.blog-pag li a:hover { background: rgba(167,139,250,0.18); color: #fff; }
.blog-pag li.active a { background: #FACA33; color: #150B3D; border-color: #FACA33; }

.blog-cta { margin-top: 8px; }

/* Phase 19b ‚Äî blog hero short lead + full {{ blog }} SEO intro moved below posts */
.blog-hero-lead { max-width: 600px; margin-left: auto; margin-right: auto; }
.blog-intro-seo { max-width: 1100px; margin: 72px auto; padding: 0 20px; }
.blog-intro-card { position: relative; overflow: hidden; background: rgba(167,139,250,0.09); border: 1px solid rgba(167,139,250,0.22); border-radius: 20px; padding: 40px 44px; }
.blog-intro-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, #A78BFA, #FACA33); }
.blog-intro-eyebrow { display: inline-block; font-size: 11px; font-weight: 500; letter-spacing: 0.13em; text-transform: uppercase; color: #C4B5FD; background: rgba(167,139,250,0.12); border: 0.5px solid rgba(167,139,250,0.22); padding: 4px 11px; border-radius: 999px; margin-bottom: 14px; }
.blog-intro-body h2 { font-size: 20px; font-weight: 600; color: #fff; margin: 0 0 12px; }
.blog-intro-body h3 { font-size: 16px; font-weight: 600; color: #fff; margin: 22px 0 10px; }
.blog-intro-body p { font-size: 14px; line-height: 1.7; color: rgba(255,255,255,0.6); margin: 0 0 16px; }
.blog-intro-body p:last-child { margin-bottom: 0; }
.blog-intro-body a { color: #C4B5FD; text-decoration: underline; text-underline-offset: 2px; }
.blog-intro-body a:hover { color: #A78BFA; }
.blog-intro-body ul, .blog-intro-body ol { padding-inline-start: 22px; margin: 0 0 12px; color: rgba(255,255,255,0.6); }

/* Phase 19c ‚Äî Blog premium polish (Chrome audit 8.0->9.5): hover lift/glow/zoom, category colors, type hierarchy, empty-state, avatar, fade, featured badge */
.blog-card, .blog-featured { transition: transform .25s cubic-bezier(.4,0,.2,1), border-color .25s, box-shadow .25s, opacity .25s; }
.blog-card:hover, .blog-featured:hover { transform: translateY(-4px); border-color: rgba(167,139,250,0.4); box-shadow: 0 12px 32px rgba(109,40,217,0.18); }
.blog-card-media, .blog-feat-media { overflow: hidden; position: relative; }
.blog-card-media .blog-thumb-slot, .blog-feat-media .blog-thumb-slot { transition: transform .35s cubic-bezier(.4,0,.2,1); }
.blog-card:hover .blog-thumb-slot, .blog-featured:hover .blog-thumb-slot { transform: scale(1.06); }

/* filter fade */
[data-post].is-hidden { opacity: 0; transform: translateY(8px); pointer-events: none; }

/* category colors per type (default .blog-chip-cat stays lavender for unknowns) */
.cat-guides        { background: rgba(56,99,180,0.15);  color: #85B7EB; border-color: rgba(56,99,180,0.35); }
.cat-platform-tips { background: rgba(29,158,117,0.15); color: #5DCAA5; border-color: rgba(29,158,117,0.35); }
.cat-reseller      { background: rgba(167,139,250,0.15); color: #C4B5FD; border-color: rgba(167,139,250,0.35); }
.cat-case-studies  { background: rgba(99,153,34,0.15);  color: #97C459; border-color: rgba(99,153,34,0.35); }
.cat-news          { background: rgba(186,117,23,0.15); color: #EF9F27; border-color: rgba(186,117,23,0.35); }

/* typographic hierarchy */
.blog-feat-title { font-size: clamp(1.5rem, 2.5vw, 2rem); font-weight: 600; line-height: 1.2; letter-spacing: -0.01em; }
.blog-card-title { font-size: 1.05rem; font-weight: 600; line-height: 1.3; letter-spacing: -0.005em; }
.blog-chip-meta  { font-size: 11px; letter-spacing: 0.04em; text-transform: uppercase; color: rgba(255,255,255,0.4); }
.blog-excerpt    { font-size: 13.5px; line-height: 1.6; color: rgba(255,255,255,0.55); }

/* empty-state (filtered category with no posts) */
.blog-empty { text-align: center; padding: 3rem 1rem; }
.blog-empty-ico { font-size: 32px; display: block; margin-bottom: 10px; opacity: 0.5; }
.blog-empty-text { font-size: 14px; color: rgba(255,255,255,0.5); }

/* author avatar (initial) */
.blog-avatar { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; font-size: 10px; font-weight: 600; background: linear-gradient(135deg, #A78BFA, #6D28D9); color: #fff; margin-right: 5px; vertical-align: middle; }

/* featured badge */
.blog-feat-badge { position: absolute; top: 12px; left: 12px; z-index: 2; font-size: 10px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: #150B3D; background: #FACA33; padding: 4px 11px; border-radius: 999px; }

/* Phase 19d ‚Äî Blog spacing & rhythm polish (Chrome audit 5.5->9): section label above grid */
.blog-section-head { margin-bottom: 24px; }
.blog-section-label { font-size: 12px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: rgba(196,181,253,0.7); }

/* Phase 19e - Blogpost (single post) Aurora article layout. Reuses .blog-chip/.cat-*/.blog-avatar; new .blogpost-* */
.blogpost-page { max-width: 1120px; margin: 0 auto; padding: 40px 20px 80px; }
.blogpost-hero { max-width: 720px; margin: 0 auto 40px; }
.blogpost-back { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: #C4B5FD; text-decoration: none; transition: color .2s; margin-bottom: 24px; }
.blogpost-back:hover { color: #fff; }
.blogpost-meta-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 20px; }
.blogpost-meta-bar:empty { display: none; }
.blogpost-title { font-size: clamp(1.8rem, 4vw, 2.6rem); font-weight: 600; line-height: 1.2; letter-spacing: -0.015em; color: #fff; margin: 0; }

/* article body - readable long-form; full verbatim content also kept hidden in .blogpost-content-raw */
.blogpost-content-raw { display: none !important; }
.blogpost-body { max-width: 720px; margin-left: auto; margin-right: auto; font-size: 17px; line-height: 1.75; color: rgba(255,255,255,0.85); }
.blogpost-body p.has-dropcap::first-letter { float: left; font-size: 3.2rem; line-height: 0.85; font-weight: 700; margin: 4px 10px 0 0; color: #C4B5FD; }
.blogpost-body h2 { font-size: 1.5rem; font-weight: 600; color: #fff; line-height: 1.3; margin: 40px 0 16px; letter-spacing: -0.01em; }
.blogpost-body h3 { font-size: 1.2rem; font-weight: 600; color: #fff; line-height: 1.35; margin: 32px 0 12px; }
.blogpost-body p { margin: 0 0 16px; }
.blogpost-body a { color: #C4B5FD; text-decoration: underline; text-underline-offset: 2px; transition: color .2s; }
.blogpost-body a:hover { color: #A78BFA; }
.blogpost-body img {
  display: block !important;
  width: auto !important;
  max-width: 100% !important;
  height: auto !important;
  margin: 1.5rem auto !important;
  border-radius: 12px;
  border: 0.5px solid rgba(167,139,250,0.16);
}
.blogpost-body ul, .blogpost-body ol { padding-inline-start: 24px; margin: 0 0 16px; }
.blogpost-body li { margin-bottom: 8px; }
.blogpost-body blockquote { margin: 24px 0; padding: 16px 20px; border-inline-start: 3px solid #A78BFA; background: rgba(167,139,250,0.06); border-radius: 0 12px 12px 0; color: rgba(255,255,255,0.7); font-style: italic; }
.blogpost-body strong { color: #fff; }

/* author note card */
.blogpost-author { max-width: 720px; display: flex; gap: 16px; align-items: flex-start; margin: 64px auto 0; padding: 24px; border-radius: 16px; background: rgba(167,139,250,0.05); border: 0.5px solid rgba(167,139,250,0.22); }
.blogpost-author-avatar { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%; font-size: 18px; font-weight: 700; color: #fff; background: linear-gradient(135deg, #A78BFA, #6D28D9); }
.blogpost-author-info { min-width: 0; }
.blogpost-author-label { display: inline-block; font-size: 11px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: #C4B5FD; margin-bottom: 8px; }
.blogpost-author-text { font-size: 14px; line-height: 1.7; color: rgba(255,255,255,0.6); margin: 0; }

/* prev/next nav */
.blogpost-nav { display: flex; flex-wrap: wrap; gap: 16px; margin: 48px 0; }
.blogpost-nav-prev, .blogpost-nav-next { flex: 1 1 240px; min-width: 0; max-width: 100%; overflow: hidden; box-sizing: border-box; display: flex; flex-direction: row; align-items: center; gap: 14px; padding: 18px 20px; border-radius: 14px; background: rgba(255,255,255,0.025); border: 0.5px solid rgba(167,139,250,0.16); text-decoration: none; transition: transform .2s cubic-bezier(.4,0,.2,1), border-color .2s, background .2s; }
.blogpost-nav-prev:hover, .blogpost-nav-next:hover { transform: translateY(-3px); border-color: rgba(167,139,250,0.4); background: rgba(255,255,255,0.04); box-shadow: 0 10px 28px rgba(109,40,217,0.16); }
.blogpost-nav-next { flex-direction: row-reverse; text-align: right; }
.blogpost-nav-label { font-size: 12px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: rgba(196,181,253,0.7); transition: transform .25s; }
.blogpost-nav-prev:hover .blogpost-nav-label { transform: translateX(-3px); }
.blogpost-nav-next:hover .blogpost-nav-label { transform: translateX(3px); }
.blogpost-nav-title { display: block; max-width: 100%; font-size: 15px; font-weight: 600; color: #fff; line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* CTA footer (reuses .crypto-final-cta) */
.blogpost-cta { margin-top: 64px; }
.blogpost-cta .accent { background: linear-gradient(90deg, #FACA33, #F59E0B); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; }

/* Phase 19f - Blogpost final polish: reading progress bar + share buttons (720px reading column, drop-cap, nav hover are inline above) */
.blogpost-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; background: rgba(167,139,250,0.18); z-index: 3000; }
.blogpost-progress-fill { height: 100%; width: 0; background: linear-gradient(90deg, #A78BFA, #FACA33); transition: width .1s linear; }

.blogpost-share { display: flex; align-items: center; gap: 10px; max-width: 720px; margin: 32px auto 0; }
.blogpost-share-label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; color: rgba(255,255,255,0.4); }
.blogpost-share-btn { width: 34px; height: 34px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; background: rgba(167,139,250,0.1); border: 0.5px solid rgba(167,139,250,0.22); color: #C4B5FD; cursor: pointer; text-decoration: none; transition: background .2s, border-color .2s, color .2s; }
.blogpost-share-btn:hover { background: rgba(167,139,250,0.2); border-color: rgba(167,139,250,0.4); color: #fff; }
.blogpost-share-btn.copied { background: #FACA33; color: #150B3D; border-color: #FACA33; }

/* Phase 19h - Blogpost prev/next preview thumbnail (Option C array gains img; 56px square, gradient fallback) */
.blogpost-nav-thumb { width: 56px; height: 56px; border-radius: 10px; flex-shrink: 0; background-size: cover; background-position: center; background-color: rgba(167,139,250,0.1); display: flex; align-items: center; justify-content: center; }
.blogpost-nav-thumb-fallback { font-size: 22px; color: rgba(196,181,253,0.4); }
.blogpost-nav-text { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1 1 auto; overflow: hidden; }

/* Phase 19i - Blogpost body table styling (comparison tables like "Best SMM Panels"); mobile horizontal scroll */
.blogpost-body table { width: 100%; border-collapse: collapse; margin: 1.75rem 0; font-size: 15px; background: rgba(255,255,255,0.02); border-radius: 12px; overflow: hidden; display: block; overflow-x: auto; }
.blogpost-body thead th { background: rgba(167,139,250,0.12); color: #C4B5FD; font-weight: 600; text-align: left; padding: 14px 16px; border-bottom: 1px solid rgba(167,139,250,0.2); }
.blogpost-body tbody td { padding: 13px 16px; border-bottom: 1px solid rgba(255,255,255,0.06); color: rgba(255,255,255,0.82); vertical-align: top; }
.blogpost-body tbody tr:last-child td { border-bottom: none; }
.blogpost-body tbody tr:hover { background: rgba(167,139,250,0.04); }
.blogpost-body tbody td:first-child { font-weight: 600; color: rgba(255,255,255,0.95); }

/* Phase 19j - Blog dashboard cross-page filter (option B): result cards rendered from blogIndex */
.blog-filter-results { margin-top: 8px; }
.blog-filter-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; }
.blog-fcard { display: flex; flex-direction: column; background: rgba(255,255,255,0.02); border: 1px solid rgba(167,139,250,0.12); border-radius: 16px; overflow: hidden; text-decoration: none; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.blog-fcard:hover { transform: translateY(-4px); border-color: rgba(167,139,250,0.35); box-shadow: 0 12px 32px rgba(0,0,0,0.3); }
.blog-fcard-img { aspect-ratio: 16 / 10; background-size: cover; background-position: center; background-color: rgba(167,139,250,0.1); }
.blog-fcard-img-fallback { display: flex; align-items: center; justify-content: center; font-size: 32px; color: rgba(196,181,253,0.4); }
.blog-fcard-body { padding: 16px 18px; display: flex; flex-direction: column; gap: 8px; }
.blog-fcard-title { font-size: 16px; font-weight: 600; color: #fff; margin: 0; line-height: 1.35; }
.blog-fcard-excerpt { font-size: 13px; color: rgba(255,255,255,0.6); margin: 0; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.blog-fcard-meta { display: flex; align-items: center; gap: 14px; font-size: 11px; letter-spacing: 0.04em; text-transform: uppercase; color: rgba(255,255,255,0.4); margin-top: 4px; }
.blog-fcard-date, .blog-fcard-read { display: inline-flex; align-items: center; }
.blog-chip-tag { display: inline-flex; align-items: center; width: fit-content; font-size: 11px; font-weight: 600; letter-spacing: 0.03em; padding: 3px 10px; border-radius: 999px; border: 1px solid transparent; }

/* Phase 19k - Blogpost prev/next mobile: smaller thumb + font on narrow screens (@media works in style.css) */
@media (max-width: 600px) {
  .blogpost-nav-thumb { width: 44px; height: 44px; }
  .blogpost-nav-title { font-size: 14px; }
  .blogpost-nav-label { font-size: 11px; }
}
