/* FYP Academic Research Website — design system.
   Modern Academic Research + AI Visualization. Deep navy / academic blue / cyan / gold. */

:root {
  --fyp-bg: #08111d;
  --fyp-bg-2: #040712;
  --fyp-navy: #0a1424;
  --fyp-card: rgba(15, 23, 42, 0.55);
  --fyp-card-solid: #0f172a;
  --fyp-border: rgba(148, 163, 184, 0.16);
  --fyp-border-strong: rgba(148, 163, 184, 0.3);
  --fyp-text: #e5e7eb;
  --fyp-text-muted: #94a3b8;
  --fyp-text-dim: #64748b;
  --fyp-blue: #2563eb;
  --fyp-cyan: #22d3ee;
  --fyp-gold: #d4af37;
  --fyp-sage: #a8c5b5;
  --fyp-peach: #f5d0c5;
  --fyp-radius: 16px;
  --fyp-radius-sm: 10px;
  --fyp-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}

html[data-theme="light"] {
  --fyp-bg: #f8fafc;
  --fyp-bg-2: #eef2f7;
  --fyp-navy: #ffffff;
  --fyp-card: rgba(255, 255, 255, 0.85);
  --fyp-card-solid: #ffffff;
  --fyp-border: rgba(100, 116, 139, 0.18);
  --fyp-border-strong: rgba(100, 116, 139, 0.35);
  --fyp-text: #0f172a;
  --fyp-text-muted: #475569;
  --fyp-text-dim: #64748b;
  --fyp-shadow: 0 20px 60px rgba(15, 23, 42, 0.08);
}

.fyp-body {
  margin: 0;
  background: radial-gradient(circle at top, rgba(14, 165, 233, 0.14), transparent 30%), linear-gradient(180deg, var(--fyp-bg) 0%, var(--fyp-bg-2) 100%);
  color: var(--fyp-text);
  font-family: 'Inter', system-ui, sans-serif;
  line-height: 1.6;
  overflow-x: hidden;
}
.fyp-body .fyp-hero *, .fyp-body .fyp-section *, .fyp-body .fyp-nav * { box-sizing: border-box; }

.fyp-body a { color: var(--fyp-cyan); text-decoration: none; }
.fyp-body a:hover { text-decoration: underline; }
.fyp-body .ainna-page-footer { width: 100%; max-width: 100%; box-sizing: border-box; overflow-x: clip; }
.fyp-body #ainnaThemeSlot { display: none !important; }

/* ── Sticky nav ── */
.fyp-nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(10, 14, 25, 0.82);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border-bottom: 1px solid var(--fyp-border);
}
html[data-theme="light"] .fyp-nav { background: rgba(255, 255, 255, 0.85); }
.fyp-nav-inner {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 20px;
  height: 60px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.fyp-nav-brand { font-weight: 800; font-size: 18px; color: var(--fyp-text); letter-spacing: 0.02em; }
.fyp-nav-brand span { color: var(--fyp-cyan); }
.fyp-nav-links { display: flex; gap: 4px; flex-wrap: wrap; }
.fyp-nav-links a {
  color: var(--fyp-text-muted);
  font-size: 13px;
  font-weight: 500;
  padding: 6px 10px;
  border-radius: 8px;
  transition: color 0.2s, background 0.2s;
}
.fyp-nav-links a:hover { color: var(--fyp-text); background: rgba(148, 163, 184, 0.12); }
.fyp-nav-links a.is-active { color: var(--fyp-cyan); background: rgba(34, 211, 238, 0.1); }
.fyp-nav-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  margin-left: auto;
}
.fyp-nav-actions .ainna-nav-controls {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.fyp-nav-actions .ainna-wc-link,
.fyp-nav-actions button.ainna-theme-switch.theme-toggle {
  position: static !important;
  top: auto !important;
  right: auto !important;
  left: auto !important;
  bottom: auto !important;
}
.fyp-nav-toggle {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: 0;
  cursor: pointer;
  padding: 8px;
}
.fyp-nav-toggle span { width: 22px; height: 2px; background: var(--fyp-text); border-radius: 2px; }
.fyp-reading-progress {
  position: absolute;
  bottom: -2px;
  left: 0;
  height: 2px;
  width: 0;
  background: linear-gradient(90deg, var(--fyp-blue), var(--fyp-cyan));
  transition: width 0.1s linear;
}

/* ── Hero ── */
.fyp-hero {
  position: relative;
  min-height: 92vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 80px 20px 60px;
  overflow: hidden;
}
.fyp-hero-bg { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.fyp-hero-grid {
  position: absolute;
  inset: 0;
  background-image: linear-gradient(rgba(148, 163, 184, 0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(148, 163, 184, 0.06) 1px, transparent 1px);
  background-size: 48px 48px;
  mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%);
}
.fyp-hero-glow { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.5; }
.fyp-hero-glow--1 { width: 420px; height: 420px; background: rgba(37, 99, 235, 0.4); top: -120px; left: -80px; }
.fyp-hero-glow--2 { width: 380px; height: 380px; background: rgba(34, 211, 238, 0.3); bottom: -100px; right: -60px; }
.fyp-hero-node {
  position: absolute;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--fyp-cyan);
  box-shadow: 0 0 8px var(--fyp-cyan);
  animation: fypFloat linear infinite;
  opacity: 0.5;
}
@keyframes fypFloat {
  0%, 100% { transform: translateY(0); opacity: 0.3; }
  50% { transform: translateY(-24px); opacity: 0.8; }
}
.fyp-hero-inner {
  position: relative;
  z-index: 1;
  max-width: 900px;
  text-align: center;
}
.fyp-eyebrow {
  display: inline-block;
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--fyp-cyan);
  border: 1px solid var(--fyp-border-strong);
  padding: 6px 14px;
  border-radius: 999px;
  background: rgba(34, 211, 238, 0.06);
  margin: 0 0 20px;
}
.fyp-hero-title {
  font-size: clamp(1.6rem, 4.2vw, 2.9rem);
  font-weight: 800;
  line-height: 1.2;
  margin: 0 0 20px;
  letter-spacing: -0.01em;
}
.fyp-hero-sub {
  font-size: clamp(1rem, 2vw, 1.2rem);
  color: var(--fyp-text-muted);
  max-width: 720px;
  margin: 0 auto 36px;
}
.fyp-meta-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  margin: 0 0 36px;
}
.fyp-meta-card {
  background: var(--fyp-card);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius-sm);
  padding: 12px 14px;
  text-align: left;
  backdrop-filter: blur(8px);
}
.fyp-meta-label { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--fyp-text-dim); margin-bottom: 4px; }
.fyp-meta-value { display: block; font-size: 14px; font-weight: 600; color: var(--fyp-text); }
.fyp-hero-cta { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.fyp-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 600;
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform 0.2s, box-shadow 0.2s, background 0.2s;
}
.fyp-btn:hover { transform: translateY(-2px); text-decoration: none; }
.fyp-btn--primary { background: linear-gradient(135deg, var(--fyp-blue), var(--fyp-cyan)); color: #fff; box-shadow: 0 10px 30px rgba(37, 99, 235, 0.35); }
.fyp-btn--ghost { background: transparent; border-color: var(--fyp-border-strong); color: var(--fyp-text); }
.fyp-btn--ghost:hover { background: rgba(148, 163, 184, 0.1); }
.fyp-scroll-indicator {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  width: 24px;
  height: 40px;
  border: 2px solid var(--fyp-border-strong);
  border-radius: 999px;
  z-index: 1;
}
.fyp-scroll-indicator span {
  position: absolute;
  top: 8px;
  left: 50%;
  transform: translateX(-50%);
  width: 4px;
  height: 8px;
  border-radius: 2px;
  background: var(--fyp-cyan);
  animation: fypScroll 1.6s ease-in-out infinite;
}
@keyframes fypScroll { 0% { opacity: 0; top: 8px; } 50% { opacity: 1; } 100% { opacity: 0; top: 24px; } }

/* ── Sections ── */
.fyp-section { padding: 90px 0; position: relative; }
.fyp-container { max-width: 1180px; margin: 0 auto; padding: 0 20px; }
.fyp-section-head { max-width: 820px; margin: 0 auto 48px; text-align: center; }
.fyp-section-title { font-size: clamp(1.5rem, 3.4vw, 2.4rem); font-weight: 800; margin: 0 0 16px; letter-spacing: -0.01em; }
.fyp-section-lead { color: var(--fyp-text-muted); font-size: 1.05rem; }
.fyp-section-lead--badge { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.fyp-data-badge {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  padding: 5px 12px;
  border-radius: 999px;
  border: 1px solid var(--fyp-border-strong);
  color: var(--fyp-cyan);
  background: rgba(34, 211, 238, 0.08);
}
.fyp-data-badge--pending { color: var(--fyp-gold); border-color: rgba(212, 175, 55, 0.4); background: rgba(212, 175, 55, 0.08); }

/* ── Reveal animation ── */
.reveal-up { opacity: 0; transform: translateY(28px); transition: opacity 0.7s ease, transform 0.7s ease; }
.reveal-up.is-visible { opacity: 1; transform: none; }

/* ── Cards / lists ── */
.fyp-card {
  background: var(--fyp-card);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius);
  padding: 26px;
  backdrop-filter: blur(8px);
  box-shadow: var(--fyp-shadow);
}
.fyp-card--warn { border-color: rgba(212, 175, 55, 0.35); }
.fyp-card-title { font-size: 1.15rem; font-weight: 700; margin: 0 0 16px; }
.fyp-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.fyp-list li { padding-left: 24px; position: relative; color: var(--fyp-text-muted); }
.fyp-list li::before { content: '▸'; position: absolute; left: 0; color: var(--fyp-cyan); }
.fyp-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 24px; }
.fyp-note {
  background: rgba(34, 211, 238, 0.06);
  border: 1px solid var(--fyp-border);
  border-left: 3px solid var(--fyp-cyan);
  border-radius: var(--fyp-radius-sm);
  padding: 16px 20px;
  color: var(--fyp-text-muted);
  font-size: 0.95rem;
  max-width: 900px;
  margin: 0 auto;
}
.fyp-note--muted { background: rgba(148, 163, 184, 0.06); border-left-color: var(--fyp-text-dim); }

