.hb-intro{--hb-veil:#151919;--hb-ink:#fff;--hb-flight:760ms;--hb-stagger:180ms;--hb-settle:1100ms;--hb-word:1550ms;--hb-blur:6px;position:fixed;inset:0;z-index:10001;display:grid;place-items:center;background:var(--hb-veil);color:var(--hb-ink);pointer-events:none;isolation:isolate}
.hb-intro[data-theme="paper"]{--hb-veil:#f7f8f5;--hb-ink:#151919}
.hb-intro-card{display:flex;flex-direction:column;align-items:center}
.hb-intro svg{display:block;width:var(--hb-size,120px);height:auto;overflow:visible}
.hb-intro-flight{isolation:isolate}
.hb-intro-plane{mix-blend-mode:multiply;transform-box:fill-box;transform-origin:center;animation:hb-intro-fly var(--hb-flight) cubic-bezier(.18,1.08,.3,1) both}
.hb-intro-plane-0{--hb-x:-95px;--hb-y:80px;--hb-r:-10deg;--hb-scale:.85}
.hb-intro-plane-1{--hb-x:0px;--hb-y:115px;--hb-r:7deg;--hb-scale:1.3;animation-delay:var(--hb-stagger)}
.hb-intro-plane-2{--hb-x:95px;--hb-y:-80px;--hb-r:-10deg;--hb-scale:.9;animation-delay:calc(var(--hb-stagger)*2)}
.hb-intro-settle{transform-origin:107.5px 94px;animation:hb-intro-land 420ms var(--hb-settle) both}
.hb-intro-exact{animation:hb-intro-color 260ms calc(var(--hb-settle) + 80ms) both}
.hb-intro-sweep{opacity:0;animation:hb-intro-sheen 220ms calc(var(--hb-settle) + 180ms) both}
.hb-intro-word{margin-top:24px;font-family:"DM Sans",sans-serif;font-size:11px;font-weight:500;letter-spacing:.28em;padding-left:.28em;line-height:1.5}
.hb-intro-word span{display:inline-block;animation:hb-intro-letter 220ms calc(var(--hb-word) + var(--hb-letter)*32ms) both}
.hb-intro-progress{position:relative;width:112px;height:1px;margin-top:18px;background:color-mix(in srgb,var(--hb-ink) 12%,transparent);animation:hb-intro-color 180ms var(--hb-word) both}
.hb-intro-progress::after{content:"";position:absolute;inset:0;background:#0090f8;transform:scaleX(var(--hb-progress,0));transform-origin:left;transition:transform 120ms ease}
.hb-intro[data-exit]{animation:hb-intro-out 380ms ease both}
.hb-intro[data-exit] .hb-intro-card{animation:hb-intro-away 380ms ease both}
@keyframes hb-intro-fly{from{opacity:0;transform:translate(var(--hb-x),var(--hb-y)) rotate(var(--hb-r)) scale(var(--hb-scale));filter:blur(var(--hb-blur))}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes hb-intro-land{0%,100%{transform:scale(1)}40%{transform:scale(1.015)}70%{transform:scale(.992)}}
@keyframes hb-intro-color{from{opacity:0}to{opacity:1}}
@keyframes hb-intro-letter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes hb-intro-sheen{0%{opacity:0;transform:translateX(0)}45%{opacity:.18}100%{opacity:0;transform:translateX(210px)}}
@keyframes hb-intro-out{to{opacity:0}}
@keyframes hb-intro-away{to{opacity:0;transform:scale(.96)}}
@media(max-width:900px){.hb-intro{--hb-flight:560ms;--hb-stagger:120ms;--hb-settle:800ms;--hb-word:1100ms;--hb-blur:0px}}
.hb-intro[data-quiet] *{animation:none!important;transition:none!important}.hb-intro[data-quiet] .hb-intro-sweep{opacity:0}.hb-intro[data-quiet][data-exit]{animation-duration:100ms}
html[data-motion="paused"] .hb-intro *{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){.hb-intro *{animation:none!important;transition:none!important}.hb-intro[data-exit]{animation-duration:100ms}}
/* App pre-hydration veil: the head script sets html[data-hb-intro="pending"] on a first visit; the React wrapper clears it once the intro is mounted. */
html[data-hb-intro="pending"]::before{content:"";position:fixed;inset:0;z-index:10000;background:#f7f8f5}
