/* ════════════════════════════════════════════════════════════
   EVE Core — Sovereign Deterministic AI Trust Infrastructure
   Command-Center Design System · Deterministic · Enforced
   ════════════════════════════════════════════════════════════ */

@import url('/css/eve-motion.css?v=1');

*{margin:0;padding:0;box-sizing:border-box}

:root{
  /* Foundation — deep sovereign navy/black (was mid-slate #1a2030) */
  --bg:        #080c14;
  --bg-card:   #0c1119;
  --bg-raised: #11192a;
  --bg-panel:  #070a11;
  --border:    #1b2536;
  --border-dim:#121826;
  --accent:    #4f8ef7;
  --accent2:   #7c3aed;
  --accent-cy: #22d3ee;
  --accent-soft: rgba(79,142,247,.10);
  --ring:      rgba(79,142,247,.45);
  --green:     #22c55e;
  --green-dim: rgba(34,197,94,.08);
  --red:       #ef4444;
  --red-dim:   rgba(239,68,68,.07);
  /* --danger-text: the TEXT-safe member of the red ramp. --red (#ef4444) is a
     FILL; as text it is 3.74:1 at best on dark and 2.68:1 on light, i.e. under
     AA in both themes (2026-09-06 render sweep).
     The canonical definition lives in design-tokens.css, which is @imported by
     app-core.css and theme.css — but NOT by this sheet, so the ~41 pages that
     load only styles.css were falling back to the raw #ef4444 and stayed
     unfixed. Declared here rather than @importing the whole token layer: that
     would pull 60+ semantic tokens and a [data-theme="light"] block onto pages
     whose light theming comes from public-light.css, which is a far larger
     change than this one value warrants.
     Values must stay in step with design-tokens.css. */
  --danger-text: #f87171;   /* worst case 5.09:1 over the real dark surfaces */
  --gold:      #f59e0b;
  --gold-dim:  rgba(245,158,11,.07);
  --cyan:      #22d3ee;
  /* Text — all pairs now >=4.5:1 on --bg / --bg-card */
  --text:      #c2d0e2;
  --text-dim:  #8497af;
  --heading:   #eef3fb;
  /* Type + spacing system */
  --section-y: 112px;
  /* Shared content-width cap. Industry (.il) pages and the site footer use
     max-width:var(--maxw); it was previously defined only inside the footer
     <style> block, so a footer re-sync stripped it and every section stretched
     full-viewport. Owned here (loaded on every page) so it can't be lost again. */
  --maxw:      1400px;
  --mono:      'IBM Plex Mono','Consolas',monospace;
  --sans:      'IBM Plex Sans',-apple-system,BlinkMacSystemFont,sans-serif;
  /* Elevation */
  --shadow-sm: 0 1px 2px rgba(0,0,0,.4);
  --shadow-md: 0 12px 32px rgba(0,0,0,.45);
  --shadow-glow: 0 0 0 1px rgba(79,142,247,.15), 0 18px 48px rgba(5,10,22,.6);
}

html{scroll-behavior:smooth}

