@import url(https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Share+Tech+Mono&display=swap);html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}*,:after,:before{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#fff;font-family:Outfit,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;margin:0;text-rendering:optimizeLegibility}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.education,.education__coursework,.education__degree,.education__header,.education__pill,.education__school,.section,.stock-item,.ticker-row,.ticker-section,.ticker-status,.ticker-track,.ticker-wrap,h1,h2,h3,h4,h5,h6,section{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;box-shadow:none!important;filter:none!important;text-shadow:none!important}.education:after,.education:before,.education__header:after,.education__header:before,.ticker-section:after,.ticker-section:before,.ticker-status:after,.ticker-status:before,section:after,section:before{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important;filter:none!important}*,:after,:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.about__heading-line,.btn,.contact__email,.contact__phone,.education__school,.hero__label,.hero__name,.hero__title,.nav__link,.stock-price,.stock-symbol,h1,h2,h3,h4,h5,h6{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;-webkit-backface-visibility:hidden;filter:none!important;text-rendering:optimizeLegibility;text-shadow:none;transform:translateZ(0)}:root{--bg:#050505;--bg-elevated:#080808;--bg-contrast:#0f0f0f;--text-primary:#f8f8f8;--text-secondary:#c3c3c3;--text-muted:#8a8a8a;--border:#ffffff14;--accent:#ffffff1a;--radius:10px;--radius-lg:16px;--font:"Outfit",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--ease:cubic-bezier(0.4,0,0.2,1);--ease-out:cubic-bezier(0.22,1,0.36,1);--transition:0.22s var(--ease);--transition-slow:0.55s var(--ease-out);--glow:none;--shadow-soft:none;--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-5:40px;--space-6:48px;--space-7:56px;--space-8:64px;--space-9:72px;--space-10:80px;--space-11:88px;--space-12:96px;--space-section:120px;--space-section-mobile:80px;--max-width:1100px;--anim-duration:0.7s;--anim-duration-fast:0.5s;--anim-duration-slow:0.9s;--anim-ease:cubic-bezier(0.4,0,0.2,1);--anim-ease-bounce:cubic-bezier(0.34,1.56,0.64,1);--anim-stagger:0.12s;--ticker-font:"Share Tech Mono","SFMono-Regular",Menlo,Monaco,Consolas,monospace}.ticker-section{margin-top:72px;padding:0 32px;padding:0 var(--space-4)}.ticker-status{font-family:Share Tech Mono,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-family:var(--ticker-font);gap:16px;margin-bottom:10px}.ticker-live,.ticker-status{align-items:center;display:flex}.ticker-live{color:#22c55e;font-size:11px;font-weight:600;gap:6px;letter-spacing:1.5px;text-transform:uppercase}.ticker-live-dot{animation:livePulse 1.5s ease-in-out infinite;background:#22c55e;border-radius:50%;height:6px;width:6px}@keyframes livePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.ticker-updated{color:#fff6;font-size:11px;letter-spacing:.5px}.ticker-wrap{background:#0000;overflow:hidden;padding:14px 0;position:relative;width:100%}.ticker-wrap:after,.ticker-wrap:before{bottom:0;content:"";pointer-events:none;position:absolute;top:0;width:60px;z-index:2}.ticker-wrap:before{background:linear-gradient(90deg,#050505,#0000);background:linear-gradient(to right,var(--bg-base,#050505),#0000);left:0}.ticker-wrap:after{background:linear-gradient(270deg,#050505,#0000);background:linear-gradient(to left,var(--bg-base,#050505),#0000);right:0}.ticker-track{animation:ticker-scroll 45s linear infinite;display:flex;width:-webkit-max-content;width:max-content}.stock-item,.ticker-row{align-items:center;display:flex}.stock-item{font-family:Share Tech Mono,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-family:var(--ticker-font);gap:14px;padding:0 28px;white-space:nowrap}.stock-symbol{color:#e8e8e8;font-size:17px;font-weight:700;letter-spacing:1.5px;margin-right:-8px}.stock-price{color:#d4d4d4;font-size:17px}.stock-dot{color:#3a3a3e;font-size:20px;line-height:1}.stock-change-block{align-items:center;display:flex;gap:4px}.stock-arrow{font-size:14px;line-height:1}.stock-point{font-size:17px;width:60px}.stock-percent{color:#e8e8e8;font-size:17px;width:62px}.stock-item.up .stock-arrow,.stock-item.up .stock-point{color:#22c55e}.stock-item.down .stock-arrow,.stock-item.down .stock-point{color:#ef4444}@keyframes ticker-scroll{0%{transform:translateX(0)}to{transform:translateX(-50%)}}html{scroll-padding-top:96px}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto}.portfolio,body{background:#050505;color:#f8f8f8;color:var(--text-primary)}.portfolio{font-family:Outfit,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-family:var(--font);min-height:100vh;overflow-x:hidden;position:relative}.portfolio>footer,.portfolio>header,.portfolio>main{position:relative;z-index:3}.grain{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");inset:0;opacity:.015;pointer-events:none;position:fixed;z-index:6}.ambient{display:none}.header{left:0;padding:24px 40px;padding:var(--space-3) var(--space-5);position:fixed;right:0;top:0;transition:background .22s cubic-bezier(.4,0,.2,1);transition:background var(--transition);z-index:100}.header--scrolled{background:#050505d9}.nav{align-items:center;display:flex;gap:24px;gap:var(--space-3);justify-content:space-between;margin:0 auto;max-width:1100px;max-width:var(--max-width)}.nav__logo{background:none;border:none;color:#f8f8f8;color:var(--text-primary);cursor:pointer;font-size:1rem;font-weight:700;letter-spacing:.08em;padding:.25rem 0;text-transform:uppercase;transition:color .22s cubic-bezier(.4,0,.2,1),opacity .22s cubic-bezier(.4,0,.2,1),transform .22s cubic-bezier(.4,0,.2,1);transition:color var(--transition),opacity var(--transition),transform var(--transition)}.nav__logo:hover{opacity:.85;transform:translateY(-1px)}@media (prefers-reduced-motion:no-preference){.nav__logo{transition:opacity .2s cubic-bezier(.4,0,.2,1);transition:opacity .2s var(--ease)}}.nav__links{display:flex;gap:.35rem;list-style:none;margin:0;padding:0}.nav__link{background:none;border:none;border-radius:10px;border-radius:var(--radius);color:#c3c3c3;color:var(--text-secondary);cursor:pointer;font-size:.88rem;font-weight:500;padding:.55rem .95rem;transition:color .22s cubic-bezier(.4,0,.2,1),background .22s cubic-bezier(.4,0,.2,1),transform .22s cubic-bezier(.4,0,.2,1);transition:color var(--transition),background var(--transition),transform var(--transition)}.nav__link:hover{background:#ffffff0f;transform:translateY(-1px)}.nav__link--active,.nav__link:hover{color:#f8f8f8;color:var(--text-primary)}.nav__link--active{background:#ffffff14}.nav__cta{border:1px solid #ffffff14;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius);color:#f8f8f8;color:var(--text-primary);font-size:.88rem;font-weight:600;padding:.65rem 1.3rem;text-decoration:none;transition:border-color .22s cubic-bezier(.4,0,.2,1),background .22s cubic-bezier(.4,0,.2,1),color .22s cubic-bezier(.4,0,.2,1),transform .22s cubic-bezier(.4,0,.2,1);transition:border-color var(--transition),background var(--transition),color var(--transition),transform var(--transition)}.nav__cta:hover{background:#ffffff14;border-color:#fff3;transform:translateY(-1px)}.hero{gap:24px;gap:var(--space-3);justify-content:center;margin:0 auto;max-width:1100px;max-width:var(--max-width);min-height:calc(100vh - 200px);padding:32px 40px;padding:var(--space-4) var(--space-5);padding-bottom:80px;padding-bottom:var(--space-10);scroll-margin-top:120px;text-align:center}.hero,.hero__text{align-items:center;display:flex;flex-direction:column}.hero__text{gap:8px;gap:var(--space-1)}.hero__label{color:#8a8a8a;color:var(--text-muted);font-size:.75rem;font-weight:500;letter-spacing:.32em;margin:0;text-transform:uppercase}.hero__name{color:#f8f8f8;color:var(--text-primary);font-size:clamp(2.5rem,7vw,4.25rem);font-weight:700;letter-spacing:-.04em;line-height:1.1;margin:0}.hero__title{color:#c3c3c3;color:var(--text-secondary);font-size:clamp(1rem,2.5vw,1.25rem);font-weight:400;letter-spacing:.08em;margin:0;text-transform:uppercase}.hero__tagline{color:#8a8a8a;color:var(--text-muted);font-size:1.05rem;line-height:1.75;margin:0;max-width:460px}.hero__actions{display:flex;flex-wrap:wrap;gap:16px;gap:var(--space-2);justify-content:center}@media (prefers-reduced-motion:no-preference){.hero__label .reveal>span,.hero__label.reveal>span{animation:heroLabelSlam .6s cubic-bezier(.22,1,.36,1) .5s both}.hero__name .reveal>span,.hero__name.reveal>span{animation:heroNameExplode .7s cubic-bezier(.34,1.56,.64,1) .8s both}.hero__title .reveal>span,.hero__title.reveal>span{animation:heroTitleSlice .5s cubic-bezier(.22,1,.36,1) 1.2s both}.hero__actions{opacity:1}.hero__btn{animation:heroBtnWave .6s cubic-bezier(.34,1.56,.64,1) 1.5s both;animation:heroBtnWave .6s cubic-bezier(.34,1.56,.64,1) var(--btn-delay,1.5s) both}}@keyframes heroLabelSlam{0%{opacity:0;transform:translateY(-60px) scale(.8)}60%{opacity:1;transform:translateY(4px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes heroNameExplode{0%{letter-spacing:.3em;opacity:0;transform:scale(.3) rotate(-2deg)}50%{letter-spacing:-.02em;opacity:1;transform:scale(1.08) rotate(.5deg)}75%{letter-spacing:-.035em;transform:scale(.98) rotate(-.3deg)}to{letter-spacing:-.04em;opacity:1;transform:scale(1) rotate(0)}}@keyframes heroTitleSlice{0%{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0);opacity:0;transform:translateX(-100px) scaleX(.3)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);opacity:1;transform:translateX(0) scaleX(1)}}@keyframes heroBtnWave{0%{opacity:0;transform:translateY(50px) scale(.8)}40%{opacity:1;transform:translateY(-12px) scale(1.05)}60%{transform:translateY(6px) scale(.97)}80%{transform:translateY(-4px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}.btn{border:none;border-radius:10px;border-radius:var(--radius);cursor:pointer;font-family:Outfit,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-family:var(--font);font-size:.92rem;font-weight:600;padding:.85rem 1.7rem;text-decoration:none;transition:opacity .22s cubic-bezier(.4,0,.2,1),background .22s cubic-bezier(.4,0,.2,1),border-color .22s cubic-bezier(.4,0,.2,1),transform .22s cubic-bezier(.4,0,.2,1);transition:opacity var(--transition),background var(--transition),border-color var(--transition),transform var(--transition)}.btn--primary{background:#fff;border:1px solid #fff;color:#0a0a0a}.btn--primary:hover{background:#ffffffe6;border-color:#fff;transform:translateY(-2px)}.btn--ghost{background:#0000;border:1px solid #ffffff40;color:#f8f8f8;color:var(--text-primary)}.btn--ghost:hover{border-color:#ffffff80;transform:translateY(-2px)}.btn:focus-visible,.contact__email:focus-visible,.contact__phone:focus-visible,.nav__cta:focus-visible,.nav__link:focus-visible,.nav__logo:focus-visible,.project-card:focus-visible{outline:2px solid #ffffff59;outline-offset:3px}.reveal{display:block;overflow:hidden;width:100%}.reveal>span{display:inline-block;opacity:0;transform:translateX(-80px);transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.16,1,.3,1);transition:opacity .5s var(--ease-out),transform .6s cubic-bezier(.16,1,.3,1);will-change:transform,opacity}.reveal--right>span{transform:translateX(80px)}.reveal--up>span{transform:translateY(60px)}.reveal--down>span{transform:translateY(-60px)}.section .reveal{text-align:left}.hero .reveal{text-align:center}.section__title.reveal{--reveal-delay:0s}.section__title.reveal>span{transform:translateX(-100px)}.section__subtitle.reveal{--reveal-delay:0.1s}.section__subtitle.reveal>span{transform:translateX(100px)}.section--visible .reveal>span{opacity:1;transform:translate(0);transition-delay:0s;transition-delay:var(--reveal-delay,0s)}.section{contain-intrinsic-size:1px 800px;content-visibility:auto;margin:0 auto;max-width:1100px;max-width:var(--max-width);opacity:0;padding:120px 40px;padding:var(--space-section) var(--space-5);position:relative;scroll-margin-top:120px;transform:translateY(50px);transition:opacity .7s cubic-bezier(.4,0,.2,1),transform .7s cubic-bezier(.4,0,.2,1);transition:opacity var(--anim-duration) var(--anim-ease),transform var(--anim-duration) var(--anim-ease);will-change:opacity,transform;z-index:4}.section--visible{opacity:1;transform:translateY(0);will-change:auto}@media (max-width:768px){.section{padding:80px 32px;padding:var(--space-section-mobile) var(--space-4)}}.section .section__title{transform:translateX(-60px)}.section .section__subtitle,.section .section__title{opacity:0;transition:opacity .7s cubic-bezier(.4,0,.2,1),transform .7s cubic-bezier(.34,1.56,.64,1);transition:opacity var(--anim-duration) var(--anim-ease),transform var(--anim-duration) var(--anim-ease-bounce)}.section .section__subtitle{transform:translateX(60px)}.section>.about,.section>.contact,.section>.education,.section>.education-layout,.section>.projects,.section>.skills{opacity:0;transform:translateY(40px);transition:opacity .9s cubic-bezier(.4,0,.2,1),transform .9s cubic-bezier(.4,0,.2,1);transition:opacity var(--anim-duration-slow) var(--anim-ease),transform var(--anim-duration-slow) var(--anim-ease)}.section--visible .section__title{transition-delay:.1s}.section--visible .section__subtitle{transition-delay:.25s}.section--visible>.about,.section--visible>.contact,.section--visible>.education,.section--visible>.education-layout,.section--visible>.projects,.section--visible>.skills{transition-delay:.4s}.section--visible .section__subtitle,.section--visible .section__title,.section--visible>.about,.section--visible>.contact,.section--visible>.education,.section--visible>.education-layout,.section--visible>.projects,.section--visible>.skills{opacity:1;transform:translate(0)}.education-layout .education{opacity:0;transform:translateX(-30px);transition:opacity .7s cubic-bezier(.4,0,.2,1),transform .7s cubic-bezier(.4,0,.2,1);transition:opacity var(--anim-duration) var(--anim-ease),transform var(--anim-duration) var(--anim-ease)}.section--visible .education-layout .education{opacity:1;transform:translateX(0);transition-delay:.5s}.section--alt{background:#0000}.section--contact{overflow:visible;padding-bottom:96px;padding-bottom:var(--space-12);padding-top:96px;padding-top:var(--space-12);text-align:center}.section__title{color:#f8f8f8;color:var(--text-primary);font-size:clamp(1.7rem,3.5vw,2.2rem);font-weight:700;letter-spacing:-.02em;margin:0 0 8px;margin:0 0 var(--space-1);text-align:left}.section__subtitle{color:#8a8a8a;color:var(--text-muted);font-size:.95rem;line-height:1.5;margin:0 0 32px;margin:0 0 var(--space-4);margin-left:0;margin-right:0;max-width:640px;text-align:left}.projects{grid-gap:24px;grid-gap:var(--space-3);display:grid;gap:24px;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.project-card,.projects{position:relative;z-index:5}.project-card{background:linear-gradient(160deg,#ffffff0a,#0000 60%),#080808;background:linear-gradient(160deg,#ffffff0a,#0000 60%),var(--bg-elevated);border:1px solid #ffffff0f;border-radius:16px;border-radius:var(--radius-lg);color:inherit;display:block;padding:24px;padding:var(--space-3);text-decoration:none;transition:border-color .22s cubic-bezier(.4,0,.2,1),background .22s cubic-bezier(.4,0,.2,1),transform .22s cubic-bezier(.4,0,.2,1);transition:border-color var(--transition),background var(--transition),transform var(--transition)}.section .project-card{opacity:0;transform:translateY(30px);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1),border-color .22s cubic-bezier(.4,0,.2,1),background .22s cubic-bezier(.4,0,.2,1);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1),border-color var(--transition),background var(--transition)}.section--visible .project-card:first-child{transition-delay:.28s}.section--visible .project-card:nth-child(2){transition-delay:.34s}.section--visible .project-card:nth-child(3){transition-delay:.4s}.section--visible .project-card:nth-child(4){transition-delay:.46s}.section--visible .project-card:nth-child(5){transition-delay:.52s}.section--visible .project-card:nth-child(n+6){transition-delay:.58s}.section--visible .project-card{opacity:1;transform:translateY(0)}.project-card:hover{background:#111;border-color:#ffffff29;transform:translateY(-4px)}.project-card__title{color:#f8f8f8;color:var(--text-primary);font-size:1.05rem;font-weight:700;line-height:1.3;margin:0 0 8px;margin:0 0 var(--space-1)}.project-card__desc{color:#c3c3c3;color:var(--text-secondary);font-size:.88rem;line-height:1.65;margin:0 0 16px;margin:0 0 var(--space-2)}.project-card__tech{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}.project-card__tech li{background:#ffffff0a;border-radius:4px;color:#8a8a8a;color:var(--text-muted);font-size:.75rem;padding:.35rem .7rem}.education{max-width:640px}.education__header{align-items:center;display:flex;flex-wrap:wrap;gap:16px;gap:var(--space-2);justify-content:space-between;margin-bottom:12px}.education__school-row{align-items:center;display:flex;flex-direction:row-reverse;gap:12px}.education__logo{flex-shrink:0;height:36px;object-fit:contain;width:36px}.education__school{color:#f8f8f8;color:var(--text-primary);font-size:1.25rem;font-weight:600;line-height:1.4;margin:0}.education__grad{color:#8a8a8a;color:var(--text-muted);font-size:.85rem;white-space:nowrap}.education__degrees{margin-bottom:24px}.education__degree{color:#c3c3c3;color:var(--text-secondary);font-size:1rem;line-height:1.5;margin:0 0 4px}.education__minor{color:#8a8a8a;color:var(--text-muted);font-size:.92rem;margin:0}.education__coursework{border-top:1px solid #ffffff14;padding-top:20px}.education__coursework-label{color:#8a8a8a;color:var(--text-muted);font-size:.72rem;font-weight:600;letter-spacing:.1em;margin:0 0 14px;text-transform:uppercase}.education__courses{display:flex;flex-wrap:wrap;gap:10px}.education__pill{background:#ffffff0a;border:1px solid #ffffff1a;border-radius:100px;color:#c3c3c3;color:var(--text-secondary);font-size:.82rem;opacity:0;padding:.5rem 1rem;transform:translateY(15px) scale(.95);transition:opacity .5s cubic-bezier(.4,0,.2,1),transform .5s cubic-bezier(.34,1.56,.64,1),background .25s ease,border-color .25s ease,color .25s ease;transition:opacity var(--anim-duration-fast) var(--anim-ease),transform var(--anim-duration-fast) var(--anim-ease-bounce),background .25s ease,border-color .25s ease,color .25s ease}.education__pill:first-child{transition-delay:.6s}.education__pill:nth-child(2){transition-delay:.7s}.education__pill:nth-child(3){transition-delay:.8s}.education__pill:nth-child(4){transition-delay:.9s}.education__pill:nth-child(5){transition-delay:1s}.education__pill:nth-child(6){transition-delay:1.1s}.education__pill:nth-child(7){transition-delay:1.2s}.education__pill:nth-child(8){transition-delay:1.3s}.section--visible .education__pill{opacity:1;transform:translateY(0) scale(1)}.education__pill:hover{border-color:#ffffff40;color:#f8f8f8;color:var(--text-primary)}.education-layout{grid-gap:48px;grid-gap:var(--space-6);align-items:start;display:grid;gap:48px;gap:var(--space-6);grid-template-columns:1fr 320px}@media (max-width:900px){.education-layout{gap:40px;gap:var(--space-5);grid-template-columns:1fr}}.news-sources{background:linear-gradient(135deg,#ffffff08,#ffffff03);border:1px solid #ffffff14;border-radius:16px;border-radius:var(--radius-lg);opacity:0;overflow:hidden;padding:32px;padding:var(--space-4);position:-webkit-sticky;position:sticky;top:100px;transform:translateY(40px) scale(.95);transition:opacity .6s cubic-bezier(.34,1.56,.64,1),transform .6s cubic-bezier(.34,1.56,.64,1);transition-delay:.3s}.section--visible .news-sources{opacity:1;transform:translateY(0) scale(1);transition-delay:.65s}.news-sources:before{animation:borderShimmer 3s linear infinite paused;background:linear-gradient(135deg,#0000 40%,#ffffff26 50%,#0000 60%);background-size:300% 300%;border-radius:inherit;content:"";inset:-1px;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;padding:1px;position:absolute;transition:opacity .4s ease}.news-sources:hover:before{animation-play-state:running;opacity:1}@keyframes borderShimmer{0%{background-position:200% 200%}to{background-position:-100% -100%}}.news-sources__header{align-items:center;display:flex;margin-bottom:6px;position:relative}.news-sources__title{color:#f8f8f8;color:var(--text-primary);font-size:1rem;font-weight:600;letter-spacing:-.01em;margin:0}.news-sources__subtitle{color:#8a8a8a;color:var(--text-muted);font-size:.8rem;margin:0 0 24px;margin:0 0 var(--space-3) 0;transition:color .3s ease}.news-sources:hover .news-sources__subtitle{color:#c3c3c3;color:var(--text-secondary)}.news-sources__grid{display:flex;flex-direction:column;gap:12px}.news-card{align-items:center;background:#ffffff05;border:1px solid #ffffff0f;border-radius:10px;border-radius:var(--radius);cursor:pointer;display:flex;gap:14px;opacity:0;overflow:hidden;padding:14px 16px;position:relative;text-decoration:none;transform:translateX(30px) scale(.95);transition:opacity .5s cubic-bezier(.34,1.56,.64,1),transform .5s cubic-bezier(.34,1.56,.64,1),background .3s cubic-bezier(.22,1,.36,1),border-color .3s cubic-bezier(.22,1,.36,1);transition:opacity .5s cubic-bezier(.34,1.56,.64,1),transform .5s cubic-bezier(.34,1.56,.64,1),background .3s var(--ease-out),border-color .3s var(--ease-out);transition-delay:.4s;transition-delay:var(--card-delay,.4s)}.section--visible .news-card{opacity:1;transform:translateX(0) scale(1)}.news-card:before{background:linear-gradient(90deg,#0000,#ffffff14,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.news-card:hover:before{left:100%}.news-card:after{border-radius:inherit;content:"";inset:0;opacity:0;pointer-events:none;position:absolute;transition:opacity .3s ease}.news-card:hover{background:#ffffff0d;border-color:#ffffff2e;transform:translateX(6px) scale(1.02)}.news-card:active{transform:translateX(6px) scale(.98);transition:transform .1s ease}.news-card__logo-wrap{align-items:center;background:#ffffff0d;border-radius:10px;display:flex;flex-shrink:0;height:40px;justify-content:center;position:relative;transition:transform .4s cubic-bezier(.34,1.56,.64,1),background .3s ease;width:40px}.news-card:hover .news-card__logo-wrap{background:#ffffff1a;transform:scale(1.1) rotate(-3deg)}.news-card__logo-wrap:after{border:2px solid #ffffff1a;border-radius:14px;content:"";inset:-4px;opacity:0;position:absolute;transform:scale(.8);transition:opacity .3s ease,transform .3s ease}.news-card:hover .news-card__logo-wrap:after{opacity:1;transform:scale(1)}.news-card__logo{border-radius:6px;height:28px;object-fit:contain;transition:transform .3s ease;width:28px}.news-card:hover .news-card__logo{transform:scale(1.05)}.news-card__content{display:flex;flex:1 1;flex-direction:column;gap:3px;min-width:0}.news-card__name{color:#f8f8f8;color:var(--text-primary);font-size:.92rem;font-weight:600;letter-spacing:-.01em;transition:letter-spacing .3s ease}.news-card:hover .news-card__name{letter-spacing:.02em}.news-card__desc{color:#8a8a8a;color:var(--text-muted);font-size:.75rem;overflow:hidden;text-overflow:ellipsis;transition:color .3s ease;white-space:nowrap}.news-card:hover .news-card__desc{color:#c3c3c3;color:var(--text-secondary)}.news-card__arrow{color:#8a8a8a;color:var(--text-muted);flex-shrink:0;font-size:1.2rem;opacity:.5;transition:transform .4s cubic-bezier(.34,1.56,.64,1),color .3s ease,opacity .3s ease}.news-card:hover .news-card__arrow{color:#f8f8f8;color:var(--text-primary);opacity:1;transform:translateX(6px)}.news-card:first-child{--card-delay:0.8s}.news-card:nth-child(2){--card-delay:0.95s}.news-card:nth-child(3){--card-delay:1.1s}.news-card:nth-child(4){--card-delay:1.25s}.news-card:focus-visible{outline:2px solid #ffffff80;outline-offset:3px}.skills{display:flex;flex-direction:column;gap:24px;gap:var(--space-3)}.skill{opacity:0;transform:translateX(-70px);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.section--visible .skill:first-child{transition-delay:.28s}.section--visible .skill:nth-child(2){transition-delay:.36s}.section--visible .skill:nth-child(3){transition-delay:.44s}.section--visible .skill:nth-child(4){transition-delay:.52s}.section--visible .skill:nth-child(5){transition-delay:.6s}.section--visible .skill:nth-child(n+6){transition-delay:.68s}.section--visible .skill{opacity:1;transform:translateX(0)}.skill__header{display:flex;justify-content:space-between;margin-bottom:.5rem}.skill__name{color:#c3c3c3;color:var(--text-secondary);font-size:.88rem;font-weight:500}.skill__value{color:#8a8a8a;color:var(--text-muted);font-size:.82rem}.skill__track{background:#ffffff0f;border-radius:2px;height:4px;overflow:hidden}.skill__fill{background:linear-gradient(90deg,#f2f2f2,#cfcfcf);border-radius:2px;height:100%;opacity:.9;transition:width .8s cubic-bezier(.4,0,.2,1);transition:width .8s var(--ease)}.section--about{align-items:center;display:flex;min-height:70vh;padding:96px 40px;padding:var(--space-12) var(--space-5)}.about{margin:0 auto;max-width:900px}.about__label{color:#8a8a8a;color:var(--text-muted);display:inline-block;font-size:.7rem;font-weight:600;letter-spacing:.25em;margin-bottom:24px;margin-bottom:var(--space-3);opacity:0;text-transform:uppercase;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}.section--visible .about__label{opacity:1;transform:translateY(0)}.about__heading{font-size:clamp(2.2rem,6vw,4rem);font-weight:700;letter-spacing:-.03em;line-height:1.1;margin:0 0 40px;margin:0 0 var(--space-5)}.about__heading-line{display:block;overflow:hidden}.about__heading-line,.about__heading-line span{opacity:0;transform:translateY(100%);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}.section--visible .about__heading-line:first-child{opacity:1;transform:translateY(0);transition-delay:.1s}.section--visible .about__heading-line:nth-child(2){opacity:1;transform:translateY(0);transition-delay:.2s}.about__heading-line--accent{color:#c3c3c3;color:var(--text-secondary)}.about__text{display:flex;flex-direction:column;gap:24px;gap:var(--space-3)}.about__sentence{color:#c3c3c3;color:var(--text-secondary);font-size:clamp(1rem,2vw,1.15rem);line-height:1.9;margin:0;opacity:0;transform:translateY(25px);transition:opacity .7s cubic-bezier(.4,0,.2,1),transform .7s cubic-bezier(.4,0,.2,1);transition:opacity var(--anim-duration) var(--anim-ease),transform var(--anim-duration) var(--anim-ease);transition-delay:.5s;transition-delay:calc(.5s + var(--sentence-delay, 0s))}.section--visible .about__sentence{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:no-preference){.about__sentence{cursor:default;position:relative}.about__sentence:hover{color:#f8f8f8;color:var(--text-primary);transform:translateX(10px);transition:color .3s ease,transform .3s ease}}@media (max-width:768px){.section--about{min-height:auto;padding:64px 24px;padding:var(--space-8) var(--space-3)}.about__heading{margin-bottom:32px;margin-bottom:var(--space-4)}.about__sentence:before{display:none}.about__sentence:hover{transform:none}}.contact{align-items:center;display:flex;flex-direction:column;margin:0 auto;max-width:560px;padding:0 16px;padding:0 var(--space-2);text-align:center}.contact__heading{color:#f8f8f8;color:var(--text-primary);font-size:clamp(2.5rem,6vw,3.5rem);font-weight:600;letter-spacing:-.03em;line-height:1.1;margin:0 0 20px}.contact__email-row{align-items:center;display:flex;gap:10px;justify-content:center;margin-bottom:12px;opacity:0;position:relative;transform:translateX(-30px);transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1)}.section--visible.section--contact .contact__email-row{opacity:1;transform:translateX(0);transition-delay:.15s}.contact__email{color:#f8f8f8;color:var(--text-primary);font-size:clamp(1.15rem,2.5vw,1.5rem);font-weight:500;letter-spacing:-.01em;text-decoration:none;transition:opacity .22s cubic-bezier(.4,0,.2,1),letter-spacing .3s ease;transition:opacity var(--transition),letter-spacing .3s ease}.contact__email:hover{letter-spacing:.02em;opacity:.75}.contact__copy{align-items:center;background:#0000;border:none;color:#8a8a8a;color:var(--text-muted);cursor:pointer;display:flex;height:24px;justify-content:center;padding:0;transition:color .2s cubic-bezier(.22,1,.36,1);transition:color .2s var(--ease-out);width:24px}.contact__copy:hover{color:#f8f8f8;color:var(--text-primary)}.contact__copy svg{height:14px;width:14px}.contact__copied{animation:fadeInOut 1.5s ease forwards;color:#22c55e;font-size:.75rem;position:absolute;right:-60px}@keyframes fadeInOut{0%{opacity:0;transform:translateY(4px)}15%{opacity:1;transform:translateY(0)}85%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}.contact__phone{color:#8a8a8a;color:var(--text-muted);font-size:.95rem;letter-spacing:.01em;margin-bottom:24px;opacity:0;text-decoration:none;transform:translateX(30px);transition:color .22s cubic-bezier(.4,0,.2,1),letter-spacing .3s ease;transition:color var(--transition),letter-spacing .3s ease}.section--visible.section--contact .contact__phone{opacity:1;transform:translateX(0);transition:opacity .6s cubic-bezier(.22,1,.36,1) .25s,transform .6s cubic-bezier(.22,1,.36,1) .25s,color .22s cubic-bezier(.4,0,.2,1),letter-spacing .3s ease;transition:opacity .6s cubic-bezier(.22,1,.36,1) .25s,transform .6s cubic-bezier(.22,1,.36,1) .25s,color var(--transition),letter-spacing .3s ease}.contact__phone:hover{color:#c3c3c3;color:var(--text-secondary);letter-spacing:.03em}.contact__social{display:flex;gap:12px;opacity:0;transform:translateY(20px)}.section--visible.section--contact .contact__social{opacity:1;transform:translateY(0);transition:opacity .6s cubic-bezier(.22,1,.36,1) .35s,transform .6s cubic-bezier(.22,1,.36,1) .35s}.contact__pill{align-items:center;background:#0000;border:1px solid #ffffff26;border-radius:100px;color:#c3c3c3;color:var(--text-secondary);display:inline-flex;font-size:.85rem;font-weight:500;justify-content:center;padding:.6rem 1.4rem;text-decoration:none;transition:all .2s cubic-bezier(.22,1,.36,1);transition:all .2s var(--ease-out)}.contact__pill:hover{border-color:#ffffff4d;color:#f8f8f8;color:var(--text-primary);transform:translateY(-1px)}.contact__pill:focus-visible{outline:2px solid #fff6;outline-offset:2px}.footer{border-top:1px solid #ffffff14;border-top:1px solid var(--border);padding:2rem 1.5rem;text-align:center}.footer p{color:#8a8a8a;color:var(--text-muted);font-size:.85rem;margin:0}@keyframes slideFromLeft{0%{opacity:0;transform:translateX(-100px)}to{opacity:1;transform:translateX(0)}}@keyframes slideFromRight{0%{opacity:0;transform:translateX(100px)}to{opacity:1;transform:translateX(0)}}@keyframes slideFromBottom{0%{opacity:0;transform:translateY(80px)}to{opacity:1;transform:translateY(0)}}@keyframes slideFromTop{0%{opacity:0;transform:translateY(-60px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.btn{overflow:hidden;position:relative}.btn:before{background:#fff3;border-radius:50%;content:"";height:0;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .6s ease,height .6s ease,opacity .6s ease;width:0}.btn:active:before{height:300px;opacity:0;transition:width 0s,height 0s,opacity .6s ease;width:300px}.btn--primary:before{background:#00000026}@media (prefers-reduced-motion:no-preference){.btn{transition:all .3s cubic-bezier(.34,1.56,.64,1)}.btn:hover{transform:translateY(-3px) scale(1.02)}.btn:active{transform:translateY(0) scale(.98);transition-duration:.1s}}.contact__email,.contact__phone,.nav__link{position:relative}.contact__email:after,.contact__phone:after,.nav__link:after{background:linear-gradient(90deg,#0000,#f8f8f8,#0000);background:linear-gradient(90deg,#0000,var(--text-primary),#0000);bottom:-2px;content:"";height:1px;left:0;position:absolute;transform:scaleX(0);transform-origin:center;transition:transform .4s cubic-bezier(.22,1,.36,1);width:100%}.contact__email:hover:after,.contact__phone:hover:after,.nav__link:hover:after{transform:scaleX(1)}.project-card{perspective:1000px;transform-style:preserve-3d}@media (prefers-reduced-motion:no-preference){.project-card{transition:transform .4s cubic-bezier(.22,1,.36,1),border-color .3s ease}.project-card:hover{transform:translateY(-8px) rotateX(2deg) rotateY(-2deg)}.project-card:hover .project-card__title{transform:translateZ(20px)}.project-card__title{transition:transform .4s cubic-bezier(.22,1,.36,1)}}.contact__pill,.education__pill,.project-card__tech li{overflow:hidden;position:relative}@keyframes copyBounce{0%,to{transform:scale(1)}25%{transform:scale(.9)}50%{transform:scale(1.15)}75%{transform:scale(.95)}}.contact__copy:active{animation:copyBounce .4s ease}@keyframes logoPulse{0%,to{letter-spacing:.08em}50%{letter-spacing:.12em}}@media (prefers-reduced-motion:no-preference){.nav__logo:hover{animation:logoPulse .6s ease-in-out}}@keyframes logoSpin{0%{opacity:0;transform:rotate(-10deg) scale(.8)}60%{opacity:1;transform:rotate(5deg) scale(1.05)}to{opacity:1;transform:rotate(0) scale(1)}}@media (prefers-reduced-motion:no-preference){.education__logo{opacity:0}.section--visible .education__logo{animation:logoSpin .6s cubic-bezier(.34,1.56,.64,1) .3s forwards}}@keyframes contactHeadingReveal{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:no-preference){.section--contact .contact__heading{opacity:0}.section--visible.section--contact .contact__heading{animation:contactHeadingReveal .8s cubic-bezier(.22,1,.36,1) forwards}}@keyframes socialBounceIn{0%{opacity:0;transform:translateY(30px) scale(.5)}60%{transform:translateY(-8px) scale(1.05)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion:no-preference){.section--contact .contact__pill{opacity:0}.section--visible.section--contact .contact__pill:first-child{animation:socialBounceIn .5s cubic-bezier(.34,1.56,.64,1) .4s forwards}.section--visible.section--contact .contact__pill:nth-child(2){animation:socialBounceIn .5s cubic-bezier(.34,1.56,.64,1) .5s forwards}}@keyframes footerFadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.footer{animation:footerFadeIn .8s ease .5s forwards;opacity:0}.scroll-progress{background:linear-gradient(90deg,#fff,#ffffff80);height:2px;left:0;position:fixed;top:0;transform:scaleX(0);transform-origin:left;transition:transform .1s linear;z-index:101}@media (max-width:768px){.header{padding:16px 24px;padding:var(--space-2) var(--space-3)}.nav__links{display:none}.nav__cta{font-size:.85rem;padding:.5rem 1rem}.hero{align-items:center;min-height:calc(100vh - 180px);padding:32px 24px;padding:var(--space-4) var(--space-3);padding-bottom:64px;padding-bottom:var(--space-8);text-align:center}.section{padding:64px 24px;padding:var(--space-8) var(--space-3)}.section--contact{padding-bottom:72px;padding-bottom:var(--space-9)}.projects{grid-template-columns:1fr}.ticker-wrap{padding:12px 0}.stock-item{gap:10px;padding:0 20px}.ticker-section{margin-top:64px;padding:0 24px;padding:0 var(--space-3)}.ticker-status{gap:12px;margin-bottom:8px}.ticker-live,.ticker-updated{font-size:10px}.stock-percent,.stock-point,.stock-price,.stock-symbol{font-size:15px}.ambient,.grain{display:none}}@media (max-width:900px) and (min-width:769px){.nav__links{gap:.15rem}.nav__link{font-size:.82rem;padding:.4rem .6rem}}@media (prefers-reduced-motion:reduce){.portfolio *,.portfolio :after,.portfolio :before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.about__heading-line,.about__label,.about__sentence,.hero__actions,.hero__label,.hero__name,.hero__tagline,.hero__title,.reveal>span,.section,.section .project-card,.section .section__subtitle,.section .section__title,.section>.about,.section>.contact,.section>.education,.section>.projects,.section>.skills,.skill{opacity:1!important;transform:none!important;transition:none!important}.btn:hover,.contact__email:after,.nav__cta:hover,.nav__link:hover,.project-card:hover{transform:none!important}.ambient{display:none!important}.ticker-track{animation:none!important}}
/*# sourceMappingURL=main.18be1d8e.css.map*/