/* =============================================================================
   Pepvela main site V3 -- the longevity intelligence ecosystem (CEO, 2026-10-02).
   One stylesheet for every V3 page: semantic tokens (light + dark), type, the
   global shell (header, navigation, footer), components and motion.

   THEME: light and dark from day one. Components use ONLY the semantic tokens
   below (--bg, --surface, --text-primary, --accent ...), never raw colors, so a
   theme is just a token set. First visit follows prefers-color-scheme; a manual
   choice (the header toggle) is stored in localStorage "pv-theme" and applied
   by the inline script in every <head> BEFORE this file paints, so there is no
   flash of the wrong theme. Account sync is a later phase.

   Palette (CEO): navy #01021B #080327, indigo #1e1648, violet #5934CF #6c52e3,
   lavender #9B9AF0 #C2C3F4 #ede9ff, icy cyan #76BFE6, light surface #F8F9FC,
   light text #F6F7FF. Translucent forms of these only. No decorative orange.
   Type: Plus Jakarta Sans for everything; Georgia only for the pepvela wordmark.
   Motion: slow and calm; prefers-reduced-motion gets a complete still version.
   ============================================================================= */

@font-face {
  font-family: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-var.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-var.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------------------------------------------------------------- tokens -- */
:root {
  color-scheme: light;
  /* surfaces */
  --bg: #F8F9FC;
  --bg-deep: #ede9ff;
  --surface: #FFFFFF;
  --surface-raised: #FFFFFF;
  --surface-soft: rgba(237, 233, 255, 0.62);
  --surface-sunken: rgba(30, 22, 72, 0.035);
  /* text */
  --text-primary: #1e1648;
  --text-secondary: rgba(30, 22, 72, 0.78);
  --text-muted: rgba(30, 22, 72, 0.66);
  --text-on-accent: #FFFFFF;
  /* lines */
  --border: rgba(30, 22, 72, 0.14);
  --border-soft: rgba(30, 22, 72, 0.08);
  --border-strong: rgba(30, 22, 72, 0.24);
  /* accent */
  --accent: #5934CF;
  --accent-hover: #6c52e3;
  --accent-text: #5934CF;
  --accent-soft: rgba(89, 52, 207, 0.08);
  --accent-line: rgba(89, 52, 207, 0.32);
  --signal-cyan: #76BFE6;
  --signal-cyan-text: #1e6f99;
  --signal-violet: #6c52e3;
  --lavender: #9B9AF0;
  /* states (semantic only) */
  --success: #1d7a5c;
  --warning: #8a5a00;
  --error: #b42318;
  --focus: #5934CF;
  /* depth */
  --shadow: 0 1px 2px rgba(30, 22, 72, 0.05), 0 10px 30px -12px rgba(30, 22, 72, 0.16);
  --shadow-raised: 0 2px 6px rgba(30, 22, 72, 0.06), 0 24px 48px -20px rgba(30, 22, 72, 0.24);
  --glow: 0 0 0 1px rgba(89, 52, 207, 0.06);
  /* scenes */
  --scene-a: rgba(155, 154, 240, 0.30);
  --scene-b: rgba(118, 191, 230, 0.22);
  --scene-c: rgba(89, 52, 207, 0.10);
  --scene-node: 89, 52, 207;
  --scene-line: 30, 22, 72;
  --scene-pulse: 118, 191, 230;
  --header-bg: rgba(248, 249, 252, 0.82);
  /* evidence levels (not good/bad colors) */
  --ev-strong-bg: rgba(118, 191, 230, 0.18);  --ev-strong-fg: #164f70;  --ev-strong-line: rgba(118, 191, 230, 0.6);
  --ev-moderate-bg: rgba(89, 52, 207, 0.09);  --ev-moderate-fg: #4a2bb0; --ev-moderate-line: rgba(89, 52, 207, 0.32);
  --ev-prelim-bg: transparent;                --ev-prelim-fg: #4b4570;   --ev-prelim-line: rgba(30, 22, 72, 0.28);
  /* type + shape */
  --font-ui: "Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-wordmark: Georgia, "Times New Roman", serif;
  --radius-sm: 8px;
  --radius: 14px;
  --radius-lg: 22px;
  --wrap: 1200px;
  --gutter: clamp(16px, 4vw, 32px);
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #01021B;
  --bg-deep: #080327;
  --surface: #080327;
  --surface-raised: #0e0a35;
  --surface-soft: rgba(108, 82, 227, 0.10);
  --surface-sunken: rgba(194, 195, 244, 0.04);
  --text-primary: #F6F7FF;
  --text-secondary: #C2C3F4;
  --text-muted: rgba(194, 195, 244, 0.80);
  --text-on-accent: #FFFFFF;
  --border: rgba(194, 195, 244, 0.16);
  --border-soft: rgba(194, 195, 244, 0.09);
  --border-strong: rgba(194, 195, 244, 0.28);
  --accent: #5934CF;
  --accent-hover: #6c52e3;
  --accent-text: #9B9AF0;
  --accent-soft: rgba(108, 82, 227, 0.16);
  --accent-line: rgba(155, 154, 240, 0.40);
  --signal-cyan-text: #76BFE6;
  --lavender: #C2C3F4;
  --success: #6fd3ae;
  --warning: #e8c27a;
  --error: #ff9b8f;
  --focus: #9B9AF0;
  --shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 16px 40px -20px rgba(0, 0, 0, 0.6);
  --shadow-raised: 0 2px 8px rgba(0, 0, 0, 0.35), 0 30px 60px -24px rgba(0, 0, 0, 0.7);
  --glow: 0 0 0 1px rgba(155, 154, 240, 0.10), 0 0 48px -12px rgba(108, 82, 227, 0.35);
  --scene-a: rgba(89, 52, 207, 0.34);
  --scene-b: rgba(118, 191, 230, 0.14);
  --scene-c: rgba(30, 22, 72, 0.70);
  --scene-node: 155, 154, 240;
  --scene-line: 194, 195, 244;
  --scene-pulse: 118, 191, 230;
  --header-bg: rgba(1, 2, 27, 0.78);
  --ev-strong-bg: rgba(118, 191, 230, 0.14); --ev-strong-fg: #a9dcf4; --ev-strong-line: rgba(118, 191, 230, 0.45);
  --ev-moderate-bg: rgba(108, 82, 227, 0.20); --ev-moderate-fg: #C2C3F4; --ev-moderate-line: rgba(155, 154, 240, 0.40);
  --ev-prelim-bg: transparent;                --ev-prelim-fg: #C2C3F4;  --ev-prelim-line: rgba(194, 195, 244, 0.30);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --bg: #01021B;
    --bg-deep: #080327;
    --surface: #080327;
    --surface-raised: #0e0a35;
    --surface-soft: rgba(108, 82, 227, 0.10);
    --surface-sunken: rgba(194, 195, 244, 0.04);
    --text-primary: #F6F7FF;
    --text-secondary: #C2C3F4;
    --text-muted: rgba(194, 195, 244, 0.80);
    --text-on-accent: #FFFFFF;
    --border: rgba(194, 195, 244, 0.16);
    --border-soft: rgba(194, 195, 244, 0.09);
    --border-strong: rgba(194, 195, 244, 0.28);
    --accent: #5934CF;
    --accent-hover: #6c52e3;
    --accent-text: #9B9AF0;
    --accent-soft: rgba(108, 82, 227, 0.16);
    --accent-line: rgba(155, 154, 240, 0.40);
    --signal-cyan-text: #76BFE6;
    --lavender: #C2C3F4;
    --success: #6fd3ae;
    --warning: #e8c27a;
    --error: #ff9b8f;
    --focus: #9B9AF0;
    --shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 16px 40px -20px rgba(0, 0, 0, 0.6);
    --shadow-raised: 0 2px 8px rgba(0, 0, 0, 0.35), 0 30px 60px -24px rgba(0, 0, 0, 0.7);
    --glow: 0 0 0 1px rgba(155, 154, 240, 0.10), 0 0 48px -12px rgba(108, 82, 227, 0.35);
    --scene-a: rgba(89, 52, 207, 0.34);
    --scene-b: rgba(118, 191, 230, 0.14);
    --scene-c: rgba(30, 22, 72, 0.70);
    --scene-node: 155, 154, 240;
    --scene-line: 194, 195, 244;
    --scene-pulse: 118, 191, 230;
    --header-bg: rgba(1, 2, 27, 0.78);
    --ev-strong-bg: rgba(118, 191, 230, 0.14); --ev-strong-fg: #a9dcf4; --ev-strong-line: rgba(118, 191, 230, 0.45);
    --ev-moderate-bg: rgba(108, 82, 227, 0.20); --ev-moderate-fg: #C2C3F4; --ev-moderate-line: rgba(155, 154, 240, 0.40);
    --ev-prelim-bg: transparent;                --ev-prelim-fg: #C2C3F4;  --ev-prelim-line: rgba(194, 195, 244, 0.30);
  }
}

