/* NCDE Chapter Experience Architecture v1.0 */
:root{--ncde-journey-gold:#f2d58c;--ncde-journey-top:50%;--ncde-journey-gap:17px;--ncde-journey-button:68px}
.ncde-journey-exit{position:absolute;z-index:58;left:50%;top:var(--ncde-journey-top);display:flex;flex-direction:column;align-items:center;gap:var(--ncde-journey-gap);width:min(88vw,560px);opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%,28px);transition:opacity .9s ease,transform .9s cubic-bezier(.22,.7,.25,1),visibility .9s}
.ncde-journey-exit.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0)}
.ncde-journey-exit__label{max-width:min(440px,calc(100vw - 48px));color:var(--ncde-journey-gold);font-family:Georgia,'Times New Roman',serif;font-size:clamp(1.18rem,1.7vw,1.55rem);font-weight:400;line-height:1.25;letter-spacing:.10em;text-align:center;text-shadow:0 0 18px rgba(217,180,90,.48);animation:ncdeJourneyLabel 4.5s ease-in-out infinite}
.ncde-journey-exit__button{position:relative;display:grid;place-items:center;width:var(--ncde-journey-button);height:var(--ncde-journey-button);border:1px solid rgba(242,213,140,.66);border-radius:50%;color:var(--ncde-journey-gold);background:rgba(4,31,24,.34);backdrop-filter:blur(15px);box-shadow:inset 0 0 20px rgba(242,213,140,.05),0 0 28px rgba(217,180,90,.12);text-decoration:none;transition:transform .25s ease,border-color .25s ease,background .25s ease}
.ncde-journey-exit__button::before,.ncde-journey-exit__button::after{content:'';position:absolute;inset:-1px;border:1px solid rgba(242,213,140,.32);border-radius:50%;animation:ncdeJourneyPulse 3.2s ease-out infinite}.ncde-journey-exit__button::after{animation-delay:1.6s}
.ncde-journey-exit__button svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}.ncde-journey-exit__button:hover,.ncde-journey-exit__button:focus-visible{transform:scale(1.06);border-color:var(--ncde-journey-gold);background:rgba(7,45,34,.53);outline:none}.ncde-journey-exit__button:active{transform:scale(.94)}
@keyframes ncdeJourneyPulse{0%{transform:scale(1);opacity:.56}100%{transform:scale(1.7);opacity:0}}@keyframes ncdeJourneyLabel{0%,100%{opacity:.76}50%{opacity:1}}
/* Legacy chapter selectors now inherit one visual component. */
.ncde-c01__continue,.ncde-c02__continue{top:var(--ncde-journey-top)!important;gap:var(--ncde-journey-gap)!important}
/* Experience chapter exit state */
.ncde-experience-shell{position:relative;min-height:100vh}.ncde-experience-content{transition:opacity .85s ease,filter .85s ease,transform .85s cubic-bezier(.22,.7,.25,1)}
.ncde-experience-exit{position:fixed;inset:0;z-index:45;overflow:hidden;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .9s ease,visibility .9s}.ncde-experience-exit.is-visible{opacity:1;visibility:visible;pointer-events:auto}
.ncde-experience-exit__background{position:absolute;inset:0}.ncde-experience-exit__background img{width:100%;height:100%;object-fit:cover}.ncde-experience-exit__veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(1,18,13,.24),rgba(1,18,13,.48)),radial-gradient(circle at 50% 48%,rgba(18,72,51,.08),rgba(1,14,10,.38) 76%)}
body.ncde-experience-exiting{overflow:hidden}body.ncde-experience-exiting .ncde-experience-content{opacity:0;filter:blur(8px);transform:scale(.988);pointer-events:none}
@media(max-width:680px){:root{--ncde-journey-button:64px;--ncde-journey-gap:16px}.ncde-journey-exit__label{font-size:clamp(1.16rem,5.1vw,1.45rem);letter-spacing:.09em}}
@media(prefers-reduced-motion:reduce){.ncde-journey-exit,.ncde-experience-content,.ncde-experience-exit{transition-duration:.01ms!important}.ncde-journey-exit__label,.ncde-journey-exit__button::before,.ncde-journey-exit__button::after{animation:none!important}}


