@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#0a0a0a;--paper:#fff;--mute:color-mix(in srgb, var(--ink) 60%, var(--paper));--yellow:#ffe600;--magenta:#ff2d78;--cyan:#00f5ff;--line:2px solid var(--ink);--gutter:clamp(1rem, 4vw, 3rem);--max:1200px;--font:"Space Grotesk Variable", "Space Grotesk", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem}body{background:var(--paper);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.55;overflow-x:hidden}h1,h2,h3,p,ul,ol,dl,dd{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit}:focus-visible{outline:3px solid var(--ink);outline-offset:3px}.prose{color:var(--ink);max-width:62ch}.skip-link{z-index:100;background:var(--yellow);color:var(--ink);padding:.5rem 1rem;font-weight:700;text-decoration:none;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.site-header{z-index:50;background:var(--paper);border-bottom:var(--line);position:sticky;top:0}.site-header-inner{max-width:var(--max);padding:.9rem var(--gutter);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 2rem;margin:0 auto;display:flex}.brand{letter-spacing:-.03em;font-size:1.25rem;font-weight:700;text-decoration:none}.brand-slash{background:var(--yellow);color:var(--ink);border-radius:4px;margin-left:.05em;padding:0 .28em;display:inline-flex}.site-header nav{flex-wrap:wrap;gap:.25rem 1.5rem;font-size:.95rem;font-weight:500;display:flex}.site-header nav a{border-bottom:3px solid #0000;padding:.25rem 0;text-decoration:none;transition:border-color .12s ease-out}.site-header nav a:hover{border-color:var(--magenta)}.btn{--shadow:var(--ink);border:var(--line);box-shadow:0 12px 28px -8px color-mix(in srgb, var(--shadow) 45%, transparent), 5px 5px 0 0 var(--shadow);padding:.85rem 1.6rem;font-size:1rem;font-weight:700;text-decoration:none;transition:transform .12s ease-out,box-shadow .12s ease-out,background-color .12s ease-out,color .12s ease-out;display:inline-block}.btn:hover{box-shadow:0 16px 32px -8px color-mix(in srgb, var(--shadow) 45%, transparent), 8px 8px 0 0 var(--shadow);transform:translate(-2px,-2px)}.btn:active{box-shadow:1px 1px 0 0 var(--shadow);transform:translate(2px,2px)}.btn-yellow{background:var(--yellow);color:var(--ink);--shadow:var(--magenta)}.btn-ghost{color:var(--ink);--shadow:var(--cyan);background:0 0}.btn-ghost:hover{background:var(--ink);color:var(--paper)}.btn-ink{background:var(--ink);color:var(--paper);border-color:var(--ink);--shadow:var(--paper)}.card{--shadow:var(--ink);border:var(--line);background:var(--paper);box-shadow:0 20px 40px -12px color-mix(in srgb, var(--shadow) 40%, transparent), 8px 8px 0 0 var(--shadow)}.card-yellow{--shadow:var(--yellow)}.card-magenta{--shadow:var(--magenta)}.card-cyan{--shadow:var(--cyan)}.pills{flex-wrap:wrap;gap:.5rem;display:flex}.pill{border:2px solid var(--ink);white-space:nowrap;border-radius:999px;padding:.25rem .8rem;font-size:.85rem;font-weight:600;line-height:1.4;display:inline-block}.pill-yellow{background:var(--yellow)}.pill-magenta{background:var(--magenta)}.pill-cyan{background:var(--cyan)}.pill-white{background:var(--paper);color:var(--ink)}.hero{max-width:var(--max);padding:clamp(3rem, 8vw, 7rem) var(--gutter) clamp(3rem, 6vw, 5rem);background-image:radial-gradient(color-mix(in srgb, var(--ink) 9%, transparent) 1.5px, transparent 1.5px);background-size:28px 28px;grid-template-columns:repeat(12,1fr);align-items:end;gap:2rem 1.5rem;margin:0 auto;display:grid;position:relative}.hero-name{letter-spacing:-.05em;--shift:clamp(3px, .5vw, 7px);text-shadow:var(--shift) var(--shift) 0 var(--magenta), calc(var(--shift) * -1) calc(var(--shift) * -1) 0 var(--cyan);flex-direction:column;grid-column:1/-1;font-size:clamp(3.4rem,13vw,11rem);font-weight:700;line-height:.88;display:flex}.hero-word{animation:.7s cubic-bezier(.2,.8,.2,1) both rise;animation-delay:calc(var(--i) * 90ms);display:block}.hero-word:nth-child(2){padding-left:.12em}.hero-word:nth-child(3){background:var(--yellow);color:var(--ink);text-shadow:none;align-self:flex-start;margin-left:-.06em;padding-inline:.06em}.hero-lede{grid-column:1/8;max-width:34ch;font-size:clamp(1.2rem,2vw,1.5rem);font-weight:400;line-height:1.4;animation:.7s cubic-bezier(.2,.8,.2,1) .28s both rise}.hero-actions{flex-wrap:wrap;grid-column:1/8;gap:1rem;animation:.7s cubic-bezier(.2,.8,.2,1) .36s both rise;display:flex}.hero-facts{grid-area:2/9/4/-1;align-self:start;gap:1rem;padding:1.25rem 1.5rem;animation:.7s cubic-bezier(.2,.8,.2,1) .44s both rise;display:grid}.hero-facts dt{color:var(--mute);font-size:.8rem;font-weight:500}.hero-facts dd{font-weight:700;line-height:1.3}@keyframes rise{0%{opacity:0;transform:translateY(1.2rem)}to{opacity:1;transform:none}}.section{max-width:var(--max);padding:clamp(3rem, 6vw, 5rem) var(--gutter);border-top:var(--line);grid-template-columns:repeat(12,1fr);gap:1.5rem;margin:0 auto;display:grid}.section-title{grid-column:1/5}.section-title h2{letter-spacing:-.04em;border-bottom:6px solid var(--yellow);padding-bottom:.4rem;font-size:clamp(2.2rem,4.5vw,3.6rem);font-weight:700;line-height:1;display:inline-block;position:sticky;top:5rem}#trabajo .section-title h2{border-color:var(--magenta)}#experiencia .section-title h2{border-color:var(--cyan)}#stack .section-title h2{border-color:var(--magenta)}#formacion .section-title h2{border-color:var(--cyan)}.section-body{grid-column:5/-1;gap:1.5rem;display:grid}.lede{letter-spacing:-.02em;max-width:24ch;font-size:clamp(1.6rem,3vw,2.4rem);font-weight:300;line-height:1.15}.projects{grid-template-columns:repeat(2,1fr);gap:1.5rem;display:grid}.project{align-content:start;gap:.6rem;padding:1.5rem;display:grid}.project:first-child{grid-column:1/-1;grid-template-columns:1fr 1fr;column-gap:2rem}.project:first-child .project-year{grid-column:1/-1}.project:first-child h3,.project:first-child .project-where{grid-column:1}.project:first-child .prose{grid-area:2/2/4}.project:first-child .pills{grid-column:1/-1}.project-year{letter-spacing:-.03em;color:var(--mute);font-size:2rem;font-weight:300;line-height:1}.project h3{letter-spacing:-.02em;font-size:1.4rem;font-weight:700;line-height:1.15}.project-where{color:var(--mute);font-weight:500}.project .pills{margin-top:.5rem}.timeline{border-left:var(--line);gap:2rem;display:grid}.timeline li{grid-template-columns:10rem 1fr;gap:1rem;padding-left:1.5rem;display:grid;position:relative}.timeline li:before{content:"";background:var(--cyan);border:2px solid var(--ink);border-radius:999px;width:12px;height:12px;position:absolute;top:.45rem;left:-7px}.timeline-when{background:var(--cyan);color:var(--ink);white-space:nowrap;border-radius:4px;align-self:start;padding:.15rem .6rem;font-size:.85rem;font-weight:700;display:inline-block}.timeline h3{font-size:1.25rem;font-weight:700;line-height:1.2}.timeline-org{color:var(--mute);margin-bottom:.4rem}.robotics{border:2px solid var(--magenta);border-left-width:12px;gap:1rem;margin-top:1.5rem;padding:1.5rem;display:grid}.robotics h3{letter-spacing:-.02em;font-size:1.5rem;font-weight:700;line-height:1.1}.robotics ul{gap:1.25rem;display:grid}.robotics li{gap:.4rem;display:grid}.robotics-when{background:var(--magenta);width:fit-content;color:var(--ink);border-radius:4px;padding:.15rem .6rem;font-size:.85rem;font-weight:700;display:inline-block}.stack{grid-template-columns:repeat(3,1fr);gap:1.5rem;display:grid}.stack-group{border-top:6px solid var(--ink);align-content:start;gap:1rem;padding-top:1rem;display:grid}.stack-yellow{border-color:var(--yellow)}.stack-magenta{border-color:var(--magenta)}.stack-cyan{border-color:var(--cyan)}.stack-group h3{letter-spacing:-.02em;font-size:1.4rem;font-weight:700}.stack-group .pill{white-space:normal}.stack-note{color:var(--mute);max-width:62ch}.education{display:grid}.education li{border-bottom:1px solid color-mix(in srgb, var(--ink) 18%, transparent);grid-template-columns:auto 1fr auto;align-items:start;gap:1rem;padding:1.1rem 0;display:grid}.education li:first-child{border-top:var(--line)}.education h3{font-size:1.1rem;font-weight:700;line-height:1.25}.education-where{color:var(--mute)}.education-when{background:var(--yellow);color:var(--ink);white-space:nowrap;border-radius:4px;padding:.15rem .6rem;font-size:.85rem;font-weight:700;display:inline-block}.contact{background:var(--magenta);color:var(--ink);border-top:var(--line)}.contact>*{max-width:var(--max);padding-inline:var(--gutter);margin-inline:auto}.contact h2{letter-spacing:-.05em;padding-top:clamp(3rem,8vw,6rem);font-size:clamp(4rem,14vw,12rem);font-weight:700;line-height:.85}.contact p{max-width:40ch;padding-top:1.5rem;font-size:1.25rem}.contact p,.contact .btn{box-sizing:content-box}.contact .btn{--shadow:var(--ink);width:fit-content;box-shadow:0 12px 28px -8px #0006, 5px 5px 0 0 var(--yellow);margin-top:2rem;margin-bottom:clamp(3rem,8vw,6rem);display:block}.contact .btn:hover{box-shadow:0 16px 32px -8px #0006, 8px 8px 0 0 var(--yellow)}.site-footer{max-width:var(--max);padding:1.5rem var(--gutter);color:var(--mute);flex-wrap:wrap;justify-content:space-between;gap:1rem;margin:0 auto;font-size:.95rem;display:flex}.site-footer .brand{color:var(--ink);font-size:1rem}.site-footer nav{gap:1.5rem;display:flex}.site-footer nav a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink);text-underline-offset:3px;font-weight:500;text-decoration-thickness:2px;transition:text-decoration-color .12s ease-out}.site-footer nav a:hover{-webkit-text-decoration-color:var(--magenta);text-decoration-color:var(--magenta)}.legal{max-width:72ch;padding:clamp(3rem, 6vw, 5rem) var(--gutter);margin:0 auto}.legal h1{letter-spacing:-.04em;font-size:clamp(2.2rem,5vw,3.6rem);font-weight:700;line-height:1}.legal-updated{background:var(--yellow);color:var(--ink);border-radius:999px;margin-top:1.25rem;padding:.25rem .8rem;font-size:.9rem;font-weight:700;display:inline-block}.legal h2{border-top:var(--line);letter-spacing:-.02em;margin-top:3rem;padding-top:1.25rem;font-size:1.5rem;font-weight:700}.legal p{margin-top:1rem}.legal ul{gap:.5rem;margin-top:1rem;padding-left:1.5rem;list-style:outside;display:grid}.legal li::marker{color:var(--magenta)}.legal a{text-underline-offset:3px;text-decoration-thickness:2px;-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink);font-weight:700;transition:text-decoration-color .12s ease-out}.legal a:hover{-webkit-text-decoration-color:var(--magenta);text-decoration-color:var(--magenta)}.legal code{background:color-mix(in srgb, var(--ink) 8%, transparent);padding:.1em .35em;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.9em}.legal-note{border:var(--line);border-left:12px solid var(--cyan);color:var(--mute);margin-top:3rem;padding:1.5rem;font-size:.95rem}@media (width<=900px){.hero-name,.hero-lede,.hero-actions,.hero-facts{grid-column:1/-1}.hero-facts{grid-row:auto;grid-template-columns:repeat(2,1fr)}.section-title,.section-body{grid-column:1/-1}.section-title h2{position:static}.projects,.stack,.project:first-child{grid-template-columns:1fr}.project:first-child .prose{grid-area:auto/1}}@media (width<=560px){.hero-facts{grid-template-columns:1fr}.timeline li{grid-template-columns:1fr;gap:.5rem}.timeline-when{align-self:auto}.education li{grid-template-columns:auto 1fr}.education-when{grid-column:2}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-word,.hero-lede,.hero-actions,.hero-facts{animation:none}.btn,.site-header nav a{transition:none}}
