.ProjectDetail-module__vV4mtW__container{width:100%;min-height:100vh;padding:2rem}.ProjectDetail-module__vV4mtW__backButton{color:#94a3b8;margin-bottom:2rem;font-size:.95rem;text-decoration:none;transition:color .3s;display:inline-block}.ProjectDetail-module__vV4mtW__backButton:hover{color:#ef4444}.ProjectDetail-module__vV4mtW__content{max-width:900px;margin:0 auto}.ProjectDetail-module__vV4mtW__hero{background:linear-gradient(135deg,#1e293b,#334155);border:1px solid #4755694d;border-radius:6px;justify-content:center;align-items:center;width:100%;height:400px;margin-bottom:2rem;display:flex;overflow:hidden}.ProjectDetail-module__vV4mtW__media{object-fit:contain;width:100%;height:100%}.ProjectDetail-module__vV4mtW__iconLarge{filter:drop-shadow(0 0 30px #ef444499);font-size:8rem}.ProjectDetail-module__vV4mtW__header{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.ProjectDetail-module__vV4mtW__title{color:#f1f5f9;margin:0;font-size:3rem;font-weight:700}.ProjectDetail-module__vV4mtW__badge{text-transform:lowercase;color:#ef4444;background:#ef44441f;border:1px solid #ef44444d;border-radius:6px;padding:.5rem 1rem;font-size:.85rem;font-weight:600}.ProjectDetail-module__vV4mtW__subtitle{color:#cbd5e1;margin:0 0 2rem;font-size:1.5rem;font-weight:600}.ProjectDetail-module__vV4mtW__description{color:#94a3b8;margin-bottom:3rem;font-size:1.05rem;line-height:1.8}.ProjectDetail-module__vV4mtW__techSection{margin-bottom:3rem}.ProjectDetail-module__vV4mtW__sectionTitle{color:#f1f5f9;margin-bottom:1rem;font-size:1.25rem;font-weight:600}.ProjectDetail-module__vV4mtW__tags{flex-wrap:wrap;gap:.75rem;display:flex}.ProjectDetail-module__vV4mtW__tag{color:#cbd5e1;background:#4755694d;border:1px solid #47556980;border-radius:4px;padding:.5rem 1rem;font-size:.9rem;transition:all .3s}.ProjectDetail-module__vV4mtW__tag:hover{background:#47556980;border-color:#64748bcc}.ProjectDetail-module__vV4mtW__links{flex-direction:column;gap:1rem;display:flex}.ProjectDetail-module__vV4mtW__activitySection{margin-top:3rem}.ProjectDetail-module__vV4mtW__link{color:#ef4444;background:0 0;border:1.5px solid #ef4444;border-radius:6px;justify-content:center;align-items:center;padding:1rem 2rem;font-size:1rem;font-weight:600;text-decoration:none;transition:all .3s;display:inline-flex}.ProjectDetail-module__vV4mtW__link:hover{color:#0f172a;background:#ef4444;box-shadow:0 0 20px #ef444466}@media (max-width:768px){.ProjectDetail-module__vV4mtW__container{padding:1rem}.ProjectDetail-module__vV4mtW__title{font-size:2rem}.ProjectDetail-module__vV4mtW__subtitle{font-size:1.2rem}.ProjectDetail-module__vV4mtW__hero{height:250px}}
.GitHubActivityGrid-module__wbc0cW__card{isolation:isolate;color:#fff;width:100%;position:relative}.GitHubActivityGrid-module__wbc0cW__header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:8px 16px;margin-bottom:12px;display:flex}.GitHubActivityGrid-module__wbc0cW__total{color:#c3c2b7;font-size:14px}.GitHubActivityGrid-module__wbc0cW__count{font-family:var(--font-serif);color:#fff;margin-right:6px;font-size:28px}.GitHubActivityGrid-module__wbc0cW__legend{font-family:var(--font-mono);color:#8e8f95;align-items:center;gap:4px;font-size:11px;display:flex}.GitHubActivityGrid-module__wbc0cW__legend>span:first-child{margin-right:4px}.GitHubActivityGrid-module__wbc0cW__legend>span:last-child{margin-left:4px}.GitHubActivityGrid-module__wbc0cW__swatch{border-radius:3px;width:11px;height:11px;display:block}.GitHubActivityGrid-module__wbc0cW__viewport{padding-bottom:2px;position:relative;overflow:hidden}.GitHubActivityGrid-module__wbc0cW__scrolls{overscroll-behavior-x:contain;scrollbar-width:none;padding-bottom:6px;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000,#000 32px);mask-image:linear-gradient(90deg,#0000,#000 32px)}.GitHubActivityGrid-module__wbc0cW__scrolls::-webkit-scrollbar{display:none}.GitHubActivityGrid-module__wbc0cW__months{height:16px;position:relative}.GitHubActivityGrid-module__wbc0cW__month{font-family:var(--font-mono);color:#8e8f95;font-size:11px;line-height:1;position:absolute;top:0}.GitHubActivityGrid-module__wbc0cW__body{display:flex}.GitHubActivityGrid-module__wbc0cW__weekdays{flex-direction:column;flex:none;display:flex}.GitHubActivityGrid-module__wbc0cW__weekday{font-family:var(--font-mono);color:#8e8f95;align-items:center;font-size:10px;line-height:1;display:flex}.GitHubActivityGrid-module__wbc0cW__weeks,.GitHubActivityGrid-module__wbc0cW__week{display:flex}.GitHubActivityGrid-module__wbc0cW__week{flex-direction:column}.GitHubActivityGrid-module__wbc0cW__cell{cursor:default;border:0;border-radius:3px;padding:0;display:block}.reveal-on [data-reveal]:not([data-shown]) .GitHubActivityGrid-module__wbc0cW__cell{opacity:0}.reveal-on [data-shown] .GitHubActivityGrid-module__wbc0cW__cell{animation:.2s ease-out both GitHubActivityGrid-module__wbc0cW__cell-in;animation-delay:calc(var(--r)*2ms)}@keyframes GitHubActivityGrid-module__wbc0cW__cell-in{0%{opacity:0}}@media (hover:hover){.GitHubActivityGrid-module__wbc0cW__cell:hover{outline-offset:1px;outline:1.5px solid #fff}}.GitHubActivityGrid-module__wbc0cW__cell:focus-visible{outline-offset:1px;outline:2px solid #ffd43b}.GitHubActivityGrid-module__wbc0cW__l0{background:#1f1f23}.GitHubActivityGrid-module__wbc0cW__l1{background:#184f95}.GitHubActivityGrid-module__wbc0cW__l2{background:#2a78d6}.GitHubActivityGrid-module__wbc0cW__l3{background:#5598e7}.GitHubActivityGrid-module__wbc0cW__l4{background:#9ec5f4}.GitHubActivityGrid-module__wbc0cW__tooltip{z-index:20;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;color:#0b0b0c;background:#fff;border-radius:8px;padding:5px 9px;font-size:12px;position:absolute;top:0;left:0;box-shadow:0 8px 22px -8px #00000080}.GitHubActivityGrid-module__wbc0cW__tooltip strong{font-weight:600}.GitHubActivityGrid-module__wbc0cW__date{color:#52514e;margin-left:6px}
.GitHubPanel-module__Kofu6q__panel{color:#fff;background:#111113;border-radius:24px;margin-top:clamp(56px,8vw,96px);padding:clamp(22px,3.5vw,40px);box-shadow:0 30px 80px -30px #0000008c}.GitHubPanel-module__Kofu6q__header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 16px;margin-bottom:28px;display:flex}.GitHubPanel-module__Kofu6q__title{font-family:var(--font-serif);font-size:clamp(32px,4vw,48px);font-weight:400;line-height:1}.GitHubPanel-module__Kofu6q__handle{font-family:var(--font-mono);color:#c3c2b7;padding:10px 0;font-size:14px;text-decoration:none;position:relative}.GitHubPanel-module__Kofu6q__handle:hover{color:#fff}.GitHubPanel-module__Kofu6q__tiles{border-top:1px solid #2a2a2e;grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.GitHubPanel-module__Kofu6q__tile{flex-direction:column-reverse;justify-content:flex-end;gap:6px;padding:20px 20px 22px 0;display:flex}.GitHubPanel-module__Kofu6q__tile+.GitHubPanel-module__Kofu6q__tile{border-left:1px solid #2a2a2e;padding-left:20px}.GitHubPanel-module__Kofu6q__value{font-family:var(--font-serif);font-variant-numeric:tabular-nums;font-size:clamp(44px,6vw,72px);line-height:.95}.GitHubPanel-module__Kofu6q__label{color:#c3c2b7;max-width:18ch;font-size:14px;line-height:1.35}@media (max-width:760px){.GitHubPanel-module__Kofu6q__tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.GitHubPanel-module__Kofu6q__tile:nth-child(3){border-left:0;padding-left:0}.GitHubPanel-module__Kofu6q__tile:nth-child(n+3){border-top:1px solid #2a2a2e}}.GitHubPanel-module__Kofu6q__block{margin-top:28px}.GitHubPanel-module__Kofu6q__split{grid-template-columns:1.15fr 1fr;gap:8px 48px;display:grid}@media (max-width:760px){.GitHubPanel-module__Kofu6q__split{grid-template-columns:1fr}}.GitHubPanel-module__Kofu6q__subtitle{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#c3c2b7;margin-bottom:14px;font-size:12px;font-weight:400}.GitHubPanel-module__Kofu6q__bar{gap:2px;height:12px;display:flex}.GitHubPanel-module__Kofu6q__bar span{flex-basis:0}.GitHubPanel-module__Kofu6q__bar span:first-child{border-radius:4px 0 0 4px}.GitHubPanel-module__Kofu6q__bar span:last-child{border-radius:0 4px 4px 0}.GitHubPanel-module__Kofu6q__legend{flex-wrap:wrap;gap:8px 20px;margin-top:14px;font-size:14px;list-style:none;display:flex}.GitHubPanel-module__Kofu6q__legend li{align-items:center;gap:8px;display:inline-flex}.GitHubPanel-module__Kofu6q__swatch{border-radius:3px;width:10px;height:10px}.GitHubPanel-module__Kofu6q__count{font-family:var(--font-mono);color:#8e8f95;font-size:12px}.GitHubPanel-module__Kofu6q__recent{list-style:none}.GitHubPanel-module__Kofu6q__recent li{border-top:1px solid #2a2a2e;justify-content:space-between;align-items:baseline;gap:16px;padding:10px 0;display:flex;position:relative}.GitHubPanel-module__Kofu6q__recent li:last-child{border-bottom:1px solid #2a2a2e}.GitHubPanel-module__Kofu6q__recent a{color:#fff;overflow-wrap:anywhere;font-weight:500;text-decoration:none}.GitHubPanel-module__Kofu6q__recent a:after{content:"";position:absolute;inset:0}.GitHubPanel-module__Kofu6q__recent a:hover{text-underline-offset:3px;text-decoration:underline}.GitHubPanel-module__Kofu6q__meta{font-family:var(--font-mono);color:#8e8f95;flex:none;font-size:12px}
.About-module__Tgu3nG__about{color:#fff;padding:clamp(120px,16vw,200px) 20px clamp(80px,10vw,140px);position:relative}.About-module__Tgu3nG__inner{max-width:1180px;margin:0 auto}.About-module__Tgu3nG__eyebrow{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:#111;background:#ffd43b;border-radius:10px 10px 10px 0;margin-bottom:18px;padding:4px 10px 5px;font-size:13px;display:inline-block}.About-module__Tgu3nG__statement{max-width:16ch;font-family:var(--font-serif);letter-spacing:-.02em;font-size:clamp(46px,8vw,118px);font-weight:400;line-height:1.35}.About-module__Tgu3nG__strip{padding:0}.About-module__Tgu3nG__strip>[data-l]{-webkit-box-decoration-break:clone;box-decoration-break:clone;background:linear-gradient(#0b0b0c,#0b0b0c) 0 0/100% 100% no-repeat;padding:.08em .18em .18em}.About-module__Tgu3nG__statement em{background:#d93a28;margin:0 -.12em;padding:.04em .12em .12em;font-style:italic;position:relative}.About-module__Tgu3nG__card{background:#0b0b0ce0;border-radius:24px;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:36px clamp(32px,6vw,96px);margin-top:clamp(40px,6vw,72px);padding:clamp(22px,3.5vw,40px);display:grid}@media (max-width:820px){.About-module__Tgu3nG__card{grid-template-columns:1fr}}.About-module__Tgu3nG__bio{color:#e9e8e2;flex-direction:column;gap:1em;max-width:60ch;font-size:clamp(17px,1.45vw,20px);line-height:1.6;display:flex}.About-module__Tgu3nG__facts{border-top:1px solid #3a3a3f;align-self:start}.About-module__Tgu3nG__facts div{border-bottom:1px solid #3a3a3f;grid-template-columns:9em 1fr;gap:12px;padding:12px 0;display:grid}.About-module__Tgu3nG__facts dt{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#c3c2b7;padding-top:3px;font-size:12px}.About-module__Tgu3nG__facts dd{font-size:16px}.About-module__Tgu3nG__capitalize{text-transform:capitalize}
.ColorField-module__By53jW__field{z-index:-1;pointer-events:none;background:radial-gradient(45% 55% at 22% 30%,#f51a29 0%,#0000 70%),radial-gradient(40% 50% at 78% 25%,#144dff 0%,#0000 70%),radial-gradient(50% 55% at 60% 85%,#ff6b0a 0%,#0000 70%),#050507;width:100%;height:100lvh;position:fixed;top:0;left:0}.ColorField-module__By53jW__canvas{width:100%;height:100%;display:block}.ColorField-module__By53jW__canvas[data-fallback=true]{display:none}.ColorField-module__By53jW__grain{opacity:.075;will-change:transform;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='1.6 0 0 0 -0.3  1.6 0 0 0 -0.3  1.6 0 0 0 -0.3  0 0 0 0 1'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");background-size:220px 220px;animation:.9s step-end infinite ColorField-module__By53jW__grain;position:absolute;inset:-6%}@keyframes ColorField-module__By53jW__grain{0%{transform:translate(0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-3%,-1%)}}@media (prefers-reduced-motion:reduce){.ColorField-module__By53jW__grain{animation:none}}
.Contact-module__wGd5-q__contact{color:#fff;padding:clamp(80px,12vw,160px) 20px 32px}.Contact-module__wGd5-q__inner{max-width:1180px;margin:0 auto}.Contact-module__wGd5-q__eyebrow{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:#111;background:#ffd43b;border-radius:10px 10px 10px 0;margin-bottom:18px;padding:4px 10px 5px;font-size:13px;display:inline-block}.Contact-module__wGd5-q__title{max-width:18ch;font-family:var(--font-serif);letter-spacing:-.02em;font-size:clamp(40px,6vw,84px);font-weight:400;line-height:1.35}.Contact-module__wGd5-q__strip{padding:0}.Contact-module__wGd5-q__strip>[data-l]{-webkit-box-decoration-break:clone;box-decoration-break:clone;background:linear-gradient(#0b0b0c,#0b0b0c) 0 0/100% 100% no-repeat;padding:.08em .18em .18em}.Contact-module__wGd5-q__email{font-family:var(--font-mono);color:#0b0b0c;overflow-wrap:anywhere;background:#fff;margin-top:clamp(28px,4vw,48px);padding:.25em .5em .3em;font-size:clamp(17px,3vw,34px);text-decoration:none;display:inline-block}.Contact-module__wGd5-q__email:hover{background:#ffd43b}.Contact-module__wGd5-q__links{gap:24px;margin-top:28px;font-size:18px;list-style:none;display:flex}.Contact-module__wGd5-q__links a{color:#fff;background:#0b0b0c;padding:.45em .7em .5em;text-decoration:none;display:inline-block}.Contact-module__wGd5-q__links a:hover{background:#2a2b30}.Contact-module__wGd5-q__footer{font-family:var(--font-mono);background:#0b0b0c;margin-top:clamp(80px,12vw,160px);padding:3px 8px;font-size:12px;display:inline-block}
.HandLettering-module__V_NQsa__lettering{--u:min(1.95px,calc((100vw - 96px)/var(--total)));--stroke:1.5;justify-content:center;align-items:center;column-gap:calc(var(--u)*14);row-gap:calc(var(--u)*2);color:#fff;flex-wrap:wrap;display:flex}@media (max-width:900px){.HandLettering-module__V_NQsa__lettering{--u:calc((100vw - 40px)/var(--widest));--stroke:2.3}}@media (max-width:520px){.HandLettering-module__V_NQsa__lettering{--stroke:2.6}}.HandLettering-module__V_NQsa__word{width:calc(var(--vbw)*var(--u));flex:none;height:auto;overflow:visible}.HandLettering-module__V_NQsa__outline path{fill:none;stroke:currentColor;stroke-width:calc(var(--stroke)*.75);stroke-linecap:round;stroke-linejoin:round}.HandLettering-module__V_NQsa__letters{filter:drop-shadow(0 0 5px #00000059)}.HandLettering-module__V_NQsa__fills path{fill:currentColor;transition:opacity .3s}.HandLettering-module__V_NQsa__star{opacity:0;transform-box:fill-box;transform-origin:50%}.HandLettering-module__V_NQsa__lettering[data-phase=drawn] .HandLettering-module__V_NQsa__star{animation:.35s cubic-bezier(.34,1.56,.64,1) forwards HandLettering-module__V_NQsa__star-in;animation-delay:calc(var(--i)*40ms)}@keyframes HandLettering-module__V_NQsa__star-in{0%{opacity:0;transform:scale(.1)rotate(-90deg)}to{opacity:1;transform:none}}.HandLettering-module__V_NQsa__twinkle{fill:currentColor;transform-box:fill-box;transform-origin:50%;animation:2.6s ease-in-out infinite HandLettering-module__V_NQsa__twinkle;animation-delay:calc(var(--i)*-.41s)}@keyframes HandLettering-module__V_NQsa__twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.7)rotate(45deg)}}@media (max-width:900px){.HandLettering-module__V_NQsa__star{scale:1.6}}.HandLettering-module__V_NQsa__pencil path{fill:#111;stroke:currentColor;stroke-width:.55px;stroke-linejoin:round}.HandLettering-module__V_NQsa__pencil .HandLettering-module__V_NQsa__lead{fill:currentColor}@media (prefers-reduced-motion:reduce){.HandLettering-module__V_NQsa__lettering[data-phase=drawn] .HandLettering-module__V_NQsa__star{opacity:1;animation:none}.HandLettering-module__V_NQsa__twinkle{animation:none}}
.Hero-module__H8d9UW__hero{color:#fff;flex-direction:column;justify-content:center;align-items:center;gap:clamp(28px,5vw,56px);min-height:100svh;padding:96px 20px 120px;display:flex;position:relative}.Hero-module__H8d9UW__title{font-weight:inherit}.Hero-module__H8d9UW__tagline{flex-direction:column;align-items:flex-start;max-width:100%;display:flex;position:relative}.Hero-module__H8d9UW__chips{font-family:var(--font-mono);letter-spacing:-.01em;flex-wrap:wrap;justify-content:flex-start;font-size:clamp(17px,2.1vw,27px);line-height:1.2;display:flex}.Hero-module__H8d9UW__chip{opacity:0;transition:opacity .25s,transform .45s cubic-bezier(.34,1.56,.64,1);transition-delay:calc(var(--i)*70ms + .1s);padding:.12em .36em .16em;position:relative;transform:translateY(.5em)}.Hero-module__H8d9UW__hero[data-drawn=true] .Hero-module__H8d9UW__chip{opacity:1;transform:none}.Hero-module__H8d9UW__red{background:#d93a28}.Hero-module__H8d9UW__red:after{content:"";background:linear-gradient(135deg,#d93a28 33.33%,#0000 33.33%) 0 0/8px 8px,linear-gradient(225deg,#d93a28 33.33%,#0000 33.33%) 0 0/8px 8px;height:6px;position:absolute;top:100%;left:0;right:0}.Hero-module__H8d9UW__grey{background:#6b6b70}.Hero-module__H8d9UW__dark{background:#19191b}.Hero-module__H8d9UW__bubble{font-family:var(--font-mono);color:#111;opacity:0;transform-origin:0 100%;background:#ffd43b;border-radius:.75em .75em .75em 0;align-items:center;gap:.4em;margin-bottom:-2px;padding:.28em .5em .3em .62em;font-size:clamp(16px,1.75vw,22px);transition:opacity .25s .45s,transform .45s cubic-bezier(.34,1.56,.64,1) .45s;display:inline-flex;transform:translateY(.4em)scale(.9)}.Hero-module__H8d9UW__hero[data-drawn=true] .Hero-module__H8d9UW__bubble{opacity:1;transform:none}.Hero-module__H8d9UW__bubble a{color:inherit;text-decoration:none}.Hero-module__H8d9UW__bubble a:hover{text-underline-offset:3px;text-decoration:underline}.Hero-module__H8d9UW__bubble button{cursor:pointer;background:0 0;border:0;place-items:center;width:1.1em;height:1.1em;padding:0;display:grid;position:relative}.Hero-module__H8d9UW__bubble a,.Hero-module__H8d9UW__bubble button{position:relative}.Hero-module__H8d9UW__bubble a:after,.Hero-module__H8d9UW__bubble button:after{content:"";position:absolute;inset:-10px -6px}.Hero-module__H8d9UW__bubble button:after{inset:-11px}.Hero-module__H8d9UW__bubble svg{fill:none;stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;width:.72em;height:.72em}.Hero-module__H8d9UW__scroll{color:#ffffffbf;width:180px;padding:12px 0;text-decoration:none;position:absolute;bottom:20px;left:50%;overflow:hidden;transform:translate(-50%);-webkit-mask-image:linear-gradient(90deg,#0000,#000 18% 82%,#0000);mask-image:linear-gradient(90deg,#0000,#000 18% 82%,#0000)}.Hero-module__H8d9UW__scroll:hover{color:#fff}.Hero-module__H8d9UW__marquee{width:max-content;font-family:var(--font-sans);letter-spacing:.14em;text-transform:uppercase;font-size:11px;font-weight:500;animation:9s linear infinite Hero-module__H8d9UW__marquee;display:flex}.Hero-module__H8d9UW__marqueeItem{padding-right:22px}@keyframes Hero-module__H8d9UW__marquee{to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.Hero-module__H8d9UW__chip,.Hero-module__H8d9UW__bubble{transition:none}.Hero-module__H8d9UW__marquee{animation:none}}
