
.epilogue{
  position:relative;
  background:#07111f;
  color:#edf6ff;
  overflow:hidden;
}
.epilogue__chapter{
  position:relative;
  min-height:100svh;
  display:grid;
  place-items:center;
  padding:110px 28px;
  isolation:isolate;
}
.epilogue__center{
  position:relative;
  z-index:5;
  width:min(1120px,92vw);
  text-align:center;
}
.epilogue__kicker{
  display:block;
  margin-bottom:24px;
  color:#67e8f9;
  font-size:11px;
  font-weight:700;
  letter-spacing:.2em;
}
.epilogue h2{
  margin:0;
  font-size:clamp(62px,9.2vw,154px);
  line-height:.86;
  letter-spacing:-.075em;
}
.epilogue h2 em{
  color:#7d93a8;
  font-style:normal;
  font-weight:inherit;
}
.epilogue__chapter--memory{
  min-height:118svh;
  background:
    radial-gradient(circle at 50% 48%,rgba(27,74,112,.2),transparent 38%),
    #07111f;
}
.epilogue__memory-field{
  position:absolute;
  inset:0;
  z-index:1;
  opacity:.62;
}
.epilogue__memory{
  position:absolute;
  margin:0;
  overflow:hidden;
  border:1px solid rgba(148,163,184,.12);
  border-radius:16px;
  opacity:0;
  filter:saturate(.55) brightness(.58);
  transform:translateY(28px) scale(.96);
  transition:opacity 1.5s ease,transform 1.8s cubic-bezier(.22,.78,.24,1);
}
.epilogue__memory img{width:100%;height:100%;object-fit:cover}
.epilogue__memory--1{left:5%;top:13%;width:20vw;max-width:360px;aspect-ratio:4/3}
.epilogue__memory--2{right:6%;top:11%;width:19vw;max-width:340px;aspect-ratio:4/3}
.epilogue__memory--3{left:8%;bottom:11%;width:23vw;max-width:420px;aspect-ratio:16/10}
.epilogue__memory--4{right:8%;bottom:10%;width:22vw;max-width:400px;aspect-ratio:16/10}
.epilogue__memory--5{left:50%;top:7%;width:17vw;max-width:300px;aspect-ratio:4/3;transform:translate(-50%,28px) scale(.96)}
.epilogue__chapter.is-visible .epilogue__memory{opacity:.38;transform:translateY(0) scale(1)}
.epilogue__chapter.is-visible .epilogue__memory--5{transform:translate(-50%,0) scale(1)}
.epilogue__chapter--memory .epilogue__center{
  opacity:0;transform:translateY(28px);
  transition:opacity 1.1s ease .45s,transform 1.1s ease .45s;
}
.epilogue__chapter--memory.is-visible .epilogue__center{opacity:1;transform:none}
.epilogue__continue{
  position:absolute;z-index:6;bottom:42px;left:50%;
  display:grid;justify-items:center;gap:11px;
  color:#6f8499;text-decoration:none;
  transform:translateX(-50%);
  font-size:10px;letter-spacing:.16em;text-transform:uppercase;
}
.epilogue__continue i{display:block;width:1px;height:44px;background:linear-gradient(#22d3ee,transparent)}
.epilogue__chapter--remains{
  background:
    radial-gradient(circle at 50% 50%,rgba(15,45,73,.16),transparent 34%),
    #07111f;
}
.epilogue__center--remains{width:min(1240px,92vw)}
.epilogue__line{opacity:0;transform:translateY(24px)}
.epilogue__line--quiet{
  margin:0 0 64px;
  color:#64798e;
  font-size:clamp(22px,2.3vw,38px);
  letter-spacing:-.025em;
}
.epilogue__line--answer{
  font-size:clamp(56px,7.7vw,126px)!important;
}
.epilogue__line--answer em{color:#67e8f9!important}
.epilogue__ko{
  margin:42px auto 0;
  color:#8296a9;
  font-size:15px;
  opacity:0;
}
.epilogue__chapter--remains.is-visible .epilogue__line--quiet{
  animation:epilogueIn .9s ease .2s forwards;
}
.epilogue__chapter--remains.is-visible .epilogue__line--answer{
  animation:epilogueIn 1.15s ease 1.05s forwards;
}
.epilogue__chapter--remains.is-visible .epilogue__ko{
  animation:epilogueIn .9s ease 2.05s forwards;
}
.epilogue__chapter--final{
  min-height:112svh;
  background:#050c16;
}
.epilogue__final-glow{
  position:absolute;inset:18% 15%;
  background:radial-gradient(circle,rgba(34,211,238,.075),transparent 48%);
  opacity:0;transition:opacity 2.2s ease;
}
.epilogue__chapter--final.is-visible .epilogue__final-glow{opacity:1}
.epilogue__center--final{opacity:0;transform:translateY(26px)}
.epilogue__chapter--final.is-visible .epilogue__center--final{
  animation:epilogueIn 1.4s ease .35s forwards;
}
.epilogue__mark{
  display:block;margin-bottom:28px;
  color:#60758a;font-size:14px;font-weight:700;letter-spacing:.38em;
}
.epilogue__center--final h2{
  font-size:clamp(72px,11vw,184px);
  color:#f2f8ff;
}
.epilogue__since{
  margin:28px 0 0;color:#67e8f9;
  font-size:11px;font-weight:700;letter-spacing:.28em;
}
.epilogue__rule{
  width:0;height:1px;margin:58px auto 30px;
  background:linear-gradient(90deg,transparent,#22d3ee,transparent);
  transition:width 1.5s ease 1.5s;
}
.epilogue__chapter--final.is-visible .epilogue__rule{width:min(360px,60vw)}
.epilogue__next{
  margin:0;color:#657b90;font-size:clamp(15px,1.5vw,21px);
  opacity:0;transform:translateY(10px);
}
.epilogue__chapter--final.is-visible .epilogue__next{
  animation:epilogueIn .9s ease 2.35s forwards;
}
@keyframes epilogueIn{to{opacity:1;transform:none}}
@media(max-width:760px){
  .epilogue__chapter{padding:90px 20px}
  .epilogue__memory--1,.epilogue__memory--3{left:-5%;width:42vw}
  .epilogue__memory--2,.epilogue__memory--4{right:-5%;width:42vw}
  .epilogue__memory--5{width:34vw}
  .epilogue__line--quiet{margin-bottom:44px}
  .epilogue__ko{font-size:13px}
}
@media(prefers-reduced-motion:reduce){
  .epilogue__memory,.epilogue__center,.epilogue__line,.epilogue__ko,.epilogue__next{
    opacity:1!important;transform:none!important;animation:none!important;transition:none!important;
  }
  .epilogue__rule{width:min(360px,60vw)!important;transition:none}
}


/* RC14.1 — Memory Sequence */
.epilogue__memory-sequence{
  min-height:520vh;
  display:block;
  padding:0;
  background:#07111f;
}
.epilogue__memory-sticky{
  position:sticky;
  top:0;
  height:100svh;
  overflow:hidden;
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at 50% 46%,rgba(27,74,112,.18),transparent 39%),
    #07111f;
}
.epilogue__memory-stage{
  position:absolute;
  inset:0;
  z-index:1;
}
.epilogue__memory-slot{
  position:absolute;
  margin:0;
  overflow:hidden;
  border:1px solid rgba(148,163,184,.13);
  border-radius:16px;
  background:#0b1725;
  opacity:0;
  filter:saturate(.62) brightness(.58);
  transform:translateY(22px) scale(.97);
  transition:
    opacity .72s ease,
    transform 1.05s cubic-bezier(.22,.78,.24,1),
    filter .72s ease;
  box-shadow:0 20px 60px rgba(0,0,0,.18);
}
.epilogue__memory-slot.is-shown{
  opacity:.43;
  transform:translateY(0) scale(1);
}
.epilogue__memory-slot.is-featured{
  opacity:.62;
  filter:saturate(.72) brightness(.66);
}
.epilogue__memory-slot img{
  display:block;width:100%;height:100%;object-fit:cover;
}
.epilogue__memory-slot--a{left:3.5%;top:10%;width:22vw;max-width:400px;aspect-ratio:4/3}
.epilogue__memory-slot--b{right:4%;top:8%;width:20vw;max-width:360px;aspect-ratio:4/3}
.epilogue__memory-slot--c{left:8%;bottom:8%;width:24vw;max-width:440px;aspect-ratio:16/10}
.epilogue__memory-slot--d{right:7%;bottom:7%;width:23vw;max-width:420px;aspect-ratio:16/10}
.epilogue__memory-slot--e{left:50%;top:4%;width:16vw;max-width:290px;aspect-ratio:4/3;transform:translate(-50%,22px) scale(.97)}
.epilogue__memory-slot--e.is-shown{transform:translate(-50%,0) scale(1)}
.epilogue__center--memory{
  z-index:5;
  opacity:1!important;
  transform:none!important;
}
.epilogue__center--memory h2{
  text-shadow:0 8px 36px rgba(2,8,16,.5);
}
.epilogue__memory-caption{
  max-width:600px;
  margin:30px auto 0;
  color:#71869b;
  font-size:13px;
  line-height:1.7;
  letter-spacing:.025em;
}
.epilogue__year{
  position:absolute;
  z-index:3;
  left:50%;
  bottom:6.5%;
  transform:translateX(-50%);
  color:rgba(103,232,249,.48);
  font-size:11px;
  font-weight:700;
  letter-spacing:.28em;
  transition:opacity .35s ease;
}
.epilogue__memory-progress{
  position:absolute;
  z-index:7;
  left:50%;
  bottom:3.5%;
  width:min(360px,48vw);
  height:1px;
  background:rgba(148,163,184,.12);
  transform:translateX(-50%);
}
.epilogue__memory-progress span{
  display:block;
  width:100%;
  height:100%;
  background:linear-gradient(90deg,#22d3ee,#67e8f9);
  transform:scaleX(0);
  transform-origin:left;
  box-shadow:0 0 10px rgba(34,211,238,.4);
}
@media(max-width:760px){
  .epilogue__memory-sequence{min-height:460vh}
  .epilogue__memory-slot--a{left:-6%;top:12%;width:44vw}
  .epilogue__memory-slot--b{right:-6%;top:10%;width:42vw}
  .epilogue__memory-slot--c{left:-8%;bottom:10%;width:48vw}
  .epilogue__memory-slot--d{right:-8%;bottom:9%;width:47vw}
  .epilogue__memory-slot--e{width:34vw;top:5%}
  .epilogue__memory-caption{max-width:82vw;font-size:12px}
}
@media(prefers-reduced-motion:reduce){
  .epilogue__memory-slot{transition:none}
}


/* RC14.2 — Memory Sequence runtime fix + clearer progress feedback */
.epilogue__memory-progress{
  height:2px;
  background:rgba(148,163,184,.16);
}
.epilogue__memory-progress span{
  min-width:2px;
  box-shadow:
    0 0 8px rgba(34,211,238,.65),
    0 0 18px rgba(34,211,238,.22);
}
.epilogue__year{
  min-width:64px;
  text-align:center;
}


/* RC14.3 — Fix sticky memory stage
   The parent Epilogue used overflow:hidden, which prevented the sticky
   viewport from staying fixed while the tall memory sequence scrolled. */
.epilogue{
  overflow-x:clip !important;
  overflow-y:visible !important;
}

.epilogue__memory-sequence{
  position:relative;
  overflow:visible !important;
}

.epilogue__memory-sticky{
  position:sticky !important;
  top:0 !important;
  height:100svh;
  min-height:100vh;
  overflow:hidden;
  z-index:1;
}

.epilogue__memory-stage{
  position:absolute;
  inset:0;
  overflow:hidden;
}

/* Keep the five memory slots visible throughout the sticky phase. */
.epilogue__memory-slot{
  will-change:opacity, transform;
}

/* The sequence fades only during its final 8%, immediately before What Remains. */


/* RC14.4 — Robust pinned viewport.
   Avoid CSS sticky entirely; JS pins the stage to the viewport while the
   memory section is active. This is resilient to ancestor overflow rules. */
.epilogue__memory-sequence{
  position:relative !important;
  min-height:520vh !important;
  overflow:visible !important;
}

.epilogue__memory-sticky{
  position:absolute !important;
  top:0 !important;
  left:0;
  width:100%;
  height:100svh;
  min-height:100vh;
  z-index:20;
  overflow:hidden;
}

.epilogue__memory-sticky.is-fixed{
  position:fixed !important;
  top:0 !important;
  left:0 !important;
  width:100vw !important;
}

.epilogue__memory-sticky.is-ended{
  position:absolute !important;
  top:auto !important;
  bottom:0 !important;
  left:0 !important;
  width:100% !important;
}


/* RC14.5 — Each year shows only photos from that year.
   Unused slots are fully hidden; no photo carries into another year. */
.epilogue__memory-slot:not(.is-shown){
  pointer-events:none;
}

.epilogue__memory-slot--a.is-featured{
  border-color:rgba(103,232,249,.18);
  box-shadow:
    0 24px 70px rgba(0,0,0,.2),
    0 0 26px rgba(34,211,238,.035);
}

/* When a year has just one image, let the primary memory breathe slightly more. */
.epilogue__memory-slot--a.is-shown{
  transition:
    opacity .72s ease,
    transform 1.05s cubic-bezier(.22,.78,.24,1),
    filter .72s ease;
}


/* ============================================================
   RC15.1 — Fullscreen → Memory Orbit
   One photograph fills the viewport, then shrinks into an
   accumulated counter-clockwise archive around the center copy.
   ============================================================ */
.epilogue__memory-sequence{
  position:relative !important;
  min-height:1900vh !important;
  overflow:visible !important;
}
.epilogue__memory-sticky{
  position:absolute !important;
  inset:0 auto auto 0 !important;
  width:100%;
  height:100svh;
  min-height:100vh;
  overflow:hidden;
  z-index:30;
  background:#061322;
}
.epilogue__memory-sticky.is-fixed{
  position:fixed !important;
  inset:0 !important;
  width:100vw !important;
}
.epilogue__memory-sticky.is-ended{
  position:absolute !important;
  top:auto !important;
  bottom:0 !important;
  left:0 !important;
  width:100% !important;
}
.memory-orbit{
  position:relative;
  width:100%;
  height:100%;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 48%,rgba(31,70,111,.13),transparent 38%),
    #061322;
}
.memory-orbit__hero{
  position:absolute;
  inset:0;
  z-index:20;
  opacity:0;
  transform:scale(1.025);
  transition:opacity .28s ease;
}
.memory-orbit__hero.is-visible{opacity:1}
.memory-orbit__hero-img{
  width:100%;
  height:100%;
  object-fit:contain;
  background:#061322;
  display:block;
}
.memory-orbit__shade{
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg,rgba(3,12,22,.18),rgba(3,12,22,.10) 52%,rgba(3,12,22,.58)),
    radial-gradient(circle at center,transparent 35%,rgba(3,12,22,.24) 100%);
}
.memory-orbit__meta{
  position:absolute;
  left:clamp(28px,4.5vw,86px);
  bottom:clamp(34px,5.2vh,70px);
  display:flex;
  gap:18px;
  align-items:center;
  font-family:var(--font-mono,monospace);
  letter-spacing:.16em;
  font-size:12px;
  color:#dbeafe;
}
.memory-orbit__year{color:#22d3ee;font-weight:800}
.memory-orbit__count{opacity:.72}

.memory-orbit__archive{
  position:absolute;
  inset:0;
  z-index:4;
  pointer-events:none;
}
.memory-orbit__tile{
  position:absolute;
  overflow:hidden;
  border-radius:14px;
  background:#0b1b2e;
  border:1px solid rgba(148,163,184,.16);
  box-shadow:0 14px 42px rgba(0,0,0,.28);
  opacity:0;
  transform:translate(-50%,-50%) scale(.78);
  transition:opacity .45s ease,transform .65s cubic-bezier(.2,.8,.2,1);
}
.memory-orbit__tile.is-set{
  opacity:.54;
  transform:translate(-50%,-50%) scale(1);
}
.memory-orbit__tile img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  filter:saturate(.72) brightness(.72);
}
.memory-orbit__tile::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(4,14,25,.02),rgba(4,14,25,.16));
}
.memory-orbit__tile.is-latest{
  opacity:.76;
  border-color:rgba(34,211,238,.32);
}