/* ------------------------------------------------------------------ base -- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
body.v3 {
  margin: 0;
  background: var(--bg);
  color: var(--text-primary);
  font-family: var(--font-ui);
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
  transition: background-color 0.35s var(--ease), color 0.35s var(--ease);
}
.v3 img, .v3 svg, .v3 canvas { max-width: 100%; }
.v3 img { height: auto; }
.v3 a { color: var(--accent-text); text-underline-offset: 3px; text-decoration-thickness: 1px; }
.v3 a:hover { color: var(--accent-hover); }
.v3 h1, .v3 h2, .v3 h3, .v3 h4 { font-family: var(--font-ui); color: var(--text-primary); letter-spacing: -0.02em; line-height: 1.12; margin: 0; }
.v3 h1, .v3 h2 { text-wrap: balance; }
.v3 h1 { font-size: clamp(34px, 4.6vw, 54px); font-weight: 700; }
.v3 h2 { font-size: clamp(26px, 3.1vw, 38px); font-weight: 700; }
.v3 h3 { font-size: clamp(18px, 1.6vw, 20px); font-weight: 650; letter-spacing: -0.01em; line-height: 1.3; }
.v3 p { margin: 0; }
.v3 :focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; border-radius: 4px; }
.v3 ::selection { background: rgba(108, 82, 227, 0.24); }
.v3-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.v3-skip { position: absolute; left: 12px; top: -48px; z-index: 1000; padding: 10px 14px; border-radius: var(--radius-sm); background: var(--accent); color: var(--text-on-accent) !important; font-weight: 650; text-decoration: none; transition: top 0.2s; }
.v3-skip:focus { top: 12px; }

.v3-wrap { width: 100%; max-width: var(--wrap); margin: 0 auto; padding-inline: var(--gutter); }
.v3-narrow { max-width: 760px; }
.v3-eyebrow { display: inline-flex; align-items: center; gap: 10px; font-size: 11.5px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--accent-text); }
.v3-eyebrow .v3-idx { color: var(--text-muted); font-variant-numeric: tabular-nums; }
.v3-eyebrow::before { content: ""; width: 18px; height: 1px; background: currentColor; opacity: 0.7; }
.v3-lead { font-size: clamp(16px, 1.35vw, 18.5px); color: var(--text-secondary); line-height: 1.7; max-width: 60ch; }
.v3-muted { color: var(--text-muted); }
.v3-small { font-size: 13.5px; }

/* --------------------------------------------------------------- buttons -- */
.v3-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 46px; padding: 0 20px; border-radius: 999px; border: 1px solid transparent; font: 650 14.5px/1 var(--font-ui); letter-spacing: 0.005em; text-decoration: none; cursor: pointer; transition: background-color 0.2s, border-color 0.2s, color 0.2s, transform 0.2s var(--ease), box-shadow 0.2s; }
.v3-btn--primary { background: var(--accent); color: var(--text-on-accent) !important; box-shadow: 0 8px 24px -10px rgba(89, 52, 207, 0.55); }
.v3-btn--primary:hover { background: var(--accent-hover); transform: translateY(-1px); }
.v3-btn--ghost { background: transparent; color: var(--text-primary) !important; border-color: var(--border-strong); }
.v3-btn--ghost:hover { border-color: var(--accent-line); background: var(--accent-soft); }
.v3-btn .v3-arrow { transition: transform 0.2s var(--ease); }
.v3-btn:hover .v3-arrow { transform: translateX(3px); }
.v3-link { display: inline-flex; align-items: center; gap: 6px; font-weight: 650; font-size: 14.5px; text-decoration: none; color: var(--accent-text); }
.v3-link:hover .v3-arrow { transform: translateX(3px); }
.v3-link .v3-arrow { transition: transform 0.2s var(--ease); }
.v3-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }

