/* ═══════════════════════════════════════════════════════════════════
   ATHENA DNA — Reusable design tokens + component classes

   Source of truth: vac-web/athena-about.html (extracted 2 May 2026)

   Used by: aiinternet.ai, aiinternet.ai/origin, athenapilot.ai
   (and any future Violet Shores public surface that wants the
   Athena DNA visual identity)

   To use: <link rel="stylesheet" href="/athena-dna.css">
   Then add per-page styles for layouts unique to that page.

   Design philosophy:
   - Serif headlines (Cormorant Garamond) carry the editorial weight
   - Sans body (DM Sans) carries the readable working text
   - Mono labels (JetBrains Mono) carry the protocol/eyebrow signal
   - Dark theme with radial gradient ambient (purple + teal)
   - Purple is the primary accent, teal is the secondary, gold is tertiary
   - Cards lift on hover; reveals fade-up on scroll; dot pulses signal aliveness
═══════════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════
   FONTS — load via Google Fonts in <head>

   <link rel="preconnect" href="https://fonts.googleapis.com">
   <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
   <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,600&family=DM+Sans:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
═══════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════
   TOKENS
═══════════════════════════════════════════════ */
:root {
  /* Surfaces — dark theme, four progressive depths */
  --bg:        #07080D;   /* page background */
  --bg2:       #0C0D15;   /* alternate band background */
  --surface:   #111220;   /* card surface */
  --surface2:  #161829;   /* card hover surface */

  /* Borders */
  --border:    rgba(255,255,255,0.07);    /* default subtle border */
  --border-hi: rgba(124,107,240,0.35);    /* highlighted border (purple-tinted) */

  /* Accent palette — three semantic accents */
  --purple:    #7C6BF0;                    /* PRIMARY — VAC, identity, agent trust */
  --purple-lo: rgba(124,107,240,0.12);
  --purple-hi: rgba(124,107,240,0.25);

  --teal:      #2DD4BF;                    /* SECONDARY — verification, success, live */
  --teal-lo:   rgba(45,212,191,0.10);

  --gold:      #E8B84B;                    /* TERTIARY — IP, patent, premium */
  --gold-lo:   rgba(232,184,75,0.10);

  /* Text — three readability tiers */
  --text:      #EDF0F7;   /* primary body + headlines */
  --text2:     #9AA5BC;   /* secondary / muted prose */
  --text3:     #5E6A82;   /* tertiary / labels / footer */

  /* Type families */
  --serif:  'Cormorant Garamond', Georgia, serif;
  --sans:   'DM Sans', -apple-system, sans-serif;
  --mono:   'JetBrains Mono', 'Courier New', monospace;

  /* Easing — smooth deceleration, used across all transitions */
  --ease: cubic-bezier(0.16, 1, 0.3, 1);

  /* Layout */
  --max-width: 1120px;
  --section-pad-y: 100px;
  --section-pad-x: 2rem;
}


/* ═══════════════════════════════════════════════
   RESET
═══════════════════════════════════════════════ */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; }
body {
  font-family: var(--sans);
  background: var(--bg);
  color: var(--text);
  font-size: 16px;
  line-height: 1.7;
  overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }


/* ═══════════════════════════════════════════════
   AMBIENT BACKGROUND — radial-gradient glow
   Apply to <body> via body::before (already wired here)
═══════════════════════════════════════════════ */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background:
    radial-gradient(ellipse 70% 60% at 20% -10%, rgba(124,107,240,0.08) 0%, transparent 60%),
    radial-gradient(ellipse 50% 50% at 80% 110%, rgba(45,212,191,0.05) 0%, transparent 60%);
  pointer-events: none;
  z-index: 0;
}


/* ═══════════════════════════════════════════════
   NAV
═══════════════════════════════════════════════ */
nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  background: rgba(7,8,13,0.85);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--border);
  transition: border-color 0.3s;
}
nav.scrolled { border-color: rgba(124,107,240,0.2); }
.nav-inner {
  max-width: var(--max-width); margin: 0 auto;
  padding: 0 var(--section-pad-x);
  display: flex; align-items: center; justify-content: space-between;
  height: 60px;
}
.nav-logo {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--mono); font-size: 14px; font-weight: 500;
  color: var(--text); letter-spacing: 0.5px;
}
.nav-logo-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--purple);
  box-shadow: 0 0 8px var(--purple);
  animation: pulse-dot 2.5s ease-in-out infinite;
}
@keyframes pulse-dot {
  0%, 100% { box-shadow: 0 0 8px rgba(124,107,240,0.8); }
  50%       { box-shadow: 0 0 16px rgba(124,107,240,0.4); }
}
.nav-links { display: flex; align-items: center; gap: 2rem; }
.nav-links a {
  font-size: 13px; font-weight: 500; color: var(--text2);
  letter-spacing: 0.3px;
  transition: color 0.2s;
}
.nav-links a:hover { color: var(--text); }

