@import "https://fonts.googleapis.com/css2?family=Syne:wght@400;500;600;700;800&family=Inter:wght@300;400;500&family=JetBrains+Mono:wght@400;500&family=Playfair+Display:wght@400;600;700;800&family=DM+Sans:wght@300;400;500&family=Space+Mono:wght@400;700&display=swap";
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.518e079e.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.ea323500.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.853d50a3.woff2)format("woff2");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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.55554cd0.woff2)format("woff2");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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2)format("woff2");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:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist","Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.ebceb24d.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.c36e1862.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.ff4a2084.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.f377b9c4.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.d1207556.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.479bea2b.woff2)format("woff2");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:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
html.theme-night{--bg:#0a0a0a;--bg-surface:#111;--bg-card:#161616;--border:#222;--text-primary:#f0f0f0;--text-secondary:#888;--accent:#06b6d4;--accent-dim:#0e7490;--accent-glow:#06b6d426;--font-display:"Syne",sans-serif;--font-body:"Inter",sans-serif}html.theme-ink{--bg:#f5f5f0;--bg-surface:#eeede8;--bg-card:#e8e7e2;--border:#ccc;--text-primary:#111;--text-secondary:#555;--accent:#111;--accent-dim:#333;--accent-glow:#11111114;--font-display:"Playfair Display",serif;--font-body:"DM Sans",sans-serif}html.theme-terminal{--bg:#0a0a0a;--bg-surface:#0d1a0d;--bg-card:#111811;--border:#1a2e1a;--text-primary:#e0f0e0;--text-secondary:#6b8f6b;--accent:#22c55e;--accent-dim:#16a34a;--accent-glow:#22c55e26;--font-display:"Space Mono",monospace;--font-body:"Space Mono",monospace}html{--bg:#0a0a0a;--bg-surface:#111;--bg-card:#161616;--border:#222;--text-primary:#f0f0f0;--text-secondary:#888;--accent:#06b6d4;--accent-dim:#0e7490;--accent-glow:#06b6d426;--font-display:"Syne",sans-serif;--font-body:"Inter",sans-serif;--font-mono:"JetBrains Mono",monospace}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes scrollFadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes subtleFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text-primary);font-family:var(--font-body);line-height:1.6;transition:background-color .3s,color .3s;position:relative}.site-shell{z-index:1;min-height:100vh;position:relative}h1,h2,h3,h4{font-family:var(--font-display)}code,.tag,.badge,.label,.mono{font-family:var(--font-mono)}a{color:var(--text-primary);text-decoration:none;transition:color .3s}a:hover{color:var(--accent)}.nav{z-index:50;border-bottom:1px solid var(--border);background:var(--bg);justify-content:space-between;align-items:center;max-width:100%;margin:0 auto;padding:1.5rem 2rem;transition:background-color .3s,border-color .3s;display:flex;position:sticky;top:0}.nav-brand{font-family:var(--font-display);color:var(--text-primary);font-size:1rem;font-weight:700}.nav-right{align-items:center;gap:2rem;display:flex}.nav-links{font-size:.75rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;gap:1.5rem;list-style:none;display:flex}.nav-link{color:var(--text-secondary);transition:color .3s}.nav-link:hover,.nav-link.active{color:var(--accent)}main{max-width:900px;margin:0 auto;padding:3rem 2rem}.hero{padding:120px 0 4rem}.hero-label{font-family:var(--font-mono);text-transform:uppercase;color:var(--text-secondary);letter-spacing:.05em;margin-bottom:2rem;font-size:.7rem;font-weight:500}.hero h1{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.02em;max-width:800px;margin-bottom:2rem;font-size:clamp(2.5rem,6vw,5rem);font-weight:800;line-height:1.2}.hero p{font-family:var(--font-body);color:var(--text-secondary);max-width:650px;margin-bottom:2rem;font-size:1rem;font-weight:400;line-height:1.7}.proof-strip{font-family:var(--font-mono);text-transform:uppercase;color:var(--text-secondary);letter-spacing:.05em;border-top:1px solid var(--border);border-bottom:1px solid var(--border);gap:2rem;margin-bottom:2rem;padding:2rem 0;font-size:.7rem;font-weight:500;transition:border-color .3s;display:flex}.proof-item{text-align:left;flex:1}.cta-group{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.btn-primary{background:var(--accent);color:var(--bg);font-family:var(--font-display);cursor:pointer;border:none;border-radius:0;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;transition:all .3s}.btn-primary:hover{opacity:.85;transform:translateY(-2px)}.btn-secondary{color:var(--text-secondary);border:1px solid var(--border);font-family:var(--font-body);cursor:pointer;background:0 0;border-radius:0;padding:.75rem 1.5rem;font-size:.95rem;font-weight:500;transition:all .3s}.btn-secondary:hover{border-color:var(--accent);color:var(--accent)}hr{background:var(--border);border:none;height:1px;margin:4rem 0;transition:background-color .3s}.section-label{font-family:var(--font-mono);text-transform:uppercase;color:var(--accent);letter-spacing:.05em;margin-bottom:1rem;font-size:.75rem;font-weight:500}.section-title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.02em;margin-bottom:2.5rem;font-size:2rem;font-weight:700}.projects-grid{grid-template-columns:repeat(2,1fr);gap:2.5rem;margin-bottom:4rem;display:grid}@media (max-width:968px){.projects-grid{grid-template-columns:1fr}}.project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:4px;transition:all .3s;overflow:hidden}.project-card:hover{border-color:var(--accent);transform:translateY(-4px)}.project-image{aspect-ratio:16/9;background:var(--bg-surface);border-top:3px solid var(--accent);width:100%;font-family:var(--font-mono);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;justify-content:center;align-items:center;font-size:.85rem;display:flex}.project-body{padding:1.5rem}.project-tags{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.project-tag{font-family:var(--font-mono);text-transform:uppercase;color:var(--text-secondary);background:var(--border);letter-spacing:.05em;border-radius:2px;padding:.3rem .6rem;font-size:.65rem;font-weight:500}.project-title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.01em;margin-bottom:.75rem;font-size:1.25rem;font-weight:600}.project-description{font-family:var(--font-body);color:var(--text-secondary);margin-bottom:1rem;font-size:.95rem;font-weight:400;line-height:1.6}.project-footer{justify-content:space-between;align-items:center;display:flex}.project-status{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;font-size:.65rem;font-weight:500}.status-live{color:var(--bg);background:var(--accent);border-radius:2px;padding:.3rem .6rem}.status-progress{color:var(--text-secondary);border:1px solid var(--border);padding:.3rem .6rem}.project-link{font-family:var(--font-body);color:var(--text-secondary);transition:color .3s}.project-link:hover{color:var(--accent)}.expertise-grid{grid-template-columns:repeat(2,1fr);gap:2rem;display:grid}@media (max-width:768px){.expertise-grid{grid-template-columns:1fr}}.expertise-card{border-top:1px solid var(--border);padding-top:2rem;transition:all .3s}.expertise-icon{width:40px;height:40px;color:var(--accent);justify-content:center;align-items:center;margin-bottom:1rem;display:flex}.expertise-icon svg{stroke:currentColor;fill:none;stroke-width:1.5px;width:100%;height:100%}.expertise-title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.01em;margin-bottom:.75rem;font-size:1.1rem;font-weight:700}.expertise-description{font-family:var(--font-body);color:var(--text-secondary);font-size:.9rem;font-weight:400;line-height:1.6}.about-header{font-family:var(--font-mono);text-transform:uppercase;color:var(--accent);letter-spacing:.05em;margin-bottom:2rem;font-size:.7rem;font-weight:500}.about-content{max-width:640px;font-family:var(--font-body);color:var(--text-secondary);font-size:1rem;font-weight:400;line-height:1.8}.about-content p{margin-bottom:1.5rem}.about-content a{color:var(--accent);text-decoration:underline}.contact-section{padding-bottom:4rem}.contact-links{flex-direction:column;gap:1.5rem;margin-bottom:3rem;display:flex}.contact-link{font-family:var(--font-display);color:var(--text-primary);font-size:1.25rem;font-weight:600;transition:color .3s}.contact-link:hover{color:var(--accent)}.footer-credit{font-family:var(--font-mono);color:var(--text-secondary);letter-spacing:.05em;border-top:1px solid var(--border);padding-top:2rem;font-size:.75rem;font-weight:400}.theme-switcher{gap:.75rem;display:flex}.theme-button{cursor:pointer;border:2px solid #0000;border-radius:50%;width:14px;height:14px;transition:all .3s}.theme-button.active{border-color:var(--text-primary);box-shadow:0 0 0 2px var(--bg)}.theme-button:hover{transform:scale(1.15)}@media (max-width:768px){main{padding:1.5rem}.hero{padding:80px 0 3rem}.hero h1{font-size:clamp(1.75rem,5vw,2.5rem)}.proof-strip{flex-direction:column;gap:1rem}.cta-group{flex-wrap:wrap}.nav{padding:1rem 1.5rem}.nav-links{gap:1rem;font-size:.65rem}.section-title{font-size:1.5rem}.projects-grid,.expertise-grid{grid-template-columns:1fr}}