.memory-orbit__center{
  position:absolute;
  left:50%;
  top:49%;
  width:min(42vw,720px);
  transform:translate(-50%,-50%);
  z-index:10;
  text-align:center;
  opacity:0;
  transition:opacity .65s ease,transform .8s cubic-bezier(.2,.8,.2,1);
  pointer-events:none;
}
.memory-orbit__center.is-visible{
  opacity:1;
  transform:translate(-50%,-50%);
}
.memory-orbit__center .epilogue__kicker{
  display:block;
  margin-bottom:20px;
}
.memory-orbit__center h2{
  margin:0;
  font-size:clamp(54px,6.7vw,128px);
  line-height:.84;
  letter-spacing:-.065em;
  color:#edf5ff;
}
.memory-orbit__center h2 em{
  color:#8299b2;
  font-style:normal;
  font-weight:650;
}
.memory-orbit__center p{
  margin:28px auto 0;
  font-size:clamp(12px,.9vw,16px);
  line-height:1.75;
  color:#7690aa;
}

.memory-orbit__progress{
  position:absolute;
  z-index:40;
  left:50%;
  bottom:24px;
  width:min(560px,56vw);
  transform:translateX(-50%);
  display:grid;
  grid-template-columns:28px 1fr 28px;
  gap:12px;
  align-items:center;
  font-family:var(--font-mono,monospace);
  font-size:10px;
  letter-spacing:.12em;
  color:#607b97;
  opacity:.82;
}
.memory-orbit__ticks{
  display:grid;
  grid-template-columns:repeat(18,1fr);
  gap:5px;
}
.memory-orbit__tick{
  height:2px;
  background:rgba(112,143,174,.24);
  transition:background .2s ease,box-shadow .2s ease;
}
.memory-orbit__tick.is-done{
  background:#22d3ee;
  box-shadow:0 0 8px rgba(34,211,238,.45);
}

