:root{--bg: #0a0a0a;--surface: #111111;--surface2: #181818;--accent: #c8f55a;--accent2: #5af5c8;--text: #f0ede8;--muted: #666;--border: #222}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:DM Mono,monospace;font-size:14px;line-height:1.7;overflow-x:hidden;cursor:none}body:before{content:"";position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");background-size:256px 256px;pointer-events:none;z-index:9000;opacity:.35}.reveal{opacity:0;transform:translateY(30px);transition:opacity .7s cubic-bezier(.4,0,.2,1),transform .7s cubic-bezier(.4,0,.2,1),filter .7s cubic-bezier(.4,0,.2,1)}.reveal.visible{opacity:1;transform:translateY(0)}@keyframes fadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.hero-glow{position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(600px circle at var(--gx, 30%) var(--gy, 40%),rgba(200,245,90,.07),rgba(90,245,200,.03) 40%,transparent 70%);animation:fadeUp 1.2s ease .4s both}@keyframes charIn{0%{opacity:0;transform:translateY(.5em) rotate(8deg);filter:blur(8px)}}@keyframes gridDrift{to{translate:80px 80px}}.reveal{filter:blur(8px)}.reveal.visible{filter:none}.section-title.reveal{-webkit-mask-image:linear-gradient(#000 40%,transparent 60%);mask-image:linear-gradient(#000 40%,transparent 60%);-webkit-mask-size:100% 300%;mask-size:100% 300%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 100%;mask-position:0 100%;transform:translateY(40px);transition:-webkit-mask-position 1.1s cubic-bezier(.77,0,.18,1),mask-position 1.1s cubic-bezier(.77,0,.18,1),transform 1s cubic-bezier(.77,0,.18,1),opacity .6s ease,filter .8s ease}.section-title.reveal.visible{-webkit-mask-position:0 0;mask-position:0 0;transform:translateY(0)}.section-label:after{transform:scaleX(0);transform-origin:left;transition:transform 1s cubic-bezier(.2,.8,.2,1) .3s}.section-label.visible:after{transform:scaleX(1)}.project-card:after,.skill-card:after,.competency-card:after,.edu-card:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(420px circle at var(--mx, 50%) var(--my, 50%),rgba(200,245,90,.09),transparent 45%);opacity:0;transition:opacity .4s}.project-card:hover:after,.skill-card:hover:after,.competency-card:hover:after,.edu-card:hover:after{opacity:1}.project-card:hover,.skill-card:hover{will-change:transform}.project-card__thumbnail:after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(240,237,232,.12) 50%,transparent 70%);transform:translate(-100%);pointer-events:none}.project-card:hover .project-card__thumbnail:after{transform:translate(100%);transition:transform .9s cubic-bezier(.2,.8,.2,1)}.project-card .badge{transition:border-color .2s,color .2s,transform .3s cubic-bezier(.2,.8,.2,1)}.project-card .badge:hover{transform:translateY(-2px)}.skill-icon{transition:transform .5s cubic-bezier(.2,.8,.2,1),filter .5s}.skill-card:hover .skill-icon{transform:translateY(-4px) rotate(-8deg) scale(1.1);filter:drop-shadow(0 6px 16px rgba(200,245,90,.25))}.skill-bar-fill{position:relative}.skill-bar-fill.animated:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent);transform:translate(-100%);animation:barShimmer 3s ease-in-out 1.6s infinite}@keyframes barShimmer{60%,to{transform:translate(100%)}}.competency-card .competency-item{transition:color .2s,transform .3s cubic-bezier(.2,.8,.2,1)}.competency-card .competency-item:hover{color:var(--text);transform:translate(4px)}.exp-timeline:after{content:"";position:absolute;left:0;top:8px;bottom:0;width:1px;background:var(--accent);box-shadow:0 0 10px #c8f55ab3;transform:scaleY(var(--tl, 0));transform-origin:top}.exp-item.visible:before{animation:dotPulse 2.4s ease-out infinite}@keyframes dotPulse{0%{box-shadow:0 0 #c8f55a73}70%{box-shadow:0 0 0 10px #c8f55a00}to{box-shadow:0 0 #c8f55a00}}.exp-item .exp-list li{opacity:0;transform:translate(-12px);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.2,1)}.exp-item.visible .exp-list li{opacity:1;transform:none}.exp-item.visible .exp-list li:nth-child(1){transition-delay:.25s}.exp-item.visible .exp-list li:nth-child(2){transition-delay:.32s}.exp-item.visible .exp-list li:nth-child(3){transition-delay:.39s}.exp-item.visible .exp-list li:nth-child(4){transition-delay:.46s}.exp-item.visible .exp-list li:nth-child(5){transition-delay:.53s}.exp-item.visible .exp-list li:nth-child(6){transition-delay:.6s}.exp-item.visible .exp-list li:nth-child(n+7){transition-delay:.67s}.contact-big>div{clip-path:inset(0 0 100% 0);transform:translateY(50%);transition:clip-path 1s cubic-bezier(.77,0,.18,1),transform 1s cubic-bezier(.77,0,.18,1)}.contact-big>div:nth-child(2){transition-delay:.15s}.contact-big.visible>div{clip-path:inset(-10% -10% -10% -10%);transform:none}.contact-big .outline{transition:color .4s,-webkit-text-stroke-color .4s}.contact-big:hover .outline{color:var(--accent);-webkit-text-stroke-color:var(--accent)}.contact-link{position:relative;overflow:hidden}.contact-link:before{content:"";position:absolute;inset:0;background:var(--accent);opacity:.06;transform:scaleX(0);transform-origin:right;transition:transform .5s cubic-bezier(.2,.8,.2,1)}.contact-link:hover:before{transform:scaleX(1);transform-origin:left}.btn-primary{position:relative;overflow:hidden}.btn-primary:after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translate(-100%)}.btn-primary:hover:after{transform:translate(100%);transition:transform .7s ease}.modal-backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.modal-backdrop .modal{animation:modalIn .55s cubic-bezier(.16,1,.3,1)}@keyframes modalIn{0%{opacity:0;transform:translateY(40px) scale(.96);filter:blur(6px)}}.carousel__image{animation:slideFromNext .55s cubic-bezier(.16,1,.3,1)}.carousel__image.from-prev{animation-name:slideFromPrev}@keyframes slideFromNext{0%{opacity:0;transform:translate(48px) scale(1.02);filter:blur(4px)}}@keyframes slideFromPrev{0%{opacity:0;transform:translate(-48px) scale(1.02);filter:blur(4px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}html{scroll-behavior:auto}}
