@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-vietnamese-400-normal-Dpl4UHAZ.woff2)format("woff2"),url(/assets/barlow-vietnamese-400-normal-BFeobeCK.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-ext-400-normal-HxX4XjxC.woff2)format("woff2"),url(/assets/barlow-latin-ext-400-normal-CvBsJvxq.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-qiz4-Cze.woff2)format("woff2"),url(/assets/barlow-latin-400-normal-fsAxiSwU.woff)format("woff");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}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-vietnamese-600-normal-DcjprdFV.woff2)format("woff2"),url(/assets/barlow-vietnamese-600-normal-CA_GiK2e.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-ext-600-normal-B8NK_A3D.woff2)format("woff2"),url(/assets/barlow-latin-ext-600-normal-DMVRjfRT.woff)format("woff");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:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DILqtrty.woff2)format("woff2"),url(/assets/barlow-latin-600-normal-CNwfPWQD.woff)format("woff");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}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-600-normal-CNlPk46_.woff)format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-ext-600-normal-18ESti3H.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff)format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff");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}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-700-normal-DhIzd8Tb.woff)format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-700-normal-BIHFfxf0.woff)format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff");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{--ochre:#c06014;--peach:#eddbcd;--black:#000;--cool-grey:#cdcdcd;--text:var(--lightningcss-light,#333)var(--lightningcss-dark,var(--cool-grey));--text-strong:var(--lightningcss-light,var(--black))var(--lightningcss-dark,#f6f5f4);--bg:var(--lightningcss-light,#f6f5f4)var(--lightningcss-dark,#111);--surface:var(--lightningcss-light,#fff)var(--lightningcss-dark,#1c1c1c);--border:var(--lightningcss-light,#e2e0de)var(--lightningcss-dark,#333);--accent:var(--ochre);--accent-strong:var(--lightningcss-light,#a8520f)var(--lightningcss-dark,#d9732a);--on-accent:var(--lightningcss-light,#fff)var(--lightningcss-dark,var(--black));--tag-bg:var(--lightningcss-light,var(--peach))var(--lightningcss-dark,#2a2420);--block:var(--black);--sans:"Barlow", system-ui, "Segoe UI", Roboto, sans-serif;--condensed:"Barlow Condensed", "Arial Narrow", sans-serif;font:18px/1.6 var(--sans);color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);margin:0}body:before{content:"";background:var(--ochre);height:6px;display:block}h1,h2,h3{color:var(--text-strong);font-family:var(--condensed);margin:0 0 .4em;font-weight:700;line-height:1.05}h1,h2{letter-spacing:.01em;text-transform:uppercase}h1{font-size:clamp(2.8rem,8vw,4.4rem)}h2{font-size:1.9rem}h3{font-size:1.45rem;font-weight:600}a{color:var(--accent-strong);text-underline-offset:.15em}a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}ul,ol{margin:0;padding:0;list-style:none}.site{flex-direction:column;min-height:100vh;display:flex}.site-header,.site-main,.site-footer{width:100%;max-width:60rem;margin-inline:auto;padding-inline:1.25rem}.site-nav{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding-block:1.25rem;display:flex}.site-name{color:var(--text-strong);font-family:var(--condensed);letter-spacing:.02em;text-transform:uppercase;font-size:1.5rem;font-weight:700;line-height:1;text-decoration:none}.site-links{flex-wrap:wrap;gap:.25rem 1.5rem;display:flex}.site-links a{color:var(--text-strong);font-family:var(--condensed);letter-spacing:.1em;text-transform:uppercase;text-underline-offset:.5em;font-size:.9rem;font-weight:600;text-decoration:none;text-decoration-thickness:3px}.site-links a:hover,.site-links a.active{text-decoration:underline;-webkit-text-decoration-color:var(--ochre);text-decoration-color:var(--ochre)}.site-links li{align-items:center;display:flex}.theme-switch{--switch-width:3.4rem;--switch-height:1.8rem;--thumb-size:calc(var(--switch-height) - 8px);width:var(--switch-width);height:var(--switch-height);background:var(--tag-bg);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:999px;justify-content:space-between;align-items:center;padding:0 .4rem;display:flex;position:relative}.theme-switch:hover{border-color:var(--ochre)}.theme-switch:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.theme-switch-icon{z-index:1;width:.85rem;height:.85rem;position:relative}.theme-switch[aria-checked=false] .theme-switch-sun,.theme-switch[aria-checked=true] .theme-switch-moon{color:var(--black)}.theme-switch-thumb{width:var(--thumb-size);height:var(--thumb-size);background:var(--ochre);border-radius:50%;transition:transform .2s;position:absolute;top:3px;left:3px}.theme-switch[aria-checked=true] .theme-switch-thumb{transform:translateX(calc(var(--switch-width) - 2px - var(--thumb-size) - 6px))}@media (prefers-reduced-motion:reduce){.theme-switch-thumb{transition:none}}.site-main{flex:1;padding-block:2rem 4rem}.site-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;padding-block:1.5rem;font-size:.9rem;display:flex}.site-footer p{margin:0}.footer-link{align-items:center;gap:.4rem;display:inline-flex}.hero{gap:2.5rem;padding-block:2rem 3.5rem;display:grid}.hero-aside{background:var(--surface);border:1px solid var(--border);max-width:20rem;box-shadow:12px 12px 0 var(--peach);border-radius:2px;margin-right:12px;overflow:hidden}.hero-photo{width:100%;height:auto;display:block}.hero-aside-link{text-align:center;white-space:nowrap;padding:.6rem 1rem;font-size:.8rem;font-weight:600;display:block}.hero-aside-link:focus-visible{outline-offset:-3px}@media (width>=48rem){.hero{grid-template-columns:minmax(0,1fr) 16rem;align-items:start}}.eyebrow{color:var(--text-strong);font-family:var(--condensed);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:.75rem;margin:0 0 .75rem;font-size:.9rem;font-weight:600;display:flex}.eyebrow:before{content:"";background:var(--ochre);flex:none;width:2rem;height:3px}.hero-intro,.lead{max-width:38rem;font-size:1.15rem}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.button{border:2px solid var(--text-strong);color:var(--text-strong);font-family:var(--condensed);letter-spacing:.1em;text-transform:uppercase;overflow-wrap:anywhere;border-radius:2px;padding:.6rem 1.25rem;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-block}.button:hover{background:var(--tag-bg)}.button-primary{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--on-accent)}.button-primary:hover{background:var(--lightningcss-light,#8f450c)var(--lightningcss-dark,#e48a45);border-color:var(--lightningcss-light,#8f450c)var(--lightningcss-dark,#e48a45)}.card-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:1.25rem;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--ochre);border-radius:2px;flex-direction:column;gap:.75rem;padding:1.25rem;display:flex}.card h3,.card p{margin:0}.card .link-row{margin-top:auto}.tags{flex-wrap:wrap;gap:.4rem;display:flex}.tags li{background:var(--tag-bg);color:var(--text-strong);border-radius:999px;padding:.1rem .6rem;font-size:.8rem}.link-row{flex-wrap:wrap;gap:1rem;display:flex}.timeline-item{border-top:1px solid var(--border);grid-template-columns:9rem 1fr;gap:.25rem 1.5rem;padding-block:1.5rem;display:grid}.timeline-item h2{margin-bottom:.15em}.timeline-dates{color:var(--text-strong);font-family:var(--condensed);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.9rem;font-weight:600}.timeline-company{color:var(--text-strong);margin:0 0 .75rem}.timeline-item ul{padding-left:1.1rem;list-style:outside}.skill-icon{fill:currentColor;flex:none;width:1.1em;height:1.1em}.tech-section{margin-bottom:3rem}.tech-banner{background:var(--block);border:1px solid var(--border);color:#f6f5f4;border-radius:2px;padding:1rem 0 1.1rem}.tech-banner:hover{box-shadow:inset 0 -6px 0 var(--ochre)}.tech-banner-label{color:#f4f2f1;font-family:var(--condensed);letter-spacing:.1em;text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;margin-bottom:.75rem;padding-inline:1.25rem;font-size:.9rem;font-weight:600;display:flex}.tech-banner-cta{color:var(--ochre);text-decoration:none}.tech-banner-cta:hover{text-decoration:underline}.tech-banner-viewport{padding-block:4px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.tech-banner-track{width:max-content;animation:45s linear infinite tech-scroll;display:flex}.tech-banner:hover .tech-banner-track,.tech-banner:focus-within .tech-banner-track{animation-play-state:paused}.tech-banner-list{gap:2.25rem;padding-right:2.25rem;display:flex}.tech-banner-list a{color:inherit;white-space:nowrap;align-items:center;gap:.5rem;font-size:1.05rem;text-decoration:none;display:flex}.tech-banner-list a:focus-visible{outline-offset:2px}.tech-banner-list .skill-icon{width:1.6rem;height:1.6rem}@keyframes tech-scroll{to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.tech-banner-viewport{-webkit-mask-image:none;mask-image:none}.tech-banner-track{width:auto;padding-inline:1.25rem;animation:none}.tech-banner-list{flex-wrap:wrap;gap:.75rem 1.75rem;padding-right:0}.tech-banner-list+.tech-banner-list{display:none}}.skill-group{margin-top:2rem}.skill-list{flex-wrap:wrap;gap:.5rem;display:flex}.skill-chip{background:var(--tag-bg);color:var(--text-strong);font:inherit;border:1px solid #0000;border-radius:999px;align-items:center;gap:.45rem;padding:.3rem .8rem;font-size:.9rem;display:inline-flex}button.skill-chip{border-color:var(--border);cursor:pointer}button.skill-chip:hover{border-color:var(--accent)}button.skill-chip:focus-visible,.button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button.skill-chip[aria-pressed=true]{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--on-accent)}.skill-count{background:var(--surface);min-width:1.4em;color:var(--text);text-align:center;border-radius:999px;padding-inline:.35em;font-size:.75rem}.tech-banner-list a:hover,.tech-banner-list a:focus-visible{color:var(--brand-dark,#f4f2f1);text-decoration:underline}button.skill-chip:not([aria-pressed=true]):hover{color:var(--lightningcss-light,var(--brand-light,var(--text-strong)))var(--lightningcss-dark,var(--brand-dark,var(--text-strong)))}.stories{margin-top:3rem;scroll-margin-top:1.5rem}.stories-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.stories-header h2{margin:0}.stories-header .button{font:inherit;cursor:pointer;background:0 0;font-size:.9rem}.card .story-context{margin-top:-.4rem;font-size:.85rem}@media (width<=40rem){.timeline-item{grid-template-columns:1fr}}