/* Sprint 3.4.1 — Story Geometry & Background Lock */
:root{
  --ncde-story-headline-size:clamp(2.65rem,5.15vw,5.85rem);
  --ncde-story-headline-line:1;
  --ncde-story-copy-size:clamp(1.14rem,1.62vw,1.48rem);
  --ncde-story-copy-line:1.64;
  --ncde-story-copy-top:46%;
}

/* The environment canvas is a locked viewport layer. It must never drift with story progress. */
.ncde-c01__background,
.ncde-c02__background{
  position:absolute!important;
  inset:0!important;
  overflow:hidden!important;
  transform:none!important;
  translate:none!important;
  scale:none!important;
  animation:none!important;
  will-change:auto!important;
  contain:paint!important;
}
.ncde-c01__background .ncde-environment-image,
.ncde-c02__background .ncde-environment-image{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  object-fit:cover!important;
  object-position:center center!important;
  transform:none!important;
  translate:none!important;
  scale:none!important;
  animation:none!important;
  transition:none!important;
  will-change:auto!important;
  backface-visibility:hidden!important;
}

/* One fixed header edge for every narrative chapter. */
.ncde-c01__header-mask,
.ncde-c02__header-mask{
  position:absolute!important;
  inset:auto 0 auto 0!important;
  top:var(--ncde-story-header-height,var(--c01-header,84px))!important;
  height:18px!important;
  transform:none!important;
  animation:none!important;
  background:linear-gradient(180deg,rgba(3,28,21,.38),rgba(3,28,21,.12) 48%,rgba(3,28,21,0))!important;
  pointer-events:none!important;
}

/* Shared typography metrics — Chapter 01 is the canonical scale. */
.ncde-c01__headline,
.ncde-c02__headline{
  font-size:var(--ncde-story-headline-size)!important;
  line-height:var(--ncde-story-headline-line)!important;
  letter-spacing:-.032em!important;
  font-weight:400!important;
}
.ncde-c01__narrative,
.ncde-c02__narrative{
  top:var(--ncde-story-copy-top)!important;
  font-size:var(--ncde-story-copy-size)!important;
  line-height:var(--ncde-story-copy-line)!important;
  letter-spacing:.005em!important;
}

/* Every paragraph occupies exactly the same optical anchor. Motion is opacity/blur only. */
.ncde-c01__narrative p,
.ncde-c02__narrative p{
  top:0!important;
  left:0!important;
  margin:0!important;
  transform:translate3d(0,0,0)!important;
  transform-origin:left top!important;
}

@media(max-width:680px){
  :root{
    --ncde-story-headline-size:clamp(1.98rem,8.45vw,3.25rem);
    --ncde-story-headline-line:1.025;
    --ncde-story-copy-size:clamp(1.08rem,4.45vw,1.28rem);
    --ncde-story-copy-line:1.65;
    --ncde-story-copy-top:43.5%;
  }
  .ncde-c01__headline,.ncde-c02__headline{letter-spacing:-.023em!important}
  .ncde-c01__header-mask,.ncde-c02__header-mask{height:16px!important}
}

@media(max-width:390px){
  :root{--ncde-story-headline-size:clamp(1.56rem,6.65vw,2.35rem)}
  .ncde-c01__headline,.ncde-c02__headline{line-height:1.04!important;letter-spacing:-.018em!important}
}

/* Sprint 3.4.3 — Portal Entry Parity & Optical Copy Anchor */

/* Sprint 3.4.4 — Header Seam Elimination
   The fixed enterprise header is already the visual boundary. The legacy
   chapter mask created a second boundary inside the sticky stage and became
   visible whenever the stage changed between pre-sticky and sticky geometry. */
.ncde-c01__header-mask,
.ncde-c02__header-mask{
  display:none!important;
  width:0!important;
  height:0!important;
  opacity:0!important;
  background:none!important;
  filter:none!important;
  box-shadow:none!important;
}
