@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-cyrillic-ext-400-normal.BQZuk6qB.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-400-normal.DQukG94-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-cyrillic-400-normal.obahsSVq.woff2) format("woff2"),url(/_astro/inter-cyrillic-400-normal.HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-greek-ext-400-normal.DGGRlc-M.woff2) format("woff2"),url(/_astro/inter-greek-ext-400-normal.KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-greek-400-normal.B4URO6DV.woff2) format("woff2"),url(/_astro/inter-greek-400-normal.q2sYcFCs.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-vietnamese-400-normal.DMkecbls.woff2) format("woff2"),url(/_astro/inter-vietnamese-400-normal.Bbgyi5SW.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-ext-400-normal.C1nco2VV.woff2) format("woff2"),url(/_astro/inter-latin-ext-400-normal.77YHD8bZ.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-400-normal.C38fXH4l.woff2) format("woff2"),url(/_astro/inter-latin-400-normal.CyCys3Eg.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-cyrillic-ext-500-normal.B0yAr1jD.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-500-normal.BmqWE9Dz.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-cyrillic-500-normal.BasfLYem.woff2) format("woff2"),url(/_astro/inter-cyrillic-500-normal.CxZf_p3X.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-greek-ext-500-normal.C4iEst2y.woff2) format("woff2"),url(/_astro/inter-greek-ext-500-normal.2j5mBUwD.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-greek-500-normal.BIZE56-Y.woff2) format("woff2"),url(/_astro/inter-greek-500-normal.Xzm54t5V.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-vietnamese-500-normal.DOriooB6.woff2) format("woff2"),url(/_astro/inter-vietnamese-500-normal.mJboJaSs.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-ext-500-normal.CV4jyFjo.woff2) format("woff2"),url(/_astro/inter-latin-ext-500-normal.BxGbmqWO.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-500-normal.Cerq10X2.woff2) format("woff2"),url(/_astro/inter-latin-500-normal.BL9OpVg8.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-cyrillic-ext-600-normal.Dfes3d0z.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-600-normal.Bcila6Z-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-cyrillic-600-normal.CWCymEST.woff2) format("woff2"),url(/_astro/inter-cyrillic-600-normal.4D_pXhcN.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-greek-ext-600-normal.DRtmH8MT.woff2) format("woff2"),url(/_astro/inter-greek-ext-600-normal.B8X0CLgF.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-greek-600-normal.plRanbMR.woff2) format("woff2"),url(/_astro/inter-greek-600-normal.BZpKdvQh.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-vietnamese-600-normal.Cc8MFFhd.woff2) format("woff2"),url(/_astro/inter-vietnamese-600-normal.BuLX-rYi.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-ext-600-normal.D2bJ5OIk.woff2) format("woff2"),url(/_astro/inter-latin-ext-600-normal.CIVaiw4L.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-600-normal.LgqL8muc.woff2) format("woff2"),url(/_astro/inter-latin-600-normal.CiBQ2DWP.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:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-normal.C2je3j2s.woff2) format("woff2"),url(/_astro/instrument-serif-latin-ext-400-normal.CFCUzsTy.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:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-normal.DnYpCC2O.woff2) format("woff2"),url(/_astro/instrument-serif-latin-400-normal.BVbkICAY.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:"Instrument Serif";font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-italic.C9HzH3YL.woff2) format("woff2"),url(/_astro/instrument-serif-latin-ext-400-italic.D7-lnxEk.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:"Instrument Serif";font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-italic.DKMiL14s.woff2) format("woff2"),url(/_astro/instrument-serif-latin-400-italic.u__WvvIK.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-cyrillic-ext-400-normal.C_uLvvQ5.woff2) format("woff2"),url(/_astro/jetbrains-mono-cyrillic-ext-400-normal.Bh0R7Dhr.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-cyrillic-400-normal.BEIGL1Tu.woff2) format("woff2"),url(/_astro/jetbrains-mono-cyrillic-400-normal.ugxPyKxw.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-greek-400-normal.C190GLew.woff2) format("woff2"),url(/_astro/jetbrains-mono-greek-400-normal.B9oWc5Lo.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-vietnamese-400-normal.ByoDsISC.woff2) format("woff2"),url(/_astro/jetbrains-mono-vietnamese-400-normal.CqNFfHCs.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-ext-400-normal.Bc8Ftmh3.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-ext-400-normal.fXTG6kC5.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-cyrillic-ext-500-normal.C9ShMxGR.woff2) format("woff2"),url(/_astro/jetbrains-mono-cyrillic-ext-500-normal.CEVyPk4Y.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-cyrillic-500-normal.DmUKJPL_.woff2) format("woff2"),url(/_astro/jetbrains-mono-cyrillic-500-normal.DJqRU3vO.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-greek-500-normal.JpySY46c.woff2) format("woff2"),url(/_astro/jetbrains-mono-greek-500-normal.D7SFKleX.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-vietnamese-500-normal.BvH7FW2L.woff2) format("woff2"),url(/_astro/jetbrains-mono-vietnamese-500-normal.DNRqzVM1.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-ext-500-normal.Cut-4mMH.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-ext-500-normal.ckzbgY84.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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.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{--bg: #F8F8F6;--ink: #16181D;--text: #2E3138;--text-strong: #2B2E34;--muted: #50545C;--line: #E2E2DE;--line-strong: #C2C2BC;--accent: #1F3A5F;--dark: #16181D;--dark-text: #BFC2C8;--gg-green: #1E3A2F;--serif: "Instrument Serif", Georgia, serif;--sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ease: cubic-bezier(.2, .7, .2, 1)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:var(--ink);text-decoration:none}a:hover{color:var(--accent)}button{font:inherit;cursor:pointer}input,textarea{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.page{position:relative;overflow-x:clip}.container{max-width:1120px;margin:0 auto;padding-inline:24px}.header-bar{position:sticky;top:0;z-index:20;background:#f8f8f6b8;-webkit-backdrop-filter:saturate(140%) blur(14px);backdrop-filter:saturate(140%) blur(14px);border-bottom:1px solid rgba(22,24,29,.08)}.header{padding-block:14px;display:flex;flex-wrap:wrap;gap:12px 16px;align-items:center;justify-content:space-between}.wordmark{font-family:var(--serif);font-size:26px;letter-spacing:-.01em}.nav{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:15px}.nav-group{display:flex;gap:2px;padding:4px;border:1px solid var(--line);border-radius:999px;background:#ffffffa6}.navlink{display:inline-flex;align-items:center;min-height:36px;padding:0 16px;border-radius:999px;color:var(--text);transition:background .2s,color .2s}.navlink:hover{background:#eaeae6;color:var(--ink)}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:14px 28px;border:0;border-radius:999px;font-weight:500;font-size:16px}.btn-sm{min-height:44px;padding:10px 20px;font-size:15px}.btn-dark{background:var(--dark);color:var(--bg)}.btn-light{background:var(--bg);color:var(--ink)}.btn-block{width:100%;margin-top:8px}.btn:disabled{opacity:.6;cursor:progress}.lift-btn{transition:transform .3s var(--ease),box-shadow .3s var(--ease)}.lift-btn:hover{transform:translateY(-2px);box-shadow:0 10px 24px #16181d2e}.text-link{font-weight:500;border-bottom:1px solid var(--ink);padding-bottom:2px}.text-link--light{color:var(--bg);border-bottom-color:#5a5e66;font-weight:400}.text-link--light:hover{color:#fff}.eyebrow{margin:0 0 32px;font-family:var(--mono);font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.hero{position:relative;isolation:isolate;padding-top:96px;padding-bottom:56px}.hero-title{margin:0;max-width:980px;font-family:var(--serif);font-weight:400;font-size:clamp(48px,7.5vw,104px);line-height:1.02;letter-spacing:-.02em}.hero-title em{color:var(--accent)}.hero-lede{margin:40px 0 0;max-width:660px;font-size:19px;color:var(--text-strong)}.hero-title,.hero-lede{text-shadow:0 0 1px var(--bg),0 0 4px var(--bg),0 0 8px var(--bg)}.hero-actions{margin-top:48px;display:flex;flex-wrap:wrap;gap:20px;align-items:center}.scroll-cue{width:fit-content;margin:88px auto 0;display:flex;flex-direction:column;align-items:center;gap:14px;font-family:var(--mono);font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--text)}.cue{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border:1px solid #B2B2AC;border-radius:999px;background:#f8f8f6cc}.topo{position:absolute;z-index:-1;top:20px;right:-220px;width:1200px;max-width:none;height:auto;color:var(--accent);stroke-opacity:.18;pointer-events:none;-webkit-mask-image:radial-gradient(ellipse 60% 60% at 62% 42%,#000 35%,transparent 78%);mask-image:radial-gradient(ellipse 60% 60% at 62% 42%,#000 35%,transparent 78%)}.topo-index{stroke-width:1.6;stroke-opacity:.9}.topo-drift{transform-origin:760px 360px}.section{border-top:1px solid var(--line);padding-block:100px}.section .eyebrow{margin-bottom:56px}.about{display:flex;flex-wrap:wrap;gap:64px;align-items:center}.about-photo{flex:0 1 380px;min-width:0;max-width:380px}.about-photo img{width:100%;height:auto;aspect-ratio:4 / 5;object-fit:cover;object-position:50% 20%;border-radius:12px}.about-copy{flex:999 1 480px;min-width:0}.about-copy p{margin:20px 0 0;max-width:620px;color:var(--text)}.about-copy .about-lead{margin:0;max-width:680px;font-family:var(--serif);font-size:32px;line-height:1.32;color:var(--ink)}.about-copy .about-lead+p{margin-top:28px}.project{display:flex;flex-direction:column;gap:40px}.project+.project{margin-top:140px}.project-copy{max-width:760px}.project-copy p{margin:0 0 20px;color:var(--text)}.project-copy .project-meta{margin-bottom:12px;font-size:14px;color:var(--muted)}.project-title{margin:0 0 24px;font-family:var(--serif);font-weight:400;font-size:44px;line-height:1.08}.project-links{display:flex;flex-wrap:wrap;gap:24px;margin-top:28px}.project-visual{display:block;width:100%;border-radius:14px;padding:28px}.project-visual--gg{background:var(--gg-green)}.project-visual--du{background:#14161b;padding:28px 30px}.project-visual--du,.project-visual--du:hover{color:#c9cdd4}.lift{transition:transform .3s var(--ease),box-shadow .3s var(--ease)}.lift:hover{transform:translateY(-6px);box-shadow:0 24px 60px #16181d2e}.visual-caption{display:block;margin-top:16px;font-size:13px;font-weight:500;color:#ede3c8}.project-visual--du .visual-caption{color:#c9cdd4;margin-top:20px}.browser{border-radius:10px;overflow:hidden;box-shadow:0 18px 50px #00000047}.browser-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#e9e6dd}.browser-dots,.terminal-dots{display:flex;gap:6px}.browser-dots span,.terminal-dots span{width:10px;height:10px;border-radius:50%;background:#c9c4b6}.browser-url{flex:1;min-width:0;text-align:center;font-family:var(--mono);font-size:12px;color:#5b5e58;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.browser-spacer{width:42px}.browser img{width:100%;height:auto}.terminal{font-family:var(--mono);font-size:15px;line-height:1.8;color:#c9cdd4;overflow-x:auto}.terminal-dots{margin-bottom:20px}.terminal-dots span{width:11px;height:11px;background:#3a3e47}.terminal .t{white-space:pre}.t-prompt{color:#8a929e}.t-warn{color:#e8a766}.t-muted{color:#8a929e}.t-ok{color:#8fd1a8}.t6{margin:12px 0 0;font:inherit;white-space:pre;color:#c9cdd4}.contact{background:var(--dark);color:var(--bg)}.contact .container{padding-block:120px}.contact-title{margin:0;max-width:900px;font-family:var(--serif);font-weight:400;font-size:clamp(44px,6.5vw,84px);line-height:1.04}.contact-lede{margin:28px 0 44px;max-width:600px;font-size:18px;color:var(--dark-text)}.contact-actions{display:flex;flex-wrap:wrap;gap:28px;align-items:center}.footer-note{margin:96px 0 0;font-family:var(--mono);font-size:12px;color:#9da1a8}.dialog{width:min(520px,calc(100% - 32px));max-height:calc(100vh - 48px);padding:40px;border:0;border-radius:16px;background:var(--bg);color:var(--ink);box-shadow:0 24px 80px #00000040}.dialog::backdrop{background:#16181d8c}.dialog-close{position:absolute;top:16px;right:16px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;border-radius:999px;background:transparent;color:var(--ink)}.dialog-close:hover{background:#eaeae6}.dialog-title{margin:0 0 8px;font-family:var(--serif);font-weight:400;font-size:40px;line-height:1.1}.dialog-lede{margin:0 0 28px;color:var(--text);font-size:16px}.form{display:flex;flex-direction:column;gap:16px}.form-row{display:flex;flex-wrap:wrap;gap:16px}.form-row>.field{flex:1 1 180px}.field{min-width:0;display:flex;flex-direction:column;gap:6px}.field label{font-size:14px;font-weight:500}.field input,.field textarea{padding:12px 14px;min-height:44px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--ink)}.field textarea{resize:vertical}.field input:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.form-error{margin:0;color:#9b2c2c;font-size:14px}.turnstile:empty{display:none}@keyframes rise{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}@keyframes drift{0%,to{transform:translate(0) rotate(0) scale(1)}50%{transform:translate(-26px,14px) rotate(3deg) scale(1.03)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}@keyframes tl1{0%,2%{clip-path:inset(0 100% 0 0);opacity:1}10%,90%{clip-path:inset(0 0 0 0);opacity:1}96%,to{clip-path:inset(0 0 0 0);opacity:0}}@keyframes tl2{0%,14%{clip-path:inset(0 100% 0 0);opacity:1}20%,90%{clip-path:inset(0 0 0 0);opacity:1}96%,to{clip-path:inset(0 0 0 0);opacity:0}}@keyframes tl3{0%,24%{clip-path:inset(0 100% 0 0);opacity:1}30%,90%{clip-path:inset(0 0 0 0);opacity:1}96%,to{clip-path:inset(0 0 0 0);opacity:0}}@keyframes tl4{0%,34%{clip-path:inset(0 100% 0 0);opacity:1}40%,90%{clip-path:inset(0 0 0 0);opacity:1}96%,to{clip-path:inset(0 0 0 0);opacity:0}}@keyframes tl5{0%,44%{clip-path:inset(0 100% 0 0);opacity:1}48%,90%{clip-path:inset(0 0 0 0);opacity:1}96%,to{clip-path:inset(0 0 0 0);opacity:0}}@keyframes tl6{0%,50%{opacity:0}58%,90%{opacity:1}96%,to{opacity:0}}@media(prefers-reduced-motion:no-preference){.rise{animation:rise .9s var(--ease) both}.d2{animation-delay:.15s}.d3{animation-delay:.3s}.d4{animation-delay:.6s}.cue{animation:bob 2.4s ease-in-out 1.6s infinite}.topo{animation:fade 2.4s ease-out both}.topo-drift{animation:drift 48s ease-in-out infinite}.dialog[open]{animation:pop .3s var(--ease) both}.dialog[open]::backdrop{animation:fade .2s ease-out both}.t{animation:tl1 14s linear infinite}.t2{animation-name:tl2}.t3{animation-name:tl3}.t4{animation-name:tl4}.t5{animation-name:tl5}.t6{animation:tl6 14s linear infinite}.js-reveal .reveal{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease)}.js-reveal .reveal.is-visible{opacity:1;transform:none}.js-reveal .reveal.lift.is-visible:hover{transform:translateY(-6px)}}@media(max-width:900px){.hero-lede{margin-inline:-16px;padding:16px;border-radius:14px;background:#f8f8f6d1;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);box-shadow:0 0 0 1px #16181d0a}}@media(max-width:640px){.nav-group{display:none}.header{flex-wrap:nowrap}.topo{stroke-opacity:.1}.topo-index{stroke-opacity:.45}.hero{padding-top:64px}.section{padding-block:72px}.project-title{font-size:34px}.about-copy .about-lead{font-size:26px}.project-visual{padding:16px}.terminal{font-size:13px}.dialog{padding:32px 24px}}
