/* The public ending is a native in-page story stage, never a fixed overlay or
   scroll lock. The existing story controller supplies geometry and progress. */
.projects-page .projects-one-more.story-scene {
  position: relative; overflow: clip; isolation: isolate;
  background: #080b10; color: #f1f2f5;
}
.projects-one-more .omt-stage { display: block; padding: 0; min-height: 100svh; }
.omt-stage::before {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(ellipse at 50% 45%,#080b10 0%,#080b10 18%,transparent 74%);
  opacity: var(--omt-veil,1);
}
.omt-atmosphere, .omt-light-drift { position: absolute; inset: 0; pointer-events: none; }
.omt-atmosphere {
  /* Continue the archive's black through the join. This static feather stays
     in the stage while the existing spectral fields drift beneath it. */
  -webkit-mask-image: linear-gradient(180deg,transparent 0,rgba(0,0,0,.1) 4svh,rgba(0,0,0,.35) 10svh,rgba(0,0,0,.65) 18svh,rgba(0,0,0,.9) 26svh,#000 32svh);
  mask-image: linear-gradient(180deg,transparent 0,rgba(0,0,0,.1) 4svh,rgba(0,0,0,.35) 10svh,rgba(0,0,0,.65) 18svh,rgba(0,0,0,.9) 26svh,#000 32svh);
}
.omt-light-drift { transform: translate3d(var(--omt-x,0px), var(--omt-y,0px), 0); }
/* East leads immediately; north and west support from separate edges. Their
   offscreen cores keep the center dark without forming a complete border.
   Four sparse radial caustic fields, each with its own arc and breath. The
   gradients are static textures: only transform / opacity animate. No border. */
.omt-light { position: absolute; display: block; }
.projects-one-more:not([data-paused]) .omt-light { will-change: transform, opacity; }
.omt-light--east {
  right: -22%; top: 10%; width: 49%; height: 105%;
  background: radial-gradient(ellipse at 58% 48%, rgba(63,123,255,.75), rgba(52,38,163,.42) 24%, rgba(103,53,175,.13) 43%, transparent 65%);
  animation: omt-east 19s ease-in-out infinite;
}
.omt-light--north {
  left: 5%; top: -43%; width: 91%; height: 77%;
  background: radial-gradient(ellipse at 48% 54%, rgba(186,101,172,.53), rgba(91,142,211,.24) 24%, rgba(35,102,148,.11) 40%, transparent 61%);
  animation: omt-north 23s ease-in-out infinite;
}
.omt-light--west {
  left: -27%; bottom: -12%; width: 58%; height: 73%;
  background: radial-gradient(ellipse at 46% 64%, rgba(199,138,77,.32), rgba(155,96,136,.22) 20%, rgba(101,80,147,.10) 37%, transparent 60%);
  animation: omt-west 17s ease-in-out infinite;
}
.omt-light--south {
  left: 16%; bottom: -60%; width: 91%; height: 95%;
  background: radial-gradient(ellipse at 52% 49%, rgba(37,159,187,.37), rgba(66,102,186,.2) 23%, rgba(81,57,155,.08) 37%, transparent 61%);
  animation: omt-south 21s ease-in-out infinite;
}
@keyframes omt-east {
  0%,100% { transform: translate3d(5%,8%,0) rotate(-13deg); opacity: .7; }
  44% { transform: translate3d(-11%,-14%,0) rotate(7deg); opacity: 1; }
  78% { transform: translate3d(13%,-5%,0) rotate(-6deg); opacity: .35; }
}
@keyframes omt-north {
  0%,100% { transform: translate3d(-8%,5%,0) rotate(-6deg); opacity: .58; }
  36% { transform: translate3d(13%,13%,0) rotate(8deg); opacity: .78; }
  72% { transform: translate3d(3%,-5%,0) rotate(0deg); opacity: .25; }
}
@keyframes omt-west {
  0%,100% { transform: translate3d(3%,0%,0) rotate(8deg); opacity: .50; }
  58% { transform: translate3d(16%,-10%,0) rotate(-8deg); opacity: .75; }
}
@keyframes omt-south {
  0%,100% { transform: translate3d(10%,6%,0) rotate(4deg); opacity: .4; }
  53% { transform: translate3d(-17%,-7%,0) rotate(-7deg); opacity: .8; }
}
.projects-one-more[data-paused] .omt-light { animation-play-state: paused; }
.omt-center {
  position: absolute; z-index: 2; inset: var(--header-band,86px) 24px 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; padding-bottom: calc(var(--header-band,86px) * .6);
}
.omt-title {
  margin: 0; font-size: clamp(2.4rem,6vw,5.4rem); line-height: 1.15;
  /* Locale changes must not replace the font metrics of this English title. */
  font-family: Inter, "SF Pro Text", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  font-weight: 500; letter-spacing: -.055em; outline: none;
}
@media (max-width: 768px) {
  .omt-light--south { display: none; }
  .omt-light--west { width: 68%; height: 64%; left: -36%; bottom: -12%; }
  .omt-light--east { width: 82%; right: -47%; }
  .omt-light--north { width: 155%; left: -35%; }
}
@media (prefers-reduced-motion: reduce) {
  .projects-one-more:not([data-paused]) .omt-light, .omt-light { animation: none; will-change: auto; }
  .omt-light-drift { transform: none; }
  .omt-stage::before { opacity: 0; }
}

.omt-word { display: inline-block; }