.nav-cta {
  font-size: 13px !important; font-weight: 600 !important;
  color: var(--text) !important;
  background: var(--purple-lo);
  border: 1px solid var(--border-hi);
  padding: 7px 18px;
  border-radius: 6px;
  transition: background 0.2s, border-color 0.2s !important;
}
.nav-cta:hover { background: var(--purple-hi) !important; border-color: var(--purple) !important; }


/* ═══════════════════════════════════════════════
   HERO PATTERNS
   .hero       — page hero container
   .hero-badge — small pill above headline
   .hero h1    — display headline (serif italic, gradient on <em>)
   .hero-sub   — supporting paragraph
═══════════════════════════════════════════════ */
.hero {
  position: relative; z-index: 1;
  min-height: 100vh;
  display: flex; flex-direction: column; justify-content: center;
  max-width: var(--max-width); margin: 0 auto;
  padding: 120px var(--section-pad-x) 80px;
}
.hero-badge {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--mono); font-size: 11px; font-weight: 500;
  color: var(--teal); letter-spacing: 1.8px; text-transform: uppercase;
  background: var(--teal-lo);
  border: 1px solid rgba(45,212,191,0.2);
  padding: 6px 14px; border-radius: 20px;
  margin-bottom: 2rem;
  opacity: 0; animation: fadeUp 0.7s var(--ease) 0.1s forwards;
}
.hero-badge::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%;
  background: var(--teal); flex-shrink: 0;
}
.hero h1 {
  font-family: var(--serif);
  font-size: clamp(3rem, 6vw, 5.5rem);
  font-weight: 500;
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: var(--text);
  max-width: 860px;
  margin-bottom: 1.5rem;
  opacity: 0; animation: fadeUp 0.8s var(--ease) 0.25s forwards;
}
.hero h1 em {
  font-style: italic;
  background: linear-gradient(135deg, var(--purple) 0%, var(--teal) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.hero-sub {
  font-size: 1.15rem; line-height: 1.8; color: var(--text2);
  max-width: 580px; font-weight: 400;
  margin-bottom: 2.5rem;
  opacity: 0; animation: fadeUp 0.8s var(--ease) 0.4s forwards;
}
.hero-actions {
  display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
  opacity: 0; animation: fadeUp 0.8s var(--ease) 0.55s forwards;
}


/* ═══════════════════════════════════════════════
   BUTTONS
═══════════════════════════════════════════════ */
.btn-primary {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--purple);
  color: #fff;
  font-size: 15px; font-weight: 600;
  padding: 14px 28px; border-radius: 8px;
  border: none; cursor: pointer;
  transition: opacity 0.2s, transform 0.2s, box-shadow 0.2s;
  box-shadow: 0 4px 24px rgba(124,107,240,0.35);
}
.btn-primary:hover {
  opacity: 0.92; transform: translateY(-1px);
  box-shadow: 0 8px 32px rgba(124,107,240,0.5);
}
.btn-secondary {
  display: inline-flex; align-items: center; gap: 8px;
  background: transparent;
  color: var(--text2);
  font-size: 15px; font-weight: 500;
  padding: 14px 24px; border-radius: 8px;
  border: 1px solid var(--border);
  cursor: pointer;
  transition: color 0.2s, border-color 0.2s;
}
.btn-secondary:hover { color: var(--text); border-color: rgba(255,255,255,0.18); }


/* ═══════════════════════════════════════════════
   SECTION WRAPPERS
   .section        — standard 1120px-wide section
   .section-divider — hairline separator between sections
   .full-bleed     — section with bg2 fill spanning viewport width
═══════════════════════════════════════════════ */
.section {
  position: relative; z-index: 1;
  max-width: var(--max-width); margin: 0 auto;
  padding: var(--section-pad-y) var(--section-pad-x);
}
.section-divider {
  position: relative; z-index: 1;
  height: 1px;
  background: linear-gradient(to right, transparent, var(--border), transparent);
  max-width: var(--max-width); margin: 0 auto;
}
.full-bleed {
  position: relative; z-index: 1;
  background: var(--bg2);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.full-bleed .section { padding: var(--section-pad-y) var(--section-pad-x); }


/* ═══════════════════════════════════════════════
   EYEBROW LABEL — mono uppercase with leading line
   Use on section intros: <div class="eyebrow eyebrow-purple">Identity</div>
═══════════════════════════════════════════════ */
.eyebrow {
  font-family: var(--mono); font-size: 11px; font-weight: 500;
  letter-spacing: 2px; text-transform: uppercase;
  margin-bottom: 1.2rem;
  display: flex; align-items: center; gap: 10px;
}
.eyebrow::before {
  content: ''; display: block;
  width: 24px; height: 1px; flex-shrink: 0;
}
.eyebrow-purple { color: var(--purple); }
.eyebrow-purple::before { background: var(--purple); }
.eyebrow-teal   { color: var(--teal); }
.eyebrow-teal::before { background: var(--teal); }
.eyebrow-gold   { color: var(--gold); }
.eyebrow-gold::before { background: var(--gold); }


/* ═══════════════════════════════════════════════
   SECTION HEADINGS
═══════════════════════════════════════════════ */
.section-title {
  font-family: var(--serif);
  font-size: clamp(2.2rem, 4vw, 3.8rem);
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.02em;
  margin-bottom: 1rem;
  max-width: 760px;
}
.section-sub {
  font-size: 1.05rem; line-height: 1.8; color: var(--text2);
  max-width: 580px; font-weight: 400;
  margin-bottom: 3rem;
}


/* ═══════════════════════════════════════════════
   CARD BASE — used by security-card, ent-card, life-persona, etc.
   Add page-specific classes for grid layout + content.
═══════════════════════════════════════════════ */
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 28px 24px;
  transition: border-color 0.2s, transform 0.2s;
}
.card:hover {
  border-color: var(--border-hi);
  transform: translateY(-2px);
}
.card-icon {
  width: 44px; height: 44px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 22px; margin-bottom: 16px;
}
.card h3 {
  font-size: 15px; font-weight: 600; color: var(--text);
  margin-bottom: 8px;
}
.card p {
  font-size: 14px; color: var(--text2); line-height: 1.7;
}


/* ═══════════════════════════════════════════════
   TAGS — small mono-uppercase pill labels with semantic color
═══════════════════════════════════════════════ */
.tag {
  display: inline-block;
  font-family: var(--mono); font-size: 10px; font-weight: 500;
  letter-spacing: 0.8px; text-transform: uppercase;
  padding: 3px 8px; border-radius: 4px; margin-top: 12px;
}
.tag-teal   { background: var(--teal-lo);   color: var(--teal); }
.tag-purple { background: var(--purple-lo); color: var(--purple); }
.tag-gold   { background: var(--gold-lo);   color: var(--gold); }


/* ═══════════════════════════════════════════════
   REVEAL ANIMATION — fade-up on scroll
   Add `.reveal` to any element. Toggle `.visible` via JS IntersectionObserver:
       const observer = new IntersectionObserver((entries) => {
         entries.forEach(e => e.isIntersecting && e.target.classList.add('visible'));
       });
       document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
   Stagger with .reveal-delay-1 through -5 on grid children.
═══════════════════════════════════════════════ */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.8s var(--ease), transform 0.8s var(--ease);
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.2s; }
.reveal-delay-3 { transition-delay: 0.3s; }
.reveal-delay-4 { transition-delay: 0.4s; }
.reveal-delay-5 { transition-delay: 0.5s; }

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}