/* ---------------------------------------------------------------- header -- */
.v3-header { position: sticky; top: 0; z-index: 50; background: var(--header-bg); -webkit-backdrop-filter: saturate(160%) blur(14px); backdrop-filter: saturate(160%) blur(14px); border-bottom: 1px solid var(--border-soft); }
.v3-header__bar { display: flex; align-items: center; gap: 24px; min-height: 68px; }
.v3-brand { display: inline-flex; align-items: baseline; gap: 0; text-decoration: none; flex: none; padding: 6px 0; border-radius: var(--radius-sm); }
.v3-wordmark { font-family: var(--font-wordmark); font-weight: 700; font-size: 25px; line-height: 1; letter-spacing: -0.01em; }
.v3-wordmark .w-pep { color: var(--text-primary); }
.v3-wordmark .w-vela { color: var(--accent-text); }
.v3-nav { margin-left: auto; }
.v3-nav ul { display: flex; align-items: center; gap: 4px; list-style: none; margin: 0; padding: 0; }
.v3-nav a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px; border-radius: 999px; color: var(--text-secondary); font-size: 14.5px; font-weight: 600; text-decoration: none; transition: color 0.2s, background-color 0.2s; }
.v3-nav a:hover { color: var(--text-primary); background: var(--surface-sunken); }
.v3-nav a[aria-current="page"] { color: var(--text-primary); background: var(--accent-soft); }
.v3-header__tools { display: flex; align-items: center; gap: 6px; }
.v3-icon-btn { display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 999px; border: 1px solid var(--border); background: transparent; color: var(--text-primary); cursor: pointer; transition: background-color 0.2s, border-color 0.2s; }
.v3-icon-btn:hover { background: var(--surface-sunken); border-color: var(--border-strong); }
.v3-icon-btn svg { width: 18px; height: 18px; }
.v3-theme-toggle .i-sun { display: none; }
:root[data-theme="dark"] .v3-theme-toggle .i-sun { display: block; }
:root[data-theme="dark"] .v3-theme-toggle .i-moon { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .v3-theme-toggle .i-sun { display: block; }
  :root:not([data-theme="light"]) .v3-theme-toggle .i-moon { display: none; }
}
.v3-menu-btn { display: none; }
.v3-mobile-nav { display: none; }

@media (max-width: 880px) {
  .v3-nav { display: none; }
  .v3-header__tools { margin-left: auto; }
  .v3-menu-btn { display: inline-grid; }
  .v3-mobile-nav { border-top: 1px solid var(--border-soft); }
  .v3-mobile-nav[data-open="true"] { display: block; }
  .v3-mobile-nav ul { list-style: none; margin: 0; padding: 8px 0 16px; }
  .v3-mobile-nav a { display: flex; align-items: center; justify-content: space-between; min-height: 52px; padding: 0 4px; border-bottom: 1px solid var(--border-soft); color: var(--text-primary); font-size: 17px; font-weight: 650; text-decoration: none; }
  .v3-mobile-nav a[aria-current="page"] { color: var(--accent-text); }
  .v3-mobile-nav li:last-child a { border-bottom: 0; }
}
.v3-menu-btn .i-close { display: none; }
.v3-menu-btn[aria-expanded="true"] .i-close { display: block; }
.v3-menu-btn[aria-expanded="true"] .i-menu { display: none; }

/* -------------------------------------------------------------- sections -- */
.v3-section { position: relative; padding-block: clamp(64px, 7.5vw, 108px); }
.v3-section--tight { padding-block: clamp(56px, 7vw, 96px); }
.v3-section--soft { background: linear-gradient(180deg, transparent, var(--surface-sunken) 18%, var(--surface-sunken) 82%, transparent); }
.v3-section__head { display: grid; gap: 18px; max-width: 760px; margin-bottom: clamp(32px, 4vw, 52px); }
.v3-section__head--split { max-width: none; grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); align-items: end; gap: 24px 64px; }
.v3-section__head--split .v3-lead { justify-self: end; }
@media (max-width: 880px) { .v3-section__head--split { grid-template-columns: 1fr; } .v3-section__head--split .v3-lead { justify-self: start; } }
.v3-rule { height: 1px; border: 0; background: linear-gradient(90deg, transparent, var(--border), transparent); margin: 0; }