body{
  font-family:var(--sans);
  background:var(--bg);
  color:var(--text);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

a{color:var(--accent);text-decoration:none}
a:hover{color:#7aabff}

/* ── Layout ── */
.container{max-width:1280px;margin:0 auto;padding:0 40px}

section{padding:var(--section-y) 40px}
section:nth-child(even){background:var(--bg-card)}

/* ── Authority Bar ── */
.authority-bar{
  background:#07111e;
  border-top:2px solid rgba(96,165,250,0.55);
  border-bottom:1px solid rgba(96,165,250,0.18);
  height:36px;
  display:flex;align-items:center;
  padding:0 24px;
  overflow:hidden;white-space:nowrap;
  position:relative;
}
.authority-bar::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,rgba(96,165,250,0.7),rgba(99,102,241,0.7));
}
.ab-brand{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.ab-pulse{
  width:6px;height:6px;border-radius:50%;flex-shrink:0;
  background:#22c55e;box-shadow:0 0 7px rgba(34,197,94,.9);
  animation:ab-blink 2.2s ease-in-out infinite;
}
@keyframes ab-blink{0%,100%{opacity:1;box-shadow:0 0 7px rgba(34,197,94,.9)}50%{opacity:.4;box-shadow:0 0 2px rgba(34,197,94,.4)}}
.ab-brand-text{
  font-family:'IBM Plex Mono','Consolas',monospace;
  font-size:9px;font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;
  color:rgba(96,165,250,0.95);
}
.ab-divider{width:1px;height:18px;background:rgba(96,165,250,0.2);flex-shrink:0;margin:0 16px}
.ab-items{display:flex;align-items:center;flex:1;justify-content:center;gap:0}
.ab-item{
  font-family:'IBM Plex Mono','Consolas',monospace;
  font-size:9px;font-weight:600;
  letter-spacing:.09em;text-transform:uppercase;
  flex-shrink:0;padding:0 10px;
}
.ab-sep{
  font-family:'IBM Plex Mono','Consolas',monospace;
  font-size:9px;color:rgba(96,165,250,0.22);
  flex-shrink:0;user-select:none;
}
.ab-green{color:rgba(34,197,94,.9)}
.ab-blue {color:rgba(96,165,250,.9)}
.ab-amber{color:rgba(245,158,11,.9)}
.ab-badge{display:flex;align-items:center;gap:6px;flex-shrink:0;}
.ab-op-dot{
  width:5px;height:5px;border-radius:50%;flex-shrink:0;
  background:#22c55e;box-shadow:0 0 5px rgba(34,197,94,.8);
}
.ab-op-text{
  font-family:'IBM Plex Mono','Consolas',monospace;
  font-size:9px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;
  color:rgba(34,197,94,.95);
}
@media(max-width:1200px){
  .authority-bar{padding:0 14px}
  .ab-divider{margin:0 10px}
  .ab-item{font-size:8px;padding:0 7px;letter-spacing:.07em}
  .ab-sep{font-size:8px}
}
@media(max-width:900px){
  .ab-brand-text{display:none}
  .ab-item:nth-child(n+12){display:none}
}
@media(max-width:768px){.authority-bar{display:none}}

/* ── Header (legacy .header class — kept for compatibility) ── */
.header{
  position:fixed;top:0;left:0;right:0;z-index:100;
  padding:16px 40px;
  background:rgba(6,8,14,.98);
  backdrop-filter:blur(20px);
  border-bottom:1px solid #0e1220;
  box-shadow:0 1px 0 #0e1220;
  display:flex;justify-content:space-between;align-items:center;
}
.logo{
  display:flex;align-items:center;gap:12px;
  font-family:var(--mono);font-size:22px;font-weight:600;
  color:#e2e6ef;letter-spacing:4px;text-transform:uppercase;text-decoration:none;
}
.logo-icon{width:44px;height:44px;object-fit:contain;border-radius:1px}
.logo .logo-text{font-size:20px;font-weight:700;color:#e2e6ef;white-space:nowrap}
.logo .logo-core{color:var(--accent)}
.logo .tm{font-size:11px;position:relative;top:-10px;color:#e2e6ef;letter-spacing:.05em;margin-left:4px;font-weight:600}
.nav-links{display:flex;gap:24px;align-items:center}
.nav-links a{
  font-family:var(--mono);font-size:12px;
  color:#566882;text-transform:uppercase;
  letter-spacing:.08em;transition:color .2s;text-decoration:none;
}
.nav-links a:hover{color:#c5d0de}

/* ── Mobile Menu ── */
.mobile-menu-btn{
  display:none;background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.10);
  border-radius:0;color:#c5d0de;
  font-size:24px;cursor:pointer;
  padding:10px 14px;line-height:1;transition:all .2s;
  z-index:101;position:relative;
  -webkit-tap-highlight-color:rgba(79,142,247,.2);
  touch-action:manipulation;user-select:none;
}
.mobile-menu-btn:hover,.mobile-menu-btn:active{
  background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2);
}
.mobile-menu-overlay{
  display:none;position:fixed;top:0;left:0;right:0;bottom:0;
  background:linear-gradient(180deg,rgba(8,11,18,.99) 0%,rgba(6,8,14,.99) 100%);
  z-index:999;padding:90px 24px 30px;overflow-y:auto;
}
.mobile-menu-overlay.active{display:block}
.mobile-menu-close{
  position:absolute;top:20px;right:20px;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.10);
  border-radius:1px;color:#c5d0de;
  font-size:28px;cursor:pointer;padding:8px 12px;line-height:1;transition:all .2s;
  touch-action:manipulation;user-select:none;
}
.mobile-menu-close:hover{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.22);}
.mobile-menu-links{display:flex;flex-direction:column;gap:6px;margin-bottom:24px}
.mobile-menu-links a{
  color:#8fa4bb;text-decoration:none;
  font-size:18px;font-weight:500;padding:16px 20px;
  border-radius:1px;background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.06);transition:all .2s;
}
.mobile-menu-links a:hover{background:rgba(79,142,247,.08);border-color:rgba(79,142,247,.2);color:#4f8ef7;}
.mobile-menu-buttons{
  display:flex;flex-direction:column;gap:12px;
  margin-top:28px;padding-top:24px;border-top:1px solid rgba(255,255,255,.06);
}
.mobile-menu-buttons .btn{
  width:100%;padding:16px 24px;font-size:16px;font-weight:600;
  min-height:54px;border-radius:0;text-align:center;
}

/* ── Buttons ── */
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:10px 24px;border-radius:0;
  font-family:var(--mono);font-size:13px;font-weight:600;
  text-transform:uppercase;letter-spacing:.08em;
  border:1px solid;cursor:pointer;
  transition:all .2s;text-decoration:none;
}
.btn-sm{padding:6px 14px;font-size:11px}
/* Primary: solid brand azure (eveneurosystems parity) — no gradient */
.btn-primary{
  background:#2f6fd0;
  border-color:#5b9ee8;color:#fff !important;font-weight:600;
  box-shadow:0 6px 22px rgba(91,158,232,.28);
}
.btn-primary:hover{background:#2861c0;border-color:#2861c0;color:#fff;transform:translateY(-2px);box-shadow:0 10px 30px rgba(91,158,232,.42)}
.btn-ghost{background:rgba(255,255,255,.02);border-color:rgba(255,255,255,.14);color:var(--text);backdrop-filter:blur(6px)}
.btn-ghost:hover{border-color:rgba(255,255,255,.28);background:rgba(255,255,255,.05);color:var(--heading)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}
.btn-green{background:var(--green);border-color:var(--green);color:#080b12 !important;font-weight:700}
.btn-green:hover{background:#4ade80;border-color:#4ade80}

/* ── Hero ── */
.hero{
  min-height:auto;
  display:flex;align-items:center;justify-content:center;
  text-align:center;
  padding:72px 40px 80px;
  position:relative;
  /* Brand gradient: blue/purple/cyan glows over a deep slate base that
     fades into --bg so the hero flows seamlessly into the page. */
  background:
    radial-gradient(95% 75% at 50% -12%, rgba(79,142,247,.20), transparent 62%),
    radial-gradient(70% 60% at 84% 6%,  rgba(124,58,237,.16), transparent 58%),
    radial-gradient(60% 55% at 14% 20%, rgba(6,182,212,.12),  transparent 60%),
    linear-gradient(180deg, #0f1730 0%, #141c33 50%, var(--bg) 100%);
  overflow:hidden;
}
/* Slowly drifting grid pattern */
@keyframes gridDrift{
  from{background-position:0 0,0 0}
  to{background-position:40px 40px,40px 40px}
}
.hero::before{
  content:'';position:absolute;top:0;left:0;width:100%;height:100vh;z-index:0;pointer-events:none;display:block;
  /* NO page image here. The landing's backdrop lives in index.html's inline `html .hero::before`
     override; hardcoding an image on this SHARED rule leaks the landing hero onto every .hero page
     (z-index:0) and hides each page's own `.hero-bg` (z-index:-2). Each page supplies its own hero. */
}
/* Soft drifting aurora glow */
@keyframes auroraDrift{
  0%{transform:translate3d(-3%,-2%,0) scale(1)}
  50%{transform:translate3d(3%,2%,0) scale(1.08)}
  100%{transform:translate3d(-2%,3%,0) scale(1.04)}
}
.hero::after{
  content:'';position:absolute;inset:0;
  background:
    radial-gradient(60% 50% at 50% -10%, rgba(79,142,247,.18), transparent 65%),
    radial-gradient(40% 40% at 82% 8%, rgba(124,58,237,.10), transparent 60%);
  filter:blur(8px);
  animation:auroraDrift 22s ease-in-out infinite alternate;
  pointer-events:none;z-index:1;
}
@media (prefers-reduced-motion: reduce){
  .hero::before{animation:none}
  .hero::after{animation:none}
}
.hero-inner{position:relative;z-index:2;max-width:960px}

/* Hero badge */
.hero-badge{
  display:inline-flex;align-items:center;gap:10px;
  padding:10px 24px;
  background:rgba(79,142,247,.06);
  border:1px solid rgba(79,142,247,.2);
  font-family:var(--mono);font-size:13px;
  color:var(--accent);
  text-transform:uppercase;letter-spacing:.14em;
  margin-bottom:40px;
}

/* H1 override for hero */
.hero h1{
  font-size:clamp(52px,8vw,88px);
  font-weight:700;
  color:var(--heading);line-height:1.1;
  margin-bottom:32px;
  letter-spacing:-0.02em;
}
.hero h1 em{font-style:normal;color:var(--accent)}

.hero-sub{
  font-size:clamp(17px,2vw,21px);color:var(--text);
  max-width:720px;margin:0 auto 28px;
  line-height:1.65;
}
.hero-rule{
  font-family:var(--mono);font-size:15px;
  color:var(--text);
  padding:14px 28px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  display:inline-block;
  margin-bottom:44px;line-height:1.6;max-width:760px;
  box-shadow:var(--shadow-sm);
}
.hero-btns{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.hero-btns .btn{padding:16px 36px;font-size:15px}

/* ── Data flow ── */
.hero-flow{
  margin-top:56px;
  display:flex;align-items:center;justify-content:center;
  gap:0;flex-wrap:nowrap;
  font-family:var(--mono);font-size:12px;
}
.flow-node{
  padding:13px 22px;
  border:1px solid var(--border);
  background:var(--bg-raised);
  color:var(--text);
  position:relative;white-space:nowrap;
}
.flow-node.flow-core{
  border-color:var(--accent);background:rgba(79,142,247,.07);
  color:var(--accent);font-weight:700;
}
.flow-node.flow-block{
  border-color:var(--red);background:rgba(239,68,68,.06);color:var(--danger-text, var(--red));font-weight:700;
}
.flow-node.flow-pass{
  border-color:var(--green);background:rgba(34,197,94,.06);color:var(--green);font-weight:700;
}
.flow-arrow{
  width:36px;height:1px;background:var(--border);position:relative;flex-shrink:0;
}
.flow-arrow::after{
  content:'';position:absolute;right:-1px;top:-4px;
  border:5px solid transparent;border-left-color:var(--border);
}
.flow-arrow.flow-arrow-active{background:var(--accent)}
.flow-arrow.flow-arrow-active::after{border-left-color:var(--accent)}

/* ── Pulse dot ── */
.pulse-dot{
  display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;
}
.pulse-dot.green{background:var(--green);box-shadow:0 0 6px var(--green)}
.pulse-dot.red{background:var(--red);box-shadow:0 0 6px var(--red)}
.pulse-dot.blue{background:var(--accent);box-shadow:0 0 6px var(--accent)}
@keyframes pulse-anim{0%,100%{opacity:1}50%{opacity:.35}}
.pulse-anim{animation:pulse-anim 2s ease-in-out infinite}

/* ── Stats strip ── */
.stats{
  display:flex;justify-content:center;gap:40px;flex-wrap:wrap;
  margin-top:48px;padding-top:28px;
  border-top:1px solid rgba(255,255,255,.06);
}
.stat-val{
  font-family:var(--mono);font-size:32px;font-weight:700;color:var(--accent);
}
.stat-label{
  font-size:13px;color:var(--text-dim);
  text-transform:uppercase;letter-spacing:.08em;margin-top:4px;
}

/* ── Governance Status Panel ── */
.gov-panel{
  margin:48px auto 0;
  max-width:800px;
  border:1px solid var(--border);
  background:var(--bg-panel);
  font-family:var(--mono);
  text-align:left;
}
.gov-panel-hdr{
  display:flex;justify-content:space-between;align-items:center;
  padding:9px 20px;
  border-bottom:1px solid var(--border);
  background:rgba(255,255,255,.02);
  font-size:10px;text-transform:uppercase;letter-spacing:.14em;
}
.gov-panel-hdr .gph-label{color:var(--text-dim)}
.gov-panel-hdr .gph-status{
  display:flex;align-items:center;gap:6px;
  color:var(--green);font-size:10px;
}
.gp-row{
  display:flex;align-items:center;gap:12px;
  padding:10px 20px;
  border-bottom:1px solid var(--border-dim);
  font-size:11px;
}
.gp-row:last-child{border-bottom:none}
.gp-key{color:var(--text);flex:1;font-size:12px}
.gp-active{
  font-size:9px;padding:2px 8px;
  background:rgba(34,197,94,.07);
  border:1px solid rgba(34,197,94,.2);
  color:var(--green);
  text-transform:uppercase;letter-spacing:.1em;font-weight:700;
  white-space:nowrap;
}
.gp-metric{
  color:var(--text-dim);font-size:11px;
  text-align:right;min-width:160px;
}

/* ── Section headers ── */
.s-badge{
  display:inline-flex;align-items:center;gap:8px;
  padding:7px 18px;
  font-family:var(--mono);font-size:12px;font-weight:700;
  text-transform:uppercase;letter-spacing:.14em;
  margin-bottom:24px;
}
.s-badge-red{background:rgba(239,68,68,.05);border:1px solid rgba(239,68,68,.18);color:var(--danger-text, var(--red))}
.s-badge-blue{background:rgba(79,142,247,.05);border:1px solid rgba(79,142,247,.18);color:var(--accent)}
.s-badge-purple{background:rgba(124,58,237,.05);border:1px solid rgba(124,58,237,.18);color:var(--accent2)}
.s-badge-green{background:rgba(34,197,94,.05);border:1px solid rgba(34,197,94,.18);color:var(--green)}
.s-badge-cyan{background:rgba(6,182,212,.05);border:1px solid rgba(6,182,212,.18);color:var(--cyan)}
.s-badge-gold{background:rgba(245,158,11,.05);border:1px solid rgba(245,158,11,.18);color:var(--gold)}

.s-title{
  font-size:clamp(32px,4vw,52px);font-weight:600;
  color:var(--heading);line-height:1.15;margin-bottom:20px;
  letter-spacing:-0.02em;
}
.s-title em{font-style:normal;color:var(--accent)}
.s-sub{font-size:18px;color:var(--text-dim);max-width:680px;margin:0 auto;line-height:1.65}
.s-center{text-align:center}

/* ── Pain cards ── */
.pain-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:1px;background:var(--border);
  border:1px solid var(--border);overflow:hidden;margin-top:48px;
}
.pain-card{background:var(--bg);padding:36px 32px;transition:background .2s}
.pain-card:hover{background:var(--bg-raised)}
.pain-icon{font-family:var(--mono);font-size:28px;font-weight:700;color:var(--danger-text, var(--red));margin-bottom:12px;letter-spacing:.05em}
.pain-title{font-size:18px;font-weight:600;color:var(--heading);margin-bottom:10px}
.pain-desc{font-size:15px;color:var(--text-dim);line-height:1.7}

/* ── Power 3-column ── */
.power-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:0;margin-top:48px;
  border:1px solid var(--border);overflow:hidden;
}
.power-card{
  padding:40px 32px;border-right:1px solid var(--border);position:relative;
  transition:background .2s;
}
.power-card:hover{background:var(--bg-raised)}
.power-card:last-child{border-right:none}
.power-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:2px;
}
.power-card:nth-child(1)::before{background:var(--accent)}
.power-card:nth-child(2)::before{background:var(--green)}
.power-card:nth-child(3)::before{background:var(--accent2)}
.power-phase{
  font-family:var(--mono);font-size:11px;
  text-transform:uppercase;letter-spacing:.14em;margin-bottom:8px;
}
.power-card:nth-child(1) .power-phase{color:var(--accent)}
.power-card:nth-child(2) .power-phase{color:var(--green)}
.power-card:nth-child(3) .power-phase{color:var(--accent2)}
.power-title{font-size:22px;font-weight:600;color:var(--heading);margin-bottom:6px}
.power-subtitle{font-family:var(--mono);font-size:12px;color:var(--text-dim);margin-bottom:16px}
.power-desc{font-size:14px;color:var(--text);line-height:1.7;margin-bottom:16px}
.power-details{list-style:none;padding:0}
.power-details li{
  font-size:13px;color:var(--text-dim);
  padding:6px 0;border-top:1px solid var(--border-dim);font-family:var(--mono);
}
.power-details li::before{
  content:'';display:inline-block;width:5px;height:5px;border-radius:50%;
  margin-right:10px;vertical-align:middle;
}
.power-card:nth-child(1) .power-details li::before{background:var(--accent)}
.power-card:nth-child(2) .power-details li::before{background:var(--green)}
.power-card:nth-child(3) .power-details li::before{background:var(--accent2)}

/* ── Pipeline ── */
.pipeline{
  display:flex;align-items:stretch;gap:0;
  overflow-x:auto;padding-bottom:8px;margin-top:48px;
}
.pipe-node{
  flex:1;min-width:130px;
  background:var(--bg-raised);border:1px solid var(--border);
  padding:24px 14px;text-align:center;position:relative;
  transition:border-color .3s,background .2s;
}
.pipe-node:hover{border-color:var(--accent);background:rgba(79,142,247,.04)}
.pipe-num{
  font-family:var(--mono);font-size:10px;color:var(--accent);
  text-transform:uppercase;letter-spacing:.12em;margin-bottom:8px;
}
.pipe-label{font-size:16px;font-weight:600;color:var(--heading);margin-bottom:6px}
.pipe-desc{font-size:12px;color:var(--text-dim);line-height:1.5}
.pipe-latency{
  font-family:var(--mono);font-size:10px;color:var(--green);
  margin-top:10px;padding-top:8px;border-top:1px solid var(--border-dim);
}
.pipe-arrow{
  display:flex;align-items:center;color:rgba(79,142,247,.35);
  font-family:var(--mono);font-size:14px;padding:0 2px;flex-shrink:0;
}

/* ── Status badges ── */
.status{
  display:inline-flex;align-items:center;gap:5px;padding:3px 9px;
  font-family:var(--mono);font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.07em;
}
/* status text darkened to meet critical-indicator 7:1 on the faint tints (2026-06-05 a11y audit) */
.status-allowed{background:var(--green-dim);color:#0d5d2a;border:1px solid rgba(34,197,94,.2)}
.status-blocked{background:var(--red-dim);color:#9e1b1b;border:1px solid rgba(239,68,68,.2)}
.status-modified{background:var(--gold-dim);color:#7a4303;border:1px solid rgba(245,158,11,.2)}

/* ── Log block ── */
.log-block{
  background:#04060c;border:1px solid var(--border);
  padding:24px 28px;font-family:var(--mono);font-size:14px;
  line-height:2;overflow-x:auto;margin-top:48px;
}
.log-block .blocked{color:var(--danger-text, var(--red))}
.log-block .allowed{color:var(--green)}
.log-block .held{color:var(--gold)}
.log-block .dim{color:var(--text-dim)}
.log-block .hash{color:var(--accent2)}

/* ── Module cards ── */
.mod-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:16px;margin-top:48px;
}
.mod-card{
  background:var(--bg-raised);border:1px solid var(--border);
  padding:32px;transition:border-color .2s,background .2s;
}
.mod-card:hover{border-color:var(--accent);background:rgba(79,142,247,.03)}
.mod-name{
  font-family:var(--mono);font-size:12px;color:var(--accent);
  text-transform:uppercase;letter-spacing:.12em;margin-bottom:10px;
}
.mod-title{font-size:20px;font-weight:600;color:var(--heading);margin-bottom:12px}
.mod-desc{font-size:15px;color:var(--text-dim);line-height:1.7}

/* ── Use case cards ── */
.usecase-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:16px;margin-top:48px;
}
.usecase-card{
  background:var(--bg-raised);border:1px solid var(--border);
  padding:28px;position:relative;transition:border-color .2s;
}
.usecase-card:hover{border-color:var(--accent)}
.usecase-icon{
  font-size:24px;margin-bottom:16px;width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(79,142,247,.05);border:1px solid rgba(79,142,247,.12);
}
.usecase-title{font-size:18px;font-weight:600;color:var(--heading);margin-bottom:8px}
.usecase-desc{font-size:13px;color:var(--text-dim);line-height:1.7;margin-bottom:16px}
.usecase-example{
  font-family:var(--mono);font-size:11px;color:var(--text-dim);
  padding:12px;background:var(--bg-panel);border:1px solid var(--border-dim);
}
.usecase-example .ue-label{
  color:var(--accent);text-transform:uppercase;letter-spacing:.1em;
  font-size:10px;margin-bottom:6px;display:block;
}

/* ── Impact grid ── */
.impact-grid{
  display:grid;grid-template-columns:repeat(4,1fr);
  gap:0;margin-top:48px;border:1px solid var(--border);overflow:hidden;
}
.impact-card{
  padding:28px 20px;border-right:1px solid var(--border);text-align:center;
}
.impact-card:last-child{border-right:none}
.impact-val{
  font-family:var(--mono);font-size:32px;font-weight:700;
  color:var(--accent);margin-bottom:8px;
}
.impact-label{font-size:13px;color:var(--text-dim);line-height:1.5}

/* ── Proof terminal ── */
.proof-terminal{
  margin-top:48px;background:#04060c;
  border:1px solid var(--border);overflow:hidden;
}
.proof-terminal-bar{
  display:flex;align-items:center;gap:8px;
  padding:11px 20px;
  background:var(--bg-raised);border-bottom:1px solid var(--border);
}
.pt-dot{width:11px;height:11px;border-radius:50%}
.pt-dot.red{background:#ff5f57}
.pt-dot.gold{background:#febc2e}
.pt-dot.green{background:#28c840}
.pt-title{
  font-family:var(--mono);font-size:11px;color:var(--text-dim);
  margin-left:8px;text-transform:uppercase;letter-spacing:.1em;
}
.proof-terminal-body{
  padding:24px 28px;font-family:var(--mono);font-size:13px;line-height:2;
}
.pt-line{display:block;margin-bottom:2px}
.pt-prompt{color:var(--text-dim)}
.pt-cmd{color:var(--heading)}
.pt-ok{color:var(--green)}
.pt-block{color:var(--danger-text, var(--red))}
.pt-hash{color:var(--accent2)}
.pt-label{color:var(--accent)}
.pt-dim{color:var(--text-dim)}
.pt-gold{color:var(--gold)}

/* ── Intelligence / Resources section (dark cards) ── */
.intel-card{
  background:var(--bg-raised);border:1px solid var(--border);
  padding:28px;transition:border-color .2s;
}
.intel-card:hover{border-color:var(--accent)}
.intel-tag{
  display:inline-block;
  background:rgba(79,142,247,.06);border:1px solid rgba(79,142,247,.2);
  padding:3px 10px;font-size:11px;font-family:var(--mono);
  color:var(--accent);letter-spacing:.08em;text-transform:uppercase;
  margin-bottom:14px;
}
.intel-title{font-size:16px;font-weight:600;color:var(--heading);margin-bottom:8px;line-height:1.4}
.intel-desc{color:var(--text-dim);font-size:14px;line-height:1.6;margin-bottom:0}
.intel-cta{margin-top:14px;color:var(--accent);font-size:13px;font-family:var(--mono)}

/* ── Final CTA ── */
.final-cta{
  text-align:center;padding:100px 28px;
  background:linear-gradient(135deg,rgba(79,142,247,.04) 0%,rgba(124,58,237,.03) 100%);
  border-top:1px solid var(--border);
  position:relative;overflow:hidden;
}
.final-cta::before{
  content:'';position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(79,142,247,.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(79,142,247,.025) 1px,transparent 1px);
  background-size:40px 40px;pointer-events:none;
}
.final-cta .cta-sub{
  font-size:18px;color:var(--text-dim);margin:24px auto 40px;
  max-width:580px;line-height:1.65;position:relative;z-index:1;
}
.final-cta .s-title{position:relative;z-index:1}
.final-cta .s-badge{position:relative;z-index:1}
.final-cta .hero-btns{position:relative;z-index:1}

/* ── Footer ── */
.footer{padding:60px 40px;background:rgba(10,10,15,0.98);border-top:1px solid #1a2444}
.footer-content{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px}
.footer-brand h3{font-size:20px;margin-bottom:12px;color:#e2e6ef}
.footer-brand p{color:#8899aa;font-size:14px;line-height:1.6}
.footer-links h4{font-size:14px;font-weight:600;margin-bottom:16px;color:#e0e0e0}
.footer-links a{display:block;color:#9aabb8;text-decoration:none;font-size:14px;padding:6px 0;transition:color .2s}
.footer-links a:hover{color:#e0e0e0}
.footer-bottom{max-width:1200px;margin:40px auto 0;padding-top:20px;border-top:1px solid #1a2444;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.footer-bottom span{color:#6b7280;font-size:12px}
@media(max-width:768px){.footer-content{grid-template-columns:1fr;gap:24px}.footer{padding:40px 20px}}

/* ── Footer compact (.ftr — matches coreguard, product pages) ── */
.ftr{padding:28px;background:rgba(10,10,15,0.98);border-top:1px solid #1a2444;}
.ftr-grid{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:28px;}
.ftr h4{font-size:11px;font-weight:600;color:#e0e0e0;margin-bottom:10px;font-family:var(--sans);}
.ftr a{display:block;color:#6b7280;font-size:11px;padding:2px 0;text-decoration:none;transition:color .15s}
.ftr a:hover{color:#e0e0e0;}
.ftr-bot{max-width:1200px;margin:20px auto 0;padding-top:14px;border-top:1px solid #1a2444;text-align:center;}
.ftr-bot span{display:block;color:#666;font-size:9px;font-family:var(--mono);letter-spacing:.5px;margin-top:2px;}
@media(max-width:640px){.ftr-grid{grid-template-columns:1fr;gap:20px}.ftr{padding:24px 20px}}

/* ── Responsive ── */
@media(max-width:1024px){
  .power-grid{grid-template-columns:1fr}
  .power-card{border-right:none;border-bottom:1px solid var(--border)}
  .power-card:last-child{border-bottom:none}
  .usecase-grid{grid-template-columns:1fr}
  .impact-grid{grid-template-columns:repeat(2,1fr)}
  .impact-card:nth-child(2){border-right:none}
  .impact-card:nth-child(1),.impact-card:nth-child(2){border-bottom:1px solid var(--border)}
}

@media(max-width:768px){
  .hero h1{font-size:clamp(36px,10vw,56px)}
  .hero-sub{font-size:16px}
  .hero-btns .btn{padding:14px 24px;font-size:13px}
  .hero-flow{flex-direction:column;gap:0}
  .flow-arrow{width:1px;height:22px;margin:0 auto}
  .flow-arrow::after{
    right:auto;left:-4px;top:auto;bottom:-1px;
    border:5px solid transparent;
    border-top-color:var(--border);border-left-color:transparent;
  }
  .s-title{font-size:28px}
  .s-sub{font-size:15px}
  section{padding:64px 20px}
  .container{padding:0 20px}
  .pipeline{flex-direction:column}
  .pipe-arrow{transform:rotate(90deg);padding:4px 0;justify-content:center}
  .stats{gap:20px}
  .stat-val{font-size:22px}
  .header{padding:16px 20px}
  .nav-links{display:none}
  .mobile-menu-btn{display:block}
  .log-block{font-size:11px;padding:14px;line-height:1.8}
  .mod-grid{grid-template-columns:1fr}
  .impact-grid{grid-template-columns:1fr}
  .impact-card{border-right:none;border-bottom:1px solid var(--border)}
  .impact-card:last-child{border-bottom:none}
  .proof-terminal-body{font-size:11px;padding:14px}
  .gov-panel{margin-top:32px}
  .gp-metric{min-width:100px;font-size:10px}
}

/* ── Premium glass + accents (2026-06 enterprise polish) ── */
.gov-panel,.mod-card,.usecase-card,.intel-card{
  background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.01));
  backdrop-filter:blur(8px);
  box-shadow:var(--shadow-sm);
}
.mod-card,.usecase-card{position:relative;}
.mod-card::before,.usecase-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
  opacity:.35;
}

/* ── Compliance framework chip row ── */
.trust-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:28px;}
.trust-row-lbl{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);}
.trust-chip{font-family:var(--mono);font-size:12px;padding:5px 12px;border:1px solid var(--border);
  border-radius:1px;color:var(--text);background:var(--bg-panel);}
/* status sub-tag inside a trust chip (e.g. "SOC 2 Type II — In Progress") */
.trust-chip em{font-style:normal;font-size:9px;letter-spacing:.06em;text-transform:uppercase;opacity:.8;margin-left:7px;}
.trust-chip-status em::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;
  background:#e0912f;margin-right:5px;vertical-align:middle;}

/* ── Cloud-marketplace availability chips ──────────────────────────────────
   Stand-out variant of .trust-chip: each vendor gets an accent left-bar + a
   glowing dot so the listings read as clickable badges, not flat text. The
   fill is token-based, so they render identically in the light theme (the
   hero band stays dark in both). Vendor hexes are decorative accents only —
   the label keeps the token ink, so contrast is unchanged. */
.market-row{margin-top:14px;}
.market-row .trust-row-lbl{color:var(--text);}
.market-chip{
  font-family:var(--mono);font-size:12px;font-weight:600;line-height:1;
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 14px;border-radius:2px;color:var(--text);
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.012));
  border:1px solid var(--border);border-left:3px solid var(--mk,var(--accent));
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease;}
.market-chip::before{
  content:"";width:7px;height:7px;border-radius:50%;flex:0 0 auto;
  background:var(--mk,var(--accent));box-shadow:0 0 9px var(--mk,var(--accent));}
a.market-chip:hover{
  transform:translateY(-2px);color:#fff;border-color:var(--mk,var(--accent));
  box-shadow:0 8px 22px -8px var(--mk,var(--accent));}
.market-chip--aws{--mk:#ff9900;}
.market-chip--azure{--mk:#38b6ff;}
.market-chip--gcp{--mk:#8a97ab;opacity:.72;}
.market-chip--aws::before{width:16px;height:16px;border-radius:0;background:center/contain no-repeat url("/img/marketplace/aws-mark.svg");box-shadow:none;}
.market-chip--azure::before{width:17px;height:17px;border-radius:0;background:center/contain no-repeat url("/img/marketplace/azure-mark.svg");box-shadow:none;}
.scytale-mark{display:inline-flex;align-items:center;height:13px;line-height:0;margin-left:8px;vertical-align:middle;}
.scytale-mark svg{height:13px;width:auto;display:block;}
.market-chip--soon::after{
  content:"soon";margin-left:2px;font-size:9px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);
  padding:2px 6px;border:1px solid var(--border);border-radius:2px;}

/* ── Differentiation grid (What EVE is not) ── */
.diff-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);
  border:1px solid var(--border);margin-top:40px;}
.diff-col{background:var(--bg);padding:32px;}
.diff-col ul{list-style:none;margin-top:14px;padding:0;}
.diff-col li{padding:10px 0;border-top:1px solid var(--border-dim);color:var(--text);font-size:.95rem;}
.diff-col h4{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;font-size:12px;}
.diff-not h4{color:var(--danger-text, var(--red));}
.diff-is{background:var(--bg-raised);}
.diff-is h4{color:var(--green);}
@media(max-width:768px){.diff-grid{grid-template-columns:1fr;}}

/* Responsive-table safety net: prevent wide data tables from breaking the
   page layout on phones. Only sets display/overflow (properties the inline
   per-page table rules don't define), so the table scrolls inside its own
   box instead of forcing page-wide horizontal scroll. */
@media(max-width:768px){
  table.req-table,table.compare,table.comparison-table,table.ref-table,table.mapping-table,table.xref,
  /* VISUAL AUDIT 2026-09-05: the class list above only catches tables that
     happen to carry one of those six classes. Unclassed content tables were
     still being CLIPPED at 390px with no way to reach the hidden columns:
       /investor-addendum  section#slide-2..7 > table   (6 tables, 72-168px lost)
       /integrations       .card > table.avail          (171px lost)
     Match them structurally instead of by class name.
     NOTE: this is the PUBLIC-page pattern. Do NOT copy it to /app data tables
     — app-mobile-fit.css §5 documents why they must keep `display:table` and
     let a wrapper scroll (a block-level table leaves its tbody as a
     table-row-group, which generates an anonymous table box that escapes the
     scroll port and widens the document). These marketing tables have no such
     wrapper, and the six-class rule above has shipped with this same pattern. */
  section > table, .card > table, .slide > table, article > table{
    display:block;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    max-width:100%;
  }
}

/* ── Canonical button parity (eveneurosystems.com): kill stray gradient
      fills on CTA variants + inline styles across all 86 public pages. ── */
/* FILL vs BORDER: #5b9ee8 is the ring/edge tone (--ring in design-tokens.css).
   Used as a FILL behind #fff it measures 2.80:1 and fails WCAG AA (needs 4.5).
   The fill is #2f6fd0 — the value .btn-primary above already declares, and the
   same tone as --primary (#2b6fc7, 5.0:1). Keeping #5b9ee8 on the border
   preserves the lighter-edge look this block was written to standardise. */
.btn-primary, a.cta-primary, .cta-button, .button-primary, .btn-go {
  background:#2f6fd0 !important; background-image:none !important;  /* 4.88:1 on #fff */
  border:1px solid #5b9ee8 !important; color:#fff !important;
  box-shadow:0 6px 22px rgba(91,158,232,.28) !important;
}
.btn-primary:hover, a.cta-primary:hover, .cta-button:hover,
.button-primary:hover, .btn-go:hover {
  background:#2861c0 !important; background-image:none !important;  /* 5.90:1 on #fff */
  border-color:#6fb0f2 !important; color:#fff !important;
  box-shadow:0 10px 30px rgba(91,158,232,.42) !important; transform:translateY(-2px);
}
.cta-button, a.cta-primary, .button-primary, .btn-go {
  border-radius:0!important; font-family:var(--mono) !important;
  text-transform:uppercase !important; letter-spacing:.08em !important; font-weight:600 !important;
}
/* Square corners on every button family + bespoke class (not circular icons) */
.btn, .btn-primary, .btn-secondary, .btn-outline, .btn-ghost, .btn-danger,
.btn-warning, .btn-success, .btn-green, .btn-go, .btn-cta, .il-btn, .il-btn-primary,
.eve-fdp-cta, .action-btn-primary, .test-button, .demo-btn, .install-btn,
.retry-btn, .vs-test-btn, .period-btn, .refresh-btn, .save-btn,
.cta-button, a.cta-primary, .button-primary { border-radius:0!important; }
/* Bespoke accent/action button classes defined in page-level inline <style>
   blocks (industry CTAs, pricing FDP, app tool buttons) — flatten fill only,
   leaving each button's own shape/size intact. */
.il-btn-primary, .eve-fdp-cta, .action-btn-primary, .test-button, .demo-btn,
.install-btn, .retry-btn, .vs-test-btn, .period-btn.active, .refresh-btn {
  background:#2f6fd0 !important; background-image:none !important;  /* 4.88:1 on #fff */
  border-color:#5b9ee8 !important; color:#fff !important;
}
.il-btn-primary:hover, .eve-fdp-cta:hover, .action-btn-primary:hover, .test-button:hover,
.demo-btn:hover, .install-btn:hover, .retry-btn:hover, .vs-test-btn:hover, .refresh-btn:hover {
  background:#2861c0 !important; background-image:none !important;  /* 5.90:1 on #fff */
  border-color:#6fb0f2 !important; color:#fff !important;
}

/* ── VISUAL AUDIT 2026-09-05: closing-CTA row clipped at tablet widths ──
   30 marketing pages render:
     <div class="cta-actions" style="...flex-wrap:wrap;flex-shrink:0;">
   inside a `display:flex` .final-cta. flex-shrink:0 plus the default
   min-width:auto pins the row at max-content (measured 812px inside a 624px
   content box at 768x1024), so its own flex-wrap never engages and .final-cta's
   overflow-x:hidden silently CLIPS the third button — "Request Design Partner"
   was unreachable on every one of those pages between 561px and ~1030px. The
   page rules only stack the row below 560px, so the whole tablet range was
   uncovered.
   min-width:0 is the part that actually allows a flex item to shrink below its
   content; the row then wraps as it was always meant to. Declared here (not per
   page) because all 30 load this sheet, and !important because the offending
   flex-shrink is an inline style. */
.final-cta .cta-actions {
  flex-shrink: 1 !important;
  min-width: 0;
  max-width: 100%;
}

/* ── VISUAL AUDIT 2026-09-05: comparison cards clipped on phones ──
   .versus-grid already caps its track at min(540px,100%), but a GRID ITEM
   still carries min-width:auto, so the track is forced back open to the item's
   min-content. Inside each card is a <pre class="mig-code"> whose longest line
   is ~649px; at 390px that grew the card to 723px and 357px of it was clipped
   away — the "after" side of the comparison was simply not readable on a phone.
   min-width:0 lets the card and the pre shrink; the pre already declares
   overflow-x:auto, so the code scrolls inside its own box instead. */
.versus-grid > .versus-card { min-width: 0; }
.versus-card .mig-code, .versus-card pre { min-width: 0; max-width: 100%; }

/* ── VISUAL AUDIT 2026-09-05: long unbreakable tokens on PUBLIC pages ──
   app-mobile-fit.css section 2 already solves this for /app, but public pages
   do not load that sheet, so the same identifiers broke them at 390px:
     /eveproof                      "eve.decision.certificate.v1"   98px past
     /eu-ai-act/compliance-roadmap  "core/governance/failure_mode_" 68px past
   `anywhere` rather than `break-word` for the reason that file documents: only
   `anywhere` also reduces the element's intrinsic min-content width, so the
   CONTAINER stops being sized to the unbroken token. min-width:0 is needed on
   the flex/grid children for the same reason.
   <pre> is deliberately excluded — code blocks should scroll, not re-wrap. */
@media (max-width: 768px) {
  p, li, dd, dt, td, th, blockquote, figcaption,
  code, .mono, .lbl, .code-head, .code-head > *,
  h1, h2, h3, h4, h5, h6 { overflow-wrap: anywhere; }
  .code-head, .code-head > *, h1, h2, h3, h4, h5, h6 { min-width: 0; }
}

/* ── --danger-text, light theme ────────────────────────────────────────────
   These pages get their light theming from public-light.css, so the token has
   to be flipped here too. Same value as design-tokens.css: #b42318 measures
   4.68:1 against the worst real light surface, and it is the pre-existing
   --destructive, so no new brand colour enters the ramp.
   The site header and code blocks stay DARK in light theme, so they keep the
   dark value — otherwise this puts dark red on dark chrome, which is the exact
   failure already fixed twice (#gcr-env, the sidebar plane headers). */
html[data-theme="light"] { --danger-text: #b42318; }
html[data-theme="light"] header.hdr,
html[data-theme="light"] .eve-topstack,
html[data-theme="light"] pre { --danger-text: #f87171; }
