.topbar.armed .brand-caret { animation: none; opacity: 1; }
.topbar.detached .brand-caret { animation: none; opacity: 0 !important; }
.topbar.reattached .brand-caret { opacity: 1 !important; animation: a3-caret-impact .62s cubic-bezier(.2,.9,.2,1) both; }
@keyframes a3-caret-impact {
  0% { opacity: 0; transform: scaleY(.15); box-shadow: 0 0 0 rgba(47,206,150,0); }
  32% { opacity: 1; transform: scaleY(1.85); box-shadow: 0 0 24px rgba(47,206,150,.95); }
  58% { opacity: .15; transform: scaleY(.72); }
  100% { opacity: 1; transform: scaleY(1); box-shadow: 0 0 0 rgba(47,206,150,0); }
}

.a3-handoff {
  position: relative;
  z-index: 3;
  min-height: 74vh;
  display: grid;
  grid-template-columns: minmax(0,1fr) 300px;
  align-items: end;
  gap: 70px;
  padding: 13vh clamp(24px,5vw,78px);
  border-top: 1px solid var(--line);
  background: var(--paper);
}
.a3-handoff h2 { max-width: 1050px; font: 500 clamp(50px,7.25vw,110px)/.92 "IBM Plex Serif",serif; letter-spacing: -.055em; }
.a3-handoff h2 em { color: var(--mint-deep); font-weight: 400; }
.a3-handoff p { max-width: 300px; padding-left: 20px; border-left: 1px solid var(--mint); color: var(--muted); font: 400 10px/1.75 "IBM Plex Mono",monospace; }
.a3-handoff p b { display: block; margin-bottom: 10px; color: var(--mint-deep); font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }

.research-run { position: relative; height: 680vh; background: var(--paper); }
.ending-preview-anchor { position: absolute; top: 78%; left: 0; width: 1px; height: 1px; pointer-events: none; }
.research-sticky { position: sticky; top: 0; height: 100svh; overflow: hidden; isolation: isolate; background: var(--paper); }
.base-grid,.dark-grid,.return-grid {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-size: 42px 42px;
}
.base-grid { z-index: 0; opacity: .6; background-image: linear-gradient(rgba(20,20,20,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(20,20,20,.035) 1px,transparent 1px); mask-image: linear-gradient(90deg,transparent,#000 34%,#000); }
.dark-field { position: absolute; z-index: 1; inset: 0; clip-path: circle(0 at var(--origin-x,70%) var(--origin-y,58%)); background: radial-gradient(circle at var(--origin-x,70%) var(--origin-y,58%),rgba(47,206,150,.2),transparent 21%),radial-gradient(circle at 73% 59%,#15221d 0,#090e0b 44%,#050706 100%); will-change: clip-path; }
.dark-field::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 200px rgba(0,0,0,.7); }
.dark-grid { z-index: 2; opacity: 0; background-image: linear-gradient(rgba(223,245,236,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(223,245,236,.045) 1px,transparent 1px); mask-image: radial-gradient(circle at var(--origin-x,70%) var(--origin-y,58%),#000,transparent 70%); }
.light-return { position: absolute; z-index: 3; inset: 0; clip-path: circle(0 at var(--result-x,62%) var(--result-y,54%)); background: var(--paper); will-change: clip-path; }
.return-grid { z-index: 4; opacity: 0; background-image: linear-gradient(rgba(20,20,20,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(20,20,20,.035) 1px,transparent 1px); mask-image: radial-gradient(circle at var(--result-x,62%) var(--result-y,54%),#000,transparent 72%); }
#research-canvas { position: absolute; z-index: 7; inset: 0; width: 100%; height: 100%; }

.research-head {
  position: absolute;
  z-index: 14;
  top: 96px;
  left: clamp(24px,4.2vw,64px);
  right: clamp(24px,4.2vw,64px);
  display: grid;
  grid-template-columns: 1fr auto min(250px,27vw) 46px;
  align-items: center;
  gap: 24px;
  padding-bottom: 13px;
  border-bottom: 1px solid var(--line);
  color: var(--muted);
  font: 500 8px/1 "IBM Plex Mono",monospace;
  letter-spacing: .12em;
  text-transform: uppercase;
  transition: color .3s,border-color .3s;
}
.research-head h2 { margin: 0; font: inherit; }
.research-head b { color: var(--mint-deep); text-align: right; }
.research-progress { height: 2px; background: rgba(20,20,20,.1); }
.research-progress i { display: block; width: 0; height: 100%; background: var(--mint); }

.research-story { position: absolute; z-index: 13; left: clamp(24px,4.2vw,64px); top: 150px; bottom: 74px; width: min(365px,29vw); pointer-events: none; }
.research-step { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; opacity: 0; transform: translateY(28px) rotate(-.5deg); transition: opacity .3s,transform .55s cubic-bezier(.16,.85,.16,1),color .3s; }
.research-step.active { opacity: 1; transform: none; }
.research-step .step { margin-bottom: 17px; color: var(--mint-deep); font: 500 9px/1 "IBM Plex Mono",monospace; letter-spacing: .16em; text-transform: uppercase; }
.research-step h3 { max-width: 420px; font: 500 clamp(40px,4.4vw,70px)/.93 "IBM Plex Serif",serif; letter-spacing: -.048em; }
.research-step h3 em { color: var(--mint-deep); font-weight: 400; }
.research-step p { max-width: 330px; margin-top: 19px; color: var(--muted); font: 400 13px/1.58 "IBM Plex Sans",sans-serif; }
.research-key { width: max-content; margin-top: 20px; padding: 9px 11px; border: 1px solid rgba(12,138,95,.3); background: rgba(223,245,236,.62); color: var(--mint-deep); font: 500 8px/1 "IBM Plex Mono",monospace; letter-spacing: .08em; }
.variant-copy { display: none; }
body[data-ending="slingshot"] .variant-copy[data-for="slingshot"],body[data-ending="rebirth"] .variant-copy[data-for="rebirth"],body[data-ending="loop"] .variant-copy[data-for="loop"] { display: block; }

.flight-object { position: fixed; z-index: 102; left: 0; top: 0; width: 11px; height: 22px; opacity: 0; transform: translate(-50%,-50%); transform-origin: center; pointer-events: none; will-change: left,top,width,height,transform; }
.flight-core { position: absolute; inset: 0; border-radius: 1px; background: var(--mint); box-shadow: 0 0 0 8px rgba(47,206,150,.12),0 0 30px rgba(47,206,150,.5); }
.flight-head { position: absolute; right: -10px; top: 50%; width: 14px; height: 18px; opacity: 0; background: var(--mint); clip-path: polygon(0 0,100% 50%,0 100%,28% 50%); transform: translateY(-50%); }
.flight-label { position: fixed; z-index: 102; opacity: 0; color: var(--mint-deep); font: 500 8px/1 "IBM Plex Mono",monospace; letter-spacing: .12em; text-transform: uppercase; pointer-events: none; white-space: nowrap; }

.event-horizon { position: absolute; z-index: 8; left: 0; top: 0; width: 150px; height: 150px; opacity: 0; transform: translate(-50%,-50%) scale(.08); pointer-events: none; will-change: left,top,opacity,transform; }
.horizon-disc { position: absolute; inset: 29%; border-radius: 50%; background: #030504; box-shadow: 0 0 0 1px rgba(47,206,150,.95),0 0 18px rgba(47,206,150,.86),0 0 55px rgba(47,206,150,.38); }
.horizon-disc::after { content: ""; position: absolute; inset: -12px; border: 1px solid rgba(47,206,150,.48); border-radius: 50%; }
.accretion-ring { position: absolute; inset: 12%; border: 1px solid rgba(47,206,150,.55); border-radius: 50%; transform: rotate(var(--ring-rotate,0deg)) scaleY(var(--ring-y,.42)); box-shadow: 0 0 17px rgba(47,206,150,.18); }
.accretion-ring.r2 { inset: 2%; --ring-rotate:-19deg; --ring-y:.31; border-color: rgba(247,245,240,.25); }
.accretion-ring.r3 { inset: -12%; --ring-rotate:23deg; --ring-y:.24; border-style: dashed; opacity: .5; }
.impact-label { position: absolute; z-index: 10; opacity: 0; color: var(--mint); font: 500 8px/1.5 "IBM Plex Mono",monospace; letter-spacing: .11em; text-transform: uppercase; pointer-events: none; white-space: nowrap; }

.gravity-pointer { position: absolute; z-index: 15; width: 46px; height: 46px; margin: -23px 0 0 -23px; border: 1px solid var(--mint); border-radius: 50%; opacity: 0; pointer-events: none; box-shadow: 0 0 0 8px rgba(47,206,150,.06),0 0 28px rgba(47,206,150,.16); }
.gravity-pointer::after { content: attr(data-mode); position: absolute; left: 54px; top: 18px; color: var(--mint); font: 500 7px/1 "IBM Plex Mono",monospace; letter-spacing: .1em; text-transform: uppercase; white-space: nowrap; }
.gravity-pointer.visible { opacity: .9; }

.research-metrics { position: absolute; z-index: 14; right: clamp(24px,4.2vw,64px); bottom: 34px; width: min(450px,35vw); transition: opacity .3s; }
.research-status {
  position: absolute;
  z-index: 14;
  right: clamp(24px,4.2vw,64px);
  bottom: 34px;
  width: min(520px,40vw);
  min-height: 48px;
  display: grid;
  grid-template-columns: auto minmax(0,1fr);
  align-items: center;
  gap: 18px;
  padding: 12px 15px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(252,251,247,.84);
  backdrop-filter: blur(12px);
  pointer-events: none;
  transition: opacity .3s;
}
.research-status > span {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--faint);
  font: 500 10px/1 "IBM Plex Mono",monospace;
  letter-spacing: .11em;
}
.research-status > span i {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--mint);
  box-shadow: 0 0 12px rgba(47,206,150,.62);
}
.research-status strong {
  color: var(--mint-deep);
  font: 500 12px/1.25 "IBM Plex Mono",monospace;
  letter-spacing: .06em;
  text-align: right;
}
.compression-reticle { position: absolute; z-index: 9; left: 0; top: 0; width: 92px; height: 92px; opacity: 0; transform: translate(-50%,-50%) scale(1.5); pointer-events: none; }
.compression-reticle::before,.compression-reticle::after { content: ""; position: absolute; inset: 0; border: 1px dashed rgba(47,206,150,.65); border-radius: 50%; }
.compression-reticle::after { inset: 20%; border-style: solid; border-color: rgba(247,245,240,.28); }

.slingshot-tear { position: absolute; z-index: 6; inset: 0; opacity: 0; clip-path: polygon(0 46%,0 54%,0 54%,0 46%); background: radial-gradient(circle at var(--result-x,62%) var(--result-y,54%),rgba(47,206,150,.2),transparent 22%),var(--paper); pointer-events: none; will-change: clip-path,opacity; }
.slingshot-tear::before { content: ""; position: absolute; inset: 0; background: linear-gradient(154deg,transparent 49.6%,rgba(47,206,150,.85) 49.9%,rgba(247,245,240,.92) 50.08%,transparent 50.42%); filter: drop-shadow(0 0 12px rgba(47,206,150,.48)); }
.slingshot-tear::after { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(20,20,20,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(20,20,20,.035) 1px,transparent 1px); background-size: 42px 42px; }
.rebirth-seed { position: absolute; z-index: 11; left: 0; top: 0; width: 18px; height: 18px; opacity: 0; border-radius: 50%; background: var(--mint); box-shadow: 0 0 18px var(--mint),0 0 65px rgba(47,206,150,.7); transform: translate(-50%,-50%) scale(0); pointer-events: none; }
.rebirth-seed::before,.rebirth-seed::after { content: ""; position: absolute; inset: -1px; border: 1px solid var(--mint); border-radius: 50%; transform: scale(var(--pulse-a,1)); opacity: var(--pulse-opacity,0); }
.rebirth-seed::after { transform: scale(var(--pulse-b,1)); border-color: rgba(247,245,240,.55); }
.loop-path { position: absolute; z-index: 11; inset: 0; opacity: 0; pointer-events: none; }
.loop-path path { fill: none; stroke: var(--mint); stroke-width: 1px; stroke-dasharray: 3px 7px; vector-effect: non-scaling-stroke; filter: drop-shadow(0 0 5px rgba(47,206,150,.72)); }
.loop-scan { position: absolute; z-index: 12; left: 0; right: 0; top: 0; height: 2px; opacity: 0; background: var(--mint); box-shadow: 0 0 20px rgba(47,206,150,.75); pointer-events: none; }

.result-card { position: absolute; z-index: 16; left: 62%; top: 54%; width: min(580px,40vw); opacity: 0; transform: translate(-50%,-50%) scale(.08) rotate(-5deg); clip-path: inset(49% 49% 49% 49%); pointer-events: none; will-change: opacity,transform,clip-path; }
.result-card.ready { pointer-events: auto; }
body[data-ending="loop"] .result-card { top: 44%; }

body[data-ending="rebirth"] .research-head {
  grid-template-columns: 1fr min(250px,27vw) auto;
  font-size: 10px;
}
body[data-ending="rebirth"] .research-step .step { font-size: 10px; }
body[data-ending="rebirth"] .research-step p { font-size: 15px; }
body[data-ending="rebirth"] .research-key { font-size: 10px; line-height: 1.25; }
body[data-ending="rebirth"] .diff-head,
body[data-ending="rebirth"] .diff-foot { font-size: 9px; }
body[data-ending="rebirth"] .diff-metrics span { font-size: 10px; }

.research-run.is-dark .research-head { color: #8f9a95; border-color: rgba(247,245,240,.15); }
.research-run.is-dark .research-head b,.research-run.is-dark .research-step .step,.research-run.is-dark .research-step h3 em { color: var(--mint); }
.research-run.is-dark .research-progress { background: rgba(247,245,240,.13); }
.research-run.is-dark .research-step h3 { color: var(--paper); }
.research-run.is-dark .research-step p { color: #929c97; }
.research-run.is-dark .research-key { border-color: rgba(47,206,150,.36); background: rgba(47,206,150,.08); color: var(--mint); }
.research-run.is-dark.ending-light-story .research-step h3 { color: var(--ink); }
.research-run.is-dark.ending-light-story .research-step p { color: var(--muted); }
.research-run.is-dark .metric-strip { border-color: rgba(247,245,240,.15); background: rgba(7,10,8,.72); }
.research-run.is-dark .metric { border-color: rgba(247,245,240,.14); }
.research-run.is-dark .metric small { color: #78827d; }
.research-run.is-dark .metric strong { color: var(--paper); }
.research-run.is-dark .metric strong.mint { color: var(--mint); }
.research-run.is-dark .research-status { border-color: rgba(247,245,240,.15); background: rgba(7,10,8,.72); }
.research-run.is-dark .research-status > span { color: #78827d; }
.research-run.is-dark .research-status strong { color: var(--mint); }

.a3-outro { position: relative; z-index: 3; min-height: 100svh; display: grid; place-items: center; padding: 110px 24px; border-top: 1px solid var(--line); background: var(--paper); text-align: center; }
.a3-outro h2 { max-width: 1050px; font: 500 clamp(54px,7vw,106px)/.93 "IBM Plex Serif",serif; letter-spacing: -.052em; }
.a3-outro h2 em { color: var(--mint-deep); font-weight: 400; }
.a3-outro p { max-width: 590px; margin: 28px auto; color: var(--muted); font: 400 16px/1.6 "IBM Plex Sans",sans-serif; }
.a3-outro .button { margin: 0 auto; }
.variant-label strong { color: var(--mint-deep); }

@media (max-width: 900px) {
  .a3-handoff { min-height: 80vh; display: block; padding: 110px 18px 70px; }
  .a3-handoff h2 { font-size: 56px; }
  .a3-handoff p { max-width: 290px; margin-top: 38px; }
  .research-run { height: 720vh; }
  .base-grid { mask-image: linear-gradient(180deg,transparent,#000 34%,#000); }
  .research-head { top: 78px; left: 16px; right: 16px; grid-template-columns: minmax(0,1fr) 100px auto; gap: 11px; }
  body[data-ending="rebirth"] .research-head { grid-template-columns: minmax(0,1fr) 100px auto; }
  .research-head > span:nth-child(2) { display: none; }
  .research-story { left: 18px; right: 18px; top: 106px; width: auto; height: 36%; bottom: auto; }
  .research-step { justify-content: center; }
  .research-step h3 { max-width: 355px; font-size: 46px; }
  .research-step p { max-width: 340px; margin-top: 13px; font-size: 12px; }
  body[data-ending="rebirth"] .research-step p { font-size: 14px; }
  .research-key { margin-top: 13px; max-width: 100%; }
  .research-step[data-step="2"] .research-key { display: none; }
  .research-metrics { right: 12px; bottom: 43px; width: calc(100% - 24px); }
  body[data-ending="rebirth"] .research-status { right: 12px; bottom: 43px; width: calc(100% - 24px); }
  .result-card,body[data-ending="loop"] .result-card { left: 16px; right: 16px; top: 64%; width: auto; transform-origin: center; }
  .impact-label { width: 165px; text-align: center; white-space: normal; transform: translateX(-50%); }
  .comparison-links { display: none; }
}

@media (max-width: 540px) {
  .research-head,
  body[data-ending="rebirth"] .research-head { grid-template-columns: minmax(0,1fr) auto; }
  .research-progress { display: none; }
}

@media (max-width: 900px) and (max-height: 500px) {
  .research-story { top: 92px; bottom: auto; height: 46%; width: min(430px,58vw); right: auto; }
  .research-step h3 { font-size: 30px; }
  .research-step p,
  body[data-ending="rebirth"] .research-step p { font-size: 12px; margin-top: 10px; max-width: 300px; }
  .research-key { margin-top: 10px; }
  .result-card,
  body[data-ending="loop"] .result-card { top: 50%; }
  .research-status,
  body[data-ending="rebirth"] .research-status { right: 12px; bottom: 14px; width: min(430px,calc(100% - 24px)); }
}

@media (hover: none) {
  .gravity-pointer { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .flight-label,.impact-label,.gravity-pointer,.loop-path { display: none; }
  .accretion-ring { animation: none !important; }
}