/* ----------------------------------------------------------------- cards -- */
.v3-card { position: relative; display: flex; flex-direction: column; gap: 12px; padding: 24px; border-radius: var(--radius); background: var(--surface); border: 1px solid var(--border-soft); box-shadow: var(--shadow); color: inherit; text-decoration: none; transition: transform 0.35s var(--ease), border-color 0.25s, box-shadow 0.35s var(--ease); }
a.v3-card:hover, .v3-card--link:hover { transform: translateY(-3px); border-color: var(--accent-line); box-shadow: var(--shadow-raised), var(--glow); }
.v3-card h3 { margin: 0; }
.v3-card p { color: var(--text-secondary); font-size: 15px; line-height: 1.6; }
.v3-card__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: auto; padding-top: 8px; font-size: 13px; color: var(--text-muted); }
.v3-card__go { margin-top: auto; display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 650; color: var(--accent-text); }
.v3-grid { display: grid; gap: 18px; }
.v3-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.v3-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.v3-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1024px) { .v3-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .v3-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .v3-grid--2, .v3-grid--3, .v3-grid--4 { grid-template-columns: 1fr; } }

.v3-tag { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 650; letter-spacing: 0.01em; background: var(--surface-soft); color: var(--text-secondary); border: 1px solid var(--border-soft); white-space: nowrap; }
.v3-tag--accent { background: var(--accent-soft); color: var(--accent-text); border-color: var(--accent-line); }
.v3-tag--signal { background: var(--ev-strong-bg); color: var(--ev-strong-fg); border-color: var(--ev-strong-line); }
.v3-ev { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; border: 1px solid; white-space: nowrap; }
.v3-ev::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.v3-ev--strong { background: var(--ev-strong-bg); color: var(--ev-strong-fg); border-color: var(--ev-strong-line); }
.v3-ev--moderate { background: var(--ev-moderate-bg); color: var(--ev-moderate-fg); border-color: var(--ev-moderate-line); }
.v3-ev--preliminary { background: var(--ev-prelim-bg); color: var(--ev-prelim-fg); border-color: var(--ev-prelim-line); }

/* ------------------------------------------------------------------ hero -- */
.v3-hero { position: relative; overflow: hidden; isolation: isolate; }
.v3-hero__scene { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.v3-hero__scene canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.v3-hero__wash { position: absolute; inset: -20%; background:
    radial-gradient(42% 52% at 78% 34%, var(--scene-a), transparent 70%),
    radial-gradient(36% 44% at 64% 76%, var(--scene-b), transparent 72%),
    radial-gradient(60% 60% at 10% 10%, var(--scene-c), transparent 70%);
  animation: v3-drift 38s ease-in-out infinite alternate; }
.v3-hero__fade { position: absolute; inset: auto 0 0 0; height: 30%; background: linear-gradient(180deg, transparent, var(--bg)); }
.v3-hero__inner { position: relative; padding-block: clamp(84px, 13vh, 150px) clamp(64px, 9vh, 110px); display: grid; gap: 26px; max-width: 720px; }
.v3-hero--home .v3-hero__inner { min-height: min(76vh, 700px); align-content: center; }
.v3-hero__title { font-size: clamp(38px, 5.6vw, 64px); line-height: 1.04; letter-spacing: -0.035em; }
.v3-hero__title .v3-hl { background: linear-gradient(100deg, var(--accent-text), var(--signal-violet) 55%, var(--signal-cyan)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.v3-page-hero .v3-hero__inner { padding-block: clamp(64px, 10vh, 112px) clamp(40px, 6vh, 72px); max-width: 780px; }
.v3-page-hero .v3-hero__title { font-size: clamp(34px, 4.6vw, 54px); }
.v3-crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: 13px; color: var(--text-muted); }
.v3-crumbs a { color: var(--text-muted); text-decoration: none; }
.v3-crumbs a:hover { color: var(--accent-text); }
.v3-status { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px; font-size: 12.5px; font-weight: 650; color: var(--text-secondary); background: var(--surface-soft); border: 1px solid var(--border-soft); width: fit-content; }
.v3-status__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--signal-cyan); box-shadow: 0 0 0 0 rgba(118, 191, 230, 0.6); animation: v3-ping 2.8s ease-out infinite; }

/* the intelligence journey: Biology -> Biomarkers -> Peptides -> Research -> Pep -> Vela */
.v3-journey { position: relative; margin-top: 8px; }
.v3-journey ol { position: relative; display: flex; flex-wrap: wrap; gap: 6px 4px; list-style: none; margin: 0; padding: 0; counter-reset: j; }
.v3-journey li { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 650; color: var(--text-secondary); }
.v3-journey li + li::before { content: ""; width: 18px; height: 1px; background: var(--accent-line); margin-inline: 2px 4px; }
.v3-journey a, .v3-journey span.v3-j { display: inline-flex; align-items: center; min-height: 32px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--border-soft); background: var(--surface-soft); color: var(--text-secondary); text-decoration: none; }
.v3-journey a:hover { color: var(--text-primary); border-color: var(--accent-line); }

