@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/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(/_astro/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(/_astro/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:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-sans-cyrillic-ext-wght-normal.7w74d1lj.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:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-sans-cyrillic-wght-normal.B9hoeQUC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-sans-vietnamese-wght-normal.BhFYcaJr.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:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-sans-latin-ext-wght-normal.DMEAsnHD.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:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_astro/nunito-sans-latin-wght-normal.BWQ3gi2K.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{color-scheme:light;--paper:#fff7e7;--paper-deep:#f5ecd8;--panel:#fffdf7;--ink:#1e1d23;--muted:#67636c;--line:#27242c;--soft-line:#27242c29;--dot:#27242c1f;--pink:#f54f8b;--pink-soft:#ffd5e5;--blue:#5965f2;--blue-soft:#d9dcff;--green:#50bd83;--green-soft:#d4f3df;--yellow:#ffc94d;--header:#fff7e7e0;--shadow:#1e1d23;--display:"Fraunces Variable", Georgia, serif;--body:"Nunito Sans Variable", "Trebuchet MS", sans-serif}:root[data-theme=dark]{color-scheme:dark;--paper:#1d1c22;--paper-deep:#242229;--panel:#29272f;--ink:#f8f0df;--muted:#c3bbc8;--line:#f8f0df;--soft-line:#f8f0df2e;--dot:#f8f0df1a;--pink:#ff78aa;--pink-soft:#612c43;--blue:#8e96ff;--blue-soft:#343863;--green:#72d79e;--green-soft:#244a37;--yellow:#ffd269;--header:#1d1c22e6;--shadow:#070709}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6rem}body{background-color:var(--paper);background-image:radial-gradient(circle at 1px 1px, var(--dot) 1.1px, transparent 0);min-width:320px;color:var(--ink);font-family:var(--body);text-rendering:optimizelegibility;background-size:22px 22px;margin:0;font-size:1rem;line-height:1.6;transition:background-color .18s,color .18s}body:before{content:"";pointer-events:none;background:linear-gradient(90deg, transparent 0 8%, color-mix(in srgb, var(--paper) 30%, transparent), transparent 92%);z-index:-1;position:fixed;inset:0}::selection{background:var(--pink);color:#fff}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.page-shell{overflow:hidden}.wrap,.header-inner{width:min(1120px,100% - 3rem);margin-inline:auto}.site-header{z-index:20;border-bottom:1px solid var(--soft-line);background:var(--header);backdrop-filter:blur(16px);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:2rem;min-height:74px;display:flex}.brand{color:var(--ink);letter-spacing:-.02em;align-items:center;font-weight:790;text-decoration:none;display:inline-flex}.site-header nav{align-items:center;gap:clamp(.85rem,2.6vw,2rem);display:flex}.site-header nav>a{color:var(--ink);font-size:.93rem;font-weight:680;text-decoration:none;position:relative}.site-header nav>a:after{content:"";background:var(--pink);border-radius:3px;height:3px;transition:right .16s;position:absolute;bottom:-.35rem;left:0;right:100%}.site-header nav>a:hover:after{right:0}.theme-toggle{width:38px;height:38px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;padding:0;display:grid}.theme-toggle:hover{background:var(--paper-deep)}.theme-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:21px;height:21px}.theme-icon--moon,:root[data-theme=dark] .theme-icon--sun{display:none}:root[data-theme=dark] .theme-icon--moon{display:block}.hero{align-items:center;min-height:min(760px,100svh - 74px);padding-block:clamp(5.5rem,10vw,8rem);display:flex}.hero-copy{z-index:2;max-width:980px;position:relative}.eyebrow{color:var(--pink);letter-spacing:.16em;text-transform:uppercase;margin:0 0 1rem;font-size:.82rem;font-weight:850}.eyebrow span{color:var(--yellow);margin-right:.35rem;font-size:1.1em;animation:7s linear infinite tiny-spin;display:inline-block}h1,h2,h3,h4,p{text-wrap:pretty}h1,h2,h3,h4{margin-top:0;line-height:1.03}h1{max-width:940px;font-family:var(--display);font-variation-settings:"opsz" 120, "wght" 720;letter-spacing:-.055em;margin-bottom:1.7rem;font-size:clamp(3.8rem,7.5vw,7rem)}h1 em{color:var(--blue);white-space:nowrap;font-style:italic;position:relative}h1 em:after{content:"";background:var(--pink);opacity:.78;z-index:-1;border-radius:60% 30% 55% 40%;height:.11em;position:absolute;bottom:-.04em;left:2%;right:-1%;transform:rotate(-1deg)}.hero-intro{max-width:620px;color:var(--muted);margin:0;font-size:clamp(1.12rem,2vw,1.35rem);line-height:1.65}.hero-actions,.about-links{flex-wrap:wrap;align-items:center;gap:1.4rem;margin-top:2.2rem;display:flex}.text-link{color:var(--ink);align-items:center;gap:.35rem;font-weight:800;text-decoration:none;display:inline-flex;position:relative}.text-link:after{content:"";border-bottom:2px dotted;position:absolute;bottom:-.22rem;left:0;right:0}.text-link--primary{color:var(--pink)}.text-link span{transition:transform .16s}.text-link:hover span{transform:translate(2px,-2px)}.projects{border-top:2px solid var(--line);padding-block:clamp(5rem,9vw,8.5rem)}.section-heading{margin-bottom:clamp(2.5rem,5vw,4.5rem);position:relative}.section-heading .eyebrow{margin-bottom:.4rem}.section-heading h2,.about h2{font-family:var(--display);font-variation-settings:"opsz" 110, "wght" 680;letter-spacing:-.045em;margin-bottom:0;font-size:clamp(2.8rem,5.8vw,5.4rem)}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1.5rem,3vw,2.6rem);display:grid}.project-card--wide{grid-column:1/-1}.project-card>a{height:100%;color:inherit;text-decoration:none;display:block}.project-visual{aspect-ratio:16/10;border:2px solid var(--line);background:var(--panel);box-shadow:7px 7px 0 var(--shadow);border-radius:25px 18px 27px 16px;margin:0;transition:transform .2s,box-shadow .2s;position:relative;overflow:hidden}.project-card--wide .project-visual{aspect-ratio:16/8.2;border-radius:32px 21px 35px 20px}.project-visual:after{content:"";pointer-events:none;border-radius:inherit;border:9px solid #0000;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #ffffff26}.project-visual img{object-fit:cover;width:100%;height:100%;transition:transform .26s;display:block}.project-card[data-fit=contain] .project-visual img{object-fit:contain}.project-card[data-tone=pink] .project-visual{background:#ffe2ec}.project-card[data-tone=blue] .project-visual{background:#edf5f8}.project-card:hover .project-visual{box-shadow:10px 10px 0 var(--shadow);transform:translate(-3px,-3px)rotate(-.35deg)}.project-card:nth-child(3):hover .project-visual{transform:translate(-3px,-3px)rotate(.35deg)}.project-card:hover .project-visual img{transform:scale(1.012)}.project-copy{grid-template-columns:1fr auto;align-items:end;gap:1rem;padding:1.45rem .3rem 0;display:grid}.project-copy h3{font-family:var(--display);font-variation-settings:"opsz" 90, "wght" 670;letter-spacing:-.035em;margin-bottom:.42rem;font-size:clamp(2rem,3.4vw,3.2rem)}.project-copy p{max-width:650px;color:var(--muted);margin:0;font-size:1.03rem}.project-link{color:var(--pink);white-space:nowrap;margin-bottom:.25rem;font-size:.82rem;font-weight:850}.project-link b{font-size:1.15em;transition:transform .16s;display:inline-block}.project-card:hover .project-link b{transform:translate(3px,-3px)}.experiment-block{border-top:1px solid var(--soft-line);margin-top:clamp(5.5rem,9vw,8rem);padding-top:clamp(3.5rem,6vw,5rem)}.experiment-summary{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:2rem;padding:.35rem .2rem;list-style:none;display:grid}.experiment-summary::-webkit-details-marker{display:none}.experiment-summary::marker{content:""}.experiment-summary-copy{min-width:0;display:block}.experiment-summary .eyebrow{margin-bottom:.45rem;display:block}.experiment-summary-title{max-width:760px;font-family:var(--display);font-variation-settings:"opsz" 95, "wght" 670;letter-spacing:-.04em;text-wrap:pretty;font-size:clamp(2.25rem,4.4vw,4rem);line-height:1.03;display:block}.experiment-toggle{border:2px solid var(--line);background:var(--panel);min-height:46px;box-shadow:3px 3px 0 var(--shadow);color:var(--ink);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:.7rem;padding:.65rem 1rem;font-size:.87rem;font-weight:820;transition:transform .16s,box-shadow .16s;display:inline-flex}.experiment-summary:hover .experiment-toggle{box-shadow:5px 5px 0 var(--shadow);transform:translate(-2px,-2px)}.experiment-toggle-open{display:none}.experiment-toggle-icon{color:var(--pink);font-size:1.1rem;line-height:1;transition:transform .18s}.experiment-block[open] .experiment-toggle-closed{display:none}.experiment-block[open] .experiment-toggle-open{display:inline}.experiment-block[open] .experiment-toggle-icon{transform:rotate(180deg)}.experiment-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.25rem,2.4vw,2rem);margin-top:clamp(2.25rem,4vw,3.25rem);display:grid}.experiment-card{min-width:0;color:inherit;text-decoration:none}.experiment-visual{aspect-ratio:16/10;border:1.5px solid var(--line);background:var(--panel);box-shadow:4px 4px 0 var(--shadow);border-radius:17px 13px 19px 12px;margin:0;transition:transform .18s,box-shadow .18s;position:relative;overflow:hidden}.experiment-visual img{object-fit:cover;object-position:center top;width:100%;height:100%;transition:transform .22s;display:block}.experiment-copy{grid-template-columns:1fr auto;align-items:start;gap:.8rem;padding:1.1rem .15rem 0;display:grid}.experiment-copy h4{font-family:var(--display);font-variation-settings:"opsz" 80, "wght" 680;letter-spacing:-.025em;margin-bottom:.35rem;font-size:clamp(1.45rem,2.2vw,1.9rem)}.experiment-copy p{color:var(--muted);margin:0;font-size:.94rem;line-height:1.5}.experiment-copy>span{color:var(--pink);font-size:1.1rem;font-weight:850;transition:transform .16s}.experiment-card:hover .experiment-visual{box-shadow:6px 6px 0 var(--shadow);transform:translate(-2px,-2px)rotate(-.2deg)}.experiment-card:nth-child(2n):hover .experiment-visual{transform:translate(-2px,-2px)rotate(.2deg)}.experiment-card:hover .experiment-visual img{transform:scale(1.015)}.experiment-card:hover .experiment-copy>span{transform:translate(2px,-2px)}.about{border-top:2px solid var(--line);padding-block:clamp(6rem,11vw,10rem)}.about-copy{max-width:880px}.about-copy h2{margin-bottom:1.6rem}.about-copy>p:last-of-type{max-width:650px;color:var(--muted);margin:0;font-size:clamp(1.08rem,2vw,1.28rem)}.site-footer{border-top:1px solid var(--soft-line);min-height:95px;color:var(--muted);justify-content:flex-end;align-items:center;gap:2rem;font-size:.9rem;display:flex}.site-footer a{color:var(--ink);font-weight:760;text-decoration:none}@keyframes tiny-spin{to{transform:rotate(360deg)}}@media (width<=920px){.hero{min-height:auto}.project-grid{grid-template-columns:1fr}.project-card--wide{grid-column:auto}.project-card--wide .project-visual,.project-visual{aspect-ratio:16/9.5}}@media (width<=680px){.wrap,.header-inner{width:min(100% - 2rem,1120px)}.header-inner{min-height:64px}.site-header nav{gap:1rem}.site-header nav>a{font-size:.82rem}.theme-toggle{width:34px;height:34px}.hero{padding-block:4.7rem 5.5rem}h1{font-size:clamp(3.15rem,15vw,4.7rem)}h1 em{white-space:normal}.hero-intro{font-size:1.08rem}.projects{padding-block:4.7rem 6rem}.section-heading h2,.about h2{font-size:clamp(2.7rem,12vw,4rem)}.project-grid{gap:3.2rem}.experiment-block{margin-top:5.5rem;padding-top:3.5rem}.experiment-grid{grid-template-columns:1fr;gap:2.6rem}.experiment-summary{grid-template-columns:1fr;align-items:start;gap:1.5rem}.experiment-summary-title{font-size:clamp(2.35rem,11vw,3.6rem)}.experiment-toggle{justify-self:start}.experiment-visual{border-radius:15px 12px 17px 11px}.project-card--wide .project-visual,.project-visual{aspect-ratio:4/3;box-shadow:5px 5px 0 var(--shadow);border-radius:19px 15px 22px 14px}.project-copy{grid-template-columns:1fr;gap:.7rem;padding-top:1.2rem}.project-copy h3{font-size:2.35rem}.project-copy p{font-size:.98rem}.project-link{justify-self:start}.about{padding-block:6rem}.site-footer{min-height:90px}}@media (width<=390px){.site-header nav{gap:.72rem}.site-header nav>a{font-size:.76rem}.theme-toggle{width:30px;height:30px}.theme-icon{width:18px;height:18px}.hero-actions,.about-links{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