/* ── Transformation (Section 2) ── */
.fyp-transform {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 20px;
  align-items: center;
  margin-bottom: 40px;
}
.fyp-transform-col { background: var(--fyp-card); border: 1px solid var(--fyp-border); border-radius: var(--fyp-radius); padding: 24px; }
.fyp-transform-title { font-size: 1.05rem; font-weight: 700; text-align: center; margin: 0 0 20px; }
.fyp-transform-flow { display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; }
.fyp-flow-node {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 14px 16px;
  background: var(--fyp-card-solid);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius-sm);
  font-size: 13px;
  font-weight: 600;
  min-width: 84px;
}
.fyp-flow-icon { font-size: 24px; }
.fyp-flow-arrow { color: var(--fyp-cyan); font-size: 20px; font-weight: 700; }
.fyp-transform-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--fyp-blue), var(--fyp-cyan));
  color: #fff;
  font-weight: 800;
  box-shadow: 0 0 30px rgba(34, 211, 238, 0.4);
}

/* ── Research gap flow (Section 3) ── */
.fyp-gap-flow { max-width: 720px; margin: 0 auto 48px; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.fyp-gap-step {
  background: var(--fyp-card);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius);
  padding: 18px 22px;
  width: 100%;
  display: flex;
  gap: 14px;
  align-items: flex-start;
}
.fyp-gap-step--question { border-color: rgba(212, 175, 55, 0.4); }
.fyp-gap-num {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: rgba(34, 211, 238, 0.12);
  border: 1px solid var(--fyp-border-strong);
  color: var(--fyp-cyan);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 14px;
}
.fyp-gap-step--question .fyp-gap-num { color: var(--fyp-gold); border-color: rgba(212, 175, 55, 0.4); }
.fyp-gap-step p { margin: 0; color: var(--fyp-text-muted); }
.fyp-gap-arrow { color: var(--fyp-cyan); font-size: 20px; }

/* ── Research gap funnel ── */
.fyp-funnel { max-width: 560px; margin: 0 auto 40px; text-align: center; }
.fyp-funnel-title { font-size: 1.15rem; font-weight: 700; margin: 0 0 20px; }
.fyp-funnel-stage {
  margin: 0 auto 10px;
  width: 100%;
  max-width: 480px;
  padding: 14px 18px;
  background: var(--fyp-card);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius-sm);
  color: var(--fyp-text-muted);
  font-size: 14px;
  transition: all 0.3s;
}
.fyp-funnel-stage:nth-child(2) { max-width: 400px; }
.fyp-funnel-stage:nth-child(3) { max-width: 320px; }
.fyp-funnel-stage:nth-child(4) { max-width: 240px; }
.fyp-funnel-stage--focus {
  max-width: 200px;
  background: linear-gradient(135deg, rgba(37, 99, 235, 0.3), rgba(34, 211, 238, 0.2));
  border-color: var(--fyp-cyan);
  color: var(--fyp-text);
  font-weight: 700;
  box-shadow: 0 0 30px rgba(34, 211, 238, 0.3);
}

/* ── Literature (Section 4) ── */
.fyp-filter-bar { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin-bottom: 36px; }
.fyp-filter-bar--sm { margin-bottom: 16px; }
.fyp-filter-btn {
  padding: 8px 16px;
  border-radius: 999px;
  border: 1px solid var(--fyp-border-strong);
  background: transparent;
  color: var(--fyp-text-muted);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s;
}
.fyp-filter-btn:hover { color: var(--fyp-text); border-color: var(--fyp-cyan); }
.fyp-filter-btn.is-active { background: linear-gradient(135deg, var(--fyp-blue), var(--fyp-cyan)); color: #fff; border-color: transparent; }
.fyp-cluster-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 24px; }
.fyp-cluster { background: var(--fyp-card); border: 1px solid var(--fyp-border); border-radius: var(--fyp-radius); padding: 24px; }
.fyp-cluster-title { font-size: 1.05rem; font-weight: 700; margin: 0 0 16px; color: var(--fyp-cyan); }
.fyp-study-list { display: grid; gap: 12px; }
.fyp-study-card {
  background: var(--fyp-card-solid);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius-sm);
  padding: 16px;
}
.fyp-study-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.fyp-study-author { font-weight: 700; font-size: 14px; }
.fyp-study-year { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--fyp-text-dim); }
.fyp-study-title { font-size: 14px; font-weight: 600; margin: 0 0 6px; }
.fyp-study-meta { font-size: 12px; color: var(--fyp-text-dim); margin: 0 0 8px; }
.fyp-study-findings, .fyp-study-relevance { font-size: 13px; color: var(--fyp-text-muted); margin: 0 0 6px; }
.fyp-study-empty { color: var(--fyp-text-dim); font-size: 13px; }
.fyp-db-badge {
  display: inline-block;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.08em;
  padding: 3px 10px;
  border-radius: 999px;
  margin-top: 8px;
}
.fyp-db-badge--scopus { background: rgba(37, 99, 235, 0.15); color: #60a5fa; border: 1px solid rgba(37, 99, 235, 0.4); }
.fyp-db-badge--mycite { background: rgba(212, 175, 55, 0.15); color: var(--fyp-gold); border: 1px solid rgba(212, 175, 55, 0.4); }
.fyp-db-badge--unverified { background: rgba(148, 163, 184, 0.1); color: var(--fyp-text-dim); border: 1px dashed var(--fyp-border-strong); }

/* ── Objectives (Section 5) ── */
.fyp-obj-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; counter-reset: obj; }
.fyp-obj-list li { padding-left: 0; color: var(--fyp-text-muted); font-size: 0.95rem; }
.fyp-obj-list strong { color: var(--fyp-cyan); font-family: 'JetBrains Mono', monospace; font-size: 12px; margin-right: 6px; }

/* ── Conceptual framework ── */
.fyp-framework { background: var(--fyp-card); border: 1px solid var(--fyp-border); border-radius: var(--fyp-radius); padding: 32px; }
.fyp-framework-title { text-align: center; font-size: 1.2rem; font-weight: 700; margin: 0 0 28px; }
.fyp-framework-canvas {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  position: relative;
}
.fyp-fw-node {
  text-align: center;
  padding: 20px 28px;
  border-radius: var(--fyp-radius);
  border: 2px solid var(--fyp-border-strong);
  background: var(--fyp-card-solid);
  position: relative;
  cursor: help;
  transition: transform 0.2s, box-shadow 0.2s;
}
.fyp-fw-node:hover { transform: translateY(-3px); box-shadow: 0 0 30px rgba(34, 211, 238, 0.2); }
.fyp-fw-node--iv { border-color: var(--fyp-blue); }
.fyp-fw-node--dv { border-color: var(--fyp-cyan); }
.fyp-fw-tag {
  position: absolute;
  top: -10px;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  font-weight: 700;
  padding: 2px 10px;
  border-radius: 999px;
  background: var(--fyp-blue);
  color: #fff;
}
.fyp-fw-node--dv .fyp-fw-tag { background: var(--fyp-cyan); color: #08111d; }
.fyp-fw-node strong { display: block; font-size: 1.05rem; }
.fyp-fw-dims { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }
.fyp-fw-dim {
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid var(--fyp-border-strong);
  background: rgba(37, 99, 235, 0.08);
  color: var(--fyp-text-muted);
  font-size: 12px;
  cursor: help;
}
.fyp-fw-arrow { color: var(--fyp-cyan); font-size: 28px; font-weight: 700; }
.fyp-fw-arrow span { display: inline-block; animation: fypArrow 1.4s ease-in-out infinite; }
@keyframes fypArrow { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(6px); } }
.fyp-fw-indicators { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }
.fyp-fw-ind {
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid var(--fyp-border-strong);
  background: rgba(34, 211, 238, 0.08);
  color: var(--fyp-text-muted);
  font-size: 12px;
  cursor: help;
}
.fyp-fw-tooltip {
  min-height: 20px;
  text-align: center;
  color: var(--fyp-cyan);
  font-size: 13px;
  margin: 20px 0 0;
  opacity: 0;
  transition: opacity 0.3s;
}
.fyp-fw-tooltip.is-visible { opacity: 1; }

