/* Copy stays readable while the illustrations carry the longer motion. */
:root {--motion-arrive:cubic-bezier(.3,0,.25,1);}
.governance-controls[hidden] {display:none;}
.motion-pending[data-motion="hero"] .hero-mark-step {opacity:0;}
.motion-entered[data-motion="hero"] .hero-mark-step {animation:mark-step-arrival 600ms var(--motion-arrive) var(--mark-delay) both;}
.motion-entered[data-motion="hero"] h1,.motion-entered[data-motion="hero"]>p {animation:text-arrival 480ms var(--motion-arrive) both;}
/* Match the waiting tone and scale to the first frame; keep the surface opaque. */
.motion-pending[data-motion="governance"] .detail-33 {filter:brightness(.7);transform:scale(.96);}
.motion-entered[data-motion="governance"] .detail-33 {animation:boundary-arrival 800ms var(--motion-arrive) both;}
.motion-pending[data-motion="governance"] .detail-31 {opacity:.88;}
.motion-entered[data-motion="governance"] .detail-31 {animation:governance-arrival 480ms var(--motion-arrive) both;}
.provenance-line {overflow:visible;}
[data-motion="provenance"] {--evidence-duration:800ms;--evidence-stagger:100ms;}
/* Keep the dot field steady throughout entrance and replay; only draw its connections. */
.motion-pending[data-motion="provenance"] .provenance-line path {stroke-dasharray:1;stroke-dashoffset:1;}
.motion-entered[data-motion="provenance"] .provenance-line path {stroke-dasharray:1;animation:evidence-connect var(--evidence-duration) var(--motion-arrive) both;}
.motion-entered[data-motion="provenance"] .detail-93 path,
.motion-entered[data-motion="provenance"] [data-connection="2"] {animation-delay:var(--evidence-stagger);}
.motion-entered[data-motion="provenance"] .detail-106 path,
.motion-entered[data-motion="provenance"] [data-connection="0"] {animation-delay:calc(var(--evidence-stagger) * 2);}
.site-nav a,.site-nav button,.ending-request,.site-footer a {transition:color 180ms ease,background-color 180ms ease,border-color 180ms ease,opacity 180ms ease;}
/* These links use the animated pseudo-element as their only underline. */
.site-nav a.layer-1-978,.site-nav a.layer-1-979 {text-decoration:none;}
.site-nav .layer-1-978 p,.site-nav .layer-1-979 p {position:relative;}
.site-nav .layer-1-978 p::after,.site-nav .layer-1-979 p::after {content:"";position:absolute;left:0;right:0;bottom:-5px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform 240ms var(--motion-arrive);}
.site-nav a:hover p::after,.site-nav a:focus-visible p::after {transform:scaleX(1);}
.governance-controls button {transition:none;}
.governance-controls button:focus-visible {outline:2px solid currentColor;outline-offset:3px;}
.mobile-navigation:not([hidden]) {animation:menu-arrival 220ms var(--motion-arrive) both;}
dialog[open] {animation:menu-arrival 240ms var(--motion-arrive) both;}
dialog[open]::backdrop {animation:reading-arrival 180ms ease both;}
@keyframes mark-step-arrival {from{opacity:0}to{opacity:1}}
@keyframes reading-arrival {from{opacity:.25}to{opacity:1}}
@keyframes governance-arrival {from{opacity:.88}to{opacity:1}}
@keyframes boundary-arrival {from{filter:brightness(.7);transform:scale(.96)}to{filter:brightness(1);transform:scale(1)}}
@keyframes evidence-connect {from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes menu-arrival {from{opacity:0;translate:0 -6px}to{opacity:1;translate:0 0}}

/* One brief entrance, with no hidden state or stagger between title and body. */
.motion-entered[data-motion="copy"]>:is(p,h2),.motion-entered[data-motion="closing"]>:is(p,h2,button),
.motion-entered[data-motion="details"]>:is(.feature-title,.feature-body){animation:text-arrival 280ms var(--motion-arrive) both;}
@keyframes text-arrival{from{opacity:.85;translate:0 4px}to{opacity:1;translate:0 0}}

@media (prefers-reduced-motion:reduce) {
  [data-motion],[data-motion] *,.mobile-navigation,dialog,dialog::backdrop {animation:none!important;}
  [data-motion],[data-motion] :is(p,h1,h2,h3,button),.hero-mark-step,
  .governance-art :is(.detail-33,.detail-31) {opacity:1!important;}
  .governance-art .detail-33 {filter:none!important;transform:none!important;}
  [data-motion] :is(p,h1,h2,h3,button) {translate:none!important;}
  .provenance-line path {stroke-dashoffset:0!important;}
}

/* Brand links return to the top without a decorative underline. */
.site-nav a.layer-20-110,.site-nav a.layer-49-12{text-decoration:none;}
