/* NICO HUA — scoped animation candidate. No layout or scroll-navigation rules. */
html:root .score-shell[data-page="home"] .intro-scene [data-nh-line-motion="handoff"] {
  --handoff: var(--nh-line-progress, 0);
}
html:root .score-shell[data-page="home"] .intro-scene [data-nh-line-motion="arrival"] {
  --arrival: 1;
  opacity: calc(1 - var(--nh-line-progress, 0));
}
html:root .score-shell[data-page="home"] .intro-scene [data-nh-line-motion] > :is(i,span) {
  /* The RAF curve already eases the line. Do not add the legacy 120ms lag. */
  transition: none;
}
html:root .score-shell[data-page="webdesign"] .signature-web .nh-web-trace[data-nh-trace-motion] path {
  stroke-dasharray: 1;
  stroke-dashoffset: var(--nh-trace-offset, 1);
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: none;
}
/* The legacy scroll observer still owns the stage. Only this child owns the
   phase animation, including the point at which its hidden planes are removed. */
html:root .score-shell[data-page="prozess"] .pe-live-stage .pe-assembly[data-nh-phase-motion] .pe-model {
  transform-style: preserve-3d;
}
html:root .score-shell[data-page="prozess"] .pe-live-stage .pe-assembly[data-nh-phase-motion] :is(.pe-layer--base,.pe-layer--grid,.pe-layer--type) {
  visibility: visible;
}
html:root .score-shell[data-page="prozess"] .pe-live-stage .pe-assembly[data-nh-phase-motion][data-nh-surface-complete="true"] .pe-model {
  transform-style: flat;
}
html:root .score-shell[data-page="prozess"] .pe-live-stage .pe-assembly[data-nh-phase-motion][data-nh-surface-complete="true"] :is(.pe-layer--base,.pe-layer--grid,.pe-layer--type) {
  visibility: hidden;
}
