@font-face{font-family:"Instrument Serif";font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/5ece437c7024c161-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/9cc5b37ab1350db7-s.p.woff2) format("woff2");unicode-range:u+00??,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-weight:400;font-display:swap;src:url(/_next/static/media/35f3de0ebb1cfc70-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/e6099e249fd938cc-s.p.woff2) format("woff2");unicode-range:u+00??,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 Fallback";src:local("Times New Roman");ascent-override:117.94%;descent-override:36.93%;line-gap-override:0.00%;size-adjust:83.94%}.__className_1f5468{font-family:"Instrument Serif","Instrument Serif Fallback";font-weight:400}.__variable_1f5468{--font-serif:"Instrument Serif","Instrument Serif Fallback"}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk Fallback;src:local("Arial");ascent-override:99.07%;descent-override:30.02%;line-gap-override:0.00%;size-adjust:100.94%}.__className_c8454b{font-family:Hanken Grotesk,Hanken Grotesk Fallback;font-style:normal}.__variable_c8454b{--font-hanken:"Hanken Grotesk","Hanken Grotesk Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");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-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,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-weight:500;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");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-weight:500;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,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 Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_6d24ac{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_6d24ac{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}:root{--bg:#f6f1e9;--surface:#fcfaf5;--surface-2:#ffffff;--text:#2a2521;--muted:#756b5f;--faint:#a89e90;--border:#e5dcce;--accent:#2f6fe0;--on-accent:#ffffff;--accent-2:color-mix(in srgb,var(--accent) 60%,#ffffff);--accent-soft:color-mix(in srgb,var(--accent) 16%,var(--surface));--shadow:0 1px 2px rgba(42,37,33,0.04),0 8px 30px rgba(42,37,33,0.06);--shadow-lg:0 2px 8px rgba(42,37,33,0.06),0 24px 60px rgba(42,37,33,0.1)}[data-theme=dark]{--bg:#181512;--surface:#211d19;--surface-2:#25201b;--text:#ece4d8;--muted:#a39888;--faint:#6f6557;--border:#322b24;--accent:#5b9bec;--shadow:0 1px 2px rgba(0,0,0,0.3),0 8px 30px rgba(0,0,0,0.35);--shadow-lg:0 2px 8px rgba(0,0,0,0.4),0 24px 60px rgba(0,0,0,0.5)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:var(--font-hanken),system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;transition:background .5s ease,color .5s ease;overflow-x:hidden}::selection{background:var(--accent-soft);color:var(--accent)}a{color:inherit;text-decoration:none}.wrap{max-width:920px;margin:0 auto;padding:0 28px}.serif{font-family:var(--font-serif),Georgia,serif;font-weight:400}.mono{font-family:var(--font-mono),monospace}nav{position:sticky;top:0;z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:color-mix(in srgb,var(--bg) 78%,transparent);border-bottom:1px solid transparent;transition:border-color .3s ease,background .5s ease}nav.scrolled{border-bottom-color:var(--border)}.nav-inner{max-width:920px;margin:0 auto;padding:16px 28px;justify-content:space-between}.logo,.nav-inner{display:flex;align-items:center}.logo{gap:10px;font-weight:700;font-size:16px;letter-spacing:-.01em;white-space:nowrap}.logo .mark{width:30px;height:30px;border-radius:9px;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-family:var(--font-serif),serif;font-size:20px;transition:transform .4s cubic-bezier(.34,1.56,.64,1)}.logo:hover .mark{transform:rotate(-8deg) scale(1.08)}.nav-links{display:flex;align-items:center;gap:28px}.nav-links a{font-size:14.5px;color:var(--muted);transition:color .2s;position:relative}.nav-links a:after{content:"";position:absolute;left:0;bottom:-4px;height:1.5px;width:0;background:var(--accent);transition:width .25s ease}.nav-links a:hover{color:var(--text)}.nav-links a:hover:after{width:100%}.nav-links .desk{display:inline}@media (max-width:680px){.nav-links .desk{display:none}}.toggle{width:38px;height:38px;border-radius:10px;border:1px solid var(--border);background:var(--surface);cursor:pointer;display:grid;place-items:center;color:var(--text);transition:background .2s,transform .2s,border-color .2s}.toggle:hover{transform:translateY(-2px);border-color:var(--accent)}.toggle svg{width:17px;height:17px}header{padding:96px 0 80px;position:relative}.eyebrow{display:inline-flex;align-items:center;gap:9px;font-size:13px;color:var(--muted);margin-bottom:26px;padding:6px 14px 6px 10px;border:1px solid var(--border);border-radius:100px;background:var(--surface)}.pulse{width:8px;height:8px;border-radius:50%;background:#3ba776;box-shadow:0 0 0 0 rgba(59,167,118,.5);animation:pulse 2.2s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(59,167,118,.5)}70%{box-shadow:0 0 0 8px rgba(59,167,118,0)}to{box-shadow:0 0 0 0 rgba(59,167,118,0)}}h1.hero{font-family:var(--font-serif),serif;font-weight:400;font-size:clamp(48px,9vw,92px);line-height:1.02;letter-spacing:-.02em;margin-bottom:26px}h1.hero .wave{display:inline-block;transform-origin:70% 70%}.animate-wave .wave{animation:wave 2.4s ease 1s 2}@keyframes wave{0%,60%,to{transform:rotate(0)}10%,30%{transform:rotate(16deg)}20%{transform:rotate(-10deg)}}h1.hero em{font-style:italic;color:var(--accent)}.lead{font-size:clamp(18px,2.4vw,21px);color:var(--muted);max-width:600px;margin-bottom:38px}.cta-row{display:flex;gap:14px;flex-wrap:wrap}.btn,.cta-row{align-items:center}.btn{display:inline-flex;gap:9px;padding:13px 22px;border-radius:12px;white-space:nowrap;font-weight:600;font-size:15px;cursor:pointer;border:1px solid transparent;transition:all .25s ease;font-family:inherit}.btn-primary{background:var(--accent);color:var(--on-accent);box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 35%,transparent)}.btn svg{width:18px;height:18px;flex-shrink:0}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 26px color-mix(in srgb,var(--accent) 45%,transparent)}.btn-primary svg{transition:transform .25s}.btn-primary:hover svg{transform:translateX(3px)}.btn-ghost{background:var(--surface);border-color:var(--border);color:var(--text)}.btn-ghost:hover{border-color:var(--accent);transform:translateY(-2px)}.hero-meta{display:flex;gap:28px;margin-top:56px;flex-wrap:wrap}.hero-meta div{display:flex;flex-direction:column}.hero-meta .n{font-family:var(--font-serif),serif;font-size:34px;color:var(--accent);line-height:1}.hero-meta .l{font-size:13px;color:var(--muted);margin-top:6px}section{padding:70px 0}.sec-head{display:flex;align-items:baseline;gap:16px;margin-bottom:40px}.sec-num{font-family:var(--font-mono),monospace;font-size:13px;color:var(--accent)}.sec-title{font-family:var(--font-serif),serif;font-size:clamp(30px,5vw,44px);letter-spacing:-.01em;white-space:nowrap;flex-shrink:0;font-weight:400}.sec-line{flex:1 1;height:1px;background:var(--border);align-self:center}.about-grid{display:grid;grid-template-columns:1fr 280px;gap:48px;align-items:start}@media (max-width:720px){.about-grid{grid-template-columns:1fr}}.about-grid p{color:var(--muted);margin-bottom:18px;font-size:16.5px}.about-grid p strong{color:var(--text);font-weight:600}.photo{aspect-ratio:4/5;border-radius:16px;border:1px solid var(--border);background:var(--surface);display:grid;place-items:center;position:relative;overflow:hidden;box-shadow:var(--shadow)}.photo img{width:100%;height:100%;object-fit:cover;object-position:center top}.photo img,.photo:after{position:absolute;inset:0}.photo:after{content:"";background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,transparent),transparent 60%);pointer-events:none}.badges{flex-direction:column;margin-top:18px}.badge,.badges{display:flex;gap:10px}.badge{align-items:center;font-size:13.5px;color:var(--muted);padding:10px 14px;border:1px solid var(--border);border-radius:11px;background:var(--surface)}.badge svg{width:16px;height:16px;color:var(--accent);flex-shrink:0}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.skill{padding:22px;border:1px solid var(--border);border-radius:14px;background:var(--surface);transition:transform .3s ease,border-color .3s,box-shadow .3s;position:relative;overflow:hidden}.skill:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--accent) 40%,var(--border));box-shadow:var(--shadow)}.skill .ic{width:38px;height:38px;border-radius:10px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;margin-bottom:14px}.skill .ic svg{width:19px;height:19px}.skill h3{font-size:16px;font-weight:600;margin-bottom:6px}.skill p{font-size:13.5px;color:var(--muted);line-height:1.5}.svc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.svc{padding:28px;border:1px solid var(--border);border-radius:16px;background:var(--surface);transition:transform .3s,box-shadow .3s}.svc:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}.svc-ic{width:46px;height:46px;border-radius:12px;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;margin-bottom:18px}.svc-ic svg{width:22px;height:22px}.svc h3{font-family:var(--font-serif),serif;font-size:24px;margin-bottom:10px;font-weight:400}.svc>p{font-size:14.5px;color:var(--muted);margin-bottom:18px}.svc ul{list-style:none;flex-direction:column}.svc li,.svc ul{display:flex;gap:9px}.svc li{font-size:14px;align-items:center;color:var(--text)}.svc li:before{content:"";width:16px;height:16px;border-radius:5px;background:var(--accent-soft);flex-shrink:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F6FE0' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");background-size:11px;background-repeat:no-repeat;background-position:50%}.proj-feat{display:flex;flex-direction:column;gap:28px}.proj-card{display:grid;grid-template-columns:1.05fr 1fr;border:1px solid var(--border);border-radius:18px;overflow:hidden;background:var(--surface);transition:transform .35s ease,box-shadow .35s;cursor:pointer}.proj-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}.proj-card:nth-child(2n){grid-template-columns:1fr 1.05fr}.proj-card:nth-child(2n) .proj-shot{order:2}@media (max-width:720px){.proj-card,.proj-card:nth-child(2n){grid-template-columns:1fr}.proj-card:nth-child(2n) .proj-shot{order:0}}.proj-shot{aspect-ratio:16/11;background:linear-gradient(135deg,var(--accent-soft),var(--surface-2));position:relative;overflow:hidden;display:grid;place-items:center;border-right:1px solid var(--border)}.proj-shot .browser{position:absolute;inset:26px 26px -40px;border-radius:12px 12px 0 0;background:var(--surface-2);border:1px solid var(--border);box-shadow:var(--shadow-lg);transition:transform .4s ease}.proj-card:hover .proj-shot .browser{transform:translateY(-8px)}.browser{display:flex;flex-direction:column}.browser .bar{height:30px;flex-shrink:0;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px;padding:0 12px}.browser .shot{flex:1 1;overflow:hidden}.browser .shot img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}.browser .dot{width:9px;height:9px;border-radius:50%;background:var(--border)}.browser .body{padding:16px;display:flex;flex-direction:column;gap:9px}.browser .ln{height:9px;border-radius:4px;background:var(--border)}.proj-info{padding:32px;display:flex;flex-direction:column}.proj-tag{font-family:var(--font-mono),monospace;font-size:12px;color:var(--accent);margin-bottom:12px;letter-spacing:.02em}.proj-info h3{font-size:23px;font-weight:700;letter-spacing:-.01em;margin-bottom:12px}.proj-info p{font-size:14.5px;color:var(--muted);margin-bottom:auto}.chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:20px}.chip{font-family:var(--font-mono),monospace;font-size:11.5px;padding:4px 10px;border-radius:7px;background:var(--accent-soft);color:var(--accent)}[data-theme=dark] .chip{background:var(--accent-soft);color:var(--accent-2)}.proj-other{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:28px}.other{padding:22px;border:1px solid var(--border);border-radius:14px;background:var(--surface);transition:transform .3s,box-shadow .3s}.other:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.other .mini{height:110px;border-radius:10px;background:linear-gradient(135deg,var(--accent-soft),var(--surface-2));margin-bottom:16px;display:grid;place-items:center;color:var(--faint);overflow:hidden}.other .mini svg{width:28px;height:28px}.other .mini img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}.other h4{font-size:16px;margin-bottom:8px}.other p{font-size:13px;color:var(--muted);margin-bottom:14px}.tmonial{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:46px 52px;max-width:880px;box-shadow:var(--shadow);overflow:hidden}@media (max-width:600px){.tmonial{padding:32px 26px}}.tmonial:before{content:"\201C";position:absolute;top:2px;left:26px;font-family:var(--font-serif),serif;font-size:150px;line-height:1;color:var(--accent-soft);pointer-events:none;-webkit-user-select:none;user-select:none}.t-rating{display:flex;align-items:center;gap:12px;margin-bottom:22px;position:relative;flex-wrap:wrap}.t-rating .stars{color:var(--accent);font-size:19px;letter-spacing:3px}.t-rating .t-score{font-weight:700;font-size:15px}.t-rating .t-src{font-family:var(--font-mono),monospace;font-size:12px;color:var(--faint);margin-left:auto;display:inline-flex;align-items:center;gap:7px}.t-rating .t-src svg{width:14px;height:14px;color:var(--accent)}.t-quote{font-family:var(--font-serif),serif;font-size:clamp(21px,2.6vw,28px);line-height:1.38;letter-spacing:-.01em;color:var(--text);position:relative;margin:0}.t-quote .t-para{display:block;font-family:var(--font-hanken),system-ui,sans-serif;font-size:16px;line-height:1.65;color:var(--muted);margin-top:15px;letter-spacing:0}.t-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px;padding-top:24px;border-top:1px solid var(--border)}.t-tag{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--text);background:var(--bg);border:1px solid var(--border);padding:7px 14px;border-radius:100px}.t-tag svg{width:13px;height:13px;color:var(--accent);flex-shrink:0}.contact{background:var(--surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.contact-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:56px}@media (max-width:760px){.contact-grid{grid-template-columns:1fr;gap:36px}}.contact h2{font-family:var(--font-serif),serif;font-size:clamp(34px,6vw,52px);line-height:1.05;margin-bottom:18px;font-weight:400}.contact .sub{color:var(--muted);margin-bottom:32px;max-width:380px}.ci{display:flex;align-items:center;gap:14px;margin-bottom:16px}.ci .ic{width:42px;height:42px;border-radius:11px;background:var(--bg);border:1px solid var(--border);display:grid;place-items:center;color:var(--accent)}.ci .ic svg{width:18px;height:18px}.ci .k{font-size:12px;color:var(--faint)}.ci .v{font-size:15px;font-weight:500}.socials{display:flex;gap:10px;margin-top:28px}.soc{width:42px;height:42px;border-radius:11px;border:1px solid var(--border);background:var(--bg);display:grid;place-items:center;color:var(--muted);transition:all .25s}.soc:hover{color:var(--on-accent);background:var(--accent);border-color:var(--accent);transform:translateY(-3px)}.soc svg{width:18px;height:18px}form{gap:16px}.field,form{display:flex;flex-direction:column}.field{gap:7px}.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width:480px){.row2{grid-template-columns:1fr}}label{font-size:13px;color:var(--muted);font-weight:500}input,textarea{font-family:inherit;font-size:14.5px;padding:12px 14px;border-radius:11px;border:1px solid var(--border);background:var(--bg);color:var(--text);transition:border-color .2s,box-shadow .2s;resize:vertical}input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.field.err input,.field.err textarea{border-color:#d0584e}.err-msg{font-size:12px;color:#d0584e;display:none}.field.err .err-msg{display:block}.form-ok{display:none;padding:14px;border-radius:11px;background:color-mix(in srgb,#3ba776 14%,transparent);color:#2e8765;font-size:14px;font-weight:500;align-items:center;gap:10px}.form-ok.show{display:flex}footer{padding:40px 0;text-align:center;color:var(--faint);font-size:13px}footer .mono{color:var(--muted)}.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.2,.6,.2,1),transform .7s cubic-bezier(.2,.6,.2,1)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.animate-wave .wave{animation:none}}