:root{color-scheme:dark;--bg: #07080b;--bg-soft: #0d1017;--panel: rgba(255, 255, 255, .055);--panel-strong: rgba(255, 255, 255, .095);--line: rgba(255, 255, 255, .12);--text: #f6f7fb;--muted: #9da4b5;--soft: #c9ceda;--cyan: #65e4ff;--green: #83f0a7;--pink: #ff7ac8;--amber: #f5c264;--cursor-x: 50vw;--cursor-y: 35vh}html{scroll-behavior:smooth;background:var(--bg)}*{box-sizing:border-box;margin:0;padding:0}body{min-width:320px;overflow-x:hidden;background:radial-gradient(circle at 18% 8%,rgba(101,228,255,.11),transparent 28rem),radial-gradient(circle at 82% 12%,rgba(255,122,200,.08),transparent 24rem),linear-gradient(180deg,#07080b,#0b0e14 42%,#07080b);color:var(--text);font-family:DM Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{cursor:pointer}.portfolio-shell{position:relative;isolation:isolate;min-height:100vh}.portfolio-shell:before{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-3;pointer-events:none;content:"";background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,.82),transparent 82%);mask-image:linear-gradient(to bottom,rgba(0,0,0,.82),transparent 82%)}.cursor-light{position:fixed;left:var(--cursor-x);top:var(--cursor-y);z-index:-2;width:360px;height:360px;pointer-events:none;border-radius:999px;background:radial-gradient(circle,rgba(101,228,255,.16),transparent 67%);filter:blur(8px);transform:translate(-50%,-50%);transition:opacity .22s ease}.scroll-progress{position:fixed;top:0;left:0;z-index:20;width:100%;height:3px;background:linear-gradient(90deg,var(--cyan),var(--green),var(--pink));transform-origin:0 50%}.hero-section{display:grid;grid-template-columns:minmax(0,.92fr) minmax(260px,.48fr);align-items:center;gap:clamp(2rem,6vw,6rem);min-height:100vh;width:min(1180px,100% - 40px);margin:0 auto;padding:7.5rem 0 4rem}.hero-copy{max-width:680px}.hero-name{margin-bottom:.75rem;color:var(--text);font-size:clamp(1.35rem,2.2vw,2rem);font-weight:800;line-height:1.1}.eyebrow{display:inline-flex;align-items:center;gap:.55rem;margin-bottom:1.05rem;color:var(--cyan);font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.eyebrow:before{display:inline-block;width:.52rem;height:.52rem;border-radius:999px;background:currentColor;box-shadow:0 0 22px currentColor;content:""}h1,h2{max-width:940px;font-weight:800;letter-spacing:0;line-height:.98}h1{font-size:clamp(2.8rem,6.4vw,5.6rem)}h2{font-size:clamp(2.3rem,5vw,4.6rem)}.hero-description,.section-heading p,.contact-copy p{color:var(--soft);font-size:clamp(1rem,1.45vw,1.18rem);line-height:1.8}.hero-description{max-width:620px;margin-top:1.4rem}.hero-actions,.message-actions{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2rem}.primary-link,.ghost-link{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 1.15rem;border:1px solid rgba(255,255,255,.16);border-radius:8px;transition:border-color .18s ease,background .18s ease,color .18s ease,transform .18s ease}.primary-link{background:#f7f8fb;color:#080a0e;font-weight:800}.ghost-link{background:#ffffff0b;color:var(--text)}.primary-link:hover,.ghost-link:hover{border-color:#65e4ffa6;transform:translateY(-2px)}.hero-react-mark{position:relative;justify-self:center;width:min(330px,78vw);aspect-ratio:1;display:grid;place-items:center;border-radius:999px;background:radial-gradient(circle,rgba(101,228,255,.13),transparent 62%);animation:float-react 7s ease-in-out infinite}.hero-react-mark:before{position:absolute;top:14%;right:14%;bottom:14%;left:14%;border:1px solid rgba(101,228,255,.18);border-radius:inherit;background:#ffffff06;box-shadow:inset 0 1px #ffffff14,0 30px 90px #00000057;content:""}.hero-react-mark img{position:relative;z-index:2;width:46%;height:46%;object-fit:contain;filter:drop-shadow(0 0 32px rgba(101,228,255,.58));animation:react-logo-spin 20s linear infinite}.react-ring{position:absolute;top:24%;right:24%;bottom:24%;left:24%;z-index:1;border:2px solid rgba(101,228,255,.52);border-radius:999px;box-shadow:0 0 24px #65e4ff38}.react-ring-one{transform:rotate(0) scaleX(1.72);animation:react-ring-one 9s linear infinite}.react-ring-two{transform:rotate(60deg) scaleX(1.72);animation:react-ring-two 11s linear infinite reverse}.react-ring-three{transform:rotate(-60deg) scaleX(1.72);animation:react-ring-three 13s linear infinite}@keyframes float-react{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}@keyframes react-logo-spin{to{transform:rotate(360deg)}}@keyframes react-ring-one{to{transform:rotate(360deg) scaleX(1.72)}}@keyframes react-ring-two{to{transform:rotate(420deg) scaleX(1.72)}}@keyframes react-ring-three{to{transform:rotate(300deg) scaleX(1.72)}}.intro-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;width:min(1180px,100% - 40px);margin:0 auto;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--line)}.stat-item{min-height:128px;padding:1.4rem;background:#ffffff09}.stat-item strong,.stat-item span{display:block}.stat-item strong{color:var(--text);font-size:clamp(1.6rem,4vw,2.5rem);line-height:1}.stat-item span{margin-top:.65rem;color:var(--muted)}.section-block{width:min(1180px,100% - 40px);margin:0 auto;padding:clamp(5rem,11vw,9rem) 0 0}.section-heading{max-width:780px;margin-bottom:clamp(2.5rem,6vw,4.6rem)}.section-heading p:not(.eyebrow){margin-top:1.1rem}.skills-section{padding-top:clamp(4rem,9vw,7rem)}.skills-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem;padding:.5rem;margin:-.5rem;perspective:80rem}.skill-shell{min-height:78px;perspective:42rem}.skill-chip{--skill-glow: 0;--skill-lift: 0px;--skill-rotate-x: 0deg;--skill-rotate-y: 0deg;--skill-scale: 1;position:relative;z-index:2;display:flex;align-items:center;gap:.85rem;height:100%;min-height:78px;padding:1rem;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#ffffff0b;color:var(--soft);box-shadow:0 calc(var(--skill-glow) * 18px) calc(var(--skill-glow) * 46px) #65e4ff1a,inset 0 1px #ffffff0f;transform:translateY(var(--skill-lift)) scale(var(--skill-scale)) rotateX(var(--skill-rotate-x)) rotateY(var(--skill-rotate-y));transform-origin:center center;transform-style:preserve-3d;transition:transform .26s cubic-bezier(.16,1,.3,1),box-shadow .26s ease,border-color .24s ease,background .24s ease;will-change:transform}.skill-chip:hover{border-color:#65e4ff42;background:#fff1}.skill-icon{display:inline-grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border-radius:8px;background:#ffffff14;color:var(--text);font-size:.78rem;font-weight:900}.skill-chip[data-tone=cyan] .skill-icon{background:#65e4ff21;color:var(--cyan)}.skill-chip[data-tone=blue] .skill-icon{background:#5987ff26;color:#8fb0ff}.skill-chip[data-tone=yellow] .skill-icon,.skill-chip[data-tone=amber] .skill-icon{background:#f5c26429;color:var(--amber)}.skill-chip[data-tone=green] .skill-icon,.skill-chip[data-tone=lime] .skill-icon{background:#83f0a724;color:var(--green)}.skill-chip[data-tone=violet] .skill-icon,.skill-chip[data-tone=pink] .skill-icon{background:#ff7ac826;color:var(--pink)}.skill-chip[data-tone=orange] .skill-icon{background:#ff8f5c26;color:#ff9a66}.skills-toggle-wrap{display:none;margin-top:1rem}.contact-section{width:min(1180px,100% - 40px);margin:0 auto;padding:clamp(5rem,11vw,9rem) 0 5rem}.contact-card{display:grid;grid-template-columns:minmax(0,.9fr) minmax(320px,1fr);gap:clamp(2rem,5vw,4rem);align-items:start;padding:clamp(1.2rem,4vw,2rem);border:1px solid var(--line);border-radius:8px;background:radial-gradient(circle at 8% 10%,rgba(101,228,255,.12),transparent 23rem),#ffffff0a;box-shadow:0 26px 80px #00000042}.contact-copy h2{font-size:clamp(2rem,4vw,3.7rem)}.contact-copy p:not(.eyebrow){margin-top:1.1rem}.message-box{display:grid;gap:1rem}.message-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.message-box label{display:grid;gap:.55rem;color:var(--soft);font-size:.9rem;font-weight:700}.message-box input,.message-box textarea{width:100%;border:1px solid rgba(255,255,255,.12);border-radius:8px;outline:none;background:#05070abd;color:var(--text);transition:border-color .18s ease,box-shadow .18s ease}.message-box input{height:48px;padding:0 .95rem}.message-box textarea{min-height:190px;max-height:360px;overflow-y:auto;resize:vertical;padding:.9rem .95rem;line-height:1.6}.message-box input:focus,.message-box textarea:focus{border-color:#65e4ffb8;box-shadow:0 0 0 4px #65e4ff14}.email-link{justify-self:start;min-width:150px}.email-link:disabled{cursor:not-allowed;opacity:.62;transform:none}.form-status{min-height:1.4rem;color:var(--green);font-size:.92rem}@media (max-width: 920px){.hero-section,.contact-card{grid-template-columns:1fr}.hero-section{min-height:auto;padding-top:6.5rem;padding-bottom:3rem}.hero-react-mark{width:min(280px,70vw)}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.cursor-light{display:none}.hero-section,.intro-strip,.section-block,.contact-section{width:min(100% - 28px,1180px)}.hero-section{gap:2.5rem;padding-top:5.9rem}.hero-copy{max-width:100%}.eyebrow{gap:.45rem;margin-bottom:.8rem;font-size:.68rem;line-height:1.45;letter-spacing:.08em}.hero-name{margin-bottom:.55rem;font-size:1.35rem}h1{font-size:clamp(2.35rem,11vw,3.4rem);line-height:1.02}h2{font-size:clamp(2rem,10vw,3rem);line-height:1.05}.hero-description,.section-heading p,.contact-copy p{font-size:.98rem;line-height:1.65}.hero-react-mark{width:min(235px,68vw)}.hero-actions{grid-template-columns:1fr;margin-top:1.5rem}.section-block{padding-top:4.25rem}.section-heading{margin-bottom:2rem}.intro-strip,.skills-grid{grid-template-columns:1fr}.skills-grid{max-height:468px;overflow:hidden;transform:none;transition:max-height 1.8s cubic-bezier(.22,1,.36,1)}.skills-grid.is-expanded{max-height:1900px}.skill-chip{transform:none}.skills-toggle-wrap{display:flex;justify-content:center;width:100%}.stat-item{min-height:100px;padding:1.15rem}.hero-actions,.message-actions{display:grid;grid-template-columns:1fr}.contact-section{padding-top:4.25rem}.contact-card{padding:1rem}.message-row{grid-template-columns:1fr}}.header{position:fixed;top:1rem;left:50%;z-index:15;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;width:min(1180px,100% - 40px);min-height:58px;padding:.45rem .5rem;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#080a0ead;box-shadow:0 18px 54px #0000004d;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);translate:-50% 0}.brand-mark{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:8px;background:#f7f8fb;color:#080a0e;font-size:.86rem;font-weight:900}.header-nav{display:flex;justify-content:center;gap:clamp(.3rem,1.5vw,1rem)}.header-nav a,.social-links a{min-height:40px;border-radius:8px}.header-nav a{display:inline-flex;align-items:center;padding:0 .9rem;color:#f6f7fbb8;font-size:.9rem;font-weight:700;transition:background .18s ease,color .18s ease}.header-nav a:hover{background:#ffffff0f;color:#f6f7fb}.social-links{display:flex;align-items:center;gap:.45rem}.social-links a{display:inline-grid;place-items:center;width:40px;border:1px solid rgba(255,255,255,.08);background:#ffffff0b;color:#f6f7fb;font-size:1rem;font-weight:900;letter-spacing:0}@media (max-width: 700px){.header{grid-template-columns:auto 1fr auto;width:min(100% - 28px,1180px);gap:.35rem;min-height:54px;padding:.38rem}.brand-mark{width:38px;height:38px;font-size:.78rem}.header-nav{justify-content:center;overflow:hidden;gap:.1rem}.header-nav a{min-height:36px;padding:0 .32rem;font-size:.72rem}.social-links{display:flex}.social-links a{width:36px;min-height:36px;font-size:.9rem}}.timeline-container{position:relative;min-height:1680px;perspective:1200px}.timeline-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.timeline-path{fill:none;stroke-linecap:round;stroke-width:5}.timeline-path-base{stroke:#ffffff14}.timeline-path-progress{stroke:url(#timeline-gradient);filter:drop-shadow(0 0 16px rgba(101,228,255,.42))}.timeline-dot{position:absolute;z-index:2;width:18px;height:18px;border-radius:999px;background:#65e4ff;box-shadow:0 0 0 1px #dff9ff6b,0 0 12px #65e4fff2,0 0 30px #65e4ff6b;pointer-events:none;transform:translate3d(-50%,-50%,0);will-change:left,top}.timeline-items{position:relative;display:grid;grid-template-rows:repeat(4,minmax(260px,1fr));min-height:1420px}.timeline-hover-3d{--hover-transform: 0, 0;--hover-shine: 100% 100%;--hover-shadow-x: 0rem;--hover-shadow-y: 0rem;display:grid;width:min(390px,39%);perspective:75rem;filter:drop-shadow(var(--hover-shadow-x) var(--hover-shadow-y) .12rem rgba(0,0,0,.16)) drop-shadow(var(--hover-shadow-x) var(--hover-shadow-y) .5rem rgba(101,228,255,.03));transition:filter .42s ease-out}.timeline-hover-3d.left{justify-self:start}.timeline-hover-3d.right{justify-self:end}.timeline-hover-3d>*{grid-area:1/1/4/4}.timeline-hover-3d .hover-zone{z-index:3;scale:1.12}.timeline-hover-3d .hover-zone:nth-of-type(1){grid-area:1/1/2/2}.timeline-hover-3d .hover-zone:nth-of-type(2){grid-area:1/2/2/3}.timeline-hover-3d .hover-zone:nth-of-type(3){grid-area:1/3/2/4}.timeline-hover-3d .hover-zone:nth-of-type(4){grid-area:2/1/3/2}.timeline-hover-3d .hover-zone:nth-of-type(5){grid-area:2/3/3/4}.timeline-hover-3d .hover-zone:nth-of-type(6){grid-area:3/1/4/2}.timeline-hover-3d .hover-zone:nth-of-type(7){grid-area:3/2/4/3}.timeline-hover-3d .hover-zone:nth-of-type(8){grid-area:3/3/4/4}.timeline-hover-3d:hover .timeline-item{outline-color:#ffffff14;scale:1.045}.timeline-hover-3d:hover .timeline-item:before{opacity:1}.timeline-hover-3d:has(.hover-zone:nth-of-type(1):hover){--hover-transform: -1, 1;--hover-shine: 0% 0%;--hover-shadow-x: -.5rem;--hover-shadow-y: -.5rem}.timeline-hover-3d:has(.hover-zone:nth-of-type(2):hover){--hover-transform: -1, 0;--hover-shine: 100% 0%;--hover-shadow-x: 0rem;--hover-shadow-y: -.5rem}.timeline-hover-3d:has(.hover-zone:nth-of-type(3):hover){--hover-transform: -1, -1;--hover-shine: 200% 0%;--hover-shadow-x: .5rem;--hover-shadow-y: -.5rem}.timeline-hover-3d:has(.hover-zone:nth-of-type(4):hover){--hover-transform: 0, 1;--hover-shine: 0% 100%;--hover-shadow-x: -.5rem;--hover-shadow-y: 0rem}.timeline-hover-3d:has(.hover-zone:nth-of-type(5):hover){--hover-transform: 0, -1;--hover-shine: 200% 100%;--hover-shadow-x: .5rem;--hover-shadow-y: 0rem}.timeline-hover-3d:has(.hover-zone:nth-of-type(6):hover){--hover-transform: 1, 1;--hover-shine: 0% 200%;--hover-shadow-x: -.5rem;--hover-shadow-y: .5rem}.timeline-hover-3d:has(.hover-zone:nth-of-type(7):hover){--hover-transform: 1, 0;--hover-shine: 100% 200%;--hover-shadow-x: 0rem;--hover-shadow-y: .5rem}.timeline-hover-3d:has(.hover-zone:nth-of-type(8):hover){--hover-transform: 1, -1;--hover-shine: 200% 200%;--hover-shadow-x: .5rem;--hover-shadow-y: .5rem}.timeline-item{position:relative;display:grid;grid-template-columns:1fr;align-self:center;gap:.7rem;width:100%;padding:1.15rem;border:1px solid rgba(255,255,255,.11);border-radius:8px;background:linear-gradient(135deg,#ffffff16,#ffffff09),#07080bb8;box-shadow:0 22px 70px #00000047,inset 0 1px #ffffff0f;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);overflow:hidden;outline:.5px solid transparent;outline-offset:-1px;transform:rotate3d(var(--hover-transform),0,10deg);transition:transform .52s cubic-bezier(.16,1,.3,1),scale .52s cubic-bezier(.16,1,.3,1),outline-color .52s ease,border-color .22s ease;transform-style:preserve-3d}.timeline-item:before{position:absolute;z-index:1;width:33.333%;height:33.333%;pointer-events:none;background-image:radial-gradient(circle at 50%,rgba(255,255,255,.2) 10%,transparent 54%);filter:blur(.75rem);content:"";opacity:0;scale:5;translate:var(--hover-shine);transition:translate .42s ease-out,opacity .42s ease-out}.timeline-item>*{position:relative;z-index:2}.timeline-year{display:block;color:#65e4ff;font-size:.82rem;font-weight:800;line-height:1.25;text-align:left}.timeline-meta{margin-bottom:.4rem;color:#83f0a7;font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.timeline-item h3{color:#f6f7fb;font-size:clamp(1.18rem,2vw,1.45rem);line-height:1.15}.timeline-item p:not(.timeline-meta){margin-top:.65rem;color:#aeb5c4;line-height:1.65}@media (max-width: 860px){.timeline-container,.timeline-items{min-height:auto;perspective:none}.timeline-svg,.timeline-dot{display:none}.timeline-items{display:grid;grid-template-rows:none;grid-auto-rows:auto;gap:1.05rem;padding-left:0}.timeline-hover-3d{width:100%;justify-self:stretch;perspective:none;filter:none}.timeline-hover-3d.left,.timeline-hover-3d.right{justify-self:stretch}.timeline-hover-3d .hover-zone{display:none}.timeline-hover-3d:hover .timeline-item{scale:1;outline-color:transparent}.timeline-item{grid-template-columns:1fr;padding:1rem;transform:none;transition:border-color .18s ease,box-shadow .18s ease}.timeline-item:before{display:none}.timeline-meta{font-size:.7rem}}@media (max-width: 560px){.timeline-year{width:auto}.timeline-item h3{font-size:1.12rem}.timeline-item p:not(.timeline-meta){font-size:.94rem;line-height:1.55}}
