/* ── reveal transitions ── */
.reveal {
  opacity: 1;
  transform: none;
  transition: opacity 520ms ease, transform 520ms ease;
}
.js-enabled .reveal {
  opacity: 0;
  transform: translateY(18px);
}
.js-enabled .reveal.is-visible,
.reveal.is-visible,
.gsap-enabled .reveal {
  opacity: 1;
  transform: translateY(0);
}
.gsap-enabled .product-mockup,
.gsap-enabled .capability-matrix article,
.gsap-enabled .tc-block,
.gsap-enabled .cta-proof-panel {
  will-change: transform, opacity;
}
/* ── background breathing ── */
body::before {
  animation: grid-breathe 8s ease-in-out infinite;
}
body::after {
  animation: scan-pulse 5s ease-in-out infinite alternate, drift 25s ease-in-out infinite alternate;
}
@keyframes grid-breathe {
  0%, 100% { opacity: 0.35; }
  50% { opacity: 1; }
}
@keyframes scan-pulse {
  0% { opacity: 0.25; }
  100% { opacity: 1; }
}
@keyframes drift {
  0% { transform: scale(1); }
  100% { transform: scale(1.02); }
}
/* ── neural network background ── */
.neural-link {
  animation: neural-pulse 6s ease-in-out infinite;
}
.neural-node {
  animation: node-breathe 4.8s ease-in-out infinite;
}
@keyframes neural-pulse {
  0%, 100% { opacity: 0.3; filter: drop-shadow(0 0 6px rgba(6, 199, 186, 0.03)); }
  50% { opacity: 1; filter: drop-shadow(0 0 14px rgba(6, 199, 186, 0.12)); }
}
@keyframes node-breathe {
  0%, 100% { transform: scale(1); box-shadow: 0 0 0 6px rgba(6, 199, 186, 0.03), 0 0 20px rgba(6, 199, 186, 0.06); }
  50% { transform: scale(1.3); box-shadow: 0 0 0 8px rgba(6, 199, 186, 0.06), 0 0 28px rgba(6, 199, 186, 0.14); }
}
/* ── mockup scan line ── */
.mockup-scan-line {
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
  background: linear-gradient(180deg, transparent, rgba(6, 199, 186, 0.15), transparent);
  animation: mockup-scan 4.5s linear infinite;
}
@keyframes mockup-scan {
  from { transform: translateY(-100%); opacity: 0; }
  18% { opacity: 0.8; }
  to { transform: translateY(100%); opacity: 0; }
}
.product-mockup,
.value-spotlight,
.cta-proof-panel {
  --pointer-x: 50%;
  --pointer-y: 50%;
}
.product-mockup::before,
.value-spotlight::before,
.cta-proof-panel::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: radial-gradient(circle at var(--pointer-x) var(--pointer-y), rgba(6, 199, 186, 0.18), transparent 34%);
  opacity: 0;
  transition: opacity 220ms ease;
}
.product-mockup:hover::before,
.value-spotlight:hover::before,
.cta-proof-panel:hover::after {
  opacity: 1;
}
.value-spotlight {
  position: relative;
  overflow: hidden;
}
.value-spotlight > *,
.cta-proof-panel > * {
  position: relative;
  z-index: 1;
}
/* ── HUD corner brackets ── */
.product-mockup::after,
.panel-mini-ui::after,
.script-slide::after {
  content: "";
  position: absolute;
  top: 12px;
  right: 12px;
  width: 18px;
  height: 18px;
  pointer-events: none;
  border-top: 1px solid var(--theme-line);
  border-right: 1px solid var(--theme-line);
}
/* ── subtle floating motion ── */
.signal-pills span,
.mockup-flow article {
  animation: subtle-float 5.8s ease-in-out infinite;
}
.signal-pills span:nth-child(2),
.mockup-flow article:nth-child(2) {
  animation-delay: 0.45s;
}
.signal-pills span:nth-child(3),
.mockup-flow article:nth-child(3) {
  animation-delay: 0.9s;
}
@keyframes subtle-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}
@keyframes data-flow {
  from { transform: translateX(-100%); }
  to { transform: translateX(100%); }
}
/* ── card hover glow transitions ── */
.capability-matrix article {
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.capability-matrix article:hover {
  border-color: var(--theme-line) !important;
  box-shadow: var(--surface-shadow) !important;
}
.button.primary {
  position: relative;
  overflow: hidden;
  box-shadow: 6px 6px 0 rgba(6, 199, 186, 0.32);
  transition: border-color 160ms ease, background 160ms ease, color 160ms ease, transform 160ms ease, box-shadow 320ms ease;
}
.button.primary:hover {
  box-shadow: 8px 8px 0 rgba(6, 199, 186, 0.38);
}
.button.primary::after {
  content: "";
  position: absolute;
  top: 0;
  left: -100%;
  width: 50%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(6, 199, 186, 0.28), transparent);
  transform: skewX(-20deg);
  animation: btn-shine 4s infinite;
  pointer-events: none;
}
@keyframes btn-shine {
  0% { left: -100%; }
  25% { left: 200%; }
  100% { left: 200%; }
}
/* agent state badge glow */
.agent-state {
  display: inline-block;
  margin-top: 10px;
  padding: 3px 8px;
  font-size: 0.68rem;
  font-weight: 850;
  color: var(--theme);
  background: var(--theme-soft);
  border: 1px solid var(--theme-line);
  border-radius: var(--radius);
  text-transform: uppercase;
  animation: badge-pulse 2.4s ease-in-out infinite;
}
@keyframes badge-pulse {
  0%, 100% { opacity: 0.7; }
  50% { opacity: 1; box-shadow: var(--inner-shadow); }
}
/* section heading eyebrow underline effect */
.eyebrow {
  position: relative;
  display: inline-block;
  padding-bottom: 4px;
}
.eyebrow::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  background: linear-gradient(90deg, var(--theme), transparent);
  opacity: 0.4;
}
/* capability card number glow */
.capability-matrix article > span {
  text-shadow: none;
}
.capability-matrix article.is-running,
.speed-row.is-running,
.cta-proof-panel.is-running {
  border-color: var(--theme-line);
  box-shadow: var(--surface-shadow);
}
.capability-matrix article.is-running::after,
.speed-row.is-running::after,
.cta-proof-panel.is-running::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(110deg, transparent 0%, rgba(6, 199, 186, 0.16) 42%, transparent 58%);
  animation: ai-panel-sweep 1.4s ease-out both;
}
@keyframes ai-panel-sweep {
  from { transform: translateX(-120%); opacity: 0; }
  18% { opacity: 1; }
  to { transform: translateX(120%); opacity: 0; }
}
.use-flow article {
  --flow-progress: 0%;
  position: relative;
  overflow: hidden;
}
.use-flow article::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: var(--flow-progress);
  height: 2px;
  background: linear-gradient(90deg, var(--theme), rgba(6, 199, 186, 0.12));
}
.tc-block {
  position: relative;
  overflow: hidden;
}
.tc-block::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(120deg, transparent, rgba(6, 199, 186, 0.13), transparent);
  transform: translateX(-120%);
}
.tc-fast::after {
  animation: ai-panel-sweep 2.8s ease-in-out infinite;
}
/* mockup topbar running indicator */
.mockup-topbar em {
  animation: ai-blink 2s steps(1) infinite;
}
@keyframes ai-blink {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0.4; }
}
/* section divider line glow animation */
section::before {
  animation: line-glow 3s ease-in-out infinite alternate;
}
@keyframes line-glow {
  0% { opacity: 0.3; width: min(180px, 32vw); }
  100% { opacity: 0.7; width: min(260px, 48vw); }
}
/* outcome CTA section border glow */
.outcome-section {
  transition: border-color 0.4s ease, box-shadow 0.4s ease;
}
.outcome-section:hover {
  border-color: var(--surface-border);
  box-shadow: var(--surface-shadow);
}
