body{margin:0;background:#0B0A12;}
html{scroll-behavior:smooth;}
a{color:#C4B5FD;}a:hover{color:#E9E3FF;}
@keyframes floaty{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-16px) rotate(1deg)}}
@keyframes pulse{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:.9;transform:scale(1.08)}}
@keyframes blink{0%,49%{opacity:1}50%,100%{opacity:0}}
@keyframes rise{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}
@keyframes drift{0%{transform:translate(0,0)}50%{transform:translate(30px,-20px)}100%{transform:translate(0,0)}}
@keyframes linegrow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.float{animation:floaty 6s ease-in-out infinite;}
.glow{animation:pulse 7s ease-in-out infinite;}
.drift{animation:drift 14s ease-in-out infinite;}
.cursor{animation:blink 1s step-end infinite;}
.intro{animation:rise .9s cubic-bezier(.2,.7,.2,1) both;}
.intro2{animation:rise .9s .15s cubic-bezier(.2,.7,.2,1) both;}
.intro3{animation:rise .9s .3s cubic-bezier(.2,.7,.2,1) both;}
.card{transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease;}
.card:hover{transform:translateY(-6px);border-color:#7C3AED !important;box-shadow:0 0 0 1px #7C3AED,0 18px 50px -12px rgba(139,92,246,.55);}
.btn{transition:transform .2s ease,box-shadow .25s ease,background .25s ease;}
.btn:hover{transform:translateY(-2px);box-shadow:0 10px 34px -6px rgba(139,92,246,.75);}
.navlink{transition:color .2s ease,background .2s ease;}
.navlink:hover{background:rgba(167,139,250,.14);color:#FFFFFF !important;}
.tile{transition:transform .3s ease,border-color .3s ease,box-shadow .3s ease;}
.tile:hover{transform:translateY(-4px) scale(1.03);border-color:#8B5CF6 !important;box-shadow:0 0 30px -6px rgba(139,92,246,.6);}
input:focus,textarea:focus,select:focus{outline:2px solid #8B5CF6;outline-offset:2px;border-color:#8B5CF6 !important;}
@media (max-width:820px){.navlinks{display:none !important;}}
@media (prefers-reduced-motion:reduce){*{animation:none !important;transition:none !important;}}

/* Sections fade in as you scroll (added by js/main.js) */
.js-reveal .reveal{opacity:0;transform:translateY(40px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);}
.js-reveal .reveal.is-visible{opacity:1;transform:none;}