/* ═══════════════════════════════════════════════
   SCROLL HINT — small mono "scroll" indicator
═══════════════════════════════════════════════ */
.hero-scroll-hint {
  position: absolute; bottom: 40px; left: 50%; transform: translateX(-50%);
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  font-size: 11px; color: var(--text3); letter-spacing: 1px; text-transform: uppercase;
  font-family: var(--mono);
  opacity: 0; animation: fadeUp 0.8s var(--ease) 1.2s forwards;
}
.scroll-line {
  width: 1px; height: 40px;
  background: linear-gradient(to bottom, var(--text3), transparent);
  animation: scroll-line 2s ease-in-out infinite;
}
@keyframes scroll-line {
  0%, 100% { opacity: 0.3; transform: scaleY(1); }
  50%       { opacity: 0.8; transform: scaleY(1.1); }
}


/* ═══════════════════════════════════════════════
   GRADIENT TEXT — purple → teal
   Use on display headlines or accent words.
═══════════════════════════════════════════════ */
.gradient-text {
  background: linear-gradient(135deg, var(--purple) 0%, var(--teal) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}


/* ═══════════════════════════════════════════════
   GOLD-GRADIENT NUMERIC — for big patent counter / stat callouts
═══════════════════════════════════════════════ */
.numeric-callout {
  font-family: var(--serif);
  font-size: clamp(3rem, 5vw, 4.5rem);
  font-weight: 600;
  line-height: 1;
  background: linear-gradient(135deg, var(--gold) 0%, #F5C96D 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}


/* ═══════════════════════════════════════════════
   CTA SECTION — full-width centered block with radial glow
═══════════════════════════════════════════════ */
.cta-section {
  position: relative; z-index: 1;
  text-align: center;
  padding: 120px var(--section-pad-x);
  overflow: hidden;
}
.cta-section::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 80% 60% at 50% 50%, rgba(124,107,240,0.1) 0%, transparent 70%);
  pointer-events: none;
}
.cta-inner { position: relative; max-width: 680px; margin: 0 auto; }
.cta-inner h2 {
  font-family: var(--serif);
  font-size: clamp(2.5rem, 5vw, 4rem);
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.02em;
  margin-bottom: 1.2rem;
}
.cta-inner p {
  font-size: 1.05rem; color: var(--text2); line-height: 1.8;
  margin-bottom: 2.5rem;
}
.cta-actions {
  display: flex; align-items: center; justify-content: center;
  gap: 1rem; flex-wrap: wrap;
}


/* ═══════════════════════════════════════════════
   FOOTER
═══════════════════════════════════════════════ */
footer {
  position: relative; z-index: 1;
  border-top: 1px solid var(--border);
  padding: 40px var(--section-pad-x);
}
.footer-inner {
  max-width: var(--max-width); margin: 0 auto;
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 1rem;
}
.footer-logo {
  font-family: var(--mono); font-size: 13px; color: var(--text3);
}
.footer-links {
  display: flex; gap: 1.5rem; flex-wrap: wrap;
}
.footer-links a {
  font-size: 13px; color: var(--text3);
  transition: color 0.2s;
}
.footer-links a:hover { color: var(--text2); }
.footer-copy {
  font-size: 12px; color: var(--text3);
  width: 100%;
}


/* ═══════════════════════════════════════════════
   UTILITIES
═══════════════════════════════════════════════ */
.text-purple { color: var(--purple); }
.text-teal   { color: var(--teal); }
.text-gold   { color: var(--gold); }
.text-muted  { color: var(--text2); }
.text-dim    { color: var(--text3); }
.font-serif  { font-family: var(--serif); }
.font-sans   { font-family: var(--sans); }
.font-mono   { font-family: var(--mono); }
.italic      { font-style: italic; }
.mt-sm { margin-top: 1rem; }
.mt-md { margin-top: 2rem; }
.mt-lg { margin-top: 3rem; }
.mb-sm { margin-bottom: 1rem; }
.mb-md { margin-bottom: 2rem; }
.mb-lg { margin-bottom: 3rem; }


/* ═══════════════════════════════════════════════
   RESPONSIVE — single breakpoint at 768px (mobile),
   page-specific component grids handle their own sub-breakpoints.
═══════════════════════════════════════════════ */
@media (max-width: 768px) {
  .nav-links { display: none; }   /* page should provide a hamburger or mobile alt */
  .hero { padding: 100px 1.25rem 60px; }
  .section { padding: 60px 1.25rem; }
  .full-bleed .section { padding: 60px 1.25rem; }
  .cta-section { padding: 80px 1.25rem; }
  footer { padding: 32px 1.25rem; }
}


/* ═══════════════════════════════════════════════
   END OF ATHENA DNA
═══════════════════════════════════════════════ */
