/* Page transition: a dark tint-film panel with a cyan leading edge sweeps up over the page on leave and lifts off on
   arrival. Shared by the homepage and every inner page (pt.js). html.pt-in = we arrived through a transition: a CSS
   cover holds the frame until pt.js takes over (and drops itself after 2.5s if JS never runs). */
.pt{position:fixed;inset:0;z-index:300;pointer-events:none;visibility:hidden}
.pt.on{visibility:visible;pointer-events:auto}
.pt-glass{position:absolute;inset:0;clip-path:inset(100% 0 0 0);
  background:radial-gradient(70% 60% at 50% 50%,rgba(20,44,50,.55),rgba(5,6,7,0) 70%),linear-gradient(180deg,#070c0e,#050607 60%,#071114)}
.pt-glass::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(100deg,rgba(255,255,255,.018) 0 2px,transparent 2px 9px);mix-blend-mode:screen}
.pt-edge{position:absolute;left:0;right:0;top:0;height:2px;margin-top:-1px;background:linear-gradient(90deg,rgba(63,230,240,.2),#bff9fd 50%,rgba(63,230,240,.2));
  box-shadow:0 0 16px #3fe6f0,0 0 60px rgba(63,230,240,.55);transform:translateY(100vh);opacity:0}
.pt.on .pt-edge{opacity:1}
.pt-mark{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:12px;color:#fff;text-align:center}
.pt-mark .pt-logo{display:block;height:72px;width:auto;filter:drop-shadow(0 0 .7px rgba(255,255,255,.75)) drop-shadow(0 0 8px rgba(63,230,240,.25))}
.pt-mark b{font:800 22px/1 "Inter Tight",system-ui,sans-serif;letter-spacing:-.02em}
.pt-mark small{font:500 10px/1 "JB Mono",ui-monospace,monospace;letter-spacing:.24em;color:#3fe6f0;opacity:.85}
html.pt-in::after{content:"";position:fixed;inset:0;z-index:300;background:linear-gradient(180deg,#070c0e,#050607 60%,#071114);animation:ptfail 0s 2.5s forwards}
@keyframes ptfail{to{visibility:hidden;opacity:0}}
