/* ── GNOIA · the shared motion layer ── */
@view-transition { navigation: auto; }
::view-transition-old(root){animation:vt-out .42s ease both}
::view-transition-new(root){animation:vt-in .55s ease both}
@keyframes vt-out{to{opacity:0}}
@keyframes vt-in{from{opacity:0}}
html.leaving main,html.leaving footer,html.leaving #stage,html.leaving #hint{opacity:0 !important;transform:translateY(8px);transition:opacity .34s ease,transform .34s ease}
main,footer{transition:opacity .34s ease,transform .34s ease}
/* staged entrance: above-the-fold rises are choreographed by --i */
.rise{transition-delay:calc(var(--i,0) * 70ms)}
/* hairlines draw themselves */
.mv::after{transform-origin:left;transform:scaleX(0);transition:transform 1.1s cubic-bezier(.2,.8,.2,1) .15s}
.mv.in::after{transform:scaleX(1)}
.head{position:relative}
.head::after{content:"";position:absolute;left:0;right:0;bottom:-26px;height:1px;background:rgba(242,238,227,.14);transform-origin:left;transform:scaleX(0);transition:transform 1.2s cubic-bezier(.2,.8,.2,1) .3s}
.head.in::after{transform:scaleX(1)}
/* nav links: an underline that draws in */
.links a{position:relative}
.links a::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.links a:hover::after{transform:scaleX(1)}
.links a.here::after{display:none}
/* the cursor: a soft dot that widens on anything you can touch (pointer devices only) */
@media (pointer:fine){
  html.cur *{cursor:none !important}
  #cur{position:fixed;left:0;top:0;width:8px;height:8px;border-radius:50%;background:#f2eee7;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);mix-blend-mode:difference;transition:width .28s cubic-bezier(.2,.8,.2,1),height .28s cubic-bezier(.2,.8,.2,1),background .28s,border-color .28s;box-shadow:0 0 12px rgba(242,238,227,.45)}
  #cur.hot{width:34px;height:34px;background:transparent;border:1px solid #f2eee7;box-shadow:none}
  #cur.press{width:22px;height:22px}
}
/* end marks arrive letter-soft */
.end{opacity:0;transition:opacity 1.2s ease}
.end.in{opacity:1}
@media (prefers-reduced-motion: reduce){.rise{transition-delay:0s}.mv::after,.head::after{transform:none;transition:none}html.leaving main,html.leaving footer{opacity:1 !important;transform:none}}
