@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-vietnamese-wdth-normal.rJmnGBSt.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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-latin-ext-wdth-normal.7khWdh9v.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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-latin-wdth-normal.DY7AcnAa.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{--alu:#dadfe3;--alu-hi:#e8ebee;--ink:#15171a;--graphite:#545b63;--rule:#aeb5bc;--pcb:#1f6b3a;--led:#2fb866;--amber:#f2a900;--font:"Archivo Variable", "Archivo", system-ui, sans-serif;--wide:125%;--stage-w:52%;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--alu);color:var(--ink);font:400 1.0625rem/1.6 var(--font);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;margin:0}a{color:inherit;text-decoration-color:var(--pcb);text-underline-offset:3px;text-decoration-thickness:1.5px}a:hover{text-decoration-thickness:3px}:focus-visible{outline:2px solid var(--pcb);outline-offset:3px}h1,h2,h3{font-stretch:var(--wide);margin:0;line-height:1.05}p{margin:0 0 1em}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{position:absolute;left:-999px}.skip:focus{z-index:10;background:var(--ink);color:var(--alu);padding:8px 12px;top:16px;left:16px}.page{grid-template-columns:var(--stage-w) minmax(0, 1fr);display:grid}.stage-col{height:100dvh;position:sticky;top:0}.content{max-width:44rem;padding:0 clamp(20px,5vw,72px) 0 clamp(28px,3vw,48px)}.stage{width:100%;height:100%;position:relative}.stage canvas{touch-action:pan-y}.stage-fallback{object-fit:contain;width:100%;height:100%}.readout{width:fit-content;max-width:26rem;color:var(--graphite);backdrop-filter:blur(6px);background:#e8ebeee6;border-radius:3px;padding:10px 14px;font-size:.875rem;line-height:1.45;position:absolute;bottom:clamp(16px,3vw,36px);left:clamp(16px,3vw,40px);right:16px}.readout p{margin:0}.readout .uptime{margin-top:4px;padding-left:16px}.readout table{border-collapse:collapse;color:var(--ink);margin-top:10px}.readout th{text-align:left;padding:2px 18px 2px 0;font-weight:500}.readout td{color:var(--graphite);padding:2px 18px 2px 0}.led{vertical-align:1px;background:var(--amber);border-radius:1px;width:7px;height:7px;margin-right:9px;display:inline-block}.led.on{background:var(--led);box-shadow:0 0 6px var(--led)}.led.down{background:#d8434f}.unit{min-height:92vh;padding:14vh 0 10vh}.unit:first-child{padding-top:18vh}.unit:last-of-type{min-height:auto}.head{margin-bottom:36px;position:relative}.head .u{color:var(--graphite);margin-bottom:10px;font-size:.9375rem;font-weight:500;display:block;position:relative}.head .u:before{content:"";border-top:1.5px solid var(--ink);width:clamp(28px,3vw,48px);position:absolute;top:.72em;right:calc(100% + 14px)}.head h2{letter-spacing:-.005em;font-size:clamp(1.9rem,3.2vw,2.6rem);font-weight:750}.name{letter-spacing:-.012em;font-size:clamp(2.9rem,6.2vw,5.4rem);font-weight:820;line-height:.95}.role{color:var(--graphite);margin:14px 0 28px;font-size:clamp(1.15rem,1.8vw,1.4rem);font-weight:500}.pitch{max-width:36rem;font-size:1.15rem;line-height:1.6}.links{flex-wrap:wrap;gap:10px;margin-top:30px;display:flex}.btn{border:1.5px solid var(--ink);background:0 0;border-radius:3px;padding:11px 18px;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-block}.btn:hover{background:var(--alu-hi)}.btn.primary{background:var(--ink);color:var(--alu-hi)}.btn.primary:hover{background:#2a2e33}.job{border-top:1.5px solid var(--rule);grid-template-columns:8.5rem minmax(0,1fr);gap:0 20px;padding:22px 0;display:grid}.job:last-child{border-bottom:1.5px solid var(--rule)}.job .when{color:var(--graphite);padding-top:3px;font-size:.9rem}.job h3{font-size:1.2rem;font-weight:700}.job .title{color:var(--graphite);margin:4px 0 0;font-weight:500}.job ul{margin:12px 0 0;padding-left:1.1em}.job li{margin:6px 0}.job li::marker{color:var(--pcb)}@media (width<=560px){.job{grid-template-columns:1fr}}.project{max-width:36rem;margin-bottom:40px}.project h3{margin-bottom:10px;font-size:1.35rem;font-weight:720}.project .status{color:var(--pcb);margin-left:10px;font-size:.9rem;font-weight:600;font-stretch:100%}.project .built{color:var(--graphite);font-size:.95rem}.studies{max-width:36rem;margin:0;padding:0;list-style:none}.studies li{border-top:1.5px solid var(--rule);padding:14px 0}.studies li:last-child{border-bottom:1.5px solid var(--rule)}.studies a{font-size:1.05rem;font-weight:650}.studies span{color:var(--graphite);margin-top:4px;font-size:.95rem;display:block}.sub{margin:40px 0 14px;font-size:1.15rem;font-weight:700}.skills{grid-template-columns:11rem minmax(0,1fr);gap:10px 20px;margin:0;display:grid}.skills dt{font-weight:600}.skills dd{color:var(--graphite);margin:0}@media (width<=560px){.skills{grid-template-columns:1fr;gap:2px}.skills dd{margin-bottom:10px}}.certs{border-collapse:collapse;width:100%}.certs td{border-top:1.5px solid var(--rule);vertical-align:top;padding:10px 16px 10px 0}.certs tr:last-child td{border-bottom:1.5px solid var(--rule)}.certs .state{white-space:nowrap;color:var(--graphite)}.certs .valid{color:var(--pcb);font-weight:600}.edu{margin:0;padding:0;list-style:none}.edu li{margin-bottom:6px}.foot{color:var(--graphite);padding:64px 0 56px;font-size:.95rem}@media (width<=900px){.page{grid-template-columns:1fr}.stage-col{z-index:2;background:var(--alu);border-bottom:1.5px solid var(--rule);height:44svh;top:0}.content{padding:0 20px}.unit{min-height:auto;padding:56px 0 32px;scroll-margin-top:44svh}.unit:first-child{padding-top:40px}.head .u:before{display:none}.readout{padding:6px 10px;font-size:.8rem;bottom:10px;left:12px}.readout table{display:none}}.how{max-width:46rem;margin:0 auto;padding:56px 20px 40px}.how .back{margin:0 0 40px;font-weight:500}.how h1{letter-spacing:-.01em;margin-bottom:18px;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:800}.how .lede{max-width:38rem;font-size:1.15rem}.how section{margin-top:64px}.how h2{margin-bottom:24px;font-size:clamp(1.5rem,3vw,2rem);font-weight:750}.flow,.split{margin:0;padding:0;list-style:none}.flow>.node{margin-bottom:34px;position:relative}.flow>.node:not(.leaf):after{content:"";border-left:1.5px solid var(--ink);height:34px;position:absolute;top:100%;left:28px}.flow>.node:not(.leaf):before{content:"";border:5px solid #0000;border-top:8px solid var(--ink);border-bottom:0;position:absolute;top:calc(100% + 26px);left:24px}.flow>.node:has(.split):after,.flow>.node:has(.split):before{display:none}.node{border:1.5px solid var(--ink);background:var(--alu-hi);border-radius:3px;padding:14px 18px 4px}.node.edge{border-style:dashed}.node h3{font-size:1.05rem;font-weight:700}.node .where{color:var(--graphite);margin:2px 0 8px;font-size:.9rem}.node p{max-width:36rem}.split{grid-template-columns:1fr 1.4fr;align-items:start;gap:16px;margin:6px -4px 14px;display:grid}.split>.node{background:var(--alu)}.flow.inner{margin-top:10px}.flow.inner>.node{background:var(--alu-hi);margin-bottom:30px}.flow.inner>.node:last-child{margin-bottom:14px}@media (width<=640px){.split{grid-template-columns:1fr}}.how .foot{padding:32px 0 24px}.study .meta{color:var(--graphite);margin-top:-4px;font-size:.95rem}.prose{margin-top:48px;font-size:1.0625rem}.prose h2{margin:52px 0 16px;font-size:clamp(1.4rem,2.6vw,1.75rem);font-weight:750}.prose h3{margin:32px 0 10px;font-size:1.1rem;font-weight:700}.prose p,.prose li{max-width:40rem}.prose ul,.prose ol{padding-left:1.2em}.prose li{margin:6px 0}.prose li::marker{color:var(--pcb)}.prose code{background:var(--alu-hi);border-radius:3px;padding:1px 5px;font-size:.92em}.prose table{border-collapse:collapse;width:100%;margin:18px 0 24px;font-size:.97rem}.prose th,.prose td{text-align:left;vertical-align:top;border-top:1.5px solid var(--rule);padding:8px 14px 8px 0}.prose th{font-weight:600}.prose tr:last-child td{border-bottom:1.5px solid var(--rule)}.prose blockquote{border-left:3px solid var(--pcb);color:var(--graphite);margin:24px 0;padding:4px 0 4px 18px}