/* ── Methodology pipeline (Section 6) ── */
.fyp-pipeline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-bottom: 40px;
}
.fyp-pipe-stage {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 18px;
  background: var(--fyp-card);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius-sm);
  font-size: 13px;
  font-weight: 600;
  opacity: 0.4;
  transform: scale(0.95);
  transition: all 0.4s;
}
.fyp-pipe-stage.is-active { opacity: 1; transform: none; border-color: var(--fyp-cyan); box-shadow: 0 0 20px rgba(34, 211, 238, 0.15); }
.fyp-pipe-num {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: rgba(34, 211, 238, 0.12);
  border: 1px solid var(--fyp-border-strong);
  color: var(--fyp-cyan);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
}
.fyp-pipe-connector { width: 24px; height: 2px; background: var(--fyp-border-strong); }

/* ── Analysis (Section 7) ── */
.fyp-kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 14px; margin-bottom: 32px; }
.fyp-kpi {
  background: var(--fyp-card);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius);
  padding: 20px;
  text-align: center;
}
.fyp-kpi-label { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--fyp-text-dim); margin-bottom: 8px; }
.fyp-kpi-value { display: block; font-size: 14px; font-weight: 600; color: var(--fyp-gold); }
.fyp-chart-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 32px; }
.fyp-chart-card { background: var(--fyp-card); border: 1px solid var(--fyp-border); border-radius: var(--fyp-radius); padding: 24px; }
.fyp-chart-title { font-size: 1rem; font-weight: 700; margin: 0 0 16px; }
.fyp-chart-placeholder {
  height: 180px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px dashed var(--fyp-border-strong);
  border-radius: var(--fyp-radius-sm);
  color: var(--fyp-text-dim);
  font-size: 13px;
  background: repeating-linear-gradient(45deg, transparent, transparent 10px, rgba(148, 163, 184, 0.04) 10px, rgba(148, 163, 184, 0.04) 20px);
}
.fyp-findings { display: grid; gap: 12px; margin-bottom: 24px; }
.fyp-finding {
  display: flex;
  align-items: center;
  gap: 16px;
  background: var(--fyp-card);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius-sm);
  padding: 16px 20px;
}
.fyp-finding-tag {
  flex-shrink: 0;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  padding: 4px 12px;
  border-radius: 999px;
  background: rgba(212, 175, 55, 0.12);
  border: 1px solid rgba(212, 175, 55, 0.35);
  color: var(--fyp-gold);
}
.fyp-finding-text { margin: 0; color: var(--fyp-text-muted); font-size: 14px; }

/* ── Conclusion (Section 8) ── */
.fyp-contrib-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-bottom: 48px; }
.fyp-contrib-card { background: var(--fyp-card); border: 1px solid var(--fyp-border); border-radius: var(--fyp-radius); padding: 26px; }
.fyp-contrib-title { font-size: 1.1rem; font-weight: 700; margin: 0 0 12px; color: var(--fyp-cyan); }
.fyp-contrib-card p { margin: 0; color: var(--fyp-text-muted); font-size: 0.95rem; }
.fyp-refs { background: var(--fyp-card); border: 1px solid var(--fyp-border); border-radius: var(--fyp-radius); padding: 32px; margin-bottom: 48px; }
.fyp-refs-head { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; margin-bottom: 16px; }
.fyp-refs-title { font-size: 1.2rem; font-weight: 700; margin: 0; }
.fyp-ref-list { display: grid; gap: 12px; }
.fyp-ref-item {
  background: var(--fyp-card-solid);
  border: 1px solid var(--fyp-border);
  border-radius: var(--fyp-radius-sm);
  padding: 16px 20px;
}
.fyp-ref-cite { margin: 0 0 8px; font-size: 14px; color: var(--fyp-text-muted); }
.fyp-ref-cite a { color: var(--fyp-cyan); }
.fyp-people { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.fyp-person { background: var(--fyp-card); border: 1px solid var(--fyp-border); border-radius: var(--fyp-radius); padding: 26px; text-align: center; }
.fyp-person-role { display: inline-block; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--fyp-cyan); margin-bottom: 10px; }
.fyp-person-name { font-size: 1.2rem; font-weight: 700; margin: 0 0 6px; }
.fyp-person-meta { color: var(--fyp-text-dim); font-size: 13px; margin: 0; }

/* ── Responsive ── */
@media (max-width: 900px) {
  .fyp-two-col, .fyp-cluster-grid, .fyp-chart-grid, .fyp-contrib-grid, .fyp-people { grid-template-columns: 1fr; }
  .fyp-transform { grid-template-columns: 1fr; }
  .fyp-transform-divider { margin: 0 auto; }
}
@media (max-width: 720px) {
  .fyp-nav-actions { gap: 5px; }
  .fyp-nav-actions .ainna-theme-switch-label { display: none; }
  .fyp-nav-actions button.ainna-theme-switch.theme-toggle { padding: 5px 5px 5px 5px; }
  .fyp-nav-actions .ainna-wc-link { padding: 6px 8px; }
  .fyp-nav-actions .ainna-wc-year { font-size: 8px; letter-spacing: .08em; }
  .fyp-nav-toggle { display: flex; }
  .fyp-nav-links {
    display: none;
    position: absolute;
    top: 60px;
    left: 0;
    right: 0;
    flex-direction: column;
    background: var(--fyp-navy);
    border-bottom: 1px solid var(--fyp-border);
    padding: 12px 20px;
    gap: 4px;
  }
  .fyp-nav-links.is-open { display: flex; }
  .fyp-section { padding: 60px 0; }
  .fyp-hero { min-height: auto; padding: 60px 20px; }
  .fyp-pipe-connector { display: none; }
  .fyp-finding { flex-direction: column; align-items: flex-start; gap: 8px; }
}

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
  .fyp-hero-node, .fyp-scroll-indicator span, .fyp-fw-arrow span { animation: none !important; }
  .reveal-up { opacity: 1; transform: none; transition: none; }
  .fyp-pipe-stage { opacity: 1; transform: none; }
}

/* ── Premium motion upgrade ─────────────────────────────────────────────── */
:root {
  --motion-fast: 200ms;
  --motion-standard: 480ms;
  --motion-story: 900ms;
  --motion-background: 8s;
  --motion-ease: cubic-bezier(.22, 1, .36, 1);
  --motion-route: cubic-bezier(.65, 0, .35, 1);
}
html { scroll-behavior: smooth; }
.fyp-section { content-visibility: auto; contain-intrinsic-size: 900px; }
.fyp-nav { transition: background var(--motion-standard), box-shadow var(--motion-standard), transform var(--motion-standard); }
.fyp-nav.is-condensed { box-shadow: 0 12px 35px rgba(0,0,0,.18); }
.fyp-nav.is-condensed .fyp-nav-inner { height: 50px; }
.fyp-nav-inner { transition: height var(--motion-standard) var(--motion-ease); }
.fyp-nav-links a { position: relative; overflow: hidden; }
.fyp-nav-links a::after { content:""; position:absolute; left:10px; right:10px; bottom:2px; height:2px; background:var(--fyp-cyan); transform:scaleX(0); transform-origin:left; transition:transform var(--motion-standard) var(--motion-ease); }
.fyp-nav-links a.is-active::after { transform:scaleX(1); }

