#intro{grid-gap:2rem;align-content:center;display:grid;gap:2rem;min-height:calc(100svh - var(--nav-height))}.introContent{align-items:flex-start;display:flex;flex-direction:column}.introContent>*{animation:rise .6s var(--ease-out) both}.introContent>:nth-child(2){animation-delay:60ms}.introContent>:nth-child(3){animation-delay:.12s}.introContent>:nth-child(4){animation-delay:.18s}.introContent>:nth-child(5){animation-delay:.24s}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}.introName{font-size:clamp(2.9rem,9.5vw,6.25rem);font-weight:500;letter-spacing:-.05em;line-height:.95;margin:1rem 0 1.5rem}.introLead{color:var(--muted);font-size:clamp(1.05rem,2.2vw,1.25rem);max-width:34rem}.introLead strong{color:var(--text);font-weight:500}.introActions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2.25rem}.introPhoto{aspect-ratio:1;border:1px solid var(--border-strong);border-radius:var(--radius);object-fit:cover;order:-1;width:5.5rem}@media (min-width:900px){#intro{align-items:center;gap:4rem;grid-template-columns:1fr 22rem}.introPhoto{aspect-ratio:4/5;order:0;width:100%}}.navbar{align-items:center;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#080808b8;border-bottom:1px solid var(--border);display:flex;height:var(--nav-height);justify-content:space-between;padding:0 max(1.5rem,calc(50% - 34.5rem));position:sticky;top:0;z-index:10}.logo{height:2.75rem;object-fit:cover;width:2.75rem}.desktopMenu{display:flex;gap:2rem}.desktopMenuListItem{color:var(--muted);cursor:pointer;font-size:.95rem;font-weight:500;padding:.6rem 0;position:relative;transition:color .18s ease}.desktopMenuListItem:after{background:var(--accent);bottom:.2rem;content:"";height:2px;left:0;position:absolute;right:0;transform:scaleX(0);transform-origin:left;transition:transform .22s var(--ease-out)}.desktopMenuListItem.active{color:var(--text)}.desktopMenuListItem.active:after{transform:scaleX(1)}@media (hover:hover) and (pointer:fine){.desktopMenuListItem:hover{color:var(--text)}}.mobMenu{background:none;border:none;border-radius:.6rem;cursor:pointer;display:none;height:2.75rem;padding:.4rem;width:2.75rem}.mobMenu img{filter:invert(1);height:100%;object-fit:contain;width:100%}.navMenu{display:none}@media screen and (max-width:720px){.desktopMenu,.desktopMenuBtn{display:none}.mobMenu{display:block}.navMenu{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 16px 40px #00000073;display:flex;flex-direction:column;gap:.25rem;min-width:14rem;opacity:0;padding:.5rem;position:absolute;right:1.5rem;top:calc(var(--nav-height) - .5rem);transform:scale(.95);transform-origin:top right;transition:opacity .18s var(--ease-out),transform .18s var(--ease-out),visibility 0s .18s;visibility:hidden}.navMenu.open{opacity:1;transform:scale(1);transition:opacity .18s var(--ease-out),transform .18s var(--ease-out);visibility:visible}}.listItem{border-radius:6px;cursor:pointer;font-weight:500;padding:.7rem 1rem;transition:background-color .15s ease}.listItem.active,.listItem:active{background:var(--surface-hover)}.rows{list-style:none}.row{grid-gap:.5rem;display:grid;gap:.5rem;padding:1.75rem 0}.row+.row{border-top:1px solid var(--border)}.row:first-child{padding-top:0}.row h3{font-size:1.2rem;font-weight:500;letter-spacing:-.015em}.row p:first-child{color:var(--muted);max-width:40rem}.row .comment{margin-top:.75rem}@media (min-width:720px){.row{gap:2rem;grid-template-columns:16rem 1fr}}.timeline{max-width:64rem;position:relative}.timelineRail{background:var(--border);bottom:0;left:7px;position:absolute;top:0;width:2px}.timelineFill{background:var(--accent);inset:0;position:absolute;transform:scaleY(0);transform-origin:top}.timelineList{display:flex;flex-direction:column;gap:2.5rem;list-style:none}.timelineItem{padding-left:2.5rem;position:relative}.timelineDot{background:var(--bg);border:2px solid var(--border-strong);border-radius:50%;height:16px;left:0;position:absolute;top:2rem;transition:background-color .3s ease,border-color .3s ease;width:16px}.passed .timelineDot{background:var(--accent);border-color:var(--accent)}.current .timelineDot{box-shadow:0 0 0 4px var(--bg),0 0 0 5px var(--accent)}.timelineDate{display:none}@media (min-width:900px){.timelineRail{left:50%;transform:translateX(-50%)}.timelineItem{padding:0 3rem 0 0;width:50%}.timelineItem:nth-child(2n){margin-left:50%;padding:0 0 0 3rem}.timelineDot{left:auto;right:-8px}.timelineItem:nth-child(2n) .timelineDot{left:-8px;right:auto}.timelineDate{color:var(--muted);display:block;font-family:var(--mono);font-size:.875rem;left:calc(100% + 3rem);position:absolute;top:1.85rem;transition:color .3s ease;white-space:nowrap}.timelineItem:nth-child(2n) .timelineDate{left:auto;right:calc(100% + 3rem)}.passed .timelineDate{color:var(--text)}.mobileOnly{display:none}}.experience{display:flex;flex-direction:column;gap:1.25rem;padding:1.75rem}.experienceHead{align-items:center;display:flex;gap:1rem;justify-content:space-between}.clientImg{filter:brightness(0) invert(1);height:2.75rem;max-width:9rem;object-fit:contain;object-position:left;opacity:.9;width:auto}.nowLabel{color:var(--accent);font-family:var(--mono);font-size:.8rem}.experienceText{display:flex;flex-direction:column;gap:.75rem}.experienceText>h3{font-size:1.3rem;font-weight:600;letter-spacing:-.02em;line-height:1.2}.experienceRole{color:var(--text);font-weight:500;margin-top:-.5rem}.experienceText>p:not([class]){color:var(--muted);font-size:.95rem}.experienceText>ul{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin-top:.25rem}.experienceText li{border:1px solid var(--border);border-radius:4px;color:var(--muted);font-family:var(--mono);font-size:.75rem;padding:.2rem .5rem}.contactForm{grid-gap:1rem;display:grid;gap:1rem}.contactForm label{display:flex;flex-direction:column;gap:.4rem}.contactForm label>span{color:var(--muted);font-family:var(--mono);font-size:.8rem}.contactForm input,.contactForm textarea{background:var(--surface);border:1px solid var(--border-input);border-radius:8px;font-size:1rem;padding:.8rem 1rem;transition:border-color .15s ease;width:100%}.contactForm textarea{resize:vertical}.contactForm ::placeholder{color:var(--muted)}.contactForm input:focus-visible,.contactForm textarea:focus-visible{border-color:var(--accent);outline-offset:0}.formFoot{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;margin-top:.5rem}.formStatus{color:var(--muted);font-size:.95rem}.formStatus.sent{color:var(--text)}.formStatus.error{color:#ff8f80}@media (min-width:720px){.contactForm{grid-template-columns:1fr 1fr}.fullWidth{grid-column:1/-1}}@media (min-width:900px){#contact{grid-gap:4rem;display:grid;gap:4rem;grid-template-columns:18rem 1fr}}.projectList{display:flex;flex-direction:column;gap:1.25rem;list-style:none}.projectCard{display:grid;overflow:hidden}.projectImage{aspect-ratio:16/10;border-bottom:1px solid var(--border);display:block;object-fit:cover;object-position:top center;width:100%}.projectContent{align-items:flex-start;display:flex;flex-direction:column;gap:.75rem;padding:1.5rem}.projectTitle{font-size:1.3rem;font-weight:600;letter-spacing:-.02em}.projectTitle+.comment{margin-top:-.5rem}.projectDesc{color:var(--muted);max-width:38rem}.projectButtons{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:auto;padding-top:.5rem}@media (min-width:720px){.projectCard{align-items:center;grid-template-columns:22rem 1fr}.projectImage{border-bottom:0;border-right:1px solid var(--border)}.projectContent{padding:1.75rem 2rem}}.App{position:relative}.dither{height:100%;image-rendering:pixelated;inset:0;pointer-events:none;position:absolute;width:100%;z-index:-1}.blog{max-width:48rem;min-height:calc(100svh - var(--nav-height))}.backLink,.blogState{color:var(--muted)}.backLink{align-items:center;display:inline-flex;font-family:var(--mono);font-size:.875rem;margin-bottom:2rem;min-height:2.75rem;transition:color .15s ease}@media (hover:hover) and (pointer:fine){.backLink:hover{color:var(--text)}}.postList{list-style:none}.postList li+li{border-top:1px solid var(--border)}.postLink{grid-gap:.4rem;display:grid;gap:.4rem;padding:1.5rem 0}.postList li:first-child .postLink{padding-top:0}.postLink h2{font-size:1.35rem;font-weight:500;letter-spacing:-.02em;transition:color .15s ease}.postLink p{color:var(--muted)}@media (hover:hover) and (pointer:fine){.postLink:hover h2{color:var(--accent)}}.postHead{margin-bottom:2.5rem}.postTitle{font-size:clamp(2rem,6vw,3.25rem);font-weight:500;letter-spacing:-.035em;line-height:1.08;margin-top:.75rem}.prose{color:#d4d4d8;font-size:1.075rem;line-height:1.75}.prose>*+*{margin-top:1.25em}.prose h2,.prose h3{color:var(--text);font-weight:500;letter-spacing:-.02em;line-height:1.25;margin-top:2em}.prose h2{font-size:1.6rem}.prose h3{font-size:1.25rem}.prose a{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}.prose strong{color:var(--text);font-weight:600}.prose ol,.prose ul{padding-left:1.4em}.prose li+li{margin-top:.4em}.prose blockquote{border-left:2px solid var(--border-strong);color:var(--muted);padding-left:1.25em}.prose code{border-radius:4px;font-family:var(--mono);font-size:.9em;padding:.1em .35em}.prose code,.prose pre{background:var(--surface)}.prose pre{border:1px solid var(--border);border-radius:8px;line-height:1.55;overflow-x:auto;padding:1.1rem 1.25rem}.prose pre code{background:none;font-size:.875rem;padding:0}.prose img{border-radius:8px}.prose hr{border:0;border-top:1px solid var(--border)}
/*# sourceMappingURL=main.2e3d6bc8.css.map*/