@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/lexend-vietnamese-700-normal.BrGlFDtO.woff2) format("woff2"),url(/_astro/lexend-vietnamese-700-normal.NEp7hM5T.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/lexend-latin-ext-700-normal.CcWyeg4T.woff2) format("woff2"),url(/_astro/lexend-latin-ext-700-normal.iR1cPiNX.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/lexend-latin-700-normal.DqO8md6r.woff2) format("woff2"),url(/_astro/lexend-latin-700-normal.DVyJlN8t.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:900;src:url(/_astro/lexend-vietnamese-900-normal.jw7XBYnI.woff2) format("woff2"),url(/_astro/lexend-vietnamese-900-normal.BCPkMSLQ.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:900;src:url(/_astro/lexend-latin-ext-900-normal.BDSo7Clz.woff2) format("woff2"),url(/_astro/lexend-latin-ext-900-normal.CeBoktxy.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Lexend;font-style:normal;font-display:swap;font-weight:900;src:url(/_astro/lexend-latin-900-normal.C7DW7_Om.woff2) format("woff2"),url(/_astro/lexend-latin-900-normal.KiCaUBJ3.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-vietnamese-400-normal.DdKr49mV.woff2) format("woff2"),url(/_astro/newsreader-vietnamese-400-normal.BekUZro8.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-ext-400-normal.svq1FPys.woff2) format("woff2"),url(/_astro/newsreader-latin-ext-400-normal.DYA1XoQK.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-400-normal.BFBkh4jY.woff2) format("woff2"),url(/_astro/newsreader-latin-400-normal.gRTjlS2D.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/newsreader-vietnamese-400-italic.bZegYFuM.woff2) format("woff2"),url(/_astro/newsreader-vietnamese-400-italic.QbB8kb5s.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-ext-400-italic.BMTE_bNQ.woff2) format("woff2"),url(/_astro/newsreader-latin-ext-400-italic.qdgKLcPG.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Newsreader;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-400-italic.CEihAR-f.woff2) format("woff2"),url(/_astro/newsreader-latin-400-italic.CNZoH1hn.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #F5F2EC;--ink: #0A0A0A;--violet: #C847FF;--grey-1: #8A8580;--grey-2: #D8D3CB;--radius-card: 14px;--shadow-card: 0 2px 8px rgba(10, 10, 10, .08);--shadow-card-hover: 0 6px 16px rgba(10, 10, 10, .12);--font-display: "Lexend", system-ui, sans-serif;--font-body: "Newsreader", Georgia, serif;--duration-flip: .4s;--duration-flip-wave: .5s;--duration-hover: .15s;--easing-standard: cubic-bezier(.4, 0, .2, 1);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);line-height:1.55;-webkit-font-smoothing:antialiased}body{min-height:100vh}h1,h2,h3,h4{font-family:var(--font-display);font-weight:900;letter-spacing:-.01em;margin:0 0 .5em}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--violet);outline-offset:2px}img{display:block;max-width:100%;height:auto}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.card{position:relative;background:var(--paper);border:1px solid var(--grey-2);border-radius:var(--radius-card);box-shadow:var(--shadow-card);overflow:hidden;transition:transform var(--duration-hover) var(--easing-standard),box-shadow var(--duration-hover) var(--easing-standard),border-color var(--duration-hover) var(--easing-standard);cursor:pointer;perspective:1000px;-webkit-perspective:1000px;min-height:0}.card--no-flip{cursor:default}.card__inner{position:relative;width:100%;height:100%;min-height:100%}.card__face{position:absolute;inset:0;padding:1rem;display:flex;flex-direction:column;justify-content:space-between;backface-visibility:hidden;-webkit-backface-visibility:hidden}.card__face--front{transform:rotateY(0)}.card__face--back{transform:rotateY(180deg);font-family:var(--font-body);font-size:.95rem;line-height:1.45}.card__cta-link{text-decoration:none;color:inherit}.card__glyph,.card__cta-glyph{position:absolute;top:.75rem;right:.75rem;font-size:1rem;color:var(--violet);opacity:0;transition:opacity var(--duration-hover) var(--easing-standard);font-family:var(--font-display);font-weight:700}.card:hover .card__glyph,.card:focus-visible .card__glyph{opacity:1}.card__cta{align-self:flex-end;color:var(--violet);font-family:var(--font-display);font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:.25rem}.card--wave-back .card__inner{transform:rotateY(180deg)}.card__inner{transition:transform var(--duration-flip-wave) var(--easing-standard);transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.card--no-flip .card__inner{transform:none!important}.card--no-anim .card__inner{transition:none!important}@media(hover:hover)and (pointer:fine){.card:not(.card--no-flip):hover .card__inner,.card:not(.card--no-flip):focus-visible .card__inner{transform:rotateY(180deg);transition-duration:var(--duration-flip)}}.card:hover,.card:focus-visible{transform:translateY(-2px);box-shadow:var(--shadow-card-hover);border-color:var(--violet)}.card.card--flipped .card__inner{transform:rotateY(180deg)}.card .card__inner{pointer-events:auto}.card.card--flipping{pointer-events:none}@media(prefers-reduced-motion:reduce){.card__inner{transition:none}.card.card--flipped .card__inner,.card.card--wave-back .card__inner{transform:none}.card.card--flipped .card__face--front,.card.card--wave-back .card__face--front{opacity:0;transition:opacity .2s}.card.card--flipped .card__face--back,.card.card--wave-back .card__face--back{opacity:1;transform:none;transition:opacity .2s}}.card__back-splash{position:absolute;inset:0;background-image:var(--splash-img);background-size:var(--splash-bg-size, 1200px 1000px);background-position:var(--splash-bg-pos, 0 0);background-repeat:no-repeat;opacity:1;transition:opacity .3s var(--easing-standard);z-index:1;pointer-events:none}.card__back-content{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:space-between;height:100%;width:100%;opacity:0;transition:opacity .3s var(--easing-standard)}.card[data-splash-revealed] .card__back-splash{opacity:0}.card[data-splash-revealed] .card__back-content{opacity:1}.card__splash-cover{position:absolute;inset:0;background-image:var(--splash-img);background-size:var(--splash-bg-size, 1200px 1000px);background-position:var(--splash-bg-pos, 0 0);background-repeat:no-repeat;opacity:1;transition:opacity .4s var(--easing-standard);z-index:10;pointer-events:none;border-radius:var(--radius-card)}.card[data-splash-revealed] .card__splash-cover{opacity:0}.card__front-splash{position:absolute;inset:0;background-image:var(--splash-img);background-size:var(--front-bg-size, 1200px 1000px);background-position:var(--front-bg-pos, 0 0);background-repeat:no-repeat;z-index:1;pointer-events:none}.card__front-content{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:space-between;height:100%;width:100%;color:var(--paper);text-shadow:0 0 8px rgba(0,0,0,.65),0 1px 2px rgba(0,0,0,.5)}.card__front-content .ext-brand{filter:drop-shadow(0 0 6px rgba(0,0,0,.65)) drop-shadow(0 1px 2px rgba(0,0,0,.5))}.card__front-content :where(h1,h2,h3,.ext-title,.int-title,.ext-label,.int-stamp,.spotify-label,.spotify-marquee__inner){color:var(--paper)}.card__front-content .ext-brand{background:var(--paper)}.card--spotify .card__face--front{position:absolute;inset:0}@media(prefers-reduced-motion:reduce){.card__back-splash,.card__back-content,.card__splash-cover{transition:none}}.bento{display:grid;width:100%;max-width:1200px;margin:2rem auto;padding:1rem;gap:.75rem;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(5,minmax(0,1fr));aspect-ratio:6 / 5;grid-template-areas:"portrait portrait entropy entropy name    name" "portrait portrait music   music   now     about" "resume   spotify  spotify spotify spotify ." "email    spotify  spotify spotify spotify ." "github   bluesky  linkedin .       .       ."}@media(max-width:900px){.bento{aspect-ratio:auto;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(8,minmax(80px,auto));grid-template-areas:"portrait portrait name    name" "portrait portrait entropy entropy" "music    music    now     about" "spotify  spotify  spotify spotify" "spotify  spotify  spotify spotify" "resume   email    github  bluesky" "linkedin .        .       ." ".        .        .       ."}}@media(max-width:540px){.bento{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(12,minmax(80px,auto));grid-template-areas:"portrait portrait" "portrait portrait" "name     name" "entropy  entropy" "music    music" "now      about" "spotify  spotify" "spotify  spotify" "resume   email" "github   bluesky" "linkedin ." ".        ."}}.bento-stage{position:relative;width:100%;max-width:1200px;margin:2rem auto}.bento-stage>.bento{margin:0}.page{max-width:640px;margin:0 auto;padding:2rem 1.5rem 4rem;position:relative}.page__top-strip{position:absolute;top:0;left:0;right:0;height:120px;z-index:-1;opacity:.18;background-image:url(/splash-strip.svg);background-size:cover;background-position:center}.page__back{display:inline-block;font-family:var(--font-display);font-weight:700;font-size:.85rem;letter-spacing:.05em;text-transform:uppercase;color:var(--ink);margin-bottom:2rem;border-bottom:1px solid transparent;transition:border-color var(--duration-hover) var(--easing-standard)}.page__back:hover{border-bottom-color:var(--violet)}.page__title{font-family:var(--font-display);font-weight:900;font-size:clamp(2rem,5vw,3.25rem);line-height:1;letter-spacing:-.02em;margin:0 0 1.5rem}.page__stamp{font-family:var(--font-display);font-weight:700;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--grey-1);margin:-1rem 0 2rem}.page__body{font-family:var(--font-body);font-size:1.05rem;line-height:1.65}.page__body h2{font-family:var(--font-display);font-weight:700;font-size:1.25rem;letter-spacing:.04em;text-transform:uppercase;margin:2.5rem 0 .5rem}.page__body h3{font-family:var(--font-display);font-weight:700;font-size:1rem;letter-spacing:.02em;margin:1.5rem 0 .25rem}.page__body a{color:var(--ink);border-bottom:1px solid var(--violet)}.page__body a:hover{color:var(--violet)}.page__pdf{display:inline-block;float:right;font-family:var(--font-display);font-weight:700;font-size:.85rem;letter-spacing:.05em;text-transform:uppercase;color:var(--violet);border-bottom:1px solid var(--violet);margin-top:-2rem}
