/* Base v3 */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:14px;scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--font);background:var(--bg-0);color:var(--tx-1);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;line-height:1.5}
a{text-decoration:none;color:inherit}
button{font-family:inherit;cursor:pointer;border:none;outline:none;background:none}
input,select,textarea{font-family:inherit;outline:none}
img,svg{display:block;flex-shrink:0}
ul,ol{list-style:none}
/* Scrollbar */
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--br-3);border-radius:var(--r-full)}
::-webkit-scrollbar-thumb:hover{background:var(--br-4)}
*{scrollbar-width:thin;scrollbar-color:var(--br-3) transparent}
/* Animations */
@keyframes fadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeDown{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@keyframes scaleIn{from{opacity:0}to{opacity:1}}
@keyframes pulseDot{0%,100%{opacity:1}50%{opacity:.55}}
@keyframes pulseRing{0%{box-shadow:0 0 0 0 rgba(77,141,246,.5)}100%{box-shadow:0 0 0 10px transparent}}
@keyframes floatBlob{0%,100%{transform:translate(0,0)}45%{transform:translate(18px,-14px)}75%{transform:translate(-12px,10px)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:-200% center}100%{background-position:200% center}}
@keyframes slideRight{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:translateX(0)}}
@keyframes slideLeft{from{opacity:0;transform:translateX(-16px)}to{opacity:1;transform:translateX(0)}}
@keyframes bounceIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
/* Utilities */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.u-mono{font-family:var(--mono)}
.u-g-text{background:var(--g-blue);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.u-g-purple{background:var(--g-purple);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.u-fade-up{animation:fadeUp .4s cubic-bezier(.4,0,.2,1) both}
.u-d1{animation-delay:.06s}.u-d2{animation-delay:.12s}.u-d3{animation-delay:.18s}
.u-d4{animation-delay:.24s}.u-d5{animation-delay:.30s}.u-d6{animation-delay:.36s}
.u-d7{animation-delay:.42s}.u-d8{animation-delay:.48s}
.u-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Focus */
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:var(--r4)}
/* Selection */
::selection{background:var(--blue-a20);color:var(--tx-1)}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}
}

.u-fade-up{opacity:0;transform:translateY(8px);transition:opacity var(--motion-slow),transform var(--motion-slow)}
.u-fade-up.is-visible{opacity:1;transform:none}