@media (max-width:900px){
  .epilogue__memory-sequence{min-height:1500vh !important}
  .memory-orbit__center{width:68vw}
  .memory-orbit__center h2{font-size:clamp(44px,10vw,80px)}
  .memory-orbit__progress{width:76vw}
  .memory-orbit__tile{border-radius:9px}
}
@media (prefers-reduced-motion:reduce){
  .memory-orbit__tile,.memory-orbit__center,.memory-orbit__hero{transition:none}
}


/* ============================================================
   RC15.2 — Interactive Memory Orbit
   - no fullscreen photo
   - all 18 memories visible from the start
   - clockwise placement
   - center statement always visible
   - scroll/click briefly emphasizes the active memory
   ============================================================ */
.epilogue__memory-sequence{
  min-height:760vh !important;
}
.memory-orbit__center{
  opacity:1 !important;
  transform:translate(-50%,-50%) !important;
  z-index:12;
}
.memory-orbit__archive{
  z-index:6;
}
.memory-orbit__tile{
  opacity:.42 !important;
  transform:translate(-50%,-50%) scale(1) !important;
  cursor:pointer;
  pointer-events:auto;
  transition:
    opacity .28s ease,
    transform .28s cubic-bezier(.2,.8,.2,1),
    border-color .28s ease,
    box-shadow .28s ease,
    filter .28s ease;
}
.memory-orbit__tile:hover{
  opacity:.72 !important;
  transform:translate(-50%,-50%) scale(1.055) !important;
  border-color:rgba(103,232,249,.34);
}
.memory-orbit__tile.is-active-memory{
  z-index:18;
  opacity:1 !important;
  border-color:rgba(103,232,249,.78);
  box-shadow:
    0 18px 54px rgba(0,0,0,.35),
    0 0 0 1px rgba(34,211,238,.16),
    0 0 34px rgba(34,211,238,.28);
  animation:memoryFocus 1.05s cubic-bezier(.18,.8,.22,1);
}
.memory-orbit__tile.is-active-memory img{
  filter:saturate(.94) brightness(.88);
}
@keyframes memoryFocus{
  0%{transform:translate(-50%,-50%) scale(1)}
  36%{transform:translate(-50%,-50%) scale(1.16)}
  68%{transform:translate(-50%,-50%) scale(1.08)}
  100%{transform:translate(-50%,-50%) scale(1)}
}
.memory-orbit__tile-label{
  position:absolute;
  z-index:3;
  left:0;right:0;bottom:0;
  display:flex;
  justify-content:center;
  gap:7px;
  padding:7px 8px 6px;
  background:linear-gradient(180deg,transparent,rgba(3,10,18,.82));
  color:#dbeafe;
  font-family:var(--font-mono,monospace);
  font-size:9px;
  letter-spacing:.08em;
}
.memory-orbit__tile-label b{
  color:#22d3ee;
  font-weight:800;
}
.memory-orbit__progress{
  z-index:25;
}
.memory-orbit__tick{
  cursor:pointer;
}
.memory-orbit__tick.is-current{
  height:3px;
  background:#67e8f9;
  box-shadow:0 0 10px rgba(34,211,238,.72);
}
.memory-orbit__status{
  position:absolute;
  z-index:24;
  left:clamp(24px,4vw,72px);
  top:50%;
  transform:translateY(-50%);
  width:150px;
  color:#71889f;
  font-size:10px;
  line-height:1.6;
  letter-spacing:.04em;
}
.memory-orbit__status strong{
  display:block;
  margin-bottom:8px;
  color:#22d3ee;
  font-size:12px;
  letter-spacing:.14em;
}
@media(max-width:1100px){
  .memory-orbit__status{display:none}
}
@media(prefers-reduced-motion:reduce){
  .memory-orbit__tile.is-active-memory{animation:none}
}