/* -------------------------------------------------------------- systems -- */
.v3-systems { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.v3-system { position: relative; display: grid; gap: 10px; padding: 20px 20px 18px; border-radius: var(--radius); background: var(--surface); border: 1px solid var(--border-soft); text-decoration: none; color: inherit; overflow: hidden; transition: transform 0.35s var(--ease), border-color 0.25s, box-shadow 0.35s; box-shadow: var(--shadow); }
.v3-system:hover { transform: translateY(-3px); border-color: var(--accent-line); box-shadow: var(--shadow-raised), var(--glow); }
.v3-system h3 { font-size: 17px; }
.v3-system p { font-size: 14px; color: var(--text-secondary); line-height: 1.55; }
.v3-system__count { font-size: 12.5px; font-weight: 650; color: var(--text-muted); }
.v3-system svg.v3-wave { width: 100%; height: 34px; overflow: visible; }
.v3-wave path { fill: none; stroke: var(--accent-line); stroke-width: 1.5; }
.v3-wave path.v3-wave__pulse { stroke: var(--signal-cyan); stroke-width: 2; stroke-dasharray: 26 220; stroke-linecap: round; animation: v3-trace 5.5s linear infinite; }
.v3-system:nth-child(2n) .v3-wave__pulse { animation-delay: -1.6s; }
.v3-system:nth-child(3n) .v3-wave__pulse { animation-delay: -3.2s; }
@media (max-width: 1024px) { .v3-systems { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .v3-systems { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------- peptide cards -- */
.v3-pathways { display: flex; flex-wrap: wrap; gap: 8px; }
.v3-chip { display: inline-flex; align-items: center; gap: 8px; min-height: 38px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--text-secondary); font: 600 13.5px/1 var(--font-ui); text-decoration: none; cursor: pointer; transition: border-color 0.2s, background-color 0.2s, color 0.2s; }
.v3-chip:hover { border-color: var(--accent-line); color: var(--text-primary); }
.v3-chip[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--text-on-accent); }
.v3-chip__n { font-size: 12px; color: inherit; opacity: 0.72; font-variant-numeric: tabular-nums; }
.peptide-card .card-name { font-size: 18px; font-weight: 700; letter-spacing: -0.01em; color: var(--text-primary); }
.peptide-card .card-alias { font-size: 13px; color: var(--text-muted); margin-top: 2px; }
.peptide-card .card-desc { font-size: 14.5px; color: var(--text-secondary); line-height: 1.6; }
.peptide-card .card-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-top: auto; padding-top: 6px; }
.peptide-card .card-link { font-weight: 650; font-size: 14px; text-decoration: none; }
.peptide-card .card-link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.peptide-card[hidden] { display: none; }
.v3-search { position: relative; flex: 1 1 260px; max-width: 360px; }
.v3-search input { width: 100%; min-height: 44px; padding: 0 16px 0 42px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--text-primary); font: 500 15px/1 var(--font-ui); }
.v3-search input::placeholder { color: var(--text-muted); }
.v3-search svg { position: absolute; left: 15px; top: 50%; width: 16px; height: 16px; transform: translateY(-50%); color: var(--text-muted); pointer-events: none; }
.v3-filterbar { display: flex; flex-wrap: wrap; gap: 14px 20px; align-items: center; justify-content: space-between; margin-bottom: 26px; }
.v3-count { font-size: 13.5px; color: var(--text-muted); }

/* ------------------------------------------------------------- ecosystem -- */
.v3-panel { position: relative; overflow: hidden; border-radius: var(--radius-lg); border: 1px solid var(--border-soft); background: var(--surface); box-shadow: var(--shadow); padding: clamp(28px, 4.5vw, 56px); isolation: isolate; }
.v3-panel--depth { background: radial-gradient(120% 140% at 100% 0%, var(--accent-soft), transparent 55%), var(--surface); }
.v3-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 72px); align-items: center; }
@media (max-width: 880px) { .v3-split { grid-template-columns: 1fr; } }
.v3-points { display: grid; gap: 14px; list-style: none; margin: 0; padding: 0; }
.v3-points li { display: grid; grid-template-columns: 22px 1fr; gap: 12px; font-size: 15px; color: var(--text-secondary); line-height: 1.6; }
.v3-points li::before { content: ""; width: 8px; height: 8px; margin-top: 8px; border-radius: 50%; background: var(--accent-text); box-shadow: 0 0 0 5px var(--accent-soft); justify-self: center; }
.v3-points strong { color: var(--text-primary); font-weight: 650; }

/* Vela: longitudinal trend visual */
.v3-trend { position: relative; border-radius: var(--radius); border: 1px solid var(--border-soft); background: linear-gradient(180deg, var(--surface-soft), transparent 70%), var(--surface); padding: 22px 22px 16px; overflow: hidden; }
.v3-trend__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: 12.5px; color: var(--text-muted); margin-bottom: 10px; }
.v3-trend svg { width: 100%; height: auto; display: block; overflow: visible; }
.v3-trend .grid line { stroke: var(--border-soft); stroke-width: 1; }
.v3-trend .line { fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 1200; stroke-dashoffset: 1200; }
.v3-trend .line--a { stroke: var(--accent-text); }
.v3-trend .line--b { stroke: var(--signal-cyan); }
.v3-trend .line--c { stroke: var(--lavender); opacity: 0.8; }
.v3-trend .pt { fill: var(--surface); stroke-width: 2; opacity: 0; }
.v3-trend .pt--a { stroke: var(--accent-text); }
.v3-trend .pt--b { stroke: var(--signal-cyan); }
.v3-trend .axis { font: 600 11px var(--font-ui); fill: var(--text-muted); letter-spacing: 0.06em; }
.v3-trend .scan { stroke: var(--accent-line); stroke-width: 1; stroke-dasharray: 3 5; }
.is-in .v3-trend .line, .v3-trend.is-in .line { animation: v3-draw 3.2s var(--ease) forwards; }
.is-in .v3-trend .line--b, .v3-trend.is-in .line--b { animation-delay: 0.35s; }
.is-in .v3-trend .line--c, .v3-trend.is-in .line--c { animation-delay: 0.7s; }
.is-in .v3-trend .pt, .v3-trend.is-in .pt { animation: v3-fade 0.6s 2.6s forwards; }
.v3-trend .scan { animation: v3-scan 9s ease-in-out infinite; }
.v3-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 12px; font-size: 12.5px; color: var(--text-muted); }
.v3-legend i { display: inline-block; width: 14px; height: 2px; margin-right: 6px; vertical-align: middle; border-radius: 2px; }

