@import"https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400..800&family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&family=Space+Grotesk:wght@400..700&display=swap";.hp[data-v-15076d35]{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}:root{--font-display: "Bricolage Grotesque", sans-serif;--font-body: "Hanken Grotesk", sans-serif;--font-mono: "JetBrains Mono", monospace;--accent: #6ee7b7;--accent-deep: #34d399;--accent-ink: #052e22;--accent-glow: rgba(110, 231, 183, .16);--bg: #0c0e12;--bg-soft: #0f1217;--surface: #14181f;--surface-2: #191e27;--line: rgba(255, 255, 255, .09);--line-strong: rgba(255, 255, 255, .16);--ink: #eef1f6;--ink-2: #aab3c2;--ink-3: #6b7585;--grid: rgba(255, 255, 255, .025);--section-y: clamp(72px, 9vw, 140px);--container: 1200px;--gutter: clamp(20px, 5vw, 64px);--radius: 4px;--radius-lg: 8px;color-scheme:dark}[data-theme=light]{--bg: #f4f3ee;--bg-soft: #eeede6;--surface: #ffffff;--surface-2: #faf9f5;--line: rgba(20, 24, 31, .12);--line-strong: rgba(20, 24, 31, .22);--ink: #16191f;--ink-2: #4a525f;--ink-3: #8b93a1;--grid: rgba(20, 24, 31, .035);--accent-deep: #0d9b6c;--accent-ink: #ffffff;--accent-glow: rgba(13, 155, 108, .12);color-scheme:light}[data-theme=light] .spec__dot,[data-theme=light] .pill__dot{box-shadow:0 0 0 3px var(--accent-glow)}[data-density=compact]{--section-y: clamp(52px, 6vw, 96px)}[data-density=comfy]{--section-y: clamp(96px, 12vw, 184px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:84px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:var(--font-body);background:var(--bg);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:64px 64px}::selection{background:var(--accent);color:var(--accent-ink)}a{color:inherit;text-decoration:none}img,svg{display:block}button{font:inherit;cursor:pointer}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--section-y);position:relative}.section+.section{border-top:1px solid var(--line)}.section--first{padding-top:calc(68px + clamp(28px,4vw,56px))}.shead{display:flex;align-items:baseline;gap:18px;margin-bottom:clamp(36px,5vw,64px)}.shead__index{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--accent-deep);letter-spacing:.04em;flex:none}.shead__title{font-family:var(--font-display);font-weight:600;font-size:clamp(28px,4.4vw,46px);letter-spacing:-.02em;line-height:1.04}.shead__rule{flex:1;height:1px;background:var(--line);transform:translateY(-8px);min-width:24px}.nav{position:fixed;inset:0 0 auto 0;z-index:50;transition:background .3s ease,border-color .3s ease,backdrop-filter .3s ease;border-bottom:1px solid transparent}.nav--scrolled{background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);border-bottom-color:var(--line)}.nav__inner{display:flex;align-items:center;justify-content:space-between;height:68px}.nav__brand{font-family:var(--font-mono);font-weight:700;font-size:16px;letter-spacing:.02em;display:inline-flex;align-items:center}.nav__brand b{color:var(--accent);font-weight:700}.nav__brand .caret{width:9px;height:17px;background:var(--accent);margin-left:3px;display:inline-block;animation:blink 1.15s steps(2,start) infinite}@keyframes blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.nav__brand .caret{animation:none}}.nav__links{display:flex;align-items:center;gap:4px}.nav__link{font-family:var(--font-mono);font-size:13px;color:var(--ink-2);padding:8px 12px;border-radius:var(--radius);display:inline-flex;gap:7px;align-items:baseline;transition:color .18s ease,background .18s ease}.nav__link i{font-style:normal;color:var(--accent-deep);font-size:11px;opacity:.75}.nav__link:hover{color:var(--ink);background:var(--surface)}.nav__resume{margin-left:10px;font-family:var(--font-mono);font-size:13px;color:var(--accent);border:1px solid var(--line-strong);padding:8px 15px;border-radius:var(--radius);transition:border-color .18s ease,background .18s ease,color .18s ease}.nav__resume:hover{border-color:var(--accent);background:var(--accent-glow)}.nav__toggle{display:none;width:42px;height:42px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:4px;align-items:center;justify-content:center}.nav__toggle span{width:18px;height:1.6px;background:var(--ink);transition:transform .25s ease,opacity .2s ease}.nav[data-open=true] .nav__toggle span:nth-child(1){transform:translateY(5.6px) rotate(45deg)}.nav[data-open=true] .nav__toggle span:nth-child(2){opacity:0}.nav[data-open=true] .nav__toggle span:nth-child(3){transform:translateY(-5.6px) rotate(-45deg)}.hero{padding-top:clamp(120px,17vh,190px);padding-bottom:var(--section-y);position:relative}.hero__grid{display:grid;grid-template-columns:1.55fr .95fr;gap:clamp(32px,5vw,72px);align-items:center}.hero__eyebrow{font-family:var(--font-mono);font-size:13px;letter-spacing:.06em;color:var(--ink-2);display:inline-flex;align-items:center;gap:10px;margin-bottom:26px}.hero__eyebrow .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-glow)}.hero h1{font-family:var(--font-display);font-weight:600;font-size:clamp(36px,6.6vw,80px);line-height:.98;letter-spacing:-.035em;text-wrap:balance;margin-bottom:26px}.hero h1 .accent{color:var(--accent)}.hero h1 em{font-style:normal;font-family:var(--font-display);font-weight:400;color:var(--ink-2)}.hero__sub{font-size:clamp(16px,1.6vw,19px);color:var(--ink-2);max-width:46ch;margin-bottom:36px;text-wrap:pretty}.hero__sub b{color:var(--ink);font-weight:600}.hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:34px}.btn{font-family:var(--font-mono);font-size:13.5px;font-weight:500;padding:13px 22px;border-radius:var(--radius);border:1px solid var(--line-strong);color:var(--ink);display:inline-flex;align-items:center;gap:9px;transition:transform .15s ease,border-color .18s ease,background .18s ease,color .18s ease}.btn:hover{transform:translateY(-2px);border-color:var(--ink-2)}.btn .arr{transition:transform .2s ease}.btn:hover .arr{transform:translate(2px,-2px)}.btn--primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn--primary:hover{background:var(--accent-deep);border-color:var(--accent-deep);box-shadow:0 12px 30px -12px var(--accent-glow)}.hero__meta{display:flex;flex-wrap:wrap;gap:6px 26px;font-family:var(--font-mono);font-size:12.5px;color:var(--ink-3)}.hero__meta span{display:inline-flex;gap:8px;align-items:center}.hero__meta b{color:var(--ink-2);font-weight:500}.spec{border:1px solid var(--line);border-radius:var(--radius-lg);background:linear-gradient(180deg,var(--surface),var(--bg-soft));overflow:hidden;box-shadow:0 30px 60px -40px #000000b3}.spec__bar{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line);font-family:var(--font-mono);font-size:12px;color:var(--ink-3)}.spec__lights{display:flex;gap:6px;margin-right:6px}.spec__lights i{width:10px;height:10px;border-radius:50%;background:var(--line-strong)}.spec__lights i:first-child{background:var(--accent)}.spec__body{padding:18px 20px 22px;font-family:var(--font-mono);font-size:13.5px}.spec__row{display:grid;grid-template-columns:84px 1fr;gap:14px;padding:6px 0}.spec__k{color:var(--ink-3)}.spec__v{color:var(--ink)}.spec__v .accent{color:var(--accent)}.spec__sep{height:1px;background:var(--line);margin:10px 0}.spec__status{display:inline-flex;align-items:center;gap:8px}.spec__dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.about__grid{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(34px,5vw,72px);align-items:start}.about__p{font-size:clamp(16px,1.55vw,18.5px);color:var(--ink-2);margin-bottom:20px;max-width:56ch;text-wrap:pretty}.about__p:last-child{margin-bottom:0}.about__p b{color:var(--ink);font-weight:600}.about__p .hl{color:var(--accent-deep);font-weight:600}.about__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}.edu{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);padding:26px;position:sticky;top:92px}.edu__tag{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:center;gap:10px;margin-bottom:18px}.edu__tag:after{content:"";flex:1;height:1px;background:var(--line)}.edu__school{font-family:var(--font-display);font-weight:600;font-size:24px;letter-spacing:-.02em}.edu__degree{color:var(--ink-2);margin-top:4px}.edu__meta{display:flex;justify-content:space-between;gap:12px;font-family:var(--font-mono);font-size:12.5px;color:var(--ink-3);margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.edu__meta b{color:var(--accent);font-weight:600}.edu__courses{display:flex;flex-wrap:wrap;gap:7px;margin-top:18px}.tag{font-family:var(--font-mono);font-size:12px;color:var(--ink-2);border:1px solid var(--line);border-radius:100px;padding:5px 12px;transition:border-color .18s ease,color .18s ease}.tag:hover{border-color:var(--accent);color:var(--ink)}.timeline{display:flex;flex-direction:column}.xp{display:grid;grid-template-columns:220px 1fr;gap:clamp(20px,4vw,56px);padding:clamp(28px,3.4vw,44px) 0;border-top:1px solid var(--line);position:relative}.xp:first-child{border-top:none}.xp__aside{position:relative}.xp__period{font-family:var(--font-mono);font-size:12.5px;color:var(--accent-deep);font-weight:600}.xp__loc{font-family:var(--font-mono);font-size:12px;color:var(--ink-3);margin-top:6px}.xp__company{font-family:var(--font-mono);font-size:12px;color:var(--ink-2);margin-top:14px;display:inline-flex;align-items:center;gap:8px}.xp__company .badge{font-size:10px;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line);border-radius:3px;padding:2px 6px;color:var(--ink-3)}.xp__role{font-family:var(--font-display);font-weight:600;font-size:clamp(20px,2.4vw,27px);letter-spacing:-.02em;margin-bottom:18px;line-height:1.1}.xp__role span{color:var(--ink-3);font-weight:400}.xp__points{list-style:none;display:flex;flex-direction:column;gap:11px}.xp__points li{position:relative;padding-left:24px;color:var(--ink-2);font-size:15.5px;text-wrap:pretty}.xp__points li:before{content:"";position:absolute;left:2px;top:10px;width:9px;height:1px;background:var(--accent)}.xp__points b{color:var(--ink);font-weight:600}.projects__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);padding:28px;display:flex;flex-direction:column;position:relative;overflow:hidden;transition:border-color .25s ease,transform .25s ease,background .25s ease}.card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(420px 200px at var(--mx, 70%) -10%,var(--accent-glow),transparent 70%);opacity:0;transition:opacity .35s ease;pointer-events:none}.card:hover{border-color:var(--line-strong);transform:translateY(-4px)}.card:hover:after{opacity:1}.card__top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px}.card__idx{font-family:var(--font-mono);font-size:12px;color:var(--ink-3)}.card__icon{width:38px;height:38px;border:1px solid var(--line);border-radius:var(--radius);display:grid;place-items:center;color:var(--accent)}.card__icon svg{width:19px;height:19px}.card__links{display:flex;gap:8px;align-items:center}.card__link{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-2);border:1px solid var(--line);border-radius:3px;padding:4px 9px;transition:color .18s ease,border-color .18s ease}.card__link:hover{color:var(--accent);border-color:var(--accent)}.card__title{font-family:var(--font-display);font-weight:600;font-size:23px;letter-spacing:-.02em}.card__tagline{color:var(--ink-2);margin-top:8px;font-size:15px;text-wrap:pretty}.card__points{list-style:none;margin-top:18px;display:flex;flex-direction:column;gap:9px;flex:1}.card__points li{position:relative;padding-left:20px;font-size:14px;color:var(--ink-2);text-wrap:pretty}.card__points li:before{content:"▹";position:absolute;left:2px;top:0;color:var(--accent);font-family:var(--font-mono)}.card__stack{display:flex;flex-wrap:wrap;gap:7px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}.chip{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-3);background:var(--surface-2);border-radius:3px;padding:4px 9px}.skills__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.skillcol{background:var(--bg);padding:28px}.skillcol__label{font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-deep);margin-bottom:18px;display:flex;align-items:center;gap:10px}.skillcol__label i{font-style:normal;color:var(--ink-3);font-size:11px}.skillcol__items{display:flex;flex-wrap:wrap;gap:8px}.contact__grid{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(34px,6vw,84px);align-items:start}.contact__lead{font-size:clamp(17px,1.7vw,20px);color:var(--ink-2);max-width:42ch;text-wrap:pretty}.contact__lead a{color:var(--accent);border-bottom:1px solid var(--accent-glow);transition:border-color .2s ease}.contact__lead a:hover{border-bottom-color:var(--accent)}.contact__direct{margin-top:30px;display:flex;flex-direction:column;gap:14px}.contact__direct a,.contact__direct span{font-family:var(--font-mono);font-size:13.5px;color:var(--ink-2);display:inline-flex;align-items:center;gap:12px}.contact__direct .ck{color:var(--ink-3);width:78px;flex:none}.contact__direct a:hover{color:var(--accent)}.form{display:flex;flex-direction:column;gap:18px}.form__row{display:grid;grid-template-columns:1fr 1fr;gap:18px}.field{display:flex;flex-direction:column;gap:8px}.field label{font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--ink-3)}.field label .req{color:var(--accent-deep)}.field input,.field textarea{font-family:var(--font-body);font-size:15px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:13px 15px;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;resize:vertical;width:100%}.field textarea{min-height:142px}.field input::placeholder,.field textarea::placeholder{color:var(--ink-3)}.field input:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);background:var(--bg-soft)}.field--err input,.field--err textarea{border-color:#f87171;box-shadow:0 0 0 3px #f8717124}.field__err{font-family:var(--font-mono);font-size:11.5px;color:#f87171;min-height:0}.form__foot{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.form__btn{font-family:var(--font-mono);font-size:14px;font-weight:600;background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);padding:14px 26px;border-radius:var(--radius);display:inline-flex;align-items:center;gap:10px;transition:transform .15s ease,background .18s ease,opacity .2s ease}.form__btn:hover:not(:disabled){transform:translateY(-2px);background:var(--accent-deep)}.form__btn:disabled{opacity:.6;cursor:progress}.form__btn .spin{width:14px;height:14px;border-radius:50%;border:2px solid color-mix(in srgb,var(--accent-ink) 40%,transparent);border-top-color:var(--accent-ink);animation:spin .7s linear infinite;display:none}.form[data-state=sending] .form__btn .spin{display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.form__note{font-family:var(--font-mono);font-size:12.5px}.form__note.ok{color:var(--accent-deep)}.form__note.err{color:#f87171}.footer{border-top:1px solid var(--line);padding-block:44px}.footer__inner{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.footer__credit{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-3)}.footer__credit b{color:var(--ink-2);font-weight:500}.footer__links{display:flex;gap:6px}.footer__links a{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-2);padding:7px 12px;border:1px solid var(--line);border-radius:var(--radius);transition:border-color .18s ease,color .18s ease}.footer__links a:hover{color:var(--accent);border-color:var(--accent)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1)}.reveal.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}@media(max-width:940px){.hero__grid{grid-template-columns:1fr}.spec{max-width:460px}.about__grid{grid-template-columns:1fr}.edu{position:static}.contact__grid,.projects__grid,.skills__grid{grid-template-columns:1fr}}@media(max-width:720px){.nav__links{position:fixed;inset:68px 0 auto 0;flex-direction:column;align-items:stretch;gap:2px;background:color-mix(in srgb,var(--bg) 96%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);padding:14px var(--gutter) 22px;transform:translateY(-12px);opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s ease}.nav[data-open=true] .nav__links{opacity:1;transform:none;pointer-events:auto}.nav__link{padding:12px 8px;font-size:14px}.nav__resume{margin-left:0;margin-top:8px;text-align:center}.nav__toggle{display:flex}.xp{grid-template-columns:1fr;gap:16px}.form__row{grid-template-columns:1fr}}