/* ============================================================
   RC15.3 — Left information panel + full-width numbered progress
   ============================================================ */
.memory-orbit__status{
  position:absolute;
  z-index:30;
  left:clamp(18px,2.8vw,52px);
  top:50%;
  width:clamp(150px,10.5vw,198px);
  transform:translateY(-50%);
  padding:0;
  color:#7f94a9;
  font-size:11px;
  line-height:1.65;
  letter-spacing:0;
}
.memory-orbit__status-kicker{
  display:block;
  margin-bottom:17px;
  color:#22d3ee;
  font-family:var(--font-mono,monospace);
  font-size:8px;
  font-weight:800;
  letter-spacing:.16em;
  white-space:nowrap;
}
.memory-orbit__status-count{
  display:flex;
  align-items:baseline;
  gap:7px;
  color:#dbe8f5;
  font-family:var(--font-mono,monospace);
}
.memory-orbit__status-count strong{
  color:#22d3ee;
  font-size:29px;
  line-height:1;
  font-weight:500;
  letter-spacing:-.04em;
}
.memory-orbit__status-count span{
  color:#a9b8c7;
  font-size:14px;
}
.memory-orbit__status-line{
  position:relative;
  width:100%;
  height:1px;
  margin:18px 0 18px;
  overflow:visible;
  background:rgba(111,139,166,.24);
}
.memory-orbit__status-line i{
  display:block;
  width:5.55%;
  height:1px;
  background:#22d3ee;
  box-shadow:0 0 8px rgba(34,211,238,.65);
  transition:width .35s ease;
}
.memory-orbit__status-line i::before{
  content:"";
  display:block;
  width:4px;
  height:4px;
  border-radius:50%;
  background:#67e8f9;
  transform:translateY(-1.5px);
  box-shadow:0 0 8px rgba(34,211,238,.82);
}
.memory-orbit__status-copy strong{
  display:block;
  margin-bottom:6px;
  color:#aebdcc;
  font-size:10px;
  font-weight:500;
}
.memory-orbit__status-copy p{
  margin:0;
  color:#7e91a4;
  font-size:10px;
  line-height:1.7;
}
.memory-orbit__status-guide{
  margin-top:25px;
  padding:12px 13px;
  border:1px solid rgba(109,139,169,.27);
  border-radius:7px;
  background:rgba(5,16,28,.40);
}
.memory-orbit__status-guide b{
  display:block;
  margin-bottom:8px;
  color:#9cafc2;
  font-size:9px;
  font-weight:500;
}
.memory-orbit__status-guide b i{
  display:inline-block;
  width:6px;
  height:6px;
  margin-right:6px;
  border-radius:50%;
  background:#4fa5ff;
  box-shadow:0 0 8px rgba(79,165,255,.42);
}
.memory-orbit__status-guide span{
  display:block;
  color:#75899e;
  font-size:9px;
  line-height:1.65;
}