.v3-cap { display: grid; gap: 10px; padding: 22px; border-radius: var(--radius); border: 1px solid var(--border-soft); background: var(--surface); }
.v3-cap__top { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.v3-cap h3 { font-size: 17px; }
.v3-cap p { font-size: 14.5px; color: var(--text-secondary); line-height: 1.6; }
.v3-cap__icon { width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent-text); }
.v3-cap__icon svg { width: 18px; height: 18px; }

/* ------------------------------------------------------------- research -- */
.v3-article { display: grid; gap: 10px; padding: 24px 0; border-top: 1px solid var(--border-soft); text-decoration: none; color: inherit; }
.v3-article:last-child { border-bottom: 1px solid var(--border-soft); }
.v3-article h3 { font-size: clamp(18px, 1.8vw, 21px); transition: color 0.2s; }
.v3-article:hover h3 { color: var(--accent-text); }
.v3-article p { color: var(--text-secondary); font-size: 15px; max-width: 72ch; }
.v3-article__meta { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; font-size: 13px; color: var(--text-muted); }

/* --------------------------------------------------------------- closing -- */
.v3-close { text-align: center; display: grid; justify-items: center; gap: 22px; }
.v3-close h2 { font-size: clamp(28px, 3.6vw, 44px); max-width: 22ch; }
.v3-close p { color: var(--text-secondary); max-width: 52ch; }

/* ----------------------------------------------------------------- forms -- */
.v3-form { display: grid; gap: 16px; }
.v3-field { display: grid; gap: 6px; }
.v3-field label, .v3-label { font-size: 13.5px; font-weight: 650; color: var(--text-primary); }
.v3-field .v3-opt { font-weight: 500; color: var(--text-muted); }
.v3-input, .v3-select, .v3-textarea { width: 100%; min-height: 48px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--border); background: var(--surface); color: var(--text-primary); font: 500 15px/1.4 var(--font-ui); transition: border-color 0.2s, box-shadow 0.2s; }
.v3-textarea { min-height: 140px; resize: vertical; }
.v3-input::placeholder, .v3-textarea::placeholder { color: var(--text-muted); }
.v3-input:focus, .v3-select:focus, .v3-textarea:focus { outline: none; border-color: var(--accent-text); box-shadow: 0 0 0 3px var(--accent-soft); }
.v3-check { display: grid; grid-template-columns: 20px 1fr; gap: 10px; align-items: start; font-size: 14px; color: var(--text-secondary); }
.v3-check input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--accent); }
.v3-err { display: none; font-size: 13px; font-weight: 600; color: var(--error); }
.v3-err[hidden] { display: none !important; }
.v3-err:not([hidden]).is-shown, .v3-err--live:not(:empty) { display: block; }
.v3-success { display: none; padding: 18px 20px; border-radius: 12px; background: var(--ev-strong-bg); border: 1px solid var(--ev-strong-line); color: var(--text-primary); }
.v3-success strong { display: block; margin-bottom: 4px; }

/* ---------------------------------------------------------------- finder -- */
/* Finder (/finder): native radios inside option cards, keyboard-first. */
.v3-finder { display: grid; gap: clamp(28px, 4vw, 40px); }
.v3-q { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; gap: 14px; }
.v3-q legend { padding: 0; margin-bottom: 14px; font: 650 clamp(19px, 2vw, 22px)/1.3 var(--font-ui); color: var(--text-primary); }
.v3-q__n { display: block; margin-bottom: 6px; font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent-text); }
.v3-options { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 10px; }
.v3-options--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.v3-option { position: relative; display: block; }
.v3-option input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.v3-option span { display: grid; gap: 4px; height: 100%; padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); color: var(--text-primary); font-size: 15px; font-weight: 650; line-height: 1.35; transition: border-color 0.2s, background-color 0.2s; }
.v3-option small { font-size: 13.5px; font-weight: 500; color: var(--text-secondary); }
.v3-option input:hover + span { border-color: var(--accent-line); }
.v3-option input:checked + span { border-color: var(--accent-text); background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--accent-text); }
.v3-option input:focus-visible + span { outline: 2px solid var(--focus); outline-offset: 2px; }
.v3-finder__result { margin-top: clamp(32px, 5vw, 56px); scroll-margin-top: 92px; }
/* the result receives focus programmatically (tabindex -1) so screen readers land on it; it is not a control */
.v3 .v3-finder__result:focus, .v3 .v3-finder__result:focus-visible { outline: none; }
.v3-finder__result .v3-panel { display: grid; gap: 16px; }
.v3-finder__groups { display: grid; gap: 22px; margin-top: 8px; }
.v3-finder__group { display: grid; gap: 10px; }
.v3-finder__group h3 { font-size: 17px; }
.v3-finder__chips, .v3-finder__cards { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.v3-finder__chips a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); color: var(--text-primary); font-size: 14px; font-weight: 600; text-decoration: none; }
.v3-finder__cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); }
.v3-finder__cards a { display: block; height: 100%; padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); color: var(--text-primary); font-size: 15px; font-weight: 650; line-height: 1.4; text-decoration: none; }
.v3-finder__chips a:hover, .v3-finder__cards a:hover { border-color: var(--accent-line); color: var(--accent-text); }
.v3-finder__note { border-top: 1px solid var(--border-soft); padding-top: 14px; }
/* Biomarkers hub: goal pathways (supporting, not a pillar) */
.v3-goalpaths { display: grid; gap: 12px; margin-top: 22px; }

