*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}
body{background:var(--black);color:var(--text);font-family:var(--ff-body);font-size:14px;line-height:1.6;overflow-x:hidden;min-height:100vh}
a{text-decoration:none;color:inherit}
button,input,select,textarea{font-family:inherit}
img{display:block;max-width:100%}

body::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:9998;
background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)' opacity='0.025'/%3E%3C/svg%3E");opacity:.5}

.topline{height:2px;background:linear-gradient(90deg,var(--lime) 0%,rgba(200,240,0,.3) 100%);position:sticky;top:0;z-index:1001}
.bottomline{height:2px;background:linear-gradient(90deg,var(--lime) 0%,rgba(200,240,0,.3) 100%)}

.reveal{opacity:0;transform:translateY(28px);transition:opacity var(--transition-slow),transform var(--transition-slow)}
.reveal.in{opacity:1;transform:translateY(0)}
.rd1{transition-delay:.08s}.rd2{transition-delay:.16s}.rd3{transition-delay:.24s}

@keyframes fadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes orbFloat{0%,100%{transform:translate(0,0)}50%{transform:translate(24px,16px)}}
@keyframes scrollPulse{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
