@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.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}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-cyrillic-ext-wght-normal-c-5QAGAI.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-cyrillic-wght-normal-BMDVbyM7.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-greek-ext-wght-normal-BXZfsJY4.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-greek-wght-normal-Cc-u-6OI.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-vietnamese-wght-normal-BDs68eHQ.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:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-latin-ext-wght-normal-C8iNium2.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-latin-wght-normal-Bo_j9asI.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{--display:"Fraunces Variable", Georgia, serif;--body:"Source Sans 3 Variable", "Segoe UI", system-ui, sans-serif;--rail-width:3.5rem}:root,[data-theme=paper]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#fbf6ec;--ink:#191713;--muted:#645e52;--rule:#e2d9c7;--field:#fffdf8;--accent:#c23c1b;--on-accent:#fff8ee;--accent-2:#1f6150;--error:#a3161b;--tone-0:#c23c1b;--on-tone-0:#fff8ee;--tone-1:#1d4a38;--on-tone-1:#f4efe2;--tone-2:#e8b53e;--on-tone-2:#191713;--tone-3:#24399a;--on-tone-3:#f4efe2}[data-theme=night]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#14130f;--ink:#f1ebdf;--muted:#a9a294;--rule:#37342b;--field:#1e1c16;--accent:#ff8a5c;--on-accent:#191713;--accent-2:#7cc4b0;--error:#ff9c94;--tone-0:#c23c1b;--on-tone-0:#fff8ee;--tone-1:#1d4a38;--on-tone-1:#f4efe2;--tone-2:#e8b53e;--on-tone-2:#191713;--tone-3:#24399a;--on-tone-3:#f4efe2}[data-theme=forest]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#0f1f19;--ink:#e8efe6;--muted:#9fb3a6;--rule:#26392f;--field:#152a21;--accent:#e9b949;--on-accent:#12201a;--accent-2:#f0937a;--error:#ffa197;--tone-0:#b4472b;--on-tone-0:#fff6ea;--tone-1:#e9b949;--on-tone-1:#12201a;--tone-2:#8fb89a;--on-tone-2:#0f1f19;--tone-3:#5a3a6b;--on-tone-3:#f6eefa}[data-theme=coastal]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#eef3f6;--ink:#0f2230;--muted:#4c6070;--rule:#cdd9e1;--field:#fbfdfe;--accent:#1b5ba3;--on-accent:#fff;--accent-2:#a3401f;--error:#b3261e;--tone-0:#1b5ba3;--on-tone-0:#fff;--tone-1:#e07a3f;--on-tone-1:#0f2230;--tone-2:#0d6a6a;--on-tone-2:#fff;--tone-3:#f2c14e;--on-tone-3:#0f2230}.theme-option[data-theme-option=paper]{--swatch-a:#fbf6ec;--swatch-b:#c23c1b;--swatch-c:#1f6150}.theme-option[data-theme-option=night]{--swatch-a:#14130f;--swatch-b:#ff8a5c;--swatch-c:#7cc4b0}.theme-option[data-theme-option=forest]{--swatch-a:#0f1f19;--swatch-b:#e9b949;--swatch-c:#f0937a}.theme-option[data-theme-option=coastal]{--swatch-a:#eef3f6;--swatch-b:#1b5ba3;--swatch-c:#a3401f}*,:before,:after{box-sizing:border-box}body{background:var(--paper);color:var(--ink);font:400 1.125rem/1.6 var(--body);-webkit-font-smoothing:antialiased;margin:0}#root{flex-direction:column;min-height:100vh;display:flex}main{flex:1}main:focus{outline:none}a{color:var(--accent);text-underline-offset:.18em}img{max-width:100%;display:block}:focus-visible{outline-offset:3px;outline:2px solid}h1,h2,h3{font-family:var(--display);letter-spacing:-.02em;margin:0;font-weight:500;line-height:1.05}.wrap{width:100%;max-width:76rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem)}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.status{text-align:center;color:var(--muted);padding:4rem 1.5rem}.skip-link{z-index:2;position:absolute;left:-999px}.skip-link:focus{background:var(--paper);padding:.5rem 1rem;top:1rem;left:1rem}.button{border:2px solid var(--accent);background:var(--accent);color:var(--on-accent);font:600 1.0625rem/1.3 var(--body);cursor:pointer;border-radius:999px;padding:.75rem 1.5rem;text-decoration:none;transition:transform .15s;display:inline-block}.button:hover{transform:translateY(-2px)}.button:disabled{opacity:.6;cursor:progress;transform:none}.button-quiet{color:var(--ink);border-color:var(--ink);background:0 0}.button-invert{background:var(--on-accent);color:var(--accent);border-color:var(--on-accent)}.site-header-inner{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 2rem;padding-block:1.5rem;display:flex}.wordmark{color:var(--ink);font:500 1.375rem/1.2 var(--display);letter-spacing:-.01em;text-decoration:none}.header-tools{flex-wrap:wrap;align-items:center;gap:.75rem 2rem;display:flex}.site-header nav{flex-wrap:wrap;gap:.25rem 1.5rem;display:flex}.theme-picker{border:0;gap:.5rem;margin:0;padding:0;display:flex}.theme-option input{border:1px solid var(--muted);background:linear-gradient(135deg, var(--swatch-a) 50%, var(--swatch-b) 50% 75%, var(--swatch-c) 75%);cursor:pointer;appearance:none;border-radius:50%;width:1.5rem;height:1.5rem;margin:0;display:block}.theme-option input:checked{box-shadow:0 0 0 2px var(--paper), 0 0 0 4px var(--ink)}@media (width>54rem){body{padding-right:var(--rail-width)}.theme-picker{z-index:1;width:var(--rail-width);border-left:1px solid var(--rule);background:var(--paper);flex-direction:column;justify-content:center;align-items:center;gap:.875rem;position:fixed;top:0;bottom:0;right:0}}.site-header nav a{color:var(--ink);border-bottom:2px solid #0000;padding-block:.25rem;text-decoration:none}.site-header nav a:hover,.site-header nav a.active{border-bottom-color:var(--accent-2)}.site-footer{border-top:1px solid var(--rule);color:var(--muted);font-size:1rem}.site-footer-inner{flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;padding-block:1.75rem;display:flex}.site-footer p{margin:0}.site-footer ul{flex-wrap:wrap;gap:.25rem 1.5rem;margin:0;padding:0;list-style:none;display:flex}.site-footer a{color:inherit}.hero{grid-template-columns:minmax(0,1fr) minmax(15rem,min(23rem,28vw));align-items:center;gap:clamp(2rem,5vw,4.5rem);padding-block:clamp(2rem,5vw,4rem) clamp(3.5rem,9vw,7rem);animation:.6s ease-out both rise;display:grid}.hero-photo{border-radius:1rem;width:100%;height:auto}.hero h1{letter-spacing:-.035em;overflow-wrap:break-word;font-size:clamp(3.75rem,13vw,10.5rem);line-height:.95}.hero-headline{max-width:24ch;color:var(--accent-2);font:500 clamp(1.625rem, 3.6vw, 2.75rem)/1.15 var(--display);letter-spacing:-.015em;margin:1.75rem 0 0}.hero-intro{max-width:34rem;margin:1.25rem 0 0;font-size:1.25rem;line-height:1.5}.actions{flex-wrap:wrap;gap:.75rem;margin-top:2.25rem;display:flex}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}.featured{padding-bottom:clamp(4rem,8vw,6.5rem)}.section-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 2rem;margin-bottom:1.75rem;display:flex}.section-heading h2{font-size:clamp(1.875rem,3.5vw,2.75rem)}.invite{background:var(--accent);color:var(--on-accent);padding-block:clamp(3.5rem,8vw,6rem)}.invite .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem 3rem;display:flex}.invite h2{font-size:clamp(2.25rem,6vw,4.75rem)}.project-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:1rem;display:grid}.project-grid-wide{grid-template-columns:repeat(auto-fit,minmax(min(100%,26rem),1fr))}.project{background:var(--tone);min-height:24rem;color:var(--on-tone);border-radius:1rem;flex-direction:column;transition:transform .2s;display:flex;overflow:hidden}.project:hover{transform:translateY(-4px)}.tone-0{--tone:var(--tone-0);--on-tone:var(--on-tone-0)}.tone-1{--tone:var(--tone-1);--on-tone:var(--on-tone-1)}.tone-2{--tone:var(--tone-2);--on-tone:var(--on-tone-2)}.tone-3{--tone:var(--tone-3);--on-tone:var(--on-tone-3)}.project img{aspect-ratio:16/9;object-fit:cover;width:100%}.project-body{flex-direction:column;flex:1;justify-content:flex-end;padding:clamp(1.5rem,3vw,2.25rem);display:flex}.project-body p{margin:.75rem 0 0}.project h3{font-size:clamp(2rem,3.4vw,2.75rem)}.project-tagline{font-size:1.25rem;line-height:1.35}.project-tech{font-size:1rem}.project-links{flex-wrap:wrap;gap:.25rem 1.25rem;font-weight:600;display:flex}.project-links a{color:inherit}.page{padding-block:clamp(2.5rem,6vw,5rem) clamp(4rem,8vw,6.5rem)}.page h1{letter-spacing:-.03em;font-size:clamp(3.25rem,9vw,7rem);line-height:.98}.page-intro{max-width:38rem;margin:1.25rem 0 2.5rem;font-size:1.375rem;line-height:1.4}.about-story{max-width:60rem;margin-top:2.5rem}.about-story p{max-width:44rem;margin:0 0 1.1rem}.about-story .lead{max-width:none;font:500 clamp(1.375rem, 2.4vw, 1.875rem)/1.35 var(--display);letter-spacing:-.015em;margin-bottom:1.5rem}.skills{margin-top:clamp(3.5rem,7vw,5.5rem)}.skills h2{margin-bottom:1.75rem;font-size:clamp(1.875rem,3.5vw,2.75rem)}.skill-groups{grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr));gap:2rem 3rem;display:grid}.skills h3{font:600 1.125rem/1.3 var(--body);letter-spacing:0;margin-bottom:.75rem}.tags{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.tags li{border:1px solid var(--accent-2);border-radius:999px;padding:.2rem .85rem;font-size:1rem}.hobbies,.pets{margin-top:clamp(3.5rem,7vw,5.5rem)}.hobbies h2,.pets h2{margin-bottom:1.75rem;font-size:clamp(1.875rem,3.5vw,2.75rem)}.hobby-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:2rem;display:grid}.hobby-grid img{border-radius:1rem;width:100%;height:auto}.hobby-grid h3{margin-top:1rem;font-size:1.625rem}.hobby-grid p{margin:.4rem 0 0}.hobby-wide{grid-column:1/-1}.hobby-wide h3{margin-top:0}.hobby-grid .tags{margin-top:1rem}.pets-about{max-width:44rem;margin:1.5rem 0 0;font-size:1.1875rem}.carousel-track{--carousel-gap:1rem;gap:var(--carousel-gap);scroll-snap-type:x mandatory;scrollbar-width:none;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.carousel-track li{flex:0 0 calc((100% - var(--carousel-gap)) / 2);scroll-snap-align:start}.carousel-track figure{margin:0}.carousel-track img{aspect-ratio:1;object-fit:cover;border-radius:1rem;width:100%;height:auto}.carousel-track figcaption{font:500 1.25rem/1.3 var(--display);margin-top:.6rem}.carousel-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem;display:flex}.carousel-controls p{color:var(--muted);margin:0;font-size:1rem}.carousel-buttons{gap:.75rem;display:flex}.carousel-controls button{border:2px solid var(--ink);width:3rem;height:3rem;color:var(--ink);font:600 1.25rem/1 var(--body);cursor:pointer;background:0 0;border-radius:50%}.carousel-controls button:hover{border-color:var(--accent-2);color:var(--accent-2)}.contact{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(2.5rem,6vw,5rem);display:grid}.contact .page-intro{margin-bottom:1rem}.contact-location{color:var(--muted);margin:0}.field-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.field{margin-bottom:1.1rem}label{margin-bottom:.3rem;font-size:1rem;font-weight:600;display:block}.optional{color:var(--muted);font-weight:400}input,textarea{border:1px solid var(--muted);background:var(--field);width:100%;color:var(--ink);font:inherit;border-radius:.5rem;padding:.65rem .85rem;display:block}textarea{resize:vertical}[aria-invalid=true]{border-color:var(--error)}.field-hint{color:var(--muted);margin:.3rem 0 0;font-size:.9rem}.field-error{color:var(--error);margin:.3rem 0 .75rem;font-size:1rem}.form-success{background:var(--field);border-radius:1rem;align-self:start;margin:0;padding:1.25rem 1.5rem;font-size:1.25rem}.form-success:focus{outline:none}.trap{position:absolute;left:-9999px}@media (width<=54rem){.contact,.hero{grid-template-columns:minmax(0,1fr)}.hero-photo{max-width:20rem}}@media (width<=34rem){.carousel-track li{flex-basis:100%}.field-row{grid-template-columns:minmax(0,1fr);gap:0}.project{min-height:20rem}}@media (prefers-reduced-motion:reduce){.hero{animation:none}.button,.project{transition:none}.button:hover,.project:hover{transform:none}}