/* ---------------------------------------------------------------- footer -- */
.v3-footer { position: relative; margin-top: clamp(24px, 4vw, 56px); border-top: 1px solid var(--border-soft); background: linear-gradient(180deg, var(--surface-sunken), transparent 60%); }
.v3-footer__grid { display: grid; grid-template-columns: 1.3fr repeat(4, minmax(0, 0.7fr)) 1.6fr; gap: 36px 28px; padding-block: 64px 40px; }
.v3-footer__brand p { margin-top: 14px; font-size: 14px; color: var(--text-secondary); max-width: 30ch; }
.v3-footer h2 { font-size: 11.5px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--text-muted); margin-bottom: 14px; }
.v3-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.v3-footer ul a { color: var(--text-secondary); font-size: 14.5px; text-decoration: none; }
.v3-footer ul a:hover { color: var(--text-primary); }
.v3-news p { font-size: 14px; color: var(--text-secondary); margin-bottom: 12px; }
.v3-news form { display: flex; gap: 8px; }
.v3-news .v3-input { min-height: 44px; border-radius: 999px; padding: 0 16px; }
.v3-news .v3-btn { min-height: 44px; flex: none; }
.v3-news__msg { margin-top: 10px; font-size: 13.5px; min-height: 1.4em; color: var(--text-secondary); }
.v3-news__msg.is-error { color: var(--error); }
.v3-footer__bottom { display: flex; flex-wrap: wrap; gap: 10px 24px; justify-content: space-between; padding-block: 22px 32px; border-top: 1px solid var(--border-soft); font-size: 13px; color: var(--text-muted); }
.v3-footer__bottom a { color: var(--text-muted); }
.v3-footer__legal { max-width: 70ch; }
@media (max-width: 1080px) { .v3-footer__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } .v3-footer__brand, .v3-news { grid-column: span 2; } }
@media (max-width: 560px) { .v3-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 20px; } .v3-news form { flex-direction: column; } .v3-news .v3-btn { width: 100%; } }

/* ------------------------------------------------------ pepvela account -- */
/* Pepvela Account V1 (2026-10-06). Built only from the tokens and components
   above (v3-panel, v3-card, v3-form, v3-btn, v3-tag); this block is layout. */
.v3-header .v3-account-link { display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px; border-radius: 999px; color: var(--text-secondary); font-size: 14.5px; font-weight: 600; text-decoration: none; white-space: nowrap; transition: color 0.2s, background-color 0.2s; }
.v3-header .v3-account-link:hover { color: var(--text-primary); background: var(--surface-sunken); }
.v3-header .v3-account-link[aria-current="page"] { color: var(--text-primary); background: var(--accent-soft); }
@media (max-width: 880px) { .v3-header .v3-account-link { display: none; } }
.v3-acct-links { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 14px; }
.v3-acct-links a { color: var(--accent-text); font-weight: 650; text-decoration: none; }
.v3-acct-links a:hover { text-decoration: underline; }
.v3-acct-hint { font-size: 12.5px; color: var(--text-muted); }
.v3-acct-msg { font-size: 13.5px; color: var(--text-secondary); min-height: 1.4em; }
.v3-acct-msg.is-error { color: var(--error); font-weight: 600; }
.v3-acct-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 28px; }
.v3-acct-nav a { text-decoration: none; }
.v3-acct-nav a:hover { border-color: var(--accent-line); color: var(--text-primary); }
.v3-acct-stack { display: grid; gap: 18px; }
.v3-acct-stack > [id] { scroll-margin-top: 92px; }
.v3-acct-card { min-width: 0; }
.v3-acct-card h2 { font-size: clamp(20px, 2vw, 24px); margin: 0; }
.v3-acct-card__top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; }
.v3-acct-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.v3-acct-dl { display: grid; grid-template-columns: minmax(110px, 160px) minmax(0, 1fr); gap: 12px 20px; margin: 0; font-size: 15px; }
.v3-acct-dl dt { color: var(--text-muted); font-weight: 600; }
.v3-acct-dl dd { margin: 0; color: var(--text-primary); overflow-wrap: anywhere; }
@media (max-width: 480px) { .v3-acct-dl { grid-template-columns: 1fr; gap: 2px; } .v3-acct-dl dd { margin-bottom: 10px; } }
.v3-acct-orders { display: grid; gap: 12px; list-style: none; margin: 0; padding: 0; }
.v3-acct-order { display: grid; gap: 6px; padding: 16px 18px; border-radius: 12px; border: 1px solid var(--border-soft); background: var(--surface-sunken); }
.v3-acct-order__top { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 14px; font-weight: 650; }
.v3-acct-order p { font-size: 14px; color: var(--text-secondary); overflow-wrap: anywhere; }
.v3-acct-mono { font-variant-numeric: tabular-nums; letter-spacing: 0.01em; }
.v3-acct-pending { color: var(--text-muted); }
.v3-acct-verify { display: grid; gap: 10px; }

/* -------------------------------------------------------- cookie + badge -- */
.v3-consent { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 60; display: none; max-width: 640px; margin: 0 auto; padding: 16px 18px; border-radius: var(--radius); background: var(--surface-raised); border: 1px solid var(--border); box-shadow: var(--shadow-raised); }
.v3-consent[data-open="true"] { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: center; justify-content: space-between; }
.v3-consent p { flex: 1 1 180px; min-width: 0; font-size: 13.5px; color: var(--text-secondary); line-height: 1.5; }
.v3-consent .v3-btn { min-height: 40px; padding: 0 16px; font-size: 13.5px; }
#pv-env-badge { position: fixed; left: 12px; bottom: 12px; z-index: 70; pointer-events: none; padding: 6px 10px; border-radius: 8px; font: 650 12px/1.2 var(--font-ui); color: #FFFFFF; background: #1e1648; border: 1px solid rgba(194, 195, 244, 0.4); }

