@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+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: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+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: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+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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2) format("woff2-variations");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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.woff2) format("woff2-variations");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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2) format("woff2-variations");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{--pf-navy-900: #04080e;--pf-navy-800: #0c1420;--pf-navy-700: #162237;--pf-navy-600: #1f3052;--pf-navy-500: #2e4368;--pf-navy-400: #4a608a;--pf-amber-200: #fff2c4;--pf-amber-300: #f5d68b;--pf-amber-400: #f0c060;--pf-amber-500: #d49b3a;--pf-amber-600: #a87420;--pf-amber-700: #5a3a10;--pf-paper-50: #fafbfd;--pf-paper-100: #f3f5f9;--pf-paper-200: #e7eaf1;--pf-paper-300: #d3d8e1;--pf-paper-500: #6e7689;--pf-paper-700: #2f3645;--pf-paper-800: #1a2030;--pf-paper-900: #0f1422;--bg: var(--pf-paper-50);--bg-alt: var(--pf-paper-100);--ink: var(--pf-paper-800);--ink-soft: var(--pf-paper-500);--hairline: var(--pf-paper-200);--accent: var(--pf-amber-600);--accent-soft: var(--pf-amber-200);color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: var(--pf-navy-800);--bg-alt: var(--pf-navy-700);--ink: var(--pf-paper-100);--ink-soft: var(--pf-paper-300);--hairline: var(--pf-navy-600);--accent: var(--pf-amber-400);--accent-soft: var(--pf-navy-700)}}:root[data-theme=light]{--bg: var(--pf-paper-50);--bg-alt: var(--pf-paper-100);--ink: var(--pf-paper-800);--ink-soft: var(--pf-paper-500);--hairline: var(--pf-paper-200);--accent: var(--pf-amber-600);--accent-soft: var(--pf-amber-200)}:root[data-theme=dark]{--bg: var(--pf-navy-800);--bg-alt: var(--pf-navy-700);--ink: var(--pf-paper-100);--ink-soft: var(--pf-paper-300);--hairline: var(--pf-navy-600);--accent: var(--pf-amber-400);--accent-soft: var(--pf-navy-700)}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{font-family:IBM Plex Sans Variable,system-ui,sans-serif;font-feature-settings:"cv02" 1,"cv03" 1;color:var(--ink);background:var(--bg);line-height:1.5;-webkit-font-smoothing:antialiased}.hero{position:relative;isolation:isolate;overflow:hidden;min-height:min(60vh,540px);padding:clamp(4rem,10vw,7rem) clamp(1.5rem,4vw,3rem) clamp(3rem,7vw,5rem);display:grid;place-items:center;text-align:center;color:var(--pf-paper-100);background:radial-gradient(ellipse at top,var(--pf-navy-500) 0%,var(--pf-navy-700) 45%,var(--pf-navy-900) 100%)}.hero-inner{position:relative;z-index:1;max-width:42rem}.hero-mark{display:block;margin:0 auto 1.5rem;border-radius:22%;filter:drop-shadow(0 18px 40px rgba(4,8,14,.55))}.hero h1{margin:0;font-family:Fraunces Variable,Georgia,serif;font-variation-settings:"opsz" 144,"SOFT" 50,"WONK" 1;font-weight:600;font-size:clamp(3rem,2rem + 5vw,5.5rem);line-height:.95;letter-spacing:-.025em;color:var(--pf-paper-50)}.tagline{margin:1.25rem 0 0;font-size:clamp(1.1rem,1rem + .45vw,1.35rem);color:color-mix(in oklch,var(--pf-paper-100) 88%,transparent)}.hero-glow{position:absolute;inset:auto auto -25% 50%;width:min(90vw,800px);aspect-ratio:1.5;transform:translate(-50%);background:radial-gradient(circle,color-mix(in oklch,var(--pf-amber-500) 38%,transparent) 0%,transparent 60%);filter:blur(50px);opacity:.5;pointer-events:none}.projects{padding:clamp(3rem,6vw,5rem) clamp(1.5rem,4vw,3rem)}.projects-inner{display:grid;gap:1.5rem;grid-template-columns:1fr;max-width:64rem;margin:0 auto}@media(min-width:48rem){.projects-inner{grid-template-columns:1fr 1fr;gap:2rem}}.card{display:flex;flex-direction:column;gap:1rem;padding:1.75rem;border:1px solid var(--hairline);border-radius:14px;background:var(--bg-alt);transition:border-color .16s ease,transform .16s ease}.card:hover{border-color:color-mix(in oklch,var(--accent) 50%,var(--hairline));transform:translateY(-2px)}.card-header{display:flex;gap:1rem;align-items:flex-start}.card-icon{flex:0 0 auto;border-radius:12px;filter:drop-shadow(0 6px 16px rgba(4,8,14,.18))}.card-title{margin:0;font-family:Fraunces Variable,Georgia,serif;font-weight:600;font-size:1.65rem;line-height:1;letter-spacing:-.015em}.card-tagline{margin:.35rem 0 0;color:var(--ink-soft);font-size:.98rem}.card-body{margin:0;color:var(--ink);font-size:.96rem;line-height:1.55}.card-actions{display:flex;gap:.6rem;margin-top:auto;flex-wrap:wrap}.action{display:inline-flex;align-items:center;gap:.4em;padding:.55em 1.1em;border-radius:999px;text-decoration:none;font-weight:500;font-size:.92rem;letter-spacing:.005em;transition:background .14s ease,color .14s ease,transform .14s ease}.action-primary{background:var(--accent);color:var(--pf-navy-900)}.action-primary:hover{background:var(--pf-amber-300);transform:translateY(-1px)}.action-secondary{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--hairline)}.action-secondary:hover{box-shadow:inset 0 0 0 1px var(--ink-soft)}footer{padding:2rem 1.5rem 3rem;border-top:1px solid var(--hairline);text-align:center}.footer-inner{display:inline-flex;gap:.6rem;flex-wrap:wrap;justify-content:center;align-items:center;font-size:.9rem;color:var(--ink-soft)}.footer-inner a{color:var(--accent);text-decoration:none;text-decoration-color:color-mix(in oklch,currentColor 35%,transparent);text-underline-offset:.2em}.footer-inner a:hover{text-decoration:underline;text-decoration-color:currentColor}.dot{opacity:.5}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
