*,:before,:after{box-sizing:border-box}html,body,h1,h2,h3,h4,p,figure,blockquote,dl,dd,ul,ol{margin:0}ul,ol{padding:0;list-style:none}html{-webkit-text-size-adjust:100%}body{-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.5}img,picture,svg,video{max-width:100%;display:block}button,input,textarea,select{font:inherit;color:inherit;background:0 0;border:none;padding:0}button{cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-weight:inherit}:root{--bg:#08080c;--bg-elevated:#121218;--bg-elevated-2:#191922;--border:#ffffff14;--text:#f5f5f7;--text-dim:#9a9aa8;--text-dimmer:#6c6c78;--accent:#7c5cff;--accent-2:#00e5c7;--stack-fullstack:#4ade80;--stack-sapbtp:#4fa8ff;--stack-aiml:#ff6fd8;--stack-all:var(--accent);--radius-sm:8px;--radius-md:14px;--radius-lg:24px;--radius-pill:999px;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:5rem;--space-9:8rem;--font-display:"Helvetica Neue", Helvetica, Arial, sans-serif;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--ease-standard:cubic-bezier(.4, 0, .2, 1);--duration-fast:.2s;--duration-med:.35s;--duration-slow:.6s;--max-width:1200px}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-body);overflow-x:hidden}.skip-link{top:-100%;left:var(--space-4);z-index:1000;background:var(--accent);color:#08080c;padding:var(--space-3) var(--space-5);border-radius:var(--radius-sm);transition:top var(--duration-fast) var(--ease-standard);font-weight:600;position:fixed}.skip-link:focus{top:var(--space-4)}.site-header{z-index:100;transition:background var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard);background:0 0;border-bottom:1px solid #0000;position:fixed;top:0;left:0;right:0}.site-header.is-solid{-webkit-backdrop-filter:blur(12px);border-color:var(--border);background:#08080ccc}.site-header__inner{max-width:var(--max-width);padding:var(--space-4) var(--space-6);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.site-header__mark{font-family:var(--font-display);letter-spacing:.05em;color:var(--text);font-weight:700}main>section{max-width:var(--max-width);padding:var(--space-8) var(--space-6);margin:0 auto;scroll-margin-top:72px}.section-label{font-size:clamp(1.5rem,3vw,2.25rem);font-family:var(--font-display);letter-spacing:-.01em;margin-bottom:var(--space-6);font-weight:700}.hero{min-height:100vh;padding:var(--space-8) var(--space-6);justify-content:center;align-items:center;max-width:none;display:flex;position:relative;overflow:hidden}.hero__glow{z-index:0;filter:blur(40px);pointer-events:none;background:radial-gradient(45% 35% at 30% 25%,#7c5cff59,#0000 70%),radial-gradient(40% 35% at 75% 65%,#00e5c738,#0000 70%);position:absolute;inset:-20%}.hero__inner{z-index:1;text-align:center;align-items:center;gap:var(--space-4);flex-direction:column;max-width:780px;display:flex;position:relative}.hero__eyebrow{text-transform:uppercase;letter-spacing:.2em;color:var(--text-dim);font-size:.75rem}.hero__avatar{object-fit:cover;border:2px solid var(--border);background:var(--bg-elevated);width:128px;height:128px;margin-bottom:var(--space-2);border-radius:50%}.hero__name{font-family:var(--font-display);letter-spacing:-.03em;background:linear-gradient(120deg, var(--text) 40%, var(--accent) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(2.75rem,8vw,5.5rem);font-weight:800;line-height:1.05}.hero__role{color:var(--accent-2);min-height:1.6em;font-size:clamp(1.1rem,2.5vw,1.5rem);font-weight:600}.hero__bio{color:var(--text-dim);max-width:620px;font-size:clamp(1rem,1.5vw,1.15rem);line-height:1.7}.hero__cta{margin-top:var(--space-3);align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);border-radius:var(--radius-pill);border:1px solid var(--border);transition:background var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);font-weight:600;display:inline-flex}.hero__cta:hover,.hero__cta:focus-visible{background:var(--bg-elevated);border-color:var(--accent);transform:translateY(-2px)}.hero__scroll-cue{bottom:var(--space-6);background:linear-gradient(to bottom, transparent, var(--text-dim));width:1px;height:48px;position:absolute;left:50%;transform:translate(-50%)}.timeline{gap:var(--space-8);max-width:720px;padding-left:var(--space-6);border-left:2px solid var(--border);flex-direction:column;margin:0 auto;list-style:none;display:flex;position:relative}.timeline__item{position:relative}.timeline__marker{top:.4em;left:calc(-1 * var(--space-6) - 7px);background:linear-gradient(120deg, var(--accent), var(--accent-2));width:14px;height:14px;box-shadow:0 0 0 4px var(--bg);border-radius:50%;position:absolute}.timeline__header{align-items:baseline;gap:var(--space-3);flex-wrap:wrap;display:flex}.timeline__role{font-family:var(--font-display);letter-spacing:-.01em;font-size:1.25rem;font-weight:700}.timeline__duration{align-items:center;gap:var(--space-2);text-transform:uppercase;letter-spacing:.08em;color:var(--text-dimmer);font-size:.78rem;font-weight:600;display:inline-flex}.timeline__tenure{letter-spacing:.03em;text-transform:none;color:var(--accent-2);background:color-mix(in srgb, var(--accent-2) 15%, transparent);border-radius:var(--radius-pill);padding:.15em .7em;font-size:.7rem;font-weight:700}.timeline__company{color:var(--accent-2);margin-top:var(--space-1);font-weight:600}.timeline__desc{color:var(--text-dim);margin-top:var(--space-3);font-size:.95rem;line-height:1.6}.timeline__tags{gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.stack-filter{text-align:center;padding-top:var(--space-6);padding-bottom:var(--space-6)}.stack-filter .section-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.15em;margin-bottom:var(--space-5);font-size:clamp(.95rem,2vw,1.1rem);font-weight:600}.project-grid,.content-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.grid-empty{color:var(--text-dimmer);padding:var(--space-6) 0;grid-column:1/-1;font-size:.95rem}.about__bio{color:var(--text-dim);max-width:700px;margin-bottom:var(--space-6);font-size:1.05rem;line-height:1.8}.skills-content{gap:var(--space-5);flex-direction:column;display:flex}.skills-group__label{font-family:var(--font-display);margin-bottom:var(--space-3);color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em;font-size:.85rem;font-weight:700}.skills-group__chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.contact{text-align:center}.contact__lead{color:var(--text-dim);margin-bottom:var(--space-5);font-size:1.05rem}.contact__email{font-family:var(--font-display);margin-bottom:var(--space-6);transition:border-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard);border-bottom:2px solid #0000;font-size:clamp(1.5rem,4vw,2.25rem);font-weight:700;display:inline-block}.contact__email:hover,.contact__email:focus-visible{border-color:var(--accent);color:var(--accent)}.social-links{justify-content:center;gap:var(--space-4);display:flex}.site-footer{text-align:center;padding:var(--space-6);color:var(--text-dimmer);font-size:.85rem}@media (width<=1024px){main>section{padding:var(--space-7) var(--space-5)}}@media (width<=768px){main>section{padding:var(--space-6) var(--space-4)}.project-grid,.content-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.timeline{gap:var(--space-7);padding-left:var(--space-5)}.timeline__marker{left:calc(-1 * var(--space-5) - 7px)}.nav-toggle{display:flex}.nav-links{justify-content:center;align-items:flex-start;gap:var(--space-6);width:min(78vw,320px);height:100vh;padding:var(--space-8) var(--space-6);background:var(--bg-elevated);border-left:1px solid var(--border);transition:transform var(--duration-med) var(--ease-standard);flex-direction:column;position:fixed;top:0;right:0;transform:translate(100%)}.nav-links.is-open{transform:translate(0)}}@media (width<=600px){.project-grid,.content-grid{grid-template-columns:1fr}}@media (width<=480px){.hero{min-height:90vh}}.nav-toggle{z-index:101;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;display:none}.nav-toggle__bar{background:var(--text);border-radius:2px;width:22px;height:2px;display:block}.nav-links{gap:var(--space-6);display:flex}.nav-links a{color:var(--text-dim);transition:color var(--duration-fast) var(--ease-standard);font-size:.9rem;font-weight:600}.nav-links a:hover,.nav-links a.is-active{color:var(--text)}.stack-toggle{gap:var(--space-1);padding:var(--space-1);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);-webkit-overflow-scrolling:touch;scrollbar-width:none;max-width:100%;display:inline-flex;position:relative;overflow-x:auto}.stack-toggle::-webkit-scrollbar{display:none}.stack-toggle__indicator{top:var(--space-1);height:calc(100% - (var(--space-1) * 2));border-radius:var(--radius-pill);background:linear-gradient(120deg, var(--accent), var(--accent-2));transition:transform var(--duration-med) var(--ease-standard), width var(--duration-med) var(--ease-standard);z-index:0;position:absolute;left:0}.stack-toggle__option{z-index:1;padding:var(--space-3) var(--space-5);border-radius:var(--radius-pill);color:var(--text-dim);white-space:nowrap;min-height:44px;transition:color var(--duration-fast) var(--ease-standard);font-size:.95rem;font-weight:600;position:relative}.stack-toggle__option:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.stack-toggle__option.is-active{color:#08080c}@media (width<=400px){.stack-toggle{scroll-snap-type:x mandatory;justify-content:flex-start}.stack-toggle__option{scroll-snap-align:start}}.content-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-5);gap:var(--space-3);transition:opacity .32s var(--ease-standard), transform .32s var(--ease-standard), border-color var(--duration-fast) var(--ease-standard);flex-direction:column;display:flex}.content-card:hover{border-color:#ffffff2e;transform:translateY(-4px)}.content-card--exiting,.content-card.reveal.content-card--exiting{opacity:0;transform:translateY(-10px)scale(.97)}.content-card--entering,.content-card.reveal.content-card--entering{opacity:0;transform:translateY(16px)scale(.98)}.content-card__meta{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dimmer);font-size:.78rem;font-weight:600}.content-card__tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.content-card__title{font-family:var(--font-display);letter-spacing:-.01em;font-size:1.15rem;font-weight:700}.content-card__desc{color:var(--text-dim);flex-grow:1;font-size:.95rem;line-height:1.6}.content-card__links{gap:var(--space-4);margin-top:var(--space-2);display:flex}.tag,.chip{padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--border);color:var(--text-dim);background:#ffffff08;align-items:center;font-size:.78rem;font-weight:600;display:inline-flex}.tag--fullstack,.chip--fullstack{color:var(--stack-fullstack);border-color:#4ade8059}.tag--sapbtp,.chip--sapbtp{color:var(--stack-sapbtp);border-color:#4fa8ff59}.tag--aiml,.chip--aiml{color:var(--stack-aiml);border-color:#ff6fd859}.btn-link{color:var(--accent-2);transition:border-color var(--duration-fast) var(--ease-standard);border-bottom:1px solid #0000;font-size:.9rem;font-weight:600}.btn-link:hover,.btn-link:focus-visible{border-color:var(--accent-2)}.btn-link--disabled{color:var(--text-dimmer);cursor:not-allowed;pointer-events:none;opacity:.5}.resume-links{justify-content:center;gap:var(--space-3);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.btn-resume{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-5);border-radius:var(--radius-pill);border:1px solid var(--border);color:var(--text);transition:background var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);font-size:.9rem;font-weight:600;display:inline-flex}.btn-resume:hover,.btn-resume:focus-visible{background:var(--bg-elevated);border-color:var(--accent-2);transform:translateY(-2px)}.social-links__item{border:1px solid var(--border);width:44px;height:44px;color:var(--text-dim);transition:color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.social-links__item:hover,.social-links__item:focus-visible{color:var(--accent);border-color:var(--accent);transform:translateY(-2px)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}@keyframes fade-in-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.reveal{opacity:0;transition:opacity .6s var(--ease-standard), transform .6s var(--ease-standard);transform:translateY(24px)}.reveal.is-visible{opacity:1;transform:translateY(0)}.content-card.reveal:nth-child(2){transition-delay:50ms}.content-card.reveal:nth-child(3){transition-delay:.1s}.content-card.reveal:nth-child(4){transition-delay:.15s}.content-card.reveal:nth-child(5){transition-delay:.2s}.content-card.reveal:nth-child(6){transition-delay:.25s}.hero__eyebrow,.hero__avatar,.hero__name,.hero__role,.hero__bio,.hero__cta{animation:fade-in-up .8s var(--ease-standard) both}.hero__avatar{animation-delay:0s}.hero__name{animation-delay:50ms}.hero__role{animation-delay:.15s}.hero__bio{animation-delay:.25s}.hero__cta{animation-delay:.35s}.role-text{transition:opacity .3s var(--ease-standard), transform .3s var(--ease-standard);display:inline-block}.role-text--fading{opacity:0;transform:translateY(6px)}.hero__scroll-cue{animation:2s ease-in-out infinite scroll-cue-pulse}@keyframes scroll-cue-pulse{0%,to{opacity:.3}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}.hero__eyebrow,.hero__avatar,.hero__name,.hero__role,.hero__bio,.hero__cta,.hero__scroll-cue{animation:none}*{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
