:root{--bg:#f7f7f8;--bg-alt:hsla(0,0%,100%,.55);--surface:hsla(0,0%,100%,.86);--surface-2:rgba(238,238,241,.9);--text:#16161a;--text-muted:#5c5c66;--text-faint:#85858f;--accent:#b41313;--accent-soft:rgba(180,19,19,.1);--accent-contrast:#fff;--border:#e2e2e6;--shadow:0 1px 2px rgba(16,16,20,.04),0 8px 24px rgba(16,16,20,.06);--shadow-lg:0 2px 4px rgba(16,16,20,.06),0 16px 40px rgba(16,16,20,.1);--nav-bg:hsla(240,7%,97%,.72);--grid-line:rgba(22,22,26,.045);--aurora-opacity:0.5;--aurora-1:rgba(180,19,19,.3);--aurora-2:rgba(37,99,235,.22);--aurora-3:rgba(217,119,6,.2);--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:5rem;--radius-sm:8px;--radius:14px;--radius-lg:22px;--radius-pill:999px;--container:1120px;--nav-height:68px;--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}:root[data-theme=dark]{--bg:#0d0d10;--bg-alt:rgba(19,19,24,.55);--surface:rgba(23,23,29,.86);--surface-2:rgba(31,31,39,.88);--text:#f2f2f5;--text-muted:#a5a5b2;--text-faint:#7a7a88;--accent:#ef4444;--accent-soft:rgba(239,68,68,.14);--accent-contrast:#fff;--border:#2a2a33;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.3);--shadow-lg:0 2px 4px rgba(0,0,0,.45),0 16px 40px rgba(0,0,0,.45);--nav-bg:rgba(13,13,16,.7);--grid-line:hsla(0,0%,100%,.05);--aurora-opacity:0.55;--aurora-1:rgba(239,68,68,.35);--aurora-2:rgba(56,121,255,.28);--aurora-3:rgba(168,85,247,.24)}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f7f7f8;background-color:var(--bg);color:#16161a;color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-family:var(--font-sans);line-height:1.65;margin:0;transition:background-color .25s ease,color .25s ease}h1,h2,h3,h4{font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0}p,ul{margin:0}ul{list-style:none;padding:0}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button{cursor:pointer;font:inherit}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-mono)}:focus-visible{border-radius:4px;outline:2px solid #b41313;outline:2px solid var(--accent);outline-offset:3px}.container{margin:0 auto;max-width:1120px;max-width:var(--container);padding:0 1.5rem;padding:0 var(--space-5);width:100%}.section{padding:5rem 0;padding:var(--space-8) 0;scroll-margin-top:68px;scroll-margin-top:var(--nav-height)}.section--alt{backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);background-color:hsla(0,0%,100%,.55);background-color:var(--bg-alt)}.section-head{margin-bottom:3rem;margin-bottom:var(--space-7)}.section-eyebrow{color:#b41313;color:var(--accent);display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.8rem;letter-spacing:.14em;margin-bottom:.5rem;margin-bottom:var(--space-2);text-transform:uppercase}.section-title{font-size:clamp(1.75rem,4vw,2.5rem)}.section-sub{color:#5c5c66;color:var(--text-muted);margin-top:.75rem;margin-top:var(--space-3);max-width:62ch}.btn{align-items:center;border:1px solid transparent;border-radius:999px;border-radius:var(--radius-pill);display:inline-flex;font-size:.95rem;font-weight:600;gap:.5rem;gap:var(--space-2);padding:.7rem 1.4rem;transition:background-color .18s ease,border-color .18s ease,opacity .18s ease,-webkit-transform .18s ease;transition:transform .18s ease,background-color .18s ease,border-color .18s ease,opacity .18s ease;transition:transform .18s ease,background-color .18s ease,border-color .18s ease,opacity .18s ease,-webkit-transform .18s ease}.btn:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px)}.btn:disabled{cursor:not-allowed;opacity:.6;-webkit-transform:none;transform:none}.btn--primary{background-color:#b41313;background-color:var(--accent);color:#fff;color:var(--accent-contrast)}.btn--ghost{background-color:initial;border-color:#e2e2e6;border-color:var(--border);color:#16161a;color:var(--text)}.btn--ghost:hover{border-color:#b41313;border-color:var(--accent);color:#b41313;color:var(--accent)}.chip{background-color:rgba(238,238,241,.9);background-color:var(--surface-2);border-radius:999px;border-radius:var(--radius-pill);color:#5c5c66;color:var(--text-muted);display:inline-block;font-size:.85rem;padding:.3rem .75rem;white-space:nowrap}.card,.chip{border:1px solid #e2e2e6;border:1px solid var(--border)}.card{background-color:hsla(0,0%,100%,.86);background-color:var(--surface);border-radius:14px;border-radius:var(--radius);box-shadow:0 1px 2px rgba(16,16,20,.04),0 8px 24px rgba(16,16,20,.06);box-shadow:var(--shadow)}.reveal{opacity:0;-webkit-transform:translateY(18px);transform:translateY(18px);transition:opacity .7s cubic-bezier(.22,1,.36,1),-webkit-transform .7s cubic-bezier(.22,1,.36,1);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1),-webkit-transform .7s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.reveal--in{opacity:1;-webkit-transform:none;transform:none}@-webkit-keyframes rise-in{0%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes rise-in{0%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}to{opacity:1;-webkit-transform:none;transform:none}}.rise{-webkit-animation:rise-in .8s cubic-bezier(.22,1,.36,1) forwards;animation:rise-in .8s cubic-bezier(.22,1,.36,1) forwards;opacity:0}:root.intro-active .rise{-webkit-animation-play-state:paused;animation-play-state:paused}@media (prefers-reduced-motion:reduce){.reveal,.rise{-webkit-animation:none;animation:none;opacity:1;-webkit-transform:none;transform:none}html{scroll-behavior:auto}*,:after,:before{-webkit-animation-duration:.001ms!important;animation-duration:.001ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media screen and (max-width:768px){:root{--space-8:3.25rem;--space-7:2.25rem}}.App{display:flex;flex-direction:column;min-height:100vh;position:relative}.App>footer,.App>main{position:relative;z-index:1}.App>main{flex:1 1}.about-grid{grid-gap:var(--space-7);align-items:start;display:grid;gap:var(--space-7);grid-template-columns:1.5fr 1fr}.about-summary{color:var(--text-muted);font-size:1.05rem}.about-facts{grid-gap:var(--space-3);display:grid;gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr))}.about-fact{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4)}.about-fact-label{color:var(--text-faint);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase}.about-fact-value{font-weight:600}@media screen and (max-width:900px){.about-grid{gap:var(--space-5);grid-template-columns:1fr}}@media screen and (max-width:480px){.about-facts{grid-template-columns:1fr}}.background{inset:0;overflow:hidden;pointer-events:none;position:fixed;z-index:0}.background-grid{-webkit-animation:grid-drift 60s linear infinite;animation:grid-drift 60s linear infinite;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:64px 64px;inset:-50%;-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 72%);mask-image:radial-gradient(ellipse at center,#000 30%,transparent 72%);position:absolute}@-webkit-keyframes grid-drift{0%{background-position:0 0}to{background-position:64px 64px}}@keyframes grid-drift{0%{background-position:0 0}to{background-position:64px 64px}}.background-aurora{border-radius:50%;-webkit-filter:blur(90px);filter:blur(90px);opacity:var(--aurora-opacity);position:absolute;will-change:transform}.background-aurora--one{-webkit-animation:aurora-drift-a 34s ease-in-out infinite alternate;animation:aurora-drift-a 34s ease-in-out infinite alternate;background:radial-gradient(circle,var(--aurora-1),transparent 68%);height:46vw;min-height:340px;min-width:340px;right:-8%;top:-12%;width:46vw}.background-aurora--two{-webkit-animation:aurora-drift-b 42s ease-in-out infinite alternate;animation:aurora-drift-b 42s ease-in-out infinite alternate;background:radial-gradient(circle,var(--aurora-2),transparent 68%);height:40vw;left:-14%;min-height:300px;min-width:300px;top:38%;width:40vw}.background-aurora--three{-webkit-animation:aurora-drift-c 50s ease-in-out infinite alternate;animation:aurora-drift-c 50s ease-in-out infinite alternate;background:radial-gradient(circle,var(--aurora-3),transparent 68%);bottom:-18%;height:38vw;min-height:280px;min-width:280px;right:12%;width:38vw}@-webkit-keyframes aurora-drift-a{0%{-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}to{-webkit-transform:translate3d(-8%,10%,0) scale(1.15);transform:translate3d(-8%,10%,0) scale(1.15)}}@keyframes aurora-drift-a{0%{-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}to{-webkit-transform:translate3d(-8%,10%,0) scale(1.15);transform:translate3d(-8%,10%,0) scale(1.15)}}@-webkit-keyframes aurora-drift-b{0%{-webkit-transform:translateZ(0) scale(1.08);transform:translateZ(0) scale(1.08)}to{-webkit-transform:translate3d(12%,-12%,0) scale(.92);transform:translate3d(12%,-12%,0) scale(.92)}}@keyframes aurora-drift-b{0%{-webkit-transform:translateZ(0) scale(1.08);transform:translateZ(0) scale(1.08)}to{-webkit-transform:translate3d(12%,-12%,0) scale(.92);transform:translate3d(12%,-12%,0) scale(.92)}}@-webkit-keyframes aurora-drift-c{0%{-webkit-transform:translateZ(0) scale(.95);transform:translateZ(0) scale(.95)}to{-webkit-transform:translate3d(-14%,-8%,0) scale(1.12);transform:translate3d(-14%,-8%,0) scale(1.12)}}@keyframes aurora-drift-c{0%{-webkit-transform:translateZ(0) scale(.95);transform:translateZ(0) scale(.95)}to{-webkit-transform:translate3d(-14%,-8%,0) scale(1.12);transform:translate3d(-14%,-8%,0) scale(1.12)}}@media (prefers-reduced-motion:reduce){.background-aurora,.background-grid{-webkit-animation:none;animation:none}}@media screen and (max-width:768px){.background-aurora{-webkit-filter:blur(70px);filter:blur(70px)}}.beyond-grid{grid-gap:var(--space-4);display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-bottom:var(--space-5)}.interest-card{padding:var(--space-5);transition:border-color .3s ease,box-shadow .3s ease,-webkit-transform .3s cubic-bezier(.22,1,.36,1);transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s ease,box-shadow .3s ease;transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s ease,box-shadow .3s ease,-webkit-transform .3s cubic-bezier(.22,1,.36,1)}.interest-card:hover{border-color:var(--accent);box-shadow:var(--shadow-lg);-webkit-transform:translateY(-4px);transform:translateY(-4px)}.interest-icon{align-items:center;background-color:var(--accent-soft);border-radius:var(--radius-pill);color:var(--accent);display:inline-flex;height:46px;justify-content:center;margin-bottom:var(--space-4);transition:-webkit-transform .35s cubic-bezier(.22,1,.36,1);transition:transform .35s cubic-bezier(.22,1,.36,1);transition:transform .35s cubic-bezier(.22,1,.36,1),-webkit-transform .35s cubic-bezier(.22,1,.36,1);width:46px}.interest-card:hover .interest-icon{-webkit-transform:rotate(-8deg) scale(1.06);transform:rotate(-8deg) scale(1.06)}.interest-name{font-size:1.05rem;margin-bottom:var(--space-2)}.interest-description{color:var(--text-muted);font-size:.95rem}.blog-callout{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-5);justify-content:space-between;overflow:hidden;padding:var(--space-6);position:relative}.blog-callout:after{background:radial-gradient(circle,var(--accent-soft),transparent 70%);border-radius:50%;content:"";height:320px;pointer-events:none;position:absolute;right:-10%;top:-60%;width:320px}.blog-callout-copy{max-width:62ch;position:relative}.blog-callout-eyebrow{color:var(--accent);display:block;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.14em;margin-bottom:var(--space-2);text-transform:uppercase}.blog-callout-title{font-size:1.3rem;margin-bottom:var(--space-3)}.blog-callout-text{color:var(--text-muted);font-size:.97rem}.blog-callout-cta{flex-shrink:0;position:relative}@media screen and (max-width:600px){.blog-callout{padding:var(--space-5)}.blog-callout-cta{justify-content:center;width:100%}}.contact-grid{grid-gap:var(--space-5);align-items:start;display:grid;gap:var(--space-5);grid-template-columns:1.25fr .75fr}.contact-form-card{padding:var(--space-6)}.field{margin-bottom:var(--space-4)}.field label{color:var(--text-faint);display:block;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;margin-bottom:var(--space-2);text-transform:uppercase}.field input,.field textarea{background-color:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:.98rem;outline:none;padding:.7rem .9rem;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.field textarea{min-height:130px;resize:vertical}.field input::-webkit-input-placeholder,.field textarea::-webkit-input-placeholder{color:var(--text-faint)}.field input::placeholder,.field textarea::placeholder{color:var(--text-faint)}.field input:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:var(--accent)}.field-error{color:var(--accent);font-size:.83rem;margin-top:var(--space-2)}.form-footer{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-4)}.form-status{font-size:.88rem;margin:0}.form-status--ok{color:#1f9d55}:root[data-theme=dark] .form-status--ok{color:#4ade80}.form-status--error{color:var(--accent)}.contact-details{display:flex;flex-direction:column;gap:var(--space-5)}.contact-detail-list{display:flex;flex-direction:column;gap:var(--space-3)}.contact-detail{align-items:center;display:flex;gap:var(--space-4);padding:var(--space-4);transition:border-color .25s ease,-webkit-transform .25s ease;transition:border-color .25s ease,transform .25s ease;transition:border-color .25s ease,transform .25s ease,-webkit-transform .25s ease}.contact-detail:hover{border-color:var(--accent);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.contact-detail-icon{align-items:center;background-color:var(--accent-soft);border-radius:var(--radius-pill);color:var(--accent);display:inline-flex;flex-shrink:0;height:38px;justify-content:center;width:38px}.contact-detail-label{color:var(--text-faint);display:block;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase}.contact-detail-value{font-weight:500;transition:color .2s ease;word-break:break-word}a.contact-detail-value:hover{color:var(--accent)}.contact-socials-title{font-size:.95rem;margin-bottom:var(--space-3)}@media screen and (max-width:900px){.contact-grid{grid-template-columns:1fr}}@media screen and (max-width:600px){.contact-form-card{padding:var(--space-5) var(--space-4)}}.social-links{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-3)}.social-links a{align-items:center;background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text-muted);display:inline-flex;height:40px;justify-content:center;transition:color .18s ease,border-color .18s ease,-webkit-transform .18s ease;transition:color .18s ease,border-color .18s ease,transform .18s ease;transition:color .18s ease,border-color .18s ease,transform .18s ease,-webkit-transform .18s ease;width:40px}.social-links a:hover{border-color:var(--accent);color:var(--accent);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.education-list{display:flex;flex-direction:column;gap:var(--space-3)}.education-item{align-items:center;display:flex;gap:var(--space-4);padding:var(--space-4) var(--space-5);transition:border-color .3s ease,-webkit-transform .3s cubic-bezier(.22,1,.36,1);transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s ease;transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s ease,-webkit-transform .3s cubic-bezier(.22,1,.36,1)}.education-item:hover{border-color:var(--accent);-webkit-transform:translateX(4px);transform:translateX(4px)}.education-icon{align-items:center;background-color:var(--accent-soft);border-radius:var(--radius-pill);color:var(--accent);display:inline-flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.education-body{flex:1 1;min-width:0}.education-school{font-size:1rem}.education-qualification{color:var(--text-muted);font-size:.92rem}.education-period{color:var(--text-faint);font-family:var(--font-mono);font-size:.8rem;white-space:nowrap}@media screen and (max-width:600px){.education-item{flex-wrap:wrap;gap:var(--space-3)}.education-body{flex:1 1 auto}.education-period{flex-basis:100%;padding-left:calc(40px + var(--space-3))}}.timeline{display:flex;flex-direction:column;gap:var(--space-6)}.timeline-company-head{align-items:center;display:flex;gap:var(--space-3);margin-bottom:var(--space-4)}.timeline-company-head h3{font-size:1.35rem}.timeline-roles{display:flex;flex-direction:column;gap:var(--space-5);padding-left:var(--space-6);position:relative}.timeline-roles:before{background:linear-gradient(to bottom,var(--accent),var(--border) 30%,var(--border));border-radius:2px;bottom:6px;content:"";left:5px;position:absolute;top:6px;width:2px}.timeline-role{position:relative}.timeline-marker{background-color:var(--bg);border:2px solid var(--border);border-radius:50%;height:12px;left:calc(var(--space-6)*-1);position:absolute;top:8px;width:12px}.timeline-marker--current{background-color:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.timeline-role-title{align-items:center;display:flex;flex-wrap:wrap;font-size:1.05rem;gap:var(--space-3)}.timeline-badge{background-color:var(--accent-soft);border-radius:var(--radius-pill);color:var(--accent);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.08em;padding:.15rem .55rem;text-transform:uppercase}.timeline-role-meta{color:var(--text-faint);font-family:var(--font-mono);font-size:.82rem;margin-top:var(--space-1)}.timeline-points{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-3)}.timeline-points li{color:var(--text-muted);font-size:.96rem;padding-left:var(--space-4);position:relative}.timeline-points li:before{background-color:var(--accent);border-radius:2px;content:"";height:6px;left:0;opacity:.7;position:absolute;top:.62em;width:6px}@media screen and (max-width:600px){.timeline-roles{padding-left:var(--space-5)}.timeline-marker{left:calc(var(--space-5)*-1)}}.footer{background-color:var(--bg-alt);border-top:1px solid var(--border);padding:var(--space-6) 0}.footer-inner{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-5);justify-content:space-between}.footer-brand{display:flex;flex-direction:column}.footer-name{font-weight:700}.footer-role{color:var(--text-muted);font-size:.85rem}.footer-meta{align-items:center;color:var(--text-faint);display:flex;font-size:.85rem;gap:var(--space-5)}.footer-top{align-items:center;display:inline-flex;gap:var(--space-1);transition:color .2s ease}.footer-top:hover{color:var(--accent)}@media screen and (max-width:700px){.footer-inner{align-items:flex-start;flex-direction:column}}.hero{overflow:hidden;padding:var(--space-8) 0 var(--space-8);position:relative;scroll-margin-top:var(--nav-height)}.hero-inner{grid-gap:var(--space-7);align-items:center;display:grid;gap:var(--space-7);grid-template-columns:1.15fr .85fr;position:relative}.hero-greeting{align-items:center;color:var(--text-muted);display:flex;font-family:var(--font-mono);gap:var(--space-2);margin-bottom:var(--space-3)}.hero-wave{-webkit-animation:hero-wave 2.6s ease-in-out infinite;animation:hero-wave 2.6s ease-in-out infinite;display:inline-block;-webkit-transform-origin:70% 70%;transform-origin:70% 70%}@-webkit-keyframes hero-wave{0%,60%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}10%,30%{-webkit-transform:rotate(14deg);transform:rotate(14deg)}20%,40%{-webkit-transform:rotate(-8deg);transform:rotate(-8deg)}}@keyframes hero-wave{0%,60%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}10%,30%{-webkit-transform:rotate(14deg);transform:rotate(14deg)}20%,40%{-webkit-transform:rotate(-8deg);transform:rotate(-8deg)}}.hero-name{font-size:clamp(2.5rem,6vw,4rem);margin-bottom:var(--space-2)}.hero-headline{color:var(--accent);font-size:clamp(1.1rem,2.4vw,1.5rem);font-weight:600;margin-bottom:var(--space-4)}.hero-tagline{color:var(--text-muted);font-size:1.05rem;margin-bottom:var(--space-5);max-width:54ch}.hero-meta{align-items:center;color:var(--text-faint);display:flex;flex-wrap:wrap;font-size:.9rem;gap:var(--space-2);margin-bottom:var(--space-6)}.hero-dot{color:var(--border)}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-6)}.hero-socials{margin-top:var(--space-2)}.hero-portrait,.hero-portrait-frame{display:flex;justify-content:center}.hero-portrait-frame{align-items:flex-end;aspect-ratio:1/1;position:relative;width:min(380px,100%)}.hero-portrait-frame:before{background:radial-gradient(circle at 50% 45%,var(--accent-soft),transparent 68%);border-radius:50%;content:"";inset:6% 2% 4%;pointer-events:none;position:absolute}.hero-portrait-frame img{-webkit-filter:drop-shadow(0 16px 28px rgba(0,0,0,.22));filter:drop-shadow(0 16px 28px rgba(0,0,0,.22));height:100%;object-fit:contain;object-position:bottom center;position:relative;width:100%}.hero-scroll{align-items:center;bottom:var(--space-4);color:var(--text-faint);display:flex;flex-direction:column;font-family:var(--font-mono);font-size:.7rem;gap:var(--space-2);left:50%;letter-spacing:.18em;position:absolute;text-transform:uppercase;-webkit-transform:translateX(-50%);transform:translateX(-50%);transition:color .2s ease}.hero-scroll:hover{color:var(--accent)}.hero-scroll-line{-webkit-animation:scroll-hint 2.4s ease-in-out infinite;animation:scroll-hint 2.4s ease-in-out infinite;background:linear-gradient(to bottom,transparent,var(--text-faint));height:42px;width:1px}@-webkit-keyframes scroll-hint{0%,to{opacity:.25;-webkit-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:top;transform-origin:top}50%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:top;transform-origin:top}}@keyframes scroll-hint{0%,to{opacity:.25;-webkit-transform:scaleY(.6);transform:scaleY(.6);-webkit-transform-origin:top;transform-origin:top}50%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:top;transform-origin:top}}@media screen and (max-width:900px){.hero-scroll{display:none}.hero-inner{gap:var(--space-6);grid-template-columns:1fr}.hero-portrait{order:-1}.hero-portrait-frame{width:min(280px,75%)}.hero-tagline{max-width:none}}.navbar{align-items:center;border-bottom:1px solid transparent;display:flex;height:var(--nav-height);position:-webkit-sticky;position:sticky;top:0;transition:background-color .25s ease,border-color .25s ease;z-index:100}.navbar--scrolled{backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);background-color:var(--nav-bg);border-bottom-color:var(--border)}.navbar-inner{align-items:center;display:flex;gap:var(--space-4);justify-content:space-between}.navbar-brand{color:var(--text);font-family:var(--font-mono);font-size:1.15rem;font-weight:700;letter-spacing:.06em}.navbar-brand:after{color:var(--accent);content:"."}.navbar-links{align-items:center;display:flex;gap:var(--space-5)}.navbar-links a{color:var(--text-muted);font-size:.93rem;font-weight:500;padding:var(--space-2) 0;position:relative;transition:color .18s ease}.navbar-links a.is-active,.navbar-links a:hover{color:var(--text)}.navbar-links a.is-active:after{background-color:var(--accent);border-radius:2px;bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.navbar-actions{align-items:center;display:flex;gap:var(--space-2)}.icon-button{align-items:center;background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text);display:inline-flex;height:40px;justify-content:center;transition:color .18s ease,border-color .18s ease;width:40px}.icon-button:hover{border-color:var(--accent);color:var(--accent)}.navbar-toggle{display:none}@media screen and (max-width:820px){.navbar-toggle{display:inline-flex}.navbar-links{background-color:var(--bg);flex-direction:column;gap:var(--space-6);inset:var(--nav-height) 0 0 0;justify-content:center;position:fixed;-webkit-transform:translateX(100%);transform:translateX(100%);transition:-webkit-transform .28s ease;transition:transform .28s ease;transition:transform .28s ease,-webkit-transform .28s ease}.navbar-links--open{-webkit-transform:translateX(0);transform:translateX(0)}.navbar-links a{font-size:1.3rem}}.projects-grid{grid-gap:var(--space-4);display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.project-card{display:flex;flex-direction:column;gap:var(--space-3);overflow:hidden;padding:var(--space-5);position:relative;transition:border-color .3s ease,box-shadow .3s ease,-webkit-transform .3s cubic-bezier(.22,1,.36,1);transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s ease,box-shadow .3s ease;transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s ease,box-shadow .3s ease,-webkit-transform .3s cubic-bezier(.22,1,.36,1)}.project-card:before{background-color:var(--accent);bottom:0;content:"";left:0;position:absolute;top:0;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:top;transform-origin:top;transition:-webkit-transform .35s cubic-bezier(.22,1,.36,1);transition:transform .35s cubic-bezier(.22,1,.36,1);transition:transform .35s cubic-bezier(.22,1,.36,1),-webkit-transform .35s cubic-bezier(.22,1,.36,1);width:3px}.project-card:hover{box-shadow:var(--shadow-lg);-webkit-transform:translateY(-4px);transform:translateY(-4px)}.project-card:hover:before{-webkit-transform:scaleY(1);transform:scaleY(1)}.project-name{font-size:1.1rem}.project-subtitle{color:var(--accent);font-family:var(--font-mono);font-size:.78rem;letter-spacing:.05em;margin-top:var(--space-1)}.project-description{color:var(--text-muted);flex:1 1;font-size:.95rem}.project-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.project-tags .chip{font-size:.78rem}.skills-grid{grid-gap:var(--space-4);display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.skills-card{padding:var(--space-5);transition:border-color .3s ease,box-shadow .3s ease,-webkit-transform .3s cubic-bezier(.22,1,.36,1);transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s ease,box-shadow .3s ease;transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s ease,box-shadow .3s ease,-webkit-transform .3s cubic-bezier(.22,1,.36,1)}.skills-card:hover{border-color:var(--accent);box-shadow:var(--shadow-lg);-webkit-transform:translateY(-4px);transform:translateY(-4px)}.skills-card-title{font-size:1rem;margin-bottom:var(--space-4)}.skills-card-title:before{background-color:var(--accent);border-radius:2px;content:"";display:inline-block;height:8px;margin-right:var(--space-2);vertical-align:middle;width:8px}.skills-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.skills-chips .chip{transition:color .2s ease,border-color .2s ease}.skills-card:hover .chip{color:var(--text)}.welcome{align-items:center;background-color:var(--bg);display:flex;inset:0;justify-content:center;overflow:hidden;padding:var(--space-5);position:fixed;z-index:1000}.welcome:before{-webkit-animation:welcome-glow 4.2s ease-out forwards;animation:welcome-glow 4.2s ease-out forwards;background:radial-gradient(circle,var(--accent-soft),transparent 62%);content:"";height:90vmax;left:50%;pointer-events:none;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:90vmax}@-webkit-keyframes welcome-glow{0%{opacity:0;-webkit-transform:translate(-50%,-50%) scale(.6);transform:translate(-50%,-50%) scale(.6)}40%{opacity:1}to{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1.1);transform:translate(-50%,-50%) scale(1.1)}}@keyframes welcome-glow{0%{opacity:0;-webkit-transform:translate(-50%,-50%) scale(.6);transform:translate(-50%,-50%) scale(.6)}40%{opacity:1}to{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1.1);transform:translate(-50%,-50%) scale(1.1)}}.welcome--leaving{-webkit-animation:welcome-exit .7s cubic-bezier(.65,0,.35,1) forwards;animation:welcome-exit .7s cubic-bezier(.65,0,.35,1) forwards}@-webkit-keyframes welcome-exit{to{opacity:0;-webkit-transform:translateY(-3%);transform:translateY(-3%);visibility:hidden}}@keyframes welcome-exit{to{opacity:0;-webkit-transform:translateY(-3%);transform:translateY(-3%);visibility:hidden}}.welcome-inner{max-width:900px;position:relative;text-align:center;width:100%}.welcome-greeting{align-items:center;-webkit-animation:welcome-in .7s cubic-bezier(.22,1,.36,1) .15s forwards;animation:welcome-in .7s cubic-bezier(.22,1,.36,1) .15s forwards;color:var(--text-faint);display:flex;font-family:var(--font-mono);font-size:.85rem;gap:var(--space-3);justify-content:center;letter-spacing:.22em;opacity:0;text-transform:uppercase}.welcome-greeting-native{color:var(--accent);font-family:var(--font-sans);font-size:1.05rem;letter-spacing:normal;text-transform:none}.welcome-name{-webkit-animation:welcome-in .8s cubic-bezier(.22,1,.36,1) .4s forwards;animation:welcome-in .8s cubic-bezier(.22,1,.36,1) .4s forwards;font-size:clamp(2rem,7vw,3.6rem);font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:var(--space-3) 0 var(--space-2);opacity:0}.welcome-headline{-webkit-animation:welcome-in .8s cubic-bezier(.22,1,.36,1) .65s forwards;animation:welcome-in .8s cubic-bezier(.22,1,.36,1) .65s forwards;color:var(--accent);font-size:clamp(.95rem,2.2vw,1.15rem);font-weight:600;opacity:0}@-webkit-keyframes welcome-in{0%{opacity:0;-webkit-transform:translateY(16px);transform:translateY(16px)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes welcome-in{0%{opacity:0;-webkit-transform:translateY(16px);transform:translateY(16px)}to{opacity:1;-webkit-transform:none;transform:none}}.journey{grid-gap:var(--space-3);display:grid;gap:var(--space-3);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;list-style:none;margin:var(--space-7) 0 var(--space-6);padding:0;position:relative}.journey-rail{-webkit-animation:journey-draw 1.5s cubic-bezier(.65,0,.35,1) .9s forwards;animation:journey-draw 1.5s cubic-bezier(.65,0,.35,1) .9s forwards;background:linear-gradient(90deg,var(--border),var(--accent) 55%,var(--accent));border-radius:2px;height:2px;left:10%;position:absolute;right:10%;top:6px;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes journey-draw{to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes journey-draw{to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.journey-stop{align-items:center;-webkit-animation:welcome-in .6s cubic-bezier(.22,1,.36,1) forwards;animation:welcome-in .6s cubic-bezier(.22,1,.36,1) forwards;-webkit-animation-delay:calc(1.15s + var(--stop-index)*.26s);animation-delay:calc(1.15s + var(--stop-index)*.26s);display:flex;flex-direction:column;gap:var(--space-1);opacity:0;padding-top:var(--space-5);position:relative}.journey-dot{background-color:var(--bg);border:2px solid var(--accent);border-radius:50%;height:14px;position:absolute;top:0;width:14px}.journey-stop:last-child .journey-dot{-webkit-animation:journey-pulse 1.6s ease-out infinite;animation:journey-pulse 1.6s ease-out infinite;-webkit-animation-delay:calc(1.15s + var(--stop-index)*.26s);animation-delay:calc(1.15s + var(--stop-index)*.26s);background-color:var(--accent)}@-webkit-keyframes journey-pulse{0%{box-shadow:0 0 0 0 var(--accent-soft)}70%{box-shadow:0 0 0 12px transparent}to{box-shadow:0 0 0 0 transparent}}@keyframes journey-pulse{0%{box-shadow:0 0 0 0 var(--accent-soft)}70%{box-shadow:0 0 0 12px transparent}to{box-shadow:0 0 0 0 transparent}}.journey-year{color:var(--accent);font-family:var(--font-mono);font-size:.95rem;font-weight:700}.journey-place{font-size:.88rem;font-weight:600;line-height:1.3}.journey-role{color:var(--text-faint);font-size:.78rem;line-height:1.3}.welcome-closing{-webkit-animation:welcome-in .7s cubic-bezier(.22,1,.36,1) 2.7s forwards;animation:welcome-in .7s cubic-bezier(.22,1,.36,1) 2.7s forwards;color:var(--text-muted);font-size:.85rem}.welcome-closing,.welcome-skip{font-family:var(--font-mono);opacity:0}.welcome-skip{-webkit-animation:welcome-in .6s ease 1.4s forwards;animation:welcome-in .6s ease 1.4s forwards;background:none;border:1px solid var(--border);border-radius:var(--radius-pill);bottom:var(--space-5);color:var(--text-faint);font-size:.75rem;left:50%;letter-spacing:.1em;padding:.4rem 1rem;position:absolute;text-transform:uppercase;-webkit-transform:translateX(-50%);transform:translateX(-50%);transition:color .2s ease,border-color .2s ease}.welcome-skip:hover{border-color:var(--accent);color:var(--accent)}@media screen and (max-width:720px){.journey{gap:var(--space-4);grid-auto-flow:row;margin:var(--space-6) 0 var(--space-5);padding-left:var(--space-6);text-align:left}.journey-rail{-webkit-animation-name:journey-draw-vertical;animation-name:journey-draw-vertical;background:linear-gradient(180deg,var(--border),var(--accent) 55%,var(--accent));bottom:6px;height:auto;left:6px;right:auto;top:6px;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:top center;transform-origin:top center;width:2px}@-webkit-keyframes journey-draw-vertical{to{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes journey-draw-vertical{to{-webkit-transform:scaleY(1);transform:scaleY(1)}}.journey-stop{align-items:flex-start;padding-left:var(--space-4);padding-top:0}.journey-dot{left:calc(var(--space-6)*-1);top:4px}}
/*# sourceMappingURL=main.4b799289.css.map*/