/* ---------------------------------------------------------------- reveal -- */
[data-reveal] { opacity: 0; transform: translateY(14px); transition: opacity 0.9s var(--ease), transform 0.9s var(--ease); }
[data-reveal].is-in { opacity: 1; transform: none; }
.no-js [data-reveal] { opacity: 1; transform: none; }

/* -------------------------------------------------------------- keyframes -- */
@keyframes v3-drift { 0% { transform: translate3d(0, 0, 0) scale(1); } 100% { transform: translate3d(-3%, 2%, 0) scale(1.06); } }
@keyframes v3-trace { from { stroke-dashoffset: 246; } to { stroke-dashoffset: 0; } }
@keyframes v3-draw { to { stroke-dashoffset: 0; } }
@keyframes v3-fade { to { opacity: 1; } }
@keyframes v3-scan { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(420px); } }
@keyframes v3-ping { 0% { box-shadow: 0 0 0 0 rgba(118, 191, 230, 0.55); } 70% { box-shadow: 0 0 0 9px rgba(118, 191, 230, 0); } 100% { box-shadow: 0 0 0 0 rgba(118, 191, 230, 0); } }

/* --------------------------------------------------------- reduced motion -- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
  [data-reveal] { opacity: 1; transform: none; }
  .v3-hero__wash { animation: none; }
  .v3-wave path.v3-wave__pulse { animation: none; stroke-dasharray: none; opacity: 0.55; }
  .v3-trend .line { stroke-dashoffset: 0; animation: none !important; }
  .v3-trend .pt { opacity: 1; animation: none !important; }
  .v3-trend .scan { animation: none; }
  .v3-status__dot { animation: none; }
}

/* ---- Research & evidence library (/research), 2026-10-09 ------------------
   Card library in the Peptides-directory language: category pills, search,
   one wider featured card, theme tokens only (light + dark). */
.research-library { padding-block: clamp(28px, 4vw, 44px) 0; }
.research-filterbar { margin-bottom: 10px; }
.research-pills { gap: 8px; }
.research-pill[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--text-on-accent); }
.research-library #research-empty { margin-top: 18px; }
section[data-research-section] { padding-block: clamp(28px, 4.2vw, 52px); }
section[data-research-section] + section[data-research-section] { padding-top: clamp(8px, 1.6vw, 20px); }
section[data-research-section][hidden] { display: none; }
.research-section__head { display: flex; align-items: center; gap: 14px; margin-bottom: clamp(18px, 2.4vw, 26px); }
.research-section__head h2 { margin: 2px 0 0; font-size: clamp(22px, 2.4vw, 28px); letter-spacing: -0.02em; }
.research-section__head .v3-eyebrow { margin: 0; }
.research-section__icon, .research-card__icon { display: inline-grid; place-items: center; flex: none; border-radius: 12px; background: var(--accent-soft); color: var(--accent-text); border: 1px solid var(--accent-line); }
.research-section__icon { width: 44px; height: 44px; }
.research-section__icon svg { width: 22px; height: 22px; }
.research-grid { gap: clamp(16px, 2vw, 22px); align-items: stretch; }
.research-card { gap: 14px; padding: clamp(20px, 2.2vw, 26px); }
.research-card[hidden] { display: none; }
.research-card__top { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.research-card__icon { width: 34px; height: 34px; border-radius: 10px; }
.research-card__icon svg { width: 18px; height: 18px; }
.research-card__cat { background: var(--surface-soft); }
.research-card__flag { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--accent-text); background: var(--accent-soft); border: 1px solid var(--accent-line); }
.research-card__flag--guide { color: var(--text-secondary); background: transparent; border-color: var(--border); }
.research-card__title { font-size: clamp(17.5px, 1.5vw, 19.5px); line-height: 1.3; letter-spacing: -0.012em; font-weight: 700; }
.v3 .research-card__link { color: var(--text-primary); text-decoration: none; }
.research-card__link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.research-card:has(.research-card__link:focus-visible) { outline: 2px solid var(--focus); outline-offset: 3px; }
.v3 .research-card:hover .research-card__link { color: var(--accent-text); }
.research-card__excerpt { font-size: 14.5px; line-height: 1.62; color: var(--text-secondary); }
.research-card__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin-top: auto; padding-top: 12px; border-top: 1px solid var(--border-soft); }
.research-card__meta { font-size: 13px; color: var(--text-muted); display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; }
.research-card__note { color: var(--text-secondary); font-weight: 650; }
.research-card__go { margin-left: auto; font-size: 14px; font-weight: 650; color: var(--accent-text); white-space: nowrap; transition: transform 0.25s var(--ease); }
.research-card:hover .research-card__go { transform: translateX(3px); }
.research-card--featured { grid-column: span 2; padding: clamp(24px, 3vw, 36px); background: radial-gradient(70% 90% at 100% 0%, var(--accent-soft), transparent 72%), var(--surface); }
.research-card--featured .research-card__title { font-size: clamp(22px, 2.4vw, 30px); line-height: 1.18; letter-spacing: -0.022em; max-width: 30ch; }
.research-card--featured .research-card__excerpt { font-size: 15.5px; max-width: 62ch; }
.research-card--featured .research-card__icon { width: 40px; height: 40px; }
@media (max-width: 640px) {
  .research-card--featured { grid-column: auto; }
  .research-pills { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); padding-bottom: 4px; }
  .research-pills::-webkit-scrollbar { display: none; }
  .research-pill { flex: none; min-height: 44px; }
  .research-filterbar .v3-search { max-width: none; flex-basis: 100%; }
  .research-section__icon { width: 38px; height: 38px; }
}
@media (prefers-reduced-motion: reduce) { .research-card__go, .research-card:hover .research-card__go { transition: none; transform: none; } }