/* Hero: deterministic six-stage academic data → network → learning sequence */
.fyp-hero { min-height: max(760px, 94vh); isolation:isolate; }
.fyp-hero-bg { perspective: 1000px; }
.fyp-hero-grid { transform: translate3d(var(--hero-grid-x,0),var(--hero-grid-y,0),0); transition:transform 180ms linear; }
.fyp-hero-scene { position:absolute; inset:0; opacity:.92; transform:translate3d(var(--hero-scene-x,0),var(--hero-scene-y,0),0); transition:transform 180ms linear; }
.fyp-ledger-point { position:absolute; left:var(--x); top:var(--y); font:500 11px/1 'JetBrains Mono',monospace; letter-spacing:.08em; color:var(--fyp-text-dim); opacity:0; transform:translateY(10px); transition:opacity var(--motion-story),transform var(--motion-story) var(--motion-ease); }
.fyp-hero.is-stage-1 .fyp-ledger-point { opacity:.55; transform:none; }
.fyp-hero-network { position:absolute; inset:8% 2%; width:96%; height:84%; overflow:visible; }
.fyp-network-lines path { fill:none; stroke:rgba(34,211,238,.28); stroke-width:1.4; stroke-dasharray:900; stroke-dashoffset:900; transition:stroke-dashoffset 1.5s var(--motion-route); }
.fyp-network-dots circle { fill:var(--fyp-cyan); opacity:0; transition:opacity var(--motion-standard); }
.fyp-hero.is-stage-2 .fyp-network-lines path,.fyp-hero.is-stage-3 .fyp-network-lines path,.fyp-hero.is-stage-4 .fyp-network-lines path,.fyp-hero.is-ready .fyp-network-lines path { stroke-dashoffset:0; }
.fyp-hero.is-stage-2 .fyp-network-dots circle,.fyp-hero.is-stage-3 .fyp-network-dots circle,.fyp-hero.is-stage-4 .fyp-network-dots circle,.fyp-hero.is-ready .fyp-network-dots circle { opacity:.75; }
.fyp-network-lines .fyp-route-line { stroke-width:2; stroke:rgba(212,175,55,.6); }
.fyp-ai-core,.fyp-learning-core { position:absolute; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; border:1px solid var(--fyp-border-strong); background:rgba(8,17,29,.8); backdrop-filter:blur(8px); opacity:0; transition:opacity var(--motion-story),transform var(--motion-story) var(--motion-ease),box-shadow var(--motion-story); }
.fyp-ai-core { width:106px; height:106px; border-radius:50%; left:50%; top:50%; transform:translate(-50%,-50%) scale(.65); }
.fyp-ai-core span { font-size:30px; font-weight:900; color:var(--fyp-cyan); }
.fyp-ai-core small,.fyp-learning-core small { font:500 8px/1.4 'JetBrains Mono',monospace; color:var(--fyp-text-dim); }
.fyp-hero.is-stage-3 .fyp-ai-core,.fyp-hero.is-stage-4 .fyp-ai-core,.fyp-hero.is-ready .fyp-ai-core { opacity:1; transform:translate(-50%,-50%) scale(1); box-shadow:0 0 0 14px rgba(34,211,238,.04),0 0 45px rgba(34,211,238,.2); }
.fyp-learning-core { width:170px; min-height:72px; border-radius:14px; left:82.5%; top:50%; transform:translate(-50%,-50%) scale(.8); }
.fyp-learning-core span { font-size:13px; font-weight:800; color:var(--fyp-gold); }
.fyp-hero.is-stage-4 .fyp-learning-core,.fyp-hero.is-ready .fyp-learning-core { opacity:1; transform:translate(-50%,-50%) scale(1); }
.fyp-hero-packet { position:absolute; left:50%; top:50%; width:7px; height:7px; border-radius:50%; background:var(--fyp-gold); box-shadow:0 0 14px var(--fyp-gold); opacity:0; }
.fyp-hero.is-stage-4 .fyp-hero-packet,.fyp-hero.is-ready .fyp-hero-packet { animation:fypHeroRoute 2.8s var(--motion-route) infinite; }
@keyframes fypHeroRoute { 0%{opacity:0;transform:translate(0,-50%)} 12%{opacity:1} 85%{opacity:1} 100%{opacity:0;transform:translate(calc(32.5vw - 10px),-50%)} }
.fyp-hero-inner { z-index:3; text-shadow:0 2px 18px rgba(4,7,18,.8); }
.fyp-hero-copy { opacity:0; transform:translateY(18px); filter:blur(5px); transition:opacity var(--motion-story),transform var(--motion-story) var(--motion-ease),filter var(--motion-story); }
.fyp-hero.is-stage-5 .fyp-hero-copy,.fyp-hero.is-ready .fyp-hero-copy { opacity:1; transform:none; filter:none; }
.fyp-hero-copy[data-hero-order="2"]{transition-delay:120ms}.fyp-hero-copy[data-hero-order="3"]{transition-delay:240ms}.fyp-hero-copy[data-hero-order="4"]{transition-delay:360ms}.fyp-hero-copy[data-hero-order="5"]{transition-delay:480ms}
html[data-theme="light"] .fyp-ai-core,html[data-theme="light"] .fyp-learning-core { background:rgba(255,255,255,.82); }

/* Story activation language: assemble, narrow, connect, route, build, converge */
[data-story] { --story-delay:0ms; }
.fyp-transform-col,.fyp-transform-divider,.fyp-gap-step,.fyp-gap-arrow,.fyp-funnel-stage,.fyp-pipe-stage,.fyp-pipe-connector,.fyp-kpi,.fyp-chart-card,.fyp-contrib-card { transition:opacity var(--motion-story) var(--motion-ease),transform var(--motion-story) var(--motion-ease),border-color var(--motion-standard),box-shadow var(--motion-standard); }
.fyp-transform:not(.is-story-active) .fyp-transform-col:first-child { opacity:0; transform:translateX(-32px); }
.fyp-transform:not(.is-story-active) .fyp-transform-col:last-child { opacity:0; transform:translateX(32px); }
.fyp-transform:not(.is-story-active) .fyp-transform-divider { opacity:0; transform:scale(.4) rotate(-90deg); }
.fyp-transform.is-story-active .fyp-flow-node { animation:fypNodeSettle var(--motion-story) var(--motion-ease) both; }
.fyp-transform.is-story-active .fyp-flow-node:nth-child(3){animation-delay:140ms}.fyp-transform.is-story-active .fyp-flow-node:nth-child(5){animation-delay:280ms}.fyp-transform.is-story-active .fyp-flow-node:nth-child(7){animation-delay:420ms}
@keyframes fypNodeSettle { from{opacity:0;transform:scale(.85)} to{opacity:1;transform:none} }
.fyp-card:hover,.fyp-study-card:hover,.fyp-contrib-card:hover,.fyp-person:hover { transform:translateY(-4px); border-color:rgba(34,211,238,.38); box-shadow:0 20px 50px rgba(0,0,0,.18); }