/* Bottom navigation now spans most of the viewport, like a timeline. */
.memory-orbit__progress{
  left:50%;
  bottom:18px;
  width:min(86vw,1440px);
  grid-template-columns:42px minmax(0,1fr) 58px;
  gap:18px;
  align-items:end;
  opacity:1;
}
.memory-orbit__ticks{
  position:relative;
  display:grid;
  grid-template-columns:repeat(18,minmax(0,1fr));
  gap:0;
  align-items:end;
}
.memory-orbit__ticks::before{
  content:"";
  position:absolute;
  left:1.5%;
  right:1.5%;
  bottom:4px;
  height:1px;
  background:rgba(89,119,146,.24);
}
.memory-orbit__tick{
  position:relative;
  z-index:2;
  display:grid;
  justify-items:center;
  gap:7px;
  min-width:0;
  padding:0;
  border:0;
  background:none;
  color:#8194a7;
  font-family:var(--font-mono,monospace);
  cursor:pointer;
}
.memory-orbit__tick span{
  display:block;
  font-size:9px;
  line-height:1;
  transition:color .2s ease,transform .2s ease;
}
.memory-orbit__tick i{
  display:block;
  width:6px;
  height:6px;
  border-radius:50%;
  background:#31536a;
  box-shadow:0 0 0 3px #061322;
  transition:background .2s ease,box-shadow .2s ease,transform .2s ease;
}
.memory-orbit__tick.is-done i{
  background:#355e76;
}
.memory-orbit__tick.is-current span{
  color:#67e8f9;
  transform:translateY(-1px);
}
.memory-orbit__tick.is-current i{
  background:#22d3ee;
  transform:scale(1.22);
  box-shadow:
    0 0 0 3px #061322,
    0 0 10px rgba(34,211,238,.78);
}
.memory-orbit__progress > span{
  align-self:end;
  padding-bottom:1px;
  color:#b3c1cf;
  font-family:var(--font-mono,monospace);
  font-size:10px;
}
.memory-orbit__progress-count{
  color:#22d3ee !important;
  font-size:15px !important;
}

@media(max-width:1100px){
  .memory-orbit__status{
    display:block;
    left:18px;
    width:145px;
  }
  .memory-orbit__status-copy,
  .memory-orbit__status-guide{
    display:none;
  }
  .memory-orbit__progress{
    width:94vw;
  }
  .memory-orbit__tick span{
    font-size:7px;
  }
}
@media(max-width:760px){
  .memory-orbit__status{
    top:80px;
    transform:none;
  }
  .memory-orbit__status-kicker,
  .memory-orbit__status-copy,
  .memory-orbit__status-guide{
    display:none;
  }
  .memory-orbit__progress{
    grid-template-columns:34px 1fr 40px;
    gap:8px;
    width:96vw;
  }
  .memory-orbit__tick span{
    display:none;
  }
}


/* ============================================================
   RC15.4 — Left Safe Zone + shifted Memory Orbit
   The information rail owns the left side; memory tiles never
   enter it. The central composition is shifted slightly right.
   ============================================================ */
.memory-orbit::before{
  content:"";
  position:absolute;
  z-index:22;
  inset:0 auto 0 0;
  width:clamp(220px,15vw,285px);
  pointer-events:none;
  background:linear-gradient(
    90deg,
    rgba(4,14,25,.98) 0%,
    rgba(4,14,25,.92) 54%,
    rgba(4,14,25,.48) 78%,
    rgba(4,14,25,0) 100%
  );
}
.memory-orbit__status{
  z-index:34;
  left:clamp(28px,3vw,58px);
  width:clamp(158px,10vw,190px);
}
.memory-orbit__center{
  left:56.5%;
  width:min(39vw,690px);
}
.memory-orbit__archive{
  left:clamp(220px,15vw,285px);
  right:0;
  width:auto;
}

