@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/28868e710e86be81-s.2eksvhm1z0jwa.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:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/28868e710e86be81-s.2eksvhm1z0jwa.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/28868e710e86be81-s.2eksvhm1z0jwa.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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28868e710e86be81-s.2eksvhm1z0jwa.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_55e96d1d-module__IF3m1G__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_55e96d1d-module__IF3m1G__variable{--font-sans:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.40sczeszzbjw1.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.1yd4_i3e35931.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.29yke99gs9qpn.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.1i-sca43-qwng.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.0oace-s_gkfks.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:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_973b4b30-module__j14D8G__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_973b4b30-module__j14D8G__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--bg:#0a1224;--card-bg:#101a30;--accent:#22d3ee;--accent-light:#67e8f9;--accent-lighter:#a5f3fc;--heading:#f1f5f9;--body:#dbe2ea;--paragraph:#a8b3c1;--subdued:#94a3b8;--blurb:#7d8a99;--mono-label:#64748b;--caption:#475569;--chip:#8fa3b8;--hairline:#94a3b817;--card-border:#94a3b81a;--chip-border:#94a3b82e}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{background:var(--bg);margin:0;padding:0}body{font-family:var(--font-sans), sans-serif;color:var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:var(--accent-light);text-decoration:none}a:hover{color:var(--accent-lighter)}::selection{background:#22d3ee4d}img{max-width:100%}.mono{font-family:var(--font-mono), monospace}.container{max-width:1240px;margin:0 auto;padding-left:48px;padding-right:48px}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.nav{z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--hairline);background:#0a1224d1;justify-content:space-between;align-items:center;padding:18px 48px;display:flex;position:sticky;top:0}.nav-brand{color:inherit;align-items:center;gap:12px;display:flex}.nav-dot{background:var(--accent);width:10px;height:10px;box-shadow:0 0 12px var(--accent);border-radius:2px}.nav-name{letter-spacing:.02em;font-size:15px;font-weight:600}.nav-links{align-items:center;gap:28px;font-size:13.5px;font-weight:500;display:flex}.nav-links a{color:var(--subdued)}.nav-links a:hover{color:#e2e8f0}.nav-links a.nav-contact{color:var(--accent);border:1px solid #22d3ee59;border-radius:6px;margin:-6px 0;padding:5px 14px}.nav-links a.nav-contact:hover{background:#22d3ee1a}.hero{grid-template-columns:1fr 1fr;align-items:center;gap:32px;padding-top:6px;padding-bottom:0;display:grid;position:relative}.hero-text{animation:.7s both fadeUp}.hero h1{letter-spacing:-.02em;color:var(--heading);margin:0 0 20px;font-size:52px;font-weight:700;line-height:1.07}.hero h1 .accent{color:var(--accent)}.hero p{color:var(--subdued);max-width:46ch;margin:0;font-size:17px;line-height:1.65}.hero-canvas{height:420px;position:relative}.section{padding-top:28px;padding-bottom:32px}.hero+.section{padding-top:10px}.section-header{margin-bottom:36px}.kicker{font-family:var(--font-mono), monospace;letter-spacing:.14em;color:var(--accent);text-transform:uppercase;margin-bottom:10px;font-size:11.5px}.section-header h2{letter-spacing:-.01em;color:var(--heading);margin:0;font-size:30px;font-weight:700}.about-grid{grid-template-columns:260px 1fr;align-items:start;gap:48px;display:grid}.portrait-frame{aspect-ratio:1;width:100%;position:relative}.portrait-inner{border-radius:12px;position:absolute;inset:0;overflow:hidden}.portrait-inner img{object-fit:cover;width:100%;height:100%;display:block;-webkit-mask-image:radial-gradient(circle at 50% 42%,#000 55%,#0000 98%);mask-image:radial-gradient(circle at 50% 42%,#000 55%,#0000 98%)}.portrait-photo{animation:7s infinite portraitGlitch}@keyframes portraitGlitch{0%,13.4%{filter:none;opacity:1;transform:none}14%{filter:blur(1px)brightness(1.3);opacity:.82;transform:translate(2px)}14.6%,45.8%{filter:none;opacity:1;transform:none}46.4%{filter:blur(1.8px)saturate(1.7)drop-shadow(3px 0 #22d3eeb3)drop-shadow(-3px 0 #f43f5e73);opacity:.9;transform:translate(-4px,2px)skew(-2deg)}47.2%{filter:blur(.6px)contrast(1.5)brightness(.85);opacity:1;transform:translate(3px,-2px)}48%{filter:blur(2.6px)saturate(.5)drop-shadow(-2px 0 #67e8f999);opacity:.75;transform:translate(-2px,1px)skew(1.5deg)}48.8%{filter:blur(.8px)brightness(1.3);opacity:1;transform:translate(1px)}49.6%,77.9%{filter:none;opacity:1;transform:none}78.4%{filter:blur(.5px)brightness(1.1)contrast(1.15);opacity:.95;transform:skew(-3deg)translate(3px)scaleY(1.015)}79.6%{filter:blur(1.2px)saturate(1.4);opacity:1;transform:skew(2deg)translate(-2px,1px)}81%{filter:blur(.4px)brightness(.9);opacity:.92;transform:skew(-1.5deg)translate(1px)}82.2%,to{filter:none;opacity:1;transform:none}}.portrait-tear{opacity:0;pointer-events:none;position:absolute;inset:0}.portrait-tear.tear-a{clip-path:inset(16% 0 66%);animation:7s infinite tearA}.portrait-tear.tear-b{clip-path:inset(56% 0 28%);animation:7s infinite tearB}@keyframes tearA{0%,78.2%{opacity:0;transform:none}78.4%,79.4%{opacity:1;transform:translate(-11px)}79.6%,80.8%{opacity:1;transform:translate(-5px)}81%,82%{opacity:1;transform:translate(-14px)}82.2%,to{opacity:0;transform:none}}@keyframes tearB{0%,78.4%{opacity:0;transform:none}78.6%,79.8%{opacity:1;transform:translate(9px)}80%,81%{opacity:1;transform:translate(13px)}81.2%,82.2%{opacity:1;transform:translate(4px)}82.4%,to{opacity:0;transform:none}}.portrait-scanlines{animation:7s infinite scanlineFlicker}@keyframes scanlineFlicker{0%,45.8%,50%,77.9%,82.6%,to{opacity:1}46.8%,48.4%{opacity:.35}47.6%{opacity:1}79%,81.4%{opacity:.45}80.2%{opacity:1}}@media (prefers-reduced-motion:reduce){.portrait-photo,.portrait-tear,.portrait-scanlines{animation:none}}.portrait-scanlines{pointer-events:none;background:repeating-linear-gradient(0deg,#0a122438 0 1px,#0000 1px 4px);position:absolute;inset:0}.portrait-glow{pointer-events:none;background:radial-gradient(circle at 50% 40%,#22d3ee1a,#0000 65%);position:absolute;inset:0}.corner{width:18px;height:18px;position:absolute}.corner.tl{border-top:1px solid var(--accent);border-left:1px solid var(--accent);top:0;left:0}.corner.tr{border-top:1px solid var(--accent);border-right:1px solid var(--accent);top:0;right:0}.corner.bl{border-bottom:1px solid var(--accent);border-left:1px solid var(--accent);bottom:0;left:0}.corner.br{border-bottom:1px solid var(--accent);border-right:1px solid var(--accent);bottom:0;right:0}.about-columns{grid-template-columns:1fr 1fr;align-items:start;gap:40px;display:grid}.about-columns p{color:var(--paragraph);margin:0 0 20px;font-size:16px;line-height:1.7}.about-columns p:last-child{margin-bottom:0}.skill-chips{flex-wrap:wrap;gap:8px;display:flex}.skill-chips span{font-family:var(--font-mono), monospace;color:var(--chip);border:1px solid var(--chip-border);border-radius:6px;padding:5px 10px;font-size:11.5px}.about-skills{margin-top:32px}.showcase-grid{grid-template-columns:repeat(3,1fr);gap:24px;display:grid}.showcase-card{background:var(--card-bg);border:1px solid var(--card-border);color:inherit;border-radius:12px;transition:transform .25s,border-color .25s;display:block;overflow:hidden}.showcase-card:hover{color:inherit;border-color:#22d3ee66;transform:translateY(-4px)}.card-cover{aspect-ratio:16/9;background-color:#0c1a24;background-position:50%;background-size:cover;position:relative}.card-cover-scrim{background:linear-gradient(#0a122400 55%,#0a12248c);position:absolute;inset:0}.card-tag{font-family:var(--font-mono), monospace;letter-spacing:.1em;color:#0a1224;background:var(--accent);text-transform:uppercase;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:500;position:absolute;top:12px;left:12px}.card-year{font-family:var(--font-mono), monospace;color:#e2e8f0bf;font-size:10.5px;position:absolute;bottom:10px;right:12px}.card-body{padding:16px 18px 18px}.card-body h3{color:#e8edf3;margin:0 0 6px;font-size:16.5px;font-weight:600;line-height:1.35}.card-body p{color:var(--blurb);margin:0;font-size:13.5px;line-height:1.55}.notes-grid{grid-template-columns:repeat(4,1fr);gap:20px;display:grid}.note-card{color:inherit;transition:transform .25s;display:block}.note-card:hover{color:inherit;transform:translateY(-3px)}.note-cover{aspect-ratio:16/10;background-color:#0b1622;background-position:50%;background-size:cover;border:1px solid #94a3b81f;border-radius:10px;margin-bottom:12px;position:relative;overflow:hidden}.note-cover img{object-fit:cover;width:100%;height:100%;display:block}.note-date{font-family:var(--font-mono), monospace;letter-spacing:.1em;color:#e2e8f0cc;text-transform:uppercase;font-size:10px;position:absolute;bottom:10px;left:12px}.note-card h3{color:#e8edf3;margin:0 0 5px;font-size:15px;font-weight:600;line-height:1.4}.note-read{font-family:var(--font-mono), monospace;color:var(--mono-label);text-transform:uppercase;font-size:11px}.footer{border-top:1px solid var(--hairline);justify-content:space-between;align-items:center;padding-top:32px;padding-bottom:32px;display:flex}.footer-copy{font-family:var(--font-mono), monospace;color:var(--mono-label);font-size:11.5px}.footer-links{gap:22px;font-size:13.5px;display:flex}.detail-header{padding-top:56px;padding-bottom:0}.detail-back{font-family:var(--font-mono), monospace;letter-spacing:.1em;color:var(--subdued);text-transform:uppercase;margin-bottom:28px;font-size:11.5px;display:inline-block}.detail-back:hover{color:#e2e8f0}.detail-header h1{letter-spacing:-.02em;color:var(--heading);max-width:24ch;margin:0 0 14px;font-size:40px;font-weight:700;line-height:1.12}.detail-meta{align-items:center;gap:14px;margin-bottom:32px;display:flex}.detail-tag{font-family:var(--font-mono), monospace;letter-spacing:.1em;color:#0a1224;background:var(--accent);text-transform:uppercase;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:500}.detail-date{font-family:var(--font-mono), monospace;letter-spacing:.1em;color:var(--mono-label);text-transform:uppercase;font-size:11px}.detail-cover{aspect-ratio:21/9;border:1px solid var(--card-border);background-color:#0c1a24;background-position:50%;background-size:cover;border-radius:12px;margin-bottom:44px;position:relative;overflow:hidden}.detail-cover img{object-fit:cover;width:100%;height:100%;display:block}.detail-layout{grid-template-columns:minmax(0,68ch) 260px;align-items:start;gap:56px;padding-bottom:72px;display:grid}.detail-body{color:var(--paragraph);font-size:16.5px;line-height:1.75}.detail-body p{margin:0 0 20px}.detail-body h2,.detail-body h3{color:var(--heading);letter-spacing:-.01em;margin:36px 0 14px}.detail-body h2{font-size:24px}.detail-body h3{font-size:19px}.detail-body blockquote{border-left:2px solid var(--accent);color:var(--body);margin:24px 0;padding-left:20px}.detail-body figure{margin:28px 0}.detail-body figure img{border:1px solid var(--card-border);border-radius:10px;width:100%;display:block}.detail-body figcaption{font-family:var(--font-mono), monospace;letter-spacing:.1em;color:var(--caption);text-transform:uppercase;margin-top:10px;font-size:10.5px}.app-gallery{grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0 32px;display:grid}.app-gallery figure{margin:0}.app-gallery img{border:1px solid var(--card-border);border-radius:10px;width:100%;display:block}.app-gallery figcaption{font-family:var(--font-mono), monospace;letter-spacing:.1em;color:var(--caption);text-transform:uppercase;margin-top:8px;font-size:10.5px}.detail-aside{flex-direction:column;gap:12px;display:flex;position:sticky;top:92px}.detail-aside-label{font-family:var(--font-mono), monospace;letter-spacing:.14em;color:var(--mono-label);text-transform:uppercase;margin-bottom:4px;font-size:11px}.detail-link{color:var(--accent);text-align:center;border:1px solid #22d3ee59;border-radius:6px;padding:10px 14px;font-size:14px;font-weight:500;display:block}.detail-link:hover{color:var(--accent-lighter);background:#22d3ee1a}.detail-link.secondary{color:var(--subdued);border-color:var(--chip-border)}.detail-link.secondary:hover{color:#e2e8f0;background:#94a3b814}.detail-empty{color:var(--blurb);font-style:italic}.contact-intro{color:var(--subdued);max-width:52ch;margin:0;font-size:16px;line-height:1.65}.contact-wrap{padding-top:40px;padding-bottom:72px}.contact-form{flex-direction:column;gap:18px;max-width:560px;display:flex}.contact-form label{font-family:var(--font-mono), monospace;letter-spacing:.14em;color:var(--mono-label);text-transform:uppercase;flex-direction:column;gap:8px;font-size:11px;display:flex}.contact-form input,.contact-form textarea{background:var(--card-bg);border:1px solid var(--chip-border);color:var(--body);font-family:var(--font-sans), sans-serif;resize:vertical;border-radius:6px;padding:12px 14px;font-size:16px}.contact-form input:focus,.contact-form textarea:focus{border-color:#22d3ee80;outline:none}.contact-submit{cursor:pointer;color:var(--accent);font-family:var(--font-sans), sans-serif;background:0 0;border:1px solid #22d3ee59;border-radius:6px;align-self:flex-start;padding:10px 24px;font-size:14px;font-weight:500;transition:background .2s}.contact-submit:hover{background:#22d3ee1a}.contact-submit:disabled{opacity:.5;cursor:default}.honeypot{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.form-status{margin:0;font-size:14.5px}.form-status.ok{color:var(--accent-light)}.form-status.error{color:#fda4af}@media (max-width:900px){.container{padding-left:24px;padding-right:24px}.nav{padding:14px 24px}.nav-links{gap:18px}.hero{grid-template-columns:1fr;padding-top:6px;padding-bottom:0}.hero h1{font-size:38px}.hero-canvas{height:300px}.about-grid{grid-template-columns:1fr;gap:32px}.portrait-frame{max-width:260px}.about-columns{grid-template-columns:1fr;gap:20px}.showcase-grid,.notes-grid{grid-template-columns:repeat(2,1fr)}.detail-layout{grid-template-columns:1fr;gap:36px}.detail-aside{position:static}.detail-header h1{font-size:30px}}@media (max-width:560px){.showcase-grid,.notes-grid,.app-gallery{grid-template-columns:1fr}.nav-links a:not(.nav-contact){display:none}}