/* Accounting validator */
.fyp-validator,.fyp-neuralops,.fyp-distillation,.fyp-escalation,.fyp-convergence { margin:38px 0; padding:30px; background:var(--fyp-card); border:1px solid var(--fyp-border); border-radius:var(--fyp-radius); overflow:hidden; }
.fyp-visual-heading { text-align:center; margin-bottom:22px; }.fyp-visual-heading h3{margin:7px 0;font-size:1.25rem}.fyp-visual-heading p{margin:0;color:var(--fyp-text-muted);font-size:.9rem}
.fyp-sim-label { display:inline-flex; padding:4px 10px; border:1px solid rgba(212,175,55,.35); border-radius:99px; color:var(--fyp-gold); font:600 10px/1.4 'JetBrains Mono',monospace; letter-spacing:.08em; }
.fyp-validator-stage { display:grid; grid-template-columns:1fr auto 160px; gap:18px; align-items:center; max-width:850px; margin:0 auto 18px; }
.fyp-journal-entry { border:1px solid var(--fyp-border); border-radius:12px; overflow:hidden; background:var(--fyp-card-solid); }
.fyp-journal-entry div { display:grid; grid-template-columns:70px 1fr auto; gap:12px; padding:13px 16px; border-bottom:1px solid var(--fyp-border); font-size:13px; }.fyp-journal-entry div:last-child{border:0}.fyp-journal-entry span{color:var(--fyp-text-dim)}
.fyp-validator-core { position:relative; width:150px; height:92px; display:flex; flex-direction:column; align-items:center; justify-content:center; border:1px solid var(--fyp-border-strong); border-radius:50%; overflow:hidden; text-align:center; }.fyp-validator-core small{color:var(--fyp-text-dim)}
.fyp-validator-scan { position:absolute; left:10%; right:10%; height:1px; background:var(--fyp-cyan); box-shadow:0 0 10px var(--fyp-cyan); animation:fypScan 2.4s var(--motion-route) infinite; }
@keyframes fypScan{0%,100%{top:24%;opacity:0}15%,85%{opacity:1}50%{top:76%}}
.fyp-validator-result { min-height:80px; display:flex; flex-direction:column; align-items:center; justify-content:center; border:1px solid rgba(34,197,94,.38); border-radius:12px; color:#4ade80; background:rgba(34,197,94,.06); transition:all var(--motion-standard); }.fyp-validator-result span{font-size:26px}.fyp-validator.is-invalid .fyp-validator-result{color:#fb7185;border-color:rgba(244,63,94,.4);background:rgba(244,63,94,.06)}
.fyp-sim-toggle { display:block; margin:0 auto; padding:8px 14px; border:1px solid var(--fyp-border-strong); border-radius:99px; background:transparent; color:var(--fyp-text-muted); cursor:pointer; transition:all var(--motion-fast); }.fyp-sim-toggle:hover{color:var(--fyp-text);border-color:var(--fyp-cyan);transform:translateY(-1px)}.fyp-sim-toggle:active{transform:scale(.97)}

/* Gap funnel narrows only as the story activates */
.fyp-gap-flow:not(.is-story-active) .fyp-gap-step,.fyp-gap-flow:not(.is-story-active) .fyp-gap-arrow { opacity:0; transform:translateY(18px); }
.fyp-gap-flow.is-story-active .fyp-gap-step:nth-child(3){transition-delay:160ms}.fyp-gap-flow.is-story-active .fyp-gap-step:nth-child(5){transition-delay:320ms}
.fyp-funnel:not(.is-story-active) .fyp-funnel-stage { opacity:0; transform:scaleX(1.18) translateY(-8px); }
.fyp-funnel.is-story-active .fyp-funnel-stage { opacity:1; transform:none; }
.fyp-funnel.is-story-active .fyp-funnel-stage:nth-child(3){transition-delay:120ms}.fyp-funnel.is-story-active .fyp-funnel-stage:nth-child(4){transition-delay:240ms}.fyp-funnel.is-story-active .fyp-funnel-stage:nth-child(5){transition-delay:360ms}.fyp-funnel.is-story-active .fyp-funnel-stage:nth-child(6){transition-delay:480ms}.fyp-funnel.is-story-active .fyp-funnel-stage:nth-child(7){transition-delay:600ms}
.fyp-funnel-stage:nth-child(5){max-width:190px}.fyp-funnel-stage--focus{max-width:260px!important;font-size:12px;letter-spacing:.04em}

/* Citation constellation */
.fyp-citation-map { max-width:900px; margin:0 auto 36px; padding:20px; border:1px solid var(--fyp-border); border-radius:var(--fyp-radius); background:radial-gradient(circle at 50% 50%,rgba(34,211,238,.08),transparent 52%),var(--fyp-card); }
.fyp-citation-map svg{display:block;width:100%;height:auto;overflow:visible}.fyp-citation-map>p{text-align:center;color:var(--fyp-text-dim);font-size:12px;margin:5px 0 0}
.fyp-citation-links path{fill:none;stroke:var(--fyp-border-strong);stroke-width:1.4;stroke-dasharray:400;stroke-dashoffset:400;transition:stroke-dashoffset 1.2s var(--motion-route),opacity var(--motion-standard)}
.fyp-citation-map.is-story-active .fyp-citation-links path{stroke-dashoffset:0}.fyp-citation-nodes g{cursor:pointer;opacity:.65;transition:opacity var(--motion-standard),filter var(--motion-standard),transform var(--motion-standard)}.fyp-citation-nodes circle{fill:var(--fyp-card-solid);stroke:var(--fyp-border-strong);stroke-width:1.5}.fyp-citation-nodes text{fill:var(--fyp-text-muted);font:600 11px Inter,sans-serif;text-anchor:middle;pointer-events:none}.fyp-citation-core circle{stroke:var(--fyp-cyan);fill:rgba(34,211,238,.08)}.fyp-citation-core text{fill:var(--fyp-cyan)}
.fyp-citation-map.has-focus .fyp-citation-nodes g:not(.is-focus):not(.fyp-citation-core){opacity:.2}.fyp-citation-nodes g.is-focus{opacity:1;filter:drop-shadow(0 0 10px rgba(34,211,238,.5))}.fyp-cluster.is-dimmed{opacity:.3;filter:saturate(.45)}.fyp-cluster.is-highlighted{border-color:var(--fyp-cyan);box-shadow:0 0 30px rgba(34,211,238,.12)}.fyp-cluster{transition:opacity var(--motion-standard),filter var(--motion-standard),border-color var(--motion-standard),box-shadow var(--motion-standard)}

/* Framework connects dimensions → IV → DV → indicators */
.fyp-framework-canvas::before,.fyp-framework-canvas::after{content:"";width:2px;height:25px;background:linear-gradient(var(--fyp-blue),var(--fyp-cyan));transform:scaleY(0);transform-origin:top;transition:transform var(--motion-story) var(--motion-route)}
.fyp-framework.is-story-active .fyp-framework-canvas::before,.fyp-framework.is-story-active .fyp-framework-canvas::after{transform:scaleY(1)}
.fyp-framework:not(.is-story-active) .fyp-fw-dim,.fyp-framework:not(.is-story-active) .fyp-fw-ind,.fyp-framework:not(.is-story-active) .fyp-fw-node{opacity:0;transform:scale(.86)}
.fyp-framework.is-story-active .fyp-fw-dim,.fyp-framework.is-story-active .fyp-fw-ind,.fyp-framework.is-story-active .fyp-fw-node{animation:fypNodeSettle 700ms var(--motion-ease) both}.fyp-framework.is-story-active .fyp-fw-dim:nth-child(2),.fyp-framework.is-story-active .fyp-fw-ind:nth-child(2){animation-delay:100ms}.fyp-framework.is-story-active .fyp-fw-dim:nth-child(3),.fyp-framework.is-story-active .fyp-fw-ind:nth-child(3){animation-delay:200ms}.fyp-framework.is-story-active .fyp-fw-dim:nth-child(4),.fyp-framework.is-story-active .fyp-fw-ind:nth-child(4){animation-delay:300ms}.fyp-framework.is-story-active .fyp-fw-ind:nth-child(5){animation-delay:400ms}
.fyp-fw-arrow span::before{content:"↓"}.fyp-fw-arrow span{animation:none}

/* NeuralOps detached-agent routing */
.fyp-system-lab{margin-top:44px}.fyp-system-disclaimer{text-align:center;max-width:820px;margin:0 auto 20px}.fyp-system-disclaimer p{color:var(--fyp-text-muted);font-size:.9rem}
.fyp-routing-board{display:grid;grid-template-columns:minmax(110px,1fr) 34px minmax(110px,1fr) 34px minmax(110px,1fr) 34px minmax(175px,1.35fr) 34px minmax(120px,1fr) 34px minmax(125px,1fr);align-items:center;gap:4px}
.fyp-route-node,.fyp-agent{position:relative;padding:16px 12px;border:1px solid var(--fyp-border);border-radius:12px;background:var(--fyp-card-solid);text-align:center;opacity:.42;transition:all var(--motion-standard)}.fyp-route-node small,.fyp-agent small{display:block;color:var(--fyp-text-dim);font:600 9px/1.4 'JetBrains Mono',monospace;letter-spacing:.08em}.fyp-route-node strong,.fyp-agent span{font-size:12px}.fyp-route-node i,.fyp-agent i{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--fyp-text-dim);right:8px;top:8px}.fyp-route-node.is-active,.fyp-agent.is-active{opacity:1;border-color:var(--fyp-cyan);box-shadow:0 0 24px rgba(34,211,238,.13)}.fyp-route-node.is-active i,.fyp-agent.is-active i{background:#4ade80;box-shadow:0 0 8px #4ade80}.fyp-route-node--router.is-active{border-color:var(--fyp-gold)}
.fyp-agent-stack{display:grid;gap:8px}.fyp-agent{display:flex;align-items:center;justify-content:space-between;text-align:left;padding:11px 12px}.fyp-agent i{position:static;flex:0 0 auto;margin-right:7px}.fyp-agent span{flex:1}.fyp-agent.is-selected{opacity:.7}.fyp-agent:not(.is-selected){filter:saturate(.3)}
.fyp-route-link{height:2px;background:var(--fyp-border);position:relative;overflow:visible}.fyp-route-link b{position:absolute;width:7px;height:7px;top:50%;left:0;transform:translateY(-50%);border-radius:50%;background:var(--fyp-cyan);box-shadow:0 0 10px var(--fyp-cyan);opacity:0}.fyp-neuralops.is-routing .fyp-route-link b{animation:fypPacket 1s var(--motion-route) both}.fyp-neuralops.is-routing .fyp-route-link:nth-of-type(2) b{animation-delay:.5s}.fyp-neuralops.is-routing .fyp-route-link:nth-of-type(3) b{animation-delay:1s}.fyp-neuralops.is-routing .fyp-route-link:nth-of-type(4) b{animation-delay:1.5s}.fyp-neuralops.is-routing .fyp-route-link:nth-of-type(5) b{animation-delay:2s}@keyframes fypPacket{0%{opacity:0;left:0}20%{opacity:1}80%{opacity:1}100%{opacity:0;left:calc(100% - 5px)}}
.fyp-route-status{text-align:center;margin-top:18px;color:var(--fyp-cyan);font:500 11px/1.4 'JetBrains Mono',monospace;min-height:16px}

/* Distillation and escalation */
.fyp-distill-flow{display:grid;grid-template-columns:1.2fr 1.4fr 1fr 1fr .7fr 1.15fr;gap:12px;align-items:center}.fyp-teachers{display:grid;gap:8px}.fyp-teachers>span{text-align:center;color:var(--fyp-gold)}.fyp-teacher-node,.fyp-distill-gate,.fyp-tutor-model{padding:14px;border:1px solid var(--fyp-border);border-radius:12px;background:var(--fyp-card-solid);text-align:center}.fyp-teacher-node small,.fyp-tutor-model small{display:block;color:var(--fyp-text-dim);font:600 9px/1.4 'JetBrains Mono',monospace}.fyp-teacher-node strong,.fyp-tutor-model strong{font-size:12px}.fyp-knowledge-stream{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.fyp-knowledge-stream span{padding:5px 8px;border:1px solid var(--fyp-border);border-radius:99px;color:var(--fyp-text-muted);font-size:10px;opacity:.25}.fyp-distillation.is-story-active .fyp-knowledge-stream span{animation:fypKnowledge 2.8s var(--motion-route) infinite}.fyp-distillation.is-story-active .fyp-knowledge-stream span:nth-child(2){animation-delay:.2s}.fyp-distillation.is-story-active .fyp-knowledge-stream span:nth-child(3){animation-delay:.4s}.fyp-distillation.is-story-active .fyp-knowledge-stream span:nth-child(4){animation-delay:.6s}.fyp-distillation.is-story-active .fyp-knowledge-stream span:nth-child(5){animation-delay:.8s}.fyp-distillation.is-story-active .fyp-knowledge-stream span:nth-child(6){animation-delay:1s}@keyframes fypKnowledge{0%,100%{opacity:.25;transform:translateX(-6px)}45%,65%{opacity:1;transform:none;border-color:var(--fyp-cyan)}}
.fyp-distill-gate{font-size:10px;color:var(--fyp-cyan)}.fyp-rejected{display:block;color:#fb7185;margin-top:8px;opacity:0}.fyp-distillation.is-story-active .fyp-rejected{animation:fypReject 3s 1.2s infinite}@keyframes fypReject{0%,40%,100%{opacity:0;transform:translateY(0)}55%{opacity:1}75%{opacity:0;transform:translateY(12px)}}.fyp-compress{display:flex;align-items:center;justify-content:center;gap:5px}.fyp-compress span{width:8px;height:26px;border-radius:4px;background:var(--fyp-cyan);opacity:.25}.fyp-compress b{font-size:9px;color:var(--fyp-gold)}.fyp-tutor-model{border-color:var(--fyp-cyan);box-shadow:0 0 30px rgba(34,211,238,.12)}.fyp-tutor-model span{display:block;color:var(--fyp-text-dim);font-size:9px;margin-top:5px}
.fyp-escalation-flow{display:grid;grid-template-columns:1fr auto 1.4fr .8fr 1.6fr;gap:14px;align-items:center}.fyp-escalate-node,.fyp-confidence,.fyp-escalate-route{padding:14px;border:1px solid var(--fyp-border);border-radius:12px;background:var(--fyp-card-solid);text-align:center}.fyp-escalate-node small,.fyp-confidence small{display:block;color:var(--fyp-text-dim);font:600 9px/1.4 'JetBrains Mono',monospace}.fyp-escalate-arrow{color:var(--fyp-cyan)}.fyp-confidence strong{display:block;color:#4ade80}.fyp-confidence span{font:700 20px/1.2 'JetBrains Mono',monospace}.fyp-confidence.is-low strong,.fyp-confidence.is-low span{color:var(--fyp-gold)}.fyp-escalate-routes{display:grid;gap:8px}.fyp-escalate-route{opacity:.25;transition:all var(--motion-standard)}.fyp-escalate-route span{display:block;font-size:10px;color:var(--fyp-text-dim)}.fyp-escalate-route b{font-size:11px}.fyp-escalate-route.is-active{opacity:1;border-color:var(--fyp-cyan);transform:translateX(4px)}

/* Methodology single progress path */
.fyp-pipeline{position:relative;padding-top:20px}.fyp-pipeline-track{position:absolute;left:4%;right:4%;top:0;height:2px;background:var(--fyp-border)}.fyp-pipeline-track span{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--fyp-blue),var(--fyp-cyan),var(--fyp-gold));transition:width 2.2s var(--motion-route)}.fyp-pipeline.is-story-active .fyp-pipeline-track span{width:100%}.fyp-pipeline:not(.is-story-active) .fyp-pipe-stage,.fyp-pipeline:not(.is-story-active) .fyp-pipe-connector{opacity:.2;transform:scale(.92)}.fyp-pipeline.is-story-active .fyp-pipe-stage{animation:fypMethodStage 500ms var(--motion-ease) both}.fyp-pipeline.is-story-active .fyp-pipe-stage:nth-child(4){animation-delay:180ms}.fyp-pipeline.is-story-active .fyp-pipe-stage:nth-child(6){animation-delay:360ms}.fyp-pipeline.is-story-active .fyp-pipe-stage:nth-child(8){animation-delay:540ms}.fyp-pipeline.is-story-active .fyp-pipe-stage:nth-child(10){animation-delay:720ms}.fyp-pipeline.is-story-active .fyp-pipe-stage:nth-child(12){animation-delay:900ms}.fyp-pipeline.is-story-active .fyp-pipe-stage:nth-child(14){animation-delay:1080ms}.fyp-pipeline.is-story-active .fyp-pipe-stage:nth-child(16){animation-delay:1260ms}@keyframes fypMethodStage{from{opacity:.25;transform:scale(.92)}to{opacity:1;transform:none;border-color:var(--fyp-cyan)}}

/* Empty-state charts animate structure, never fabricated values */
.fyp-kpi-grid:not(.is-story-active) .fyp-kpi,.fyp-chart-grid:not(.is-story-active) .fyp-chart-card{opacity:0;transform:translateY(20px) scale(.98)}.fyp-kpi-grid.is-story-active .fyp-kpi:nth-child(2),.fyp-chart-grid.is-story-active .fyp-chart-card:nth-child(2){transition-delay:100ms}.fyp-kpi-grid.is-story-active .fyp-kpi:nth-child(3),.fyp-chart-grid.is-story-active .fyp-chart-card:nth-child(3){transition-delay:200ms}.fyp-kpi-grid.is-story-active .fyp-kpi:nth-child(4),.fyp-chart-grid.is-story-active .fyp-chart-card:nth-child(4){transition-delay:300ms}
.fyp-chart-placeholder{position:relative;overflow:hidden;align-items:flex-end;gap:10px;padding:28px 24px}.fyp-chart-placeholder>span{position:absolute;inset:auto 0 10px;text-align:center;z-index:2}.fyp-chart-placeholder i{display:block;background:rgba(34,211,238,.18);border:1px solid rgba(34,211,238,.3);transform-origin:bottom;transform:scaleY(0);transition:transform var(--motion-story) var(--motion-ease)}.fyp-chart-grid.is-story-active .fyp-chart-placeholder i{transform:scaleY(1)}.fyp-chart-placeholder--bars i{width:12%;height:35%}.fyp-chart-placeholder--bars i:nth-child(2){height:60%;transition-delay:100ms}.fyp-chart-placeholder--bars i:nth-child(3){height:78%;transition-delay:200ms}.fyp-chart-placeholder--bars i:nth-child(4){height:48%;transition-delay:300ms}.fyp-chart-placeholder--likert i{height:18px;width:14%;transform:scaleX(0);transform-origin:left}.fyp-chart-grid.is-story-active .fyp-chart-placeholder--likert i{transform:scaleX(1)}.fyp-chart-placeholder--matrix{display:grid;grid-template-columns:repeat(3,28px);align-content:center;justify-content:center}.fyp-chart-placeholder--matrix i{width:28px;height:28px;transform:scale(0);transform-origin:center}.fyp-chart-grid.is-story-active .fyp-chart-placeholder--matrix i{transform:scale(1)}.fyp-chart-placeholder--matrix i:nth-child(odd){background:rgba(212,175,55,.14);border-color:rgba(212,175,55,.28)}.fyp-chart-placeholder--scatter{align-items:center;justify-content:center}.fyp-chart-placeholder--scatter i{position:absolute;width:8px;height:8px;border-radius:50%;transform:scale(0)}.fyp-chart-grid.is-story-active .fyp-chart-placeholder--scatter i{transform:scale(1)}.fyp-chart-placeholder--scatter i:nth-child(1){left:25%;top:65%}.fyp-chart-placeholder--scatter i:nth-child(2){left:40%;top:55%}.fyp-chart-placeholder--scatter i:nth-child(3){left:55%;top:43%}.fyp-chart-placeholder--scatter i:nth-child(4){left:68%;top:35%}.fyp-chart-placeholder--scatter i:nth-child(5){left:78%;top:25%}

/* Final convergence */
.fyp-convergence{min-height:340px;position:relative;display:grid;place-items:center;background:radial-gradient(circle,rgba(34,211,238,.1),transparent 48%),var(--fyp-card)}.fyp-convergence-streams{position:absolute;inset:0}.fyp-convergence-streams span{position:absolute;padding:6px 10px;border:1px solid var(--fyp-border);border-radius:99px;color:var(--fyp-text-dim);font:600 10px/1 'JetBrains Mono',monospace;opacity:.25;transition:all 1.1s var(--motion-route)}.fyp-convergence-streams [data-stream="research"]{left:8%;top:14%}.fyp-convergence-streams [data-stream="education"]{right:8%;top:15%}.fyp-convergence-streams [data-stream="neuralops"]{left:7%;top:48%}.fyp-convergence-streams [data-stream="distillation"]{right:6%;top:48%}.fyp-convergence-streams [data-stream="accounting"]{left:50%;bottom:8%;transform:translateX(-50%)}.fyp-convergence.is-story-active .fyp-convergence-streams span{left:50%;right:auto;top:50%;bottom:auto;transform:translate(-50%,-50%) scale(.65);opacity:0}.fyp-convergence-core{position:relative;z-index:2;text-align:center;opacity:0;transform:scale(.88);transition:all 1s 650ms var(--motion-ease)}.fyp-convergence.is-story-active .fyp-convergence-core{opacity:1;transform:none}.fyp-convergence-core small{display:block;color:var(--fyp-cyan);font:600 10px/1.4 'JetBrains Mono',monospace;letter-spacing:.1em;margin-bottom:12px}.fyp-convergence-core strong{font-size:clamp(1.3rem,3vw,2.25rem);line-height:1.25}

/* Scroll velocity is intentionally subtle and applied to decorative layers only */
.fyp-hero-glow{transform:translate3d(0,var(--scroll-drift,0),0);transition:transform 160ms linear;will-change:transform}.fyp-hero-grid,.fyp-hero-scene{will-change:transform}

@media (max-width:1000px){.fyp-routing-board{display:flex;flex-direction:column;gap:8px}.fyp-route-link{width:2px;height:24px}.fyp-route-link b{left:50%;top:0;transform:translateX(-50%)}.fyp-neuralops.is-routing .fyp-route-link b{animation:fypPacketMobile .8s var(--motion-route) both}.fyp-agent-stack{width:100%}.fyp-distill-flow{grid-template-columns:1fr 1fr 1fr}.fyp-distill-gate,.fyp-compress,.fyp-tutor-model{min-height:70px;display:flex;flex-direction:column;justify-content:center}.fyp-escalation-flow{grid-template-columns:1fr auto 1fr}.fyp-confidence,.fyp-escalate-routes{grid-column:auto/span 1}@keyframes fypPacketMobile{from{opacity:0;top:0}30%{opacity:1}to{opacity:0;top:calc(100% - 5px)}}}
@media (max-width:720px){html{scroll-behavior:auto}.fyp-hero{min-height:780px;padding-top:52px}.fyp-hero-scene{opacity:.45}.fyp-ai-core{left:22%;top:22%;width:74px;height:74px}.fyp-learning-core{left:77%;top:22%;width:130px;min-height:58px}.fyp-ai-core span{font-size:22px}.fyp-learning-core span{font-size:11px}.fyp-hero.is-stage-3 .fyp-ai-core,.fyp-hero.is-stage-4 .fyp-ai-core,.fyp-hero.is-ready .fyp-ai-core{transform:translate(-50%,-50%)}.fyp-validator,.fyp-neuralops,.fyp-distillation,.fyp-escalation,.fyp-convergence{padding:20px 14px}.fyp-validator-stage{grid-template-columns:1fr}.fyp-validator-core{margin:auto}.fyp-agent:not(.is-selected){display:none}.fyp-distill-flow,.fyp-escalation-flow{grid-template-columns:1fr}.fyp-escalate-arrow{transform:rotate(90deg);text-align:center}.fyp-convergence{min-height:300px}.fyp-convergence-streams span{font-size:8px}.fyp-citation-map{padding:8px}.fyp-citation-nodes text{font-size:9px}.fyp-pipeline-track{display:none}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}.fyp-hero-copy,.fyp-ledger-point,.fyp-ai-core,.fyp-learning-core,[data-story] *{animation:none!important;transition:none!important}.fyp-hero-copy,.fyp-ledger-point,.fyp-transform-col,.fyp-transform-divider,.fyp-gap-step,.fyp-gap-arrow,.fyp-funnel-stage,.fyp-fw-dim,.fyp-fw-ind,.fyp-fw-node,.fyp-pipe-stage,.fyp-pipe-connector,.fyp-kpi,.fyp-chart-card,.fyp-convergence-core{opacity:1!important;transform:none!important;filter:none!important}.fyp-ai-core,.fyp-learning-core{opacity:1!important;transform:translate(-50%,-50%)!important;filter:none!important}.fyp-hero-packet,.fyp-route-link b,.fyp-validator-scan{display:none!important}.fyp-network-lines path,.fyp-citation-links path{stroke-dashoffset:0!important}.fyp-chart-placeholder i{transform:none!important}.fyp-convergence-streams{display:none}.fyp-hero-grid,.fyp-hero-scene,.fyp-hero-glow{transform:none!important}}

/* ── Hero fit refinement: complete first section within one viewport ── */
.fyp-hero {
  box-sizing: border-box;
  min-height: calc(100svh - 60px);
  min-height: calc(100dvh - 60px);
  padding: clamp(24px, 4vh, 42px) 20px clamp(22px, 3vh, 34px);
}
.fyp-hero-inner { max-width: 960px; }
.fyp-hero-title {
  max-width: 900px;
  margin: 0 auto 14px;
  font-size: clamp(1.7rem, 3.45vw, 2.55rem);
  line-height: 1.14;
}
.fyp-hero-sub { max-width: 680px; margin-bottom: 18px; font-size: clamp(.94rem, 1.5vw, 1.08rem); }
.fyp-hero .fyp-eyebrow { margin-bottom: 14px; }
.fyp-hero-scene { opacity: .18; }
.fyp-ledger-point,.fyp-ai-core,.fyp-learning-core,.fyp-hero-packet { display: none; }
.fyp-network-lines path { stroke: rgba(34,211,238,.16); stroke-width: 1; }
.fyp-network-dots circle { opacity: .32!important; }
.fyp-scroll-indicator { display: none; }
.fyp-meta-disclosure {
  max-width: 760px;
  margin: 0 auto 18px;
  border: 1px solid var(--fyp-border);
  border-radius: 12px;
  background: rgba(15,23,42,.42);
  backdrop-filter: blur(8px);
}
html[data-theme="light"] .fyp-meta-disclosure { background: rgba(255,255,255,.72); }
.fyp-meta-disclosure summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: 42px;
  padding: 8px 16px;
  color: var(--fyp-text);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  list-style: none;
}
.fyp-meta-disclosure summary::-webkit-details-marker { display: none; }
.fyp-meta-disclosure summary::after { content: "+"; color: var(--fyp-cyan); font: 600 16px/1 'JetBrains Mono',monospace; }
.fyp-meta-disclosure[open] summary::after { content: "−"; }
.fyp-meta-disclosure summary span { color: var(--fyp-text-dim); font-weight: 500; }
.fyp-meta-disclosure .fyp-meta-grid {
  grid-template-columns: repeat(4,minmax(0,1fr));
  gap: 6px;
  margin: 0;
  padding: 0 10px 10px;
}
.fyp-meta-disclosure .fyp-meta-card { padding: 7px 9px; box-shadow: none; }
.fyp-meta-disclosure .fyp-meta-label { font-size: 9px; }
.fyp-meta-disclosure .fyp-meta-value { font-size: 11px; }
.fyp-hero-cta { gap: 9px; }
.fyp-hero .fyp-btn { padding: 10px 18px; font-size: 12px; }