/* Tiles are positioned inside the archive area rather than the full viewport.
   This guarantees that even the left-most memories stay clear of the info rail. */
.memory-orbit__tile{
  max-width:none !important;
}

/* Bottom timeline remains full-width, but starts after the left rail visually. */
.memory-orbit__progress{
  width:min(86vw,1440px);
  padding-left:clamp(18px,1.5vw,30px);
}

/* Additional breathing room for the four memories nearest the left edge. */
.memory-orbit__tile:nth-child(15),
.memory-orbit__tile:nth-child(16),
.memory-orbit__tile:nth-child(17),
.memory-orbit__tile:nth-child(18){
  margin-left:clamp(22px,2vw,38px);
}

@media(max-width:1200px){
  .memory-orbit::before{
    width:205px;
  }
  .memory-orbit__archive{
    left:205px;
  }
  .memory-orbit__center{
    left:58%;
    width:42vw;
  }
}
@media(max-width:900px){
  .memory-orbit::before{
    width:165px;
  }
  .memory-orbit__archive{
    left:165px;
  }
  .memory-orbit__status{
    left:18px;
    width:130px;
  }
  .memory-orbit__center{
    left:60%;
    width:46vw;
  }
}
@media(max-width:760px){
  .memory-orbit::before{
    width:0;
    background:none;
  }
  .memory-orbit__archive{
    left:0;
  }
  .memory-orbit__center{
    left:50%;
    width:68vw;
  }
}


/* RC15.15 — The memory orbit now feels like the continuation of the transition. */
.epilogue__chapter--memory{
  border-top:1px solid rgba(103,232,249,.07);
}
.epilogue__replay{
  margin-top:38px;
  padding:11px 20px;
  border:1px solid rgba(103,232,249,.28);
  border-radius:999px;
  background:transparent;
  color:#8296aa;
  font:inherit;
  font-size:11px;
  letter-spacing:.08em;
  cursor:pointer;
  opacity:0;
  transform:translateY(10px);
  transition:border-color .25s ease,color .25s ease,background .25s ease;
}
.epilogue__chapter--final.is-visible .epilogue__replay{
  animation:epilogueIn .9s ease 2.8s forwards;
}
.epilogue__replay:hover,
.epilogue__replay:focus-visible{
  color:#67e8f9;
  border-color:#67e8f9;
  background:rgba(34,211,238,.045);
}


/* ============================================================
   RC15.37 — CLEAN FINAL MEMORY ORBIT
   One actual Memory Orbit; initial state matches the target screenshot.
   ============================================================ */

.epilogue__memory-sequence{
  min-height:520vh;
  padding:0 !important;
  margin:0 !important;
  background:#07111f !important;
}

/* Target intro state: no left sidebar; large cards around cyan ellipse. */
.epilogue__chapter--memory:not(.is-handoff-active) .epilogue__memory-sticky{
  position:relative !important;
  top:auto !important;
  height:48svh !important;
  min-height:330px !important;
  max-height:none !important;
  overflow:hidden !important;
}

.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
  overflow:hidden !important;
  background:
    radial-gradient(circle at 50% 46%,rgba(31,70,111,.16),transparent 40%),
    #061322 !important;
}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit::before{
  display:none !important;
}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__status,
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__progress{
  display:none !important;
}

.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__archive{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  transform:none !important;
  opacity:1 !important;
}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__archive::before{
  content:"";
  position:absolute;
  z-index:0;
  left:4.8%;
  top:8.5%;
  width:90.4%;
  height:78%;
  border:1px solid rgba(34,211,238,.90);
  border-radius:50%;
  box-shadow:0 0 11px rgba(34,211,238,.16);
  pointer-events:none;
}

/* 01–04 are represented by the four large cards above. */
.epilogue__chapter--memory:not(.is-handoff-active)
.memory-orbit__tile:nth-child(-n+4){
  opacity:0 !important;
  visibility:hidden !important;
}

/* Bigger lower cards, matching the reference. */
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(n+5){
  width:12.2vw !important;
  min-width:105px !important;
  max-width:148px !important;
  opacity:.92 !important;
  visibility:visible !important;
  transform:translate(-50%,-50%) scale(1) !important;
  border-radius:10px !important;
  box-shadow:0 10px 26px rgba(0,0,0,.34) !important;
}

