/* Motion has a visible resting state. JavaScript supplies finite entrances;
   content never depends on an animation or observer to become readable. */
:root{--motion-spring:cubic-bezier(.16,1,.3,1);--motion-glide:cubic-bezier(.25,.75,.25,1)}
.js-ready .reveal,.js-ready .reveal.visible{opacity:1;transform:none;transition:none}
.site-stagger-group.visible>.site-stagger-item{animation:none}
.section-kicker.reveal:before{transition:transform 1100ms var(--motion-spring);opacity:.5}
.reading-progress{transition:transform 100ms linear}
.desktop-nav a:after{transition:width 380ms var(--motion-spring)}
.brand svg{transition:transform 550ms var(--motion-spring)}
.theme-toggle svg{transition:transform 500ms var(--motion-spring)}
.theme-toggle:active svg{transform:rotate(45deg) scale(.9)}
.mobile-nav:not([hidden]){animation:orvia-menu-in 340ms var(--motion-spring) both}
.mobile-nav a{transition:color 180ms,padding-left 320ms var(--motion-spring)}
.button{transition:transform 380ms var(--motion-spring),background 260ms,border-color 260ms,box-shadow 380ms var(--motion-spring)}
.button:before{content:'';position:absolute;inset:-60% -30%;z-index:-1;pointer-events:none;background:linear-gradient(110deg,transparent 34%,#ffffff22 48%,transparent 62%);transform:translateX(-110%);transition:transform 780ms var(--motion-glide)}
.button>span,.inline-link>span,.text-link>span,.header-cta>span{display:inline-block;transition:transform 380ms var(--motion-spring)}
.button:focus-visible:before,.button:hover:before{transform:translateX(110%)}
.inline-link,.text-link,.header-cta{transition:color 220ms}
.inline-link:focus-visible>span,.button:focus-visible>span{transform:translate(3px,-3px)}
.text-link:focus-visible>span{transform:translateX(4px)}
.evidence-card{position:relative;isolation:isolate;transition:transform 600ms var(--motion-spring),box-shadow 600ms var(--motion-spring),border-color 300ms,background 300ms}
.evidence-card:after{content:'';position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--gold);pointer-events:none;transform:scaleX(0);transform-origin:left;transition:transform 650ms var(--motion-spring)}
.evidence-card:focus-visible:after,.evidence-card:hover:after{transform:scaleX(1)}
.evidence-top>span:last-child{display:inline-block;transition:transform 400ms var(--motion-spring)}
.paper-art{transition:transform 750ms var(--motion-spring),opacity 450ms}
.art-wave i{transition:transform 650ms var(--motion-spring),border-color 450ms}
.art-wave i:nth-child(2),.art-wave i:nth-child(4){transition-delay:45ms}
.art-wave i:nth-child(3){transition-delay:90ms}
.art-dots circle{transform-box:fill-box;transform-origin:center;transition:transform 650ms var(--motion-spring)}
.chain-node,.stage-node{transition:transform 450ms var(--motion-spring),background 300ms,border-color 300ms,box-shadow 450ms var(--motion-spring)}
.chain-node svg{transition:transform 500ms var(--motion-spring)}
.chain-steps button.active .chain-node svg{transform:scale(1.08)}
.scale-tabs button,.utility-tabs button,.heart-study-tabs button,.segmented button{transition:background 300ms,color 240ms,box-shadow 350ms}
.scale-tabs button.active:before,.utility-tabs button[aria-selected="true"]:before{animation:orvia-tab-in 550ms var(--motion-spring) both}
.scale-tabs .tab-arrow,.utility-tabs button>span:last-child{transition:opacity 250ms,transform 450ms var(--motion-spring)}
.utility-tabs button[aria-selected="true"]>span:last-child{transform:translate(2px,-2px)}
.artifact-core{transition:transform 650ms var(--motion-spring),box-shadow 500ms}
.artifact-orbit{transition:border-color 400ms,opacity 400ms}
.milestone .detail-plus{transition:transform 450ms var(--motion-spring),border-color 250ms,background 250ms}
.milestone-body,.token-faq details[open] p{animation:orvia-disclosure-in 400ms var(--motion-spring)}
.token-faq summary:after{transition:transform 400ms var(--motion-spring),color 250ms}
.record-sheet{transition:transform 700ms var(--motion-spring),box-shadow 500ms}
/* Keep the SVG's words stationary; only decorative orbit particles circulate. */
.token-page .token-field-center{animation:none;transform:none}
.token-node .token-node-ring{transition:opacity 400ms,stroke-width 400ms}
.integrity-grid article,.method-grid li{transition:border-color 350ms,background 350ms}
.footer-top a,.footer-bottom a{transition:color 240ms}
@media(hover:hover) and (pointer:fine){
  .brand:hover svg{transform:rotate(-12deg)}
  .theme-toggle:hover svg{transform:rotate(24deg)}
  .button:hover{transform:translateY(-3px);box-shadow:0 9px 22px #15241b12}
  .button:hover>span,.inline-link:hover>span,.header-cta:hover>span{transform:translate(4px,-4px)}
  .text-link:hover>span{transform:translateX(5px)}
  .evidence-card:hover{transform:translateY(-8px);box-shadow:0 18px 40px #20301e0e}
  html[data-theme="dark"] .evidence-card:hover{box-shadow:0 18px 40px #00000026}
  .evidence-card:hover .paper-art{transform:translateY(-3px) scale(1.045);opacity:1}
  .evidence-card:hover .art-wave i{transform:rotate(-9deg);border-color:var(--gold)}
  .evidence-card:hover .art-dots circle:nth-of-type(even){transform:scale(1.13)}
  .evidence-card:hover .evidence-top>span:last-child{transform:translate(4px,-4px)}
  .chain-steps button:hover .chain-node,.queue-stages button:hover .stage-node{transform:translateY(-3px)}
  .chain-artifact:hover .artifact-core{transform:translate(-50%,-50%) rotate(-5deg);box-shadow:0 14px 25px #26321b10}
  .chain-artifact:hover .artifact-orbit{border-color:var(--gold);opacity:.7}
  .queue-explorer:hover .record-sheet{transform:rotate(-1deg) translateY(-5px)}
  .token-field:hover .token-node-ring{opacity:.8;stroke-width:1.1}
  .integrity-grid article:hover{border-color:var(--gold)}
}
.button:active{transform:translateY(0);box-shadow:none}
@keyframes orvia-menu-in{from{opacity:.05;transform:translateY(-12px)}to{opacity:1;transform:none}}
@keyframes orvia-tab-in{from{opacity:.4;transform:scaleX(.12)}to{opacity:1;transform:scaleX(1)}}
@keyframes orvia-disclosure-in{from{opacity:.3;transform:translateY(-6px)}to{opacity:1;transform:none}}
/* Pausing cancels JavaScript effects too. These rules cover decorative CSS,
   including effects inherited from page-specific stylesheets. */
html.motion-paused *,html.motion-paused *:before,html.motion-paused *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html.motion-paused .reveal{opacity:1!important;transform:none!important}
html.motion-paused :is(.button,.evidence-card,.paper-art,.chain-node,.stage-node,.brand svg,.theme-toggle svg){transform:none!important}
html.motion-paused .button:before{display:none}
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .js-ready .reveal{opacity:1!important;transform:none!important}
  :is(.button,.evidence-card,.paper-art,.chain-node,.stage-node,.brand svg,.theme-toggle svg){transform:none!important}
  .button:before{display:none}
  .section-kicker.reveal:before{transform:none}
}