@media (max-width:720px) {
  .fyp-hero {
    min-height: calc(100svh - 60px);
    min-height: calc(100dvh - 60px);
    justify-content: flex-start;
    padding: clamp(54px,10vh,72px) 16px 18px;
  }
  .fyp-hero-scene { display: none; }
  .fyp-hero-glow { opacity: .22; filter: blur(60px); }
  .fyp-hero-title { font-size: clamp(1.45rem,7vw,1.85rem); line-height: 1.12; margin-bottom: 12px; }
  .fyp-hero-sub { margin-bottom: 13px; font-size: .92rem; line-height: 1.55; }
  .fyp-hero .fyp-eyebrow { margin-bottom: 11px; padding: 5px 11px; font-size: 10px; }
  .fyp-meta-disclosure { margin-bottom: 13px; }
  .fyp-meta-disclosure summary { min-height: 38px; padding: 6px 11px; }
  .fyp-meta-disclosure summary span { display: none; }
  .fyp-meta-disclosure .fyp-meta-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .fyp-hero-cta { display: grid; grid-template-columns: 1fr 1fr; width: 100%; max-width: 360px; margin: 0 auto; }
  .fyp-hero-cta .fyp-btn--primary { grid-column: 1 / -1; }
  .fyp-hero .fyp-btn { min-height: 38px; padding: 8px 10px; font-size: 11px; }
}
@media (max-width:390px) and (max-height:700px) {
  .fyp-hero { padding-top: clamp(28px,7vh,40px); padding-bottom: 12px; }
  .fyp-hero-title { font-size: 1.35rem; line-height: 1.08; margin-bottom: 9px; }
  .fyp-hero-sub { font-size: .81rem; line-height: 1.42; margin-bottom: 9px; }
  .fyp-hero .fyp-eyebrow { margin-bottom: 8px; }
  .fyp-meta-disclosure { margin-bottom: 9px; }
  .fyp-meta-disclosure summary { min-height: 34px; }
  .fyp-hero .fyp-btn { min-height: 34px; padding: 6px 8px; font-size: 10px; }
}