/* Clockwise visual placement: 05→18. */
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(5){left:70.5% !important;top:14% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(6){left:81.0% !important;top:24% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(7){left:88.0% !important;top:38% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(8){left:91.0% !important;top:53% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(9){left:87.5% !important;top:68% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(10){left:79.5% !important;top:81% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(11){left:67.5% !important;top:88% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(12){left:55.2% !important;top:91% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(13){left:42.8% !important;top:91% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(14){left:30.5% !important;top:88% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(15){left:19.2% !important;top:80% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(16){left:11.2% !important;top:65% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(17){left:10.5% !important;top:42% !important}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__tile:nth-child(18){left:19.7% !important;top:18% !important}

.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__center{
  position:absolute !important;
  left:50% !important;
  top:47% !important;
  width:min(40vw,580px) !important;
  transform:translate(-50%,-50%) !important;
  text-align:center !important;
  z-index:8 !important;
}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__center .epilogue__kicker{
  margin-bottom:10px !important;
  color:#22d3ee !important;
  font-size:8px !important;
  letter-spacing:.20em !important;
}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__center h2{
  margin:0 !important;
  font-size:clamp(50px,5.2vw,84px) !important;
  line-height:.82 !important;
  letter-spacing:-.055em !important;
}
.epilogue__chapter--memory:not(.is-handoff-active) .memory-orbit__center p{
  margin:15px 0 0 !important;
  font-size:clamp(10px,.72vw,13px) !important;
  line-height:1.45 !important;
}

/* After the transition moves on, return to the original full interactive orbit. */
.epilogue__chapter--memory.is-handoff-active .epilogue__memory-sticky{
  position:sticky !important;
  top:0 !important;
  height:100svh !important;
  min-height:0 !important;
  max-height:none !important;
}
.epilogue__chapter--memory.is-handoff-active .memory-orbit__archive::before{
  display:none !important;
}
.epilogue__chapter--memory.is-handoff-active .memory-orbit__status{
  display:block !important;
}
.epilogue__chapter--memory.is-handoff-active .memory-orbit__progress{
  display:grid !important;
}

.memory-orbit__tile-label{
  z-index:5 !important;
  text-shadow:0 1px 5px rgba(0,0,0,.95) !important;
}


/* ============================================================
   RC15.46 — WHAT REMAINS
   Ten years → What Remains transition.
   Text remains unchanged; only hierarchy, spacing and transition refined.
   ============================================================ */

.epilogue__chapter--remains{
  position:relative !important;
  min-height:100svh !important;
  padding:0 5vw !important;
  display:grid !important;
  place-items:center !important;
  overflow:hidden !important;
  background:
    radial-gradient(ellipse at 50% 36%,rgba(26,71,108,.18),transparent 34%),
    linear-gradient(180deg,#06111f 0%,#07111f 36%,#06101c 100%) !important;
}

/* A visual handoff from the cyan memory orbit above. */
.remains-transition{
  position:absolute;
  z-index:2;
  left:50%;
  top:0;
  width:min(720px,54vw);
  height:128px;
  transform:translateX(-50%);
  pointer-events:none;
}
.remains-transition__line{
  position:absolute;
  left:50%;
  top:0;
  width:1px;
  height:92px;
  transform:translateX(-50%);
  background:linear-gradient(
    180deg,
    rgba(34,211,238,.75),
    rgba(34,211,238,.22) 54%,
    rgba(34,211,238,0)
  );
}
.remains-transition__dot{
  position:absolute;
  left:50%;
  top:82px;
  width:6px;
  height:6px;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:#67e8f9;
  box-shadow:0 0 16px rgba(103,232,249,.66);
  opacity:0;
}

.epilogue__center--remains{
  position:relative !important;
  z-index:5 !important;
  width:min(1260px,90vw) !important;
  margin:0 auto !important;
  padding-top:3vh !important;
  text-align:center !important;
}

.epilogue__center--remains .epilogue__kicker{
  display:block !important;
  margin-bottom:clamp(32px,4vh,54px) !important;
  color:#22d3ee !important;
  font-size:clamp(10px,.72vw,13px) !important;
  font-weight:800 !important;
  letter-spacing:.28em !important;
}

.remains-copy{
  width:min(1180px,88vw);
  margin:0 auto;
}

.epilogue__chapter--remains .epilogue__line--quiet{
  margin:0 0 clamp(30px,4.2vh,52px) !important;
  color:#70859a !important;
  font-size:clamp(20px,1.85vw,34px) !important;
  line-height:1.3 !important;
  letter-spacing:-.025em !important;
}

.epilogue__chapter--remains .epilogue__line--answer{
  margin:0 !important;
  color:#edf5ff !important;
  font-size:clamp(58px,7.1vw,122px) !important;
  line-height:.91 !important;
  letter-spacing:-.058em !important;
  text-wrap:balance;
  text-shadow:0 16px 54px rgba(1,8,16,.38);
}

.epilogue__chapter--remains .epilogue__line--answer em{
  color:#67e8f9 !important;
  font-style:normal !important;
  font-weight:inherit !important;
  text-shadow:0 0 26px rgba(103,232,249,.08);
}

.remains-rule{
  width:0;
  height:1px;
  margin:clamp(34px,4.5vh,54px) auto clamp(24px,3vh,34px);
  background:linear-gradient(90deg,transparent,#22d3ee,transparent);
  opacity:.68;
}

.epilogue__chapter--remains .epilogue__ko{
  margin:0 auto !important;
  color:#91a4b7 !important;
  font-size:clamp(14px,1.02vw,18px) !important;
  line-height:1.75 !important;
  letter-spacing:-.015em !important;
  opacity:0;
}

.remains-next{
  display:block;
  margin-top:clamp(50px,7vh,86px);
  color:#40576d;
  font-size:clamp(8px,.55vw,10px);
  font-weight:700;
  letter-spacing:.28em;
  opacity:0;
}

/* Controlled reveal: one idea at a time. */
.epilogue__chapter--remains.is-visible .remains-transition__dot{
  animation:remainsDot .8s ease .15s forwards;
}
.epilogue__chapter--remains.is-visible .epilogue__line--quiet{
  animation:epilogueIn .85s ease .35s forwards !important;
}
.epilogue__chapter--remains.is-visible .epilogue__line--answer{
  animation:epilogueIn 1.05s cubic-bezier(.2,.72,.2,1) 1.05s forwards !important;
}
.epilogue__chapter--remains.is-visible .remains-rule{
  animation:remainsRule 1.1s ease 1.95s forwards;
}
.epilogue__chapter--remains.is-visible .epilogue__ko{
  animation:epilogueIn .9s ease 2.25s forwards !important;
}
.epilogue__chapter--remains.is-visible .remains-next{
  animation:remainsFade .9s ease 3.0s forwards;
}

@keyframes remainsDot{
  from{opacity:0;transform:translate(-50%,-50%) scale(.5)}
  to{opacity:.85;transform:translate(-50%,-50%) scale(1)}
}
@keyframes remainsRule{
  from{width:0;opacity:0}
  to{width:min(360px,38vw);opacity:.68}
}
@keyframes remainsFade{
  to{opacity:.62}
}

@media(max-width:760px){
  .epilogue__chapter--remains{
    min-height:92svh !important;
    padding:0 22px !important;
  }
  .remains-transition{
    height:96px;
  }
  .remains-transition__line{
    height:68px;
  }
  .remains-transition__dot{
    top:62px;
  }
  .epilogue__center--remains{
    width:100% !important;
  }
  .remains-copy{
    width:100%;
  }
  .epilogue__chapter--remains .epilogue__line--answer{
    font-size:clamp(46px,13vw,72px) !important;
    line-height:.94 !important;
  }
  .epilogue__chapter--remains .epilogue__ko br{
    display:none;
  }
  .remains-next{
    letter-spacing:.18em;
  }
}

@media(prefers-reduced-motion:reduce){
  .remains-transition__dot,
  .epilogue__chapter--remains .epilogue__line,
  .epilogue__chapter--remains .epilogue__ko,
  .remains-next{
    opacity:1 !important;
    transform:none !important;
    animation:none !important;
  }
  .remains-rule{
    width:min(360px,38vw) !important;
    opacity:.68 !important;
    animation:none !important;
  }
}

/* RC15.47 FINAL */
.epilogue__chapter--final{position:relative!important;min-height:108svh!important;padding:0 5vw!important;display:grid!important;place-items:center!important;overflow:hidden!important;background:radial-gradient(ellipse at 50% 46%,rgba(20,63,96,.15),transparent 34%),linear-gradient(180deg,#06101c 0%,#050c16 48%,#040a12 100%)!important}
.epilogue__final-glow{position:absolute!important;inset:16% 12%!important;background:radial-gradient(circle at 50% 45%,rgba(34,211,238,.075),transparent 42%)!important}
.final-horizon{position:absolute;z-index:1;left:50%;top:50%;width:min(1040px,68vw);height:1px;transform:translate(-50%,90px);background:linear-gradient(90deg,transparent,rgba(34,211,238,.08) 24%,rgba(34,211,238,.22) 50%,rgba(34,211,238,.08) 76%,transparent);opacity:0}
.epilogue__center--final{position:relative!important;z-index:5!important;width:min(1480px,92vw)!important;margin:0 auto!important;text-align:center!important}
.epilogue__mark{display:block!important;margin:0 0 clamp(28px,3.8vh,46px)!important;color:#647b91!important;font-size:clamp(11px,.82vw,15px)!important;font-weight:800!important;letter-spacing:.42em!important}
.epilogue__center--final h2{margin:0!important;color:#f1f7ff!important;font-size:clamp(76px,10.2vw,178px)!important;line-height:.82!important;letter-spacing:-.068em!important;text-shadow:0 18px 64px rgba(0,0,0,.34)}
.epilogue__since{margin:clamp(28px,3.5vh,42px) 0 0!important;color:#67e8f9!important;font-size:clamp(9px,.68vw,12px)!important;font-weight:800!important;letter-spacing:.34em!important}
.epilogue__rule{margin:clamp(50px,6vh,72px) auto clamp(28px,3.5vh,40px)!important}
.epilogue__next{margin:0!important;color:#73899e!important;font-size:clamp(15px,1.35vw,22px)!important;line-height:1.45!important}
.epilogue__replay{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:10px!important;margin-top:clamp(42px,5.5vh,66px)!important;min-width:190px!important;padding:13px 18px!important;border:1px solid rgba(103,232,249,.20)!important;border-radius:999px!important;background:rgba(8,23,38,.32)!important;color:#71899f!important;font:inherit!important;font-size:11px!important;font-weight:700!important;letter-spacing:.10em!important;text-transform:uppercase!important;cursor:pointer!important}
.epilogue__replay i{color:#67e8f9;font-style:normal;font-size:14px}
.epilogue__replay:hover,.epilogue__replay:focus-visible{color:#dceaf7!important;border-color:rgba(103,232,249,.48)!important;background:rgba(13,35,54,.56)!important;outline:none}
.final-signature{position:absolute;z-index:3;left:50%;bottom:30px;margin:0;transform:translateX(-50%);color:#31475c;font-size:9px;font-weight:700;letter-spacing:.25em;white-space:nowrap;opacity:0}
.epilogue__chapter--final.is-visible .final-horizon{animation:finalHorizon 1.5s ease 1.25s forwards}
.epilogue__chapter--final.is-visible .final-signature{animation:finalSignature .8s ease 3.2s forwards}
@keyframes finalHorizon{from{opacity:0;transform:translate(-50%,90px) scaleX(.2)}to{opacity:.72;transform:translate(-50%,90px) scaleX(1)}}
@keyframes finalSignature{to{opacity:.62}}
@media(max-width:760px){.epilogue__chapter--final{min-height:100svh!important;padding:0 22px!important}.epilogue__center--final{width:100%!important}.epilogue__center--final h2{font-size:clamp(66px,18vw,106px)!important;line-height:.86!important}.final-horizon{width:88vw}.final-signature{bottom:20px;font-size:7px;letter-spacing:.18em}}

/* RC15.48 FINAL CLEANUP — production-only scene labels */
[data-scene-label],
.scene-label,
.scene-number,
.production-scene-label {
  display: none !important;
}


/* ============================================================
   RC15.49 — WHAT REMAINS CONNECTOR REMOVED
   Final cleanup: remove the decorative vertical line + dot.
   ============================================================ */

.remains-transition,
.remains-transition__line,
.remains-transition__dot{
  display:none !important;
}

.epilogue__center--remains{
  padding-top:0 !important;
}

.epilogue__center--remains .epilogue__kicker{
  margin-top:0 !important;
}


/* ============================================================
   RC15.50 — FINAL
   Final polish: enlarge OSOF mark in the closing scene only.
   ============================================================ */

.epilogue__chapter--final .epilogue__mark{
  font-size:clamp(18px,1.45vw,28px) !important;
  letter-spacing:.34em !important;
  margin-bottom:clamp(30px,4vh,48px) !important;
  color:#67e8f9 !important;
  opacity:.88 !important;
}
