@import "https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,600;0,9..144,700;1,9..144,600&family=Source+Sans+3:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap";:root{--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-body:"Source Sans 3", system-ui, sans-serif;--mono:ui-monospace, "Cascadia Code", "Segoe UI Mono", monospace;--wall-base:#0f0e10;--graffiti-blend-mode:normal;--graffiti-opacity:1;--text:#3d3a36;--text-muted:#6b6560;--text-strong:#1c1917;--bg:#faf7f2;--surface:#fffefb;--surface-elevated:#fff;--border:#1c19171f;--border-strong:#1c191738;--code-bg:#b7532814;--chip-bg:#b753280f;--accent:#b45328;--accent-hover:#9a4622;--accent-contrast:#fffefb;--shadow-card:0 1px 2px #1c19170a, 0 8px 24px #1c19170f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-body);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:17px;line-height:1.5}html{scroll-behavior:smooth}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--text:#d6d3d1;--text-muted:#a8a29e;--text-strong:#fafaf9;--bg:var(--wall-base);--surface:#1c1917;--surface-elevated:#292524;--border:#ffffff1a;--border-strong:#ffffff2e;--code-bg:#fbbf241f;--chip-bg:#fbbf2414;--accent:#fbbf24;--accent-hover:#fcd34d;--accent-contrast:#1c1917;--shadow-card:0 1px 2px #0003, 0 8px 24px #00000059}}*,:before,:after{box-sizing:border-box}body{min-height:100svh;margin:0}#root{flex-direction:column;width:100%;max-width:none;min-height:100svh;margin:0;display:flex;position:relative}main{flex:1;width:min(1120px,100%);margin:0 auto}h1,h2,h3{font-weight:inherit}p{margin:0}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (width<=1024px){:root{font-size:16px}}.skip-link{z-index:100;background:var(--surface-elevated);color:var(--text);border-radius:8px;padding:.75rem 1rem;font-weight:600;text-decoration:none;position:absolute;left:-9999px}.corner-graffiti{pointer-events:none;z-index:0;isolation:isolate;position:absolute;inset:0;overflow:hidden}.wall-texture{background:linear-gradient(#00000038, #0000004d), repeating-linear-gradient(0deg, #a08cb40d 0 2px, #17121c0d 2px 47px), repeating-linear-gradient(90deg, #ffffff06 0 2px, transparent 2px 90px), repeating-linear-gradient(90deg, transparent 0 45px, #ffffff07 45px 47px, transparent 47px 92px), var(--wall-base,#0f0e10);filter:contrast(1.03)saturate(.96);position:absolute;inset:0}.wall-texture:after{content:"";pointer-events:none;opacity:.22;mix-blend-mode:overlay;background-image:repeating-radial-gradient(circle at 17% 24%,#ffffff0a 0 1px,#0000 1px 5px),repeating-radial-gradient(circle at 73% 68%,#ffffff08 0 1px,#0000 1px 6px);position:absolute;inset:0}.graffiti-icon{object-fit:contain;object-position:center;pointer-events:none;width:clamp(130px,17vw,280px);height:auto;mix-blend-mode:var(--graffiti-blend-mode,normal);opacity:var(--graffiti-opacity,1);filter:drop-shadow(0 6px 20px #0006);animation:14s ease-in-out infinite wall-float;display:block;position:absolute}.graffiti-icon.r2{width:clamp(150px,18vw,260px);opacity:calc(var(--graffiti-opacity,1) * .9);animation-delay:2.1s;inset:auto auto clamp(14%,18vh,22%) clamp(.25rem,1.5vw,1.25rem);transform:rotate(-8deg)scale(.82)}.graffiti-icon.n1{width:clamp(125px,15vw,250px);animation-delay:1.1s;top:clamp(22%,24vh,32%);left:auto;right:clamp(1.25rem,5vw,3.5rem);transform:rotate(-5deg)scale(1.04)}.graffiti-icon.n2{width:clamp(140px,16vw,240px);opacity:calc(var(--graffiti-opacity,1) * .88);animation-delay:1.7s;inset:auto clamp(.5rem,3vw,2rem) clamp(22%,26vh,34%) auto;transform:rotate(6deg)scale(.9)}.graffiti-icon.p1{width:clamp(100px,12vw,185px);opacity:calc(var(--graffiti-opacity,1) * .9);animation-delay:.8s;top:clamp(46%,48vh,62%);left:clamp(.25rem,1.8vw,1.25rem);right:auto;transform:rotate(-7deg)scale(.86)}.graffiti-icon.p2{width:clamp(125px,14vw,220px);opacity:calc(var(--graffiti-opacity,1) * .85);animation-delay:1.4s;top:clamp(24%,28vh,36%);left:clamp(.25rem,1.2vw,1rem);right:auto;transform:rotate(5deg)scale(.8)}.graffiti-icon.c1{width:clamp(92px,11vw,175px);opacity:calc(var(--graffiti-opacity,1) * .92);animation-delay:2.5s;inset:auto clamp(.5rem,2.5vw,2rem) clamp(.75rem,5vh,3rem) auto;transform:rotate(11deg)scale(.74)}.spray-mask{filter:blur(16px)saturate(1.2);opacity:.28;mix-blend-mode:screen;border-radius:999px;width:clamp(170px,28vw,340px);height:clamp(120px,18vw,220px);animation:12s ease-in-out infinite spray-drift;position:absolute}.spray-a{background:radial-gradient(circle at 31% 42%,#53efffab,#0000 43%),radial-gradient(circle at 56% 62%,#53efff6b,#0000 46%),radial-gradient(circle at 80% 34%,#53efff3d,#0000 42%);top:6%;left:-5%}.spray-b{background:radial-gradient(circle at 35% 40%,#f466dca1,#0000 43%),radial-gradient(circle at 58% 66%,#f466dc59,#0000 45%),radial-gradient(circle at 79% 28%,#f466dc33,#0000 41%);animation-delay:1.4s;top:17%;right:-7%}.spray-c{background:radial-gradient(circle at 38% 44%,#ffab459c,#0000 44%),radial-gradient(circle at 62% 64%,#ffab454f,#0000 45%),radial-gradient(circle at 81% 29%,#ffab4533,#0000 42%);animation-delay:2.1s;bottom:12%;left:-4%}.spray-d{background:radial-gradient(circle at 29% 44%,#69ffa7a6,#0000 45%),radial-gradient(circle at 56% 61%,#69ffa74f,#0000 45%),radial-gradient(circle at 77% 32%,#69ffa733,#0000 42%);animation-delay:2.8s;bottom:9%;right:-5%}.mural-word{font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;opacity:.29;filter:drop-shadow(0 0 9px #00000059)drop-shadow(0 0 15px #ffffff1a);mix-blend-mode:screen;font-size:clamp(2.2rem,8vw,5.8rem);font-weight:700;animation:11s ease-in-out infinite graffiti-float;position:absolute}.mural-word-code{color:#6fe8ff;top:8%;left:4%;transform:rotate(-13deg)}.mural-word-dev{color:#ff70d6;animation-delay:1.3s;top:18%;right:4%;transform:rotate(11deg)}.mural-word-ai{color:#ffd266;animation-delay:2.4s;bottom:7%;right:7%;transform:rotate(-9deg)}.mural-object{fill:none;stroke-width:4px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 8;opacity:.4;filter:drop-shadow(0 0 13px #00000059)drop-shadow(0 0 15px #ffffff1a);width:clamp(120px,18vw,220px);height:auto;animation:10s ease-in-out infinite graffiti-float;position:absolute}.mural-scribble{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;opacity:.24;mix-blend-mode:screen;text-shadow:0 0 10px #00000059;font-size:clamp(1rem,2.2vw,1.8rem);font-weight:700;animation:9s ease-in-out infinite graffiti-float;position:absolute}.scribble-a{color:#70ffe2;top:9%;left:31%;transform:rotate(-18deg)}.scribble-b{color:#ffc26a;animation-delay:1.2s;top:28%;right:26%;transform:rotate(15deg)}.scribble-c{color:#ffa7f0;animation-delay:.8s;top:44%;left:25%;transform:rotate(-11deg)}.scribble-d{color:#8bd3ff;animation-delay:1.4s;top:56%;right:29%;transform:rotate(8deg)}.scribble-e{color:#ffad7e;animation-delay:2s;bottom:11%;left:28%;transform:rotate(-14deg)}.scribble-f{color:#86ff9b;animation-delay:1.6s;bottom:17%;right:21%;transform:rotate(13deg)}.mural-laptop{stroke:#66e6ff;top:47%;right:1.5%;transform:rotate(8deg)}.mural-chip{stroke:#74ffb5;animation-delay:1.8s;top:34%;left:1.5%;transform:rotate(-11deg)}.mural-coder{stroke:#ff9e6f;animation-delay:1.2s;bottom:2%;left:3.5%;transform:rotate(-8deg)}.graffiti-tag{font-family:var(--mono);letter-spacing:.13em;text-transform:lowercase;opacity:.2;text-shadow:0 0 10px #00000059,0 0 16px #ffffff0d;transform-origin:50%;border-radius:4px;padding:.14rem .25rem;font-size:clamp(.7rem,1.2vw,.95rem);font-weight:600;animation:8s ease-in-out infinite graffiti-float;position:absolute}.g-top-left{color:#5de1ff;top:3.8rem;left:9.5rem;transform:rotate(-7deg)}.g-mid-right{color:#ff78db;animation-delay:2.1s;top:46%;right:1.2rem;transform:rotate(86deg)}.g-bottom-right{color:#f59f5f;animation-delay:1.7s;bottom:2.4rem;right:1.4rem;transform:rotate(8deg)}.paint-drip{opacity:.35;filter:blur(.6px);border-radius:0 0 10px 10px;width:9px;height:52px;position:absolute}.drip-1{background:linear-gradient(#ff70d6d1,#0000);top:35%;right:11%}.drip-2{background:linear-gradient(#6fe8ffcc,#0000);height:63px;top:21%;left:16%}.drip-3{background:linear-gradient(#ff9f5fcc,#0000);height:58px;bottom:14%;left:13%}.drip-4{background:linear-gradient(#70ffe2d1,#0000);height:50px;top:20%;right:26%}.drip-5{background:linear-gradient(#ffa7f0cc,#0000);height:46px;top:48%;left:37%}.skip-link:focus{top:1rem;left:1rem}.site-header{z-index:10;border:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:color-mix(in srgb, var(--bg) 78%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:none;border-radius:0 0 12px 12px;justify-content:space-between;align-items:center;width:min(1120px,100%);margin:0 auto;padding:1rem clamp(1.25rem,4vw,2.5rem);display:flex;position:sticky;top:0;box-shadow:0 10px 24px #0000001f}.site-header,main,.site-footer{z-index:1;position:relative}.logo{font-family:var(--font-display);color:var(--text-strong);letter-spacing:-.02em;font-size:1.125rem;font-weight:700;text-decoration:none}.logo:after{content:"_";animation:1.2s step-end infinite blink}.logo:hover{color:var(--accent)}.nav{gap:1.5rem;display:flex}.nav a{color:var(--text-muted);font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .2s}.nav a:hover{color:var(--accent)}.hero{max-width:42rem;padding:clamp(3.5rem,12vw,7rem) clamp(1.25rem,4vw,2.5rem) clamp(3rem,8vw,5rem);scroll-margin-top:6rem;position:relative}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);text-shadow:0 0 20px color-mix(in srgb, var(--accent) 25%, transparent);margin:0 0 .75rem;font-size:.8125rem;font-weight:600}.hero-heading-with-react{font-family:var(--font-display);letter-spacing:-.03em;color:var(--text-strong);margin:0 0 .5rem;font-size:clamp(2.25rem,5vw,3.25rem);font-weight:700;line-height:1.12}.graffiti-icon.graffiti-react-inline{vertical-align:-.18em;transform-origin:50%;width:clamp(40px,6.5vw,82px);height:auto;margin-left:0;animation-delay:.25s;display:inline-block;position:relative;top:.06em;transform:rotate(-7deg)}.hero-title{color:var(--text-muted);margin:0 0 1.25rem;font-size:1.25rem;font-weight:500}.hero-bio{color:var(--text);margin:0 0 1rem;font-size:1.0625rem;line-height:1.65}.hero-meta{color:var(--text-muted);margin:0 0 1.75rem;font-size:.9375rem}.hero-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin:0 0 1.75rem;padding:0;list-style:none;display:grid}.hero-stats li{border:1px solid var(--border);background:linear-gradient(135deg, color-mix(in srgb, var(--surface) 88%, var(--accent) 12%), var(--surface));border-radius:10px;flex-direction:column;gap:.2rem;padding:.65rem .75rem;display:flex}.hero-stats strong{color:var(--text-strong);font-size:1rem}.hero-stats span{color:var(--text-muted);font-size:.8rem}.hero-actions{flex-wrap:wrap;gap:.75rem;display:flex}.button{border-radius:999px;justify-content:center;align-items:center;padding:.625rem 1.25rem;font-size:.9375rem;font-weight:600;text-decoration:none;transition:background .15s,color .15s,border-color .15s,transform .15s;display:inline-flex}.button:active{transform:scale(.98)}.button-primary{background:var(--accent);color:var(--accent-contrast);border:1px solid #0000}.button-primary:hover{background:var(--accent-hover)}.button-ghost{color:var(--text-strong);border:1px solid var(--border-strong);background:0 0}.button-ghost:hover{border-color:var(--accent);color:var(--accent)}.section{border-top:1px solid var(--border);padding:clamp(2.5rem,6vw,4rem) clamp(1.25rem,4vw,2.5rem);scroll-margin-top:6rem;position:relative;overflow:clip}.section:after{content:"1011 0100 0110 0010";font-family:var(--mono);color:color-mix(in srgb, var(--text-muted) 16%, transparent);pointer-events:none;font-size:.62rem;position:absolute;bottom:.85rem;right:1.1rem}.section h2{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text-strong);margin:0 0 1.25rem;font-size:clamp(1.375rem,2.5vw,1.75rem);font-weight:700}.prose{max-width:40rem}.prose p{color:var(--text);margin:0 0 1rem;line-height:1.65}.prose code{font-family:var(--mono);background:var(--code-bg);color:var(--text-strong);border-radius:4px;padding:.15em .4em;font-size:.9em}.tag-list{flex-wrap:wrap;gap:.5rem;max-width:42rem;margin:0;padding:0;list-style:none;display:flex}.tag-list li{background:var(--chip-bg);color:var(--text);border:1px solid var(--border);border-radius:999px;padding:.375rem .75rem;font-size:.875rem;font-weight:500}.info-grid{gap:1rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=700px){.info-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}}.info-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:1.2rem 1.2rem 1rem}.info-card h3{color:var(--text-strong);margin:0 0 .55rem;font-size:1.05rem}.info-main{color:var(--text);margin:0 0 .4rem;font-weight:600}.info-sub{color:var(--text-muted);margin:0;font-size:.92rem}.info-note{color:var(--accent);margin:.55rem 0 0;font-size:.88rem;font-weight:600}.project-grid{gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=640px){.project-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}.project-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-direction:column;gap:.75rem;padding:1.5rem;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex;position:relative}.project-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-card);transform:translateY(-2px)}.project-card:before{content:"</>";font-family:var(--mono);color:color-mix(in srgb, var(--accent) 35%, transparent);font-size:.7rem;position:absolute;top:.75rem;right:.9rem}.project-card h3{color:var(--text-strong);font-size:1.125rem;font-weight:700;font-family:var(--font-display);letter-spacing:-.02em;margin:0}.project-card>p{color:var(--text-muted);flex:1;margin:0;font-size:.9375rem;line-height:1.6}.project-tags{flex-wrap:wrap;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.project-tags li{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);font-size:.75rem;font-weight:600}.project-links{flex-wrap:wrap;gap:1rem;padding-top:.25rem;display:flex}.project-links a{color:var(--text-strong);border-bottom:2px solid var(--accent);font-size:.9375rem;font-weight:600;text-decoration:none}.project-links a:hover{color:var(--accent)}.view-more{margin-top:1.4rem}.muted{color:var(--text-muted);font-size:.875rem}.section-contact{padding-bottom:clamp(3rem,8vw,5rem)}.contact-lead{max-width:36rem;color:var(--text);margin:0 0 1rem;line-height:1.65}.contact-email{color:var(--accent);margin-bottom:1.5rem;font-size:1.125rem;font-weight:600;text-decoration:none;display:inline-block}.contact-email:hover{text-decoration:underline}.social{flex-wrap:wrap;gap:1.25rem;margin:0;padding:0;list-style:none;display:flex}.social a{color:var(--text-strong);font-weight:600;text-decoration:none}.social a:hover{color:var(--accent)}.site-footer{border-top:1px solid var(--border);width:min(1120px,100%);margin:0 auto;padding:1.5rem clamp(1.25rem,4vw,2.5rem) 2rem}.site-footer p{color:var(--text-muted);margin:0;font-size:.875rem}.hero,.section{animation:.55s fade-up}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:.2}}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes graffiti-float{0%,to{translate:0}50%{translate:0 -6px}}@keyframes wall-float{0%,to{translate:0}50%{translate:0 -8px}}@keyframes spray-drift{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-8px)scale(1.04)}}@media (width<=760px){.hero-stats{grid-template-columns:1fr}.mural-word{opacity:.15;font-size:clamp(1.8rem,12vw,3rem)}.mural-object{opacity:.2;width:clamp(90px,28vw,150px)}.mural-scribble{opacity:.14;font-size:clamp(.9rem,5vw,1.3rem)}.corner-graffiti .graffiti-icon{width:clamp(90px,26vw,160px)}}@media (prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}.logo:after,.graffiti-illustration,.spray-cloud,.spray-mask,.mural-word,.mural-object,.mural-scribble,.graffiti-icon,.graffiti-tag{animation:none}}