/* One-time hero focus animation: a routed research signal beneath the title. */
.fyp-hero-signal {
  position: relative;
  display: block;
  width: min(430px, 58vw);
  height: 12px;
  margin: -3px auto 7px;
}
.fyp-hero-signal::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 5px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--fyp-blue) 18%, var(--fyp-cyan) 50%, var(--fyp-gold) 82%, transparent);
  transform: scaleX(0);
  transform-origin: left;
  animation: fypHeroSignalDraw 1.45s var(--motion-route) 380ms forwards;
}
.fyp-hero-signal::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 2px;
  width: 7px;
  height: 7px;
  border: 1px solid var(--fyp-cyan);
  border-radius: 50%;
  background: var(--fyp-bg);
  opacity: 0;
  transform: translateX(-50%) scale(.4);
  animation: fypHeroSignalCore .5s var(--motion-ease) 1.2s forwards;
}
.fyp-hero-signal i {
  position: absolute;
  left: 0;
  top: 3px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 8px var(--fyp-cyan), 0 0 18px var(--fyp-cyan);
  opacity: 0;
  animation: fypHeroSignalPacket 1.45s var(--motion-route) 380ms forwards;
}
@keyframes fypHeroSignalDraw {
  from { transform: scaleX(0); opacity: 0; }
  15% { opacity: 1; }
  to { transform: scaleX(1); opacity: .72; }
}
@keyframes fypHeroSignalPacket {
  0% { left: 0; opacity: 0; }
  14%, 82% { opacity: 1; }
  100% { left: calc(100% - 5px); opacity: 0; }
}
@keyframes fypHeroSignalCore {
  to { opacity: 1; transform: translateX(-50%) scale(1); box-shadow: 0 0 14px rgba(34,211,238,.55); }
}
@media (max-width:720px) {
  .fyp-hero-signal { width: min(240px,68vw); margin-top: -5px; margin-bottom: 5px; }
}
@media (prefers-reduced-motion:reduce) {
  .fyp-hero-signal::before { animation: none!important; transform: scaleX(1); opacity: .72; }
  .fyp-hero-signal::after { animation: none!important; opacity: 1; transform: translateX(-50%) scale(1); }
  .fyp-hero-signal i { display: none; animation: none!important; }
}

/* ── Study-at-a-glance + academic support blocks ── */
.fyp-glance {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 8px;
  max-width: 900px;
  margin: 22px auto 0;
  text-align: left;
}
.fyp-glance div {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--fyp-border);
  border-radius: 12px;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(8px);
}
html[data-theme="light"] .fyp-glance div { background: rgba(255, 255, 255, 0.72); }
.fyp-glance dt {
  display: block;
  margin: 0 0 4px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fyp-text-dim);
}
.fyp-glance dd {
  margin: 0;
  font-size: 12px;
  font-weight: 700;
  color: var(--fyp-text);
  line-height: 1.35;
}
.fyp-card-copy {
  margin: 0;
  color: var(--fyp-text-muted);
  font-size: 0.95rem;
}
.fyp-scope-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin: 8px 0 28px;
}
.fyp-hypo-wrap { margin-top: 24px; }
.fyp-def-list { display: grid; gap: 14px; margin: 0; }
.fyp-def-list div { margin: 0; }
.fyp-def-list dt {
  font-size: 13px;
  font-weight: 700;
  color: var(--fyp-text);
  margin: 0 0 4px;
}
.fyp-def-list dd {
  margin: 0;
  color: var(--fyp-text-muted);
  font-size: 0.9rem;
}
@media (max-width: 900px) {
  .fyp-glance { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .fyp-scope-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .fyp-glance { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 16px; }
  .fyp-hero { min-height: auto; }
}

/* ── Live thesis presentation ── */
.fyp-hero-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(8,17,29,.45) 0%, rgba(4,7,18,.88) 78%);
  z-index: 1;
}
.fyp-hero-grid, .fyp-hero-glow { z-index: 2; }
.fyp-hero-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 40%;
  opacity: .55;
  filter: saturate(.85) contrast(1.05);
}
html[data-theme="light"] .fyp-hero-photo { opacity: .22; }
.fyp-hero-inner { z-index: 3; }
.fyp-hero-people {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  max-width: 760px;
  margin: 0 auto 18px;
  text-align: left;
}
.fyp-hero-people div {
  padding: 12px 14px;
  border: 1px solid var(--fyp-border);
  border-radius: 14px;
  background: rgba(8,17,29,.55);
  backdrop-filter: blur(10px);
}
html[data-theme="light"] .fyp-hero-people div { background: rgba(255,255,255,.78); }
.fyp-hero-people span {
  display: block;
  font: 600 10px/1.3 'JetBrains Mono', monospace;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--fyp-cyan);
  margin-bottom: 4px;
}
.fyp-hero-people strong { display: block; font-size: 14px; }
.fyp-hero-people small { color: var(--fyp-text-dim); font-size: 12px; }
.fyp-present-btn {
  border: 1px solid var(--fyp-gold);
  background: rgba(212,175,55,.12);
  color: var(--fyp-gold);
  border-radius: 999px;
  padding: 6px 12px;
  font: 700 11px/1 'JetBrains Mono', monospace;
  letter-spacing: .08em;
  text-transform: uppercase;
  cursor: pointer;
}
.fyp-photo-band {
  margin: 0 0 36px;
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid var(--fyp-border);
  box-shadow: var(--fyp-shadow);
}
.fyp-photo-band img { display: block; width: 100%; height: min(360px, 42vw); object-fit: cover; }
.fyp-photo-band figcaption {
  padding: 10px 16px;
  font-size: 12px;
  color: var(--fyp-text-dim);
  background: rgba(8,17,29,.55);
}
.fyp-block-title { font-size: 1.15rem; margin: 36px 0 16px; letter-spacing: -.01em; }
.fyp-hypo-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; margin: 28px 0; }
.fyp-hypo-card {
  position: relative;
  padding: 22px 20px 18px;
  border: 1px solid var(--fyp-border);
  border-radius: 16px;
  background: var(--fyp-card);
  overflow: hidden;
  opacity: 0;
  transform: translateY(18px);
}
.fyp-hypo-grid.is-story-active .fyp-hypo-card { animation: fypNodeSettle .7s var(--motion-ease) both; }
.fyp-hypo-grid.is-story-active .fyp-hypo-card:nth-child(2){animation-delay:.1s}
.fyp-hypo-grid.is-story-active .fyp-hypo-card:nth-child(3){animation-delay:.2s}
.fyp-hypo-grid.is-story-active .fyp-hypo-card:nth-child(4){animation-delay:.3s}
.fyp-hypo-id { font: 700 12px/1 'JetBrains Mono', monospace; color: var(--fyp-cyan); }
.fyp-hypo-card p { color: var(--fyp-text-muted); font-size: .95rem; margin: 10px 0 16px; }
.fyp-hypo-stamp {
  display: inline-block;
  padding: 4px 10px;
  border: 2px solid #4ade80;
  color: #4ade80;
  letter-spacing: .12em;
  font: 800 13px/1 'JetBrains Mono', monospace;
  transform: rotate(-8deg);
}
.fyp-hypo-card small { display: block; margin-top: 10px; color: var(--fyp-text-dim); font-size: 11px; }
.fyp-chart-source { margin: 10px 0 0; color: var(--fyp-text-dim); font-size: 12px; }
.fyp-svg { width: 100%; height: auto; overflow: visible; }
.fyp-svg-host { min-height: 160px; }
.fyp-donut-n { fill: var(--fyp-text); font: 800 22px Inter, sans-serif; }
.fyp-donut-l { fill: var(--fyp-text-dim); font: 600 11px Inter, sans-serif; }
.fyp-arc { stroke-dasharray: 480; stroke-dashoffset: 480; animation: fypArc 1.1s var(--motion-route) forwards; animation-delay: var(--d, 0ms); }
@keyframes fypArc { to { stroke-dashoffset: 0; } }
.fyp-bar { transform-box: fill-box; transform-origin: left center; transform: scaleX(0); animation: fypBar .8s var(--motion-ease) forwards; animation-delay: var(--d, 0ms); }
@keyframes fypBar { to { transform: scaleX(1); } }
.fyp-bar-v { transform-origin: center bottom; animation-name: fypBarV; }
@keyframes fypBarV { from { transform: scaleY(0); } to { transform: scaleY(1); } }
.fyp-bar-lab { fill: var(--fyp-text-muted); font: 600 12px Inter, sans-serif; }
.fyp-bar-val { fill: var(--fyp-text); font: 600 12px 'JetBrains Mono', monospace; }
.fyp-legend { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 6px; }
.fyp-legend li { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--fyp-text-muted); }
.fyp-legend i { width: 10px; height: 10px; border-radius: 50%; }
.fyp-legend b { margin-left: auto; color: var(--fyp-text); }
.fyp-likert { display: grid; gap: 12px; }
.fyp-likert-row { opacity: 0; transform: translateY(10px); animation: fypNodeSettle .6s var(--motion-ease) forwards; animation-delay: var(--d,0ms); }
.fyp-likert-lab { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; margin-bottom: 6px; font-size: 12px; color: var(--fyp-text-muted); }
.fyp-likert-lab b { color: var(--fyp-cyan); font-family: 'JetBrains Mono', monospace; }
.fyp-likert-lab em { margin-left: auto; color: var(--fyp-gold); font-style: normal; }
.fyp-likert-track { display: flex; height: 14px; border-radius: 99px; overflow: hidden; background: rgba(148,163,184,.12); }
.fyp-likert-track i { display: block; height: 100%; }
.fyp-likert-track .sts { background: #7f1d1d; }
.fyp-likert-track .ts { background: #b45309; }
.fyp-likert-track .as { background: #64748b; }
.fyp-likert-track .s { background: #2563eb; }
.fyp-likert-track .ss { background: #22d3ee; }
.fyp-likert-wrap { display: grid; gap: 18px; margin: 8px 0 32px; }
.fyp-chart-grid--wide { grid-template-columns: 1fr; }
.fyp-chart-card--span { grid-column: 1 / -1; }
body.fyp-present .ainna-page-footer,
body.fyp-present .ainna-cookie-consent { display: none !important; }
body.fyp-present .fyp-hero,
body.fyp-present .fyp-section { min-height: 100svh; scroll-margin-top: 54px; }
body.fyp-present .fyp-nav { background: rgba(8,17,29,.94); }
@media (max-width: 900px) {
  .fyp-hero-people, .fyp-hypo-grid { grid-template-columns: 1fr; }
  .fyp-photo-band img { height: 220px; }
}
@media (max-width: 720px) { .fyp-present-btn { font-size: 10px; padding: 6px 8px; } }
@media (prefers-reduced-motion: reduce) {
  .fyp-arc, .fyp-bar, .fyp-likert-row, .fyp-hypo-card { animation: none !important; opacity: 1 !important; transform: none !important; stroke-dashoffset: 0 !important; }
}
