:root{--paper:#e5e9e3;--paper-deep:#d4dbd2;--field:#c8d1c6;--ink:#161a17;--mute:#5a635c;--line:#a8b2a6;--accent:#b42318;--accent-soft:color-mix(in srgb, var(--accent) 12%, transparent);--wash:color-mix(in srgb, var(--field) 55%, var(--paper));--display:"Bricolage Grotesque", sans-serif;--brand:"Fraunces", "Georgia", serif;--sans:"Figtree", sans-serif;--mono:"IBM Plex Mono", monospace;--space:clamp(1.1rem, 4.2vw, 2.25rem);--measure:70rem;--radius:2px;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--ease-out:cubic-bezier(.22, 1, .36, 1);--rise:.7s var(--ease-out);color:var(--ink);background:var(--paper);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:18px;line-height:1.55}@media (width<=720px){:root{font-size:16.5px}}@media (width<=420px){:root{font-size:16px}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip}body{min-width:320px;padding-left:var(--safe-left);padding-right:var(--safe-right);background:radial-gradient(90% 60% at 100% 0%, color-mix(in srgb, var(--field) 45%, transparent), transparent 55%), radial-gradient(70% 50% at 0% 30%, #f2f4f0b3, transparent 50%), var(--paper);margin:0;overflow-x:clip}#root{min-height:100dvh}img{max-width:100%;height:auto;display:block}a{color:inherit}button{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}[data-reveal]{opacity:1;transform:none}}.page{flex-direction:column;min-width:0;min-height:100dvh;display:flex}.footer{width:min(100%, var(--measure));padding:1.6rem var(--space) max(2.25rem, calc(1.5rem + var(--safe-bottom)));border-top:1px solid var(--line);color:var(--mute);gap:1.15rem;margin-inline:auto;font-size:.9rem;display:grid}.footer__row{flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;display:flex}.footer p{margin:0}.topbar{z-index:40;width:100%;padding-top:var(--safe-top);background:color-mix(in srgb, var(--paper) 90%, transparent);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid color-mix(in srgb, var(--line) 65%, transparent);position:sticky;top:0}.topbar__inner{padding:.75rem var(--space);max-width:var(--measure);justify-content:space-between;align-items:center;gap:.75rem 1rem;width:100%;min-width:0;margin-inline:auto;display:flex}.topbar__mark{color:var(--ink);border-radius:var(--radius);flex-shrink:0;align-items:center;gap:.65rem;text-decoration:none;display:inline-flex}.topbar__avatar{border-radius:var(--radius);object-fit:cover;border:1px solid color-mix(in srgb, var(--ink) 16%, transparent);width:1.85rem;height:1.85rem}.topbar__name{font-family:var(--display);letter-spacing:-.02em;font-size:.95rem;font-weight:700}.topbar__nav{overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;align-items:center;gap:1.15rem;min-width:0;max-width:100%;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 .4rem calc(100% - .75rem),#0000);mask-image:linear-gradient(90deg,#0000 0,#000 .4rem calc(100% - .75rem),#0000)}.topbar__nav::-webkit-scrollbar{display:none}.topbar__nav a{color:var(--ink);opacity:.68;white-space:nowrap;flex:none;padding:.45rem 0;font-size:.92rem;font-weight:500;text-decoration:none;transition:opacity .16s}.topbar__nav a:hover,.topbar__nav a:focus-visible{opacity:1}@media (width<=720px){.topbar__inner{padding-block:.65rem}.topbar__nav{gap:.15rem;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 .35rem calc(100% - 1rem),#0000);mask-image:linear-gradient(90deg,#0000 0,#000 .35rem calc(100% - 1rem),#0000)}.topbar__nav a{padding:.55rem .5rem;font-size:.8rem}}@media (width<=560px){.topbar__name{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.topbar__nav a{padding-inline:.4rem;font-size:.78rem}}.route-stage{flex-direction:column;flex:auto;width:100%;min-width:0;display:flex;overflow-x:clip}.route-stage__panel{flex-direction:column;flex:auto;width:100%;min-width:0;display:flex}.route-stage[data-direction=forward] .route-stage__panel{animation:route-slide-forward .42s var(--ease-out) both}.route-stage[data-direction=back] .route-stage__panel{animation:route-slide-back .42s var(--ease-out) both}@keyframes route-slide-forward{0%{opacity:.72;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes route-slide-back{0%{opacity:.72;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}.route-stage[data-direction=forward] .hero__brand,.route-stage[data-direction=forward] .hero__portrait,.route-stage[data-direction=forward] .hero__title,.route-stage[data-direction=forward] .hero__actions,.route-stage[data-direction=back] .hero__brand,.route-stage[data-direction=back] .hero__portrait,.route-stage[data-direction=back] .hero__title,.route-stage[data-direction=back] .hero__actions,.route-stage__panel--no-enter .hero__brand,.route-stage__panel--no-enter .hero__portrait,.route-stage__panel--no-enter .hero__title,.route-stage__panel--no-enter .hero__actions{opacity:1;animation:none;transform:none}.route-stage[data-direction=forward] [data-reveal],.route-stage[data-direction=back] [data-reveal],.route-stage__panel--no-enter [data-reveal]{opacity:1;transition:none;transform:none}@media (prefers-reduced-motion:reduce){.route-stage[data-direction=forward] .route-stage__panel,.route-stage[data-direction=back] .route-stage__panel{animation:none}}.music__wrap{flex-direction:column;gap:.7rem;display:flex}.music__toolbar{justify-content:space-between;align-items:center;gap:1rem;min-height:1.75rem;display:flex}.music__meter{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin:0;font-size:.72rem}.music__mute{border:none;border-bottom:1px solid color-mix(in srgb, var(--ink) 18%, transparent);color:var(--ink);font-family:var(--display);letter-spacing:-.02em;cursor:pointer;background:0 0;align-items:center;gap:.4rem;margin:0;padding:.2rem 0;font-size:.95rem;font-weight:700;line-height:1.2;transition:color .16s,border-color .16s;display:inline-flex}.music__mute:hover,.music__mute:focus-visible{color:var(--accent);border-color:var(--accent)}.music__mute[aria-pressed=true]{color:var(--ink);border-color:color-mix(in srgb, var(--accent) 55%, var(--ink))}.music__mute-icon{opacity:.85;flex-shrink:0}.music__stage{padding:.35rem 0 .25rem;position:relative;overflow:hidden}.music__staff{width:100%;height:auto;max-height:min(28vh,11.5rem);color:var(--ink);display:block;overflow:visible}.music__line{stroke:color-mix(in srgb, var(--ink) 48%, transparent);stroke-width:1.35px;stroke-linecap:square;stroke-dasharray:var(--music-staff-span,720);stroke-dashoffset:var(--music-staff-span,720);opacity:0}.music__stage.is-revealed .music__line{animation:1.15s forwards music-staff-draw}.music__stage.is-revealed .music__line--2{animation-delay:70ms}.music__stage.is-revealed .music__line--3{animation-delay:.14s}.music__stage.is-revealed .music__line--4{animation-delay:.21s}.music__stage.is-revealed .music__line--5{animation-delay:.28s}.music__clef{fill:color-mix(in srgb, var(--ink) 78%, transparent);opacity:0}.music__time{fill:color-mix(in srgb, var(--ink) 92%, transparent);opacity:0}.music__stage.is-revealed .music__clef,.music__stage.is-revealed .music__time{animation:.5s .32s forwards music-fade-in}.music__barlines{opacity:0}.music__stage.is-revealed .music__barlines{animation:.5s .4s forwards music-fade-in}.music__barline{stroke:color-mix(in srgb, var(--ink) 42%, transparent);stroke-width:1.35px;stroke-linecap:square}.music__barline-thick,.music__repeat-dot{fill:color-mix(in srgb, var(--ink) 52%, transparent)}.music__note{color:var(--ink);opacity:0}.music__stage.is-revealed .music__note{animation:.58s forwards music-note-in}.music__playhead{opacity:0;color:var(--accent);will-change:transform;pointer-events:none}.music__playhead line{stroke:currentColor;stroke-width:2px;stroke-linecap:round}.music__playhead polygon{fill:currentColor}.music__stage.is-revealed .music__playhead--live{opacity:.95;animation:.4s 1.2s forwards music-fade-in}@keyframes music-staff-draw{0%{stroke-dashoffset:var(--music-staff-span,720);opacity:0}to{stroke-dashoffset:0;opacity:1}}@keyframes music-note-in{0%{opacity:0;translate:0 4px}to{opacity:.9;translate:0}}@keyframes music-fade-in{0%{opacity:0}to{opacity:1}}@media (width<=720px){.music__wrap{gap:.55rem}.music__mute{font-size:.9rem}.music__staff{max-height:min(28vw,7.5rem)}.music__stage{padding-bottom:0}}@media (prefers-reduced-motion:reduce){.music__line{stroke-dasharray:none;stroke-dashoffset:0;opacity:1;animation:none!important}.music__clef,.music__time,.music__barlines{opacity:1;animation:none!important}.music__note{opacity:.9;translate:none;animation:none!important}.music__playhead{opacity:.55;transform:translate(280px);animation:none!important}}.section{width:min(100%, var(--measure));padding:clamp(3.25rem, 7vw, 5rem) var(--space);margin-inline:auto}.section__intro{max-width:40rem;margin-bottom:1.65rem}.section__intro:not(:has(.section__lede)){margin-bottom:1.35rem}.section h2{font-family:var(--display);letter-spacing:-.03em;overflow-wrap:anywhere;margin:0 0 .8rem;font-size:clamp(1.65rem,3.6vw,2.35rem);font-weight:700;line-height:1.12}.section__lede{color:var(--mute);max-width:44ch;margin:0;font-size:1.02rem}[data-reveal]{opacity:0;transition:opacity .56s var(--ease-out), transform .56s var(--ease-out);transition-delay:var(--reveal-delay,0s);transform:translateY(14px)}[data-reveal].is-revealed{opacity:1;transform:translateY(0)}@media (width<=720px){.section{padding-block:clamp(2.5rem,8vw,3.5rem)}.section__intro{margin-bottom:1.35rem}.section h2{font-size:clamp(1.45rem,7vw,1.9rem)}.section__lede{max-width:none;font-size:.98rem}}@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none}}.about{width:100%;max-width:none;padding-inline:0;overflow:hidden}.about__inner{width:min(100%, var(--measure));padding-inline:var(--space);margin-inline:auto}.about__block{max-width:40rem}.about__music{border-top:1px solid color-mix(in srgb, var(--line) 70%, transparent);margin-top:2.5rem;padding-top:2rem}.about__subhead{font-family:var(--display);letter-spacing:-.02em;margin:0 0 .65rem;font-size:1.15rem;font-weight:700;line-height:1.2}.about__music-lede{color:var(--mute);max-width:44ch;margin:0;font-size:1.02rem}@media (width<=720px){.about__music{margin-top:2rem;padding-top:1.5rem}.about__music-lede{max-width:none;font-size:.98rem}}.btn{border-radius:var(--radius);letter-spacing:-.01em;justify-content:center;align-items:center;min-height:2.8rem;padding:.55rem 1.2rem;font-size:.96rem;font-weight:600;text-decoration:none;transition:background-color .16s,color .16s,border-color .16s,transform .16s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn--primary{background:var(--ink);color:var(--paper);border:1px solid var(--ink)}.btn--primary:hover{background:var(--accent);border-color:var(--accent);color:#fff}.btn--ghost{color:var(--ink);border:1px solid color-mix(in srgb, var(--ink) 32%, transparent);background:0 0}.btn--ghost:hover{border-color:var(--ink);background:#fff6}@media (width<=720px){.btn{min-height:2.65rem}.btn:hover{transform:none}}@media (prefers-reduced-motion:reduce){.btn:hover{transform:none}}.contact__actions{flex-wrap:wrap;gap:.75rem;margin-top:.35rem;display:flex}@media (width<=420px){.contact__actions{flex-direction:column;align-items:stretch}.contact__actions .btn{width:100%}}.experience-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.experience-item{border-bottom:1px solid var(--line);grid-template-columns:minmax(9rem,.32fr) 1fr;align-items:baseline;gap:.75rem 1.5rem;padding:1.55rem .1rem;display:grid}.experience-item__meta{align-content:start;gap:.25rem;display:grid}.experience-item__period{font-family:var(--mono);letter-spacing:.04em;color:var(--accent);margin:0;font-size:.78rem}.experience-item__place{color:var(--mute);margin:0;font-size:.88rem}.experience-item__body{gap:.2rem;min-width:0;display:grid}.experience-item__role{font-family:var(--display);letter-spacing:-.02em;margin:0;font-size:1.15rem;font-weight:700}.experience-item__org{color:color-mix(in srgb, var(--ink) 78%, transparent);margin:0;font-weight:600}@media (width<=720px){.experience-item{grid-template-columns:1fr;gap:.3rem;padding:1.25rem 0}.experience-item__meta{flex-wrap:wrap;align-items:baseline;gap:.35rem .85rem;display:flex}.experience-item__role{font-size:1.05rem}}.hero{isolation:isolate;align-items:end;min-height:100svh;padding-bottom:clamp(2.25rem,7vh,4.5rem);display:grid;position:relative;overflow:hidden}.hero__plane{z-index:-1;background:linear-gradient(168deg, #eef1ec 0%, var(--paper) 36%, var(--paper-deep) 68%, color-mix(in srgb, var(--field) 88%, var(--paper-deep)) 100%);position:absolute;inset:0}.hero__glow{pointer-events:none;filter:blur(2px);border-radius:50%;position:absolute}.hero__glow--day{background:radial-gradient(closest-side, #f7f8f5c7, color-mix(in srgb, var(--paper) 35%, transparent) 55%, transparent 72%);height:62%;animation:hero-day-breathe 14s var(--ease-out) infinite alternate;inset:-18% -8% auto -22%}.hero__glow--bench{background:radial-gradient(closest-side, color-mix(in srgb, var(--field) 55%, transparent), color-mix(in srgb, var(--paper-deep) 40%, transparent) 48%, transparent 70%);height:58%;animation:22s linear infinite alternate hero-bench-drift;inset:auto -15% -28% 28%}.hero__form{background:linear-gradient(128deg, transparent 18%, color-mix(in srgb, var(--ink) 3.5%, transparent) 18%, color-mix(in srgb, var(--ink) 3.5%, transparent) 18.35%, transparent 18.35%), linear-gradient(128deg, transparent 42%, color-mix(in srgb, var(--field) 42%, transparent) 42%, color-mix(in srgb, var(--paper-deep) 55%, transparent) 78%, transparent 92%);clip-path:polygon(22% 0%,100% 8%,88% 100%,0% 86%);opacity:.9;pointer-events:none;position:absolute;inset:8% -12% -18% 38%;-webkit-mask-image:linear-gradient(115deg,#0000 8%,#000 38% 72%,#0000 96%);mask-image:linear-gradient(115deg,#0000 8%,#000 38% 72%,#0000 96%)}.hero__grid{opacity:.55;background-image:linear-gradient(color-mix(in srgb, var(--ink) 7%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--ink) 7%, transparent) 1px, transparent 1px), linear-gradient(color-mix(in srgb, var(--ink) 3.5%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--ink) 3.5%, transparent) 1px, transparent 1px);pointer-events:none;background-size:72px 72px,72px 72px,18px 18px,18px 18px;animation:48s linear infinite hero-grid-drift;position:absolute;inset:0;-webkit-mask-image:radial-gradient(90% 75% at 68% 32%,#000000b3 0%,#00000059 42%,#0000 78%);mask-image:radial-gradient(90% 75% at 68% 32%,#000000b3 0%,#00000059 42%,#0000 78%)}.hero__grain{opacity:.4;pointer-events:none;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#00000080,#0000 85%);mask-image:linear-gradient(#00000080,#0000 85%)}.hero__marks{pointer-events:none;width:100%;height:100%;color:color-mix(in srgb, var(--ink) 28%, transparent);position:absolute;inset:0;overflow:visible}.hero__marks path{fill:none;stroke:currentColor;stroke-width:.35px;vector-effect:non-scaling-stroke}.hero__rule{stroke:color-mix(in srgb, var(--accent) 42%, var(--ink));stroke-width:.28px;opacity:.55}.hero__content{width:min(100%, var(--measure));padding:4.5rem var(--space) 3.25rem;grid-template-columns:minmax(0,1.15fr) minmax(10rem,.72fr);align-items:end;gap:clamp(1.5rem,4vw,3.25rem);margin-inline:auto;display:grid}.hero__copy{min-width:0}.hero__brand{font-family:var(--brand);font-optical-sizing:auto;letter-spacing:-.03em;max-width:11ch;animation:hero-rise var(--rise) both;margin:0 0 1.05rem;font-size:clamp(3rem,10vw,6.25rem);font-weight:700;line-height:.92}.hero__portrait{aspect-ratio:4/5;width:min(100%,22rem);animation:hero-rise var(--rise) both;justify-self:end;animation-delay:.12s;position:relative}.hero__portrait-tilt{transform-origin:50%;width:100%;height:100%;transform-style:preserve-3d;will-change:transform}.hero__portrait-slot,.hero__portrait-img{border-radius:var(--radius);width:100%;height:100%;display:block}.hero__portrait-img{object-fit:cover}.hero__portrait--empty .hero__portrait-slot{background:linear-gradient(165deg, color-mix(in srgb, var(--paper) 70%, #f4f6f2) 0%, var(--field) 55%, color-mix(in srgb, var(--paper-deep) 85%, var(--field)) 100%);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 12%, transparent), inset 0 0 0 6px color-mix(in srgb, var(--paper) 55%, transparent);outline:1px dashed color-mix(in srgb, var(--ink) 18%, transparent);outline-offset:-10px}.hero__title{font-family:var(--display);letter-spacing:-.025em;max-width:22ch;animation:hero-rise var(--rise) both;margin:0 0 1.85rem;font-size:clamp(1.3rem,3vw,1.85rem);font-weight:700;line-height:1.25;animation-delay:90ms}.hero__actions{animation:hero-rise var(--rise) both;flex-wrap:wrap;gap:.75rem;animation-delay:.18s;display:flex}@keyframes hero-rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes hero-day-breathe{0%{opacity:.92;transform:translate(0,0)scale(1)}to{opacity:1;transform:translate(2.5%,1.5%)scale(1.04)}}@keyframes hero-bench-drift{0%{transform:translate(0,0)}to{transform:translate(-3%,-2%)}}@keyframes hero-grid-drift{0%{background-position:0 0,0 0,0 0,0 0}to{background-position:72px 72px,72px 72px,18px 18px,18px 18px}}@media (width<=720px){.hero{min-height:100dvh;padding-bottom:max(1.5rem, var(--safe-bottom));align-items:center}.hero__content{padding-top:max(4.5rem, calc(3.25rem + var(--safe-top)));grid-template-columns:1fr;align-items:start;gap:1.5rem;padding-bottom:2rem}.hero__brand{max-width:none;margin-bottom:.85rem;font-size:clamp(2.45rem,13vw,3.6rem);line-height:.95}.hero__title{max-width:28ch;margin-bottom:1.35rem;font-size:clamp(1.1rem,4.2vw,1.35rem)}.hero__actions{gap:.65rem}.hero__portrait{justify-self:start;width:min(52%,11.5rem);max-width:100%}.hero__form{opacity:.65;inset:18% -20% -10% 18%}.hero__grid{opacity:.32;background-size:56px 56px,56px 56px,14px 14px,14px 14px}.hero__marks{color:color-mix(in srgb, var(--ink) 18%, transparent)}.hero__mark--br{display:none}}@media (width<=420px){.hero__content{gap:1.25rem}.hero__portrait{width:min(48%,9.75rem)}.hero__actions{width:100%}.hero__actions .btn{flex:auto;justify-content:center}}@media (prefers-reduced-motion:reduce){.hero__glow--day,.hero__glow--bench,.hero__grid{animation:none}.hero__brand,.hero__portrait,.hero__title,.hero__actions{opacity:1;animation:none;transform:none}.hero__portrait-tilt{will-change:auto;transform:none!important}}@media (pointer:coarse){.hero__portrait-tilt{will-change:auto;transform:none!important}}.link-icon{opacity:.88;flex-shrink:0;width:1.05rem;height:1.05rem;display:block}.outbound{grid-template-columns:repeat(2,minmax(0,16rem));gap:2rem 3rem;display:grid}.outbound__group{gap:.75rem;display:grid}.outbound__label{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin:0;font-size:.72rem}.outbound__list{gap:.55rem;margin:0;padding:0;list-style:none;display:grid}.outbound__list a{font-family:var(--display);letter-spacing:-.02em;border-bottom:1px solid color-mix(in srgb, var(--ink) 18%, transparent);align-items:center;gap:.5rem;width:fit-content;font-size:1.15rem;font-weight:700;text-decoration:none;transition:color .16s,border-color .16s;display:inline-flex}.outbound__list a .link-icon{width:1.1rem;height:1.1rem}.outbound__list a:hover,.outbound__list a:focus-visible{color:var(--accent);border-color:var(--accent)}@media (width<=720px){.outbound{grid-template-columns:1fr;gap:1.75rem}}.project-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.project{border-bottom:1px solid var(--line);color:inherit;grid-template-columns:minmax(9rem,.38fr) 1fr auto;grid-template-areas:"head blurb arrow";align-items:baseline;gap:.5rem 1.5rem;padding:1.65rem .1rem;text-decoration:none;transition:padding-left .18s,background-color .18s;display:grid}.project--case{cursor:default}a.project:hover,a.project:focus-visible{background:var(--accent-soft);padding-left:.5rem}.project__head{flex-wrap:wrap;grid-area:head;align-items:baseline;gap:.45rem .65rem;min-width:0;display:flex}.project__name{font-family:var(--display);letter-spacing:-.02em;overflow-wrap:anywhere;font-size:1.18rem;font-weight:700}.project__badge{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);border-radius:1px;padding:.12rem .4rem;font-size:.68rem}.project__blurb{color:var(--mute);grid-area:blurb;min-width:0;font-size:.98rem}.project__arrow{font-family:var(--mono);color:var(--accent);grid-area:arrow;transition:transform .18s}a.project:hover .project__arrow,a.project:focus-visible .project__arrow{transform:translate(4px)}.projects__also{margin-top:2.75rem}.projects__also-label{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin:0 0 .85rem;font-size:.75rem}.tool-list{flex-wrap:wrap;gap:.55rem 1.35rem;margin:0;padding:0;list-style:none;display:flex}.tool{font-family:var(--mono);color:var(--ink);border-bottom:1px solid color-mix(in srgb, var(--ink) 22%, transparent);font-size:.88rem;text-decoration:none;transition:color .16s,border-color .16s}.tool:hover,.tool:focus-visible{color:var(--accent);border-color:var(--accent)}@media (width<=720px){.project{grid-template-columns:1fr auto;grid-template-areas:"head arrow""blurb blurb";gap:.35rem .75rem;padding:1.35rem 0}a.project:hover,a.project:focus-visible{padding-left:.25rem}.project__name{font-size:1.08rem}.project__blurb{font-size:.92rem}.projects__also{margin-top:2.15rem}.tool-list{gap:.45rem 1rem}}.page-band{border-top:1px solid color-mix(in srgb, var(--line) 55%, transparent)}.page-band .section{padding-block:clamp(1.75rem,4vw,2.75rem)}.page-band .section:first-child{padding-top:clamp(3.25rem,7vw,5rem)}.page-band .section:last-child{padding-bottom:clamp(3.25rem,7vw,5rem)}.page-band--person{background:linear-gradient(180deg, transparent 0%, color-mix(in srgb, var(--wash) 75%, transparent) 28%, var(--wash) 100%)}@media (width<=720px){.page-band .section{padding-block:clamp(1.35rem,4.5vw,2rem)}.page-band .section:first-child{padding-top:clamp(2.5rem,8vw,3.5rem)}.page-band .section:last-child{padding-bottom:clamp(2.5rem,8vw,3.5rem)}}.not-found{flex:1;align-items:center;padding:clamp(3rem,8vw,5rem) 0 clamp(4rem,10vw,6rem);display:flex}.not-found__inner{width:min(100%, var(--measure));padding-inline:var(--space);margin-inline:auto}.not-found__header{max-width:36rem}.not-found__header h1{font-family:var(--display);letter-spacing:-.035em;margin:0 0 .85rem;font-size:clamp(2.2rem,5vw,3.2rem);font-weight:800;line-height:1.05}.not-found__lede{color:var(--mute);max-width:42ch;margin:0 0 1.75rem;font-size:1.08rem}.not-found__actions{flex-wrap:wrap;gap:.75rem 1rem;display:flex}.tool-icon{flex-shrink:0;width:1.05rem;height:1.05rem;display:block}.tool-chips{flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.tool-chip{border:1px solid color-mix(in srgb, var(--ink) 16%, transparent);background:color-mix(in srgb, var(--paper) 70%, white);font-family:var(--mono);letter-spacing:.04em;color:color-mix(in srgb, var(--ink) 82%, transparent);border-radius:1px;align-items:center;gap:.4rem;max-width:100%;padding:.28rem .55rem;font-size:.72rem;display:inline-flex}@media (width<=720px){.tool-chips{gap:.35rem}.tool-chip{padding:.24rem .45rem;font-size:.68rem}}.tool-chip .tool-icon{opacity:.9}.project-page{padding:clamp(2.5rem,6vw,3.5rem) 0 clamp(3.5rem,8vw,5rem)}.project-page__inner{width:min(100%, var(--measure));padding-inline:var(--space);margin-inline:auto}.project-page__back{margin:0 0 1.75rem}.project-page__back a{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--mute);border-bottom:1px solid #0000;font-size:.78rem;text-decoration:none;transition:color .16s,border-color .16s}.project-page__back a:hover,.project-page__back a:focus-visible{color:var(--accent);border-color:var(--accent)}.project-page__links{border-bottom:1px solid var(--line);margin:0 0 2.25rem;padding-bottom:1.75rem}.project-page__links-title{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin:0 0 .85rem;font-size:.72rem;font-weight:500}.project-page__link-list{flex-wrap:wrap;gap:.65rem 1.35rem;margin:0;padding:0;list-style:none;display:flex}.project-page__link-list a{font-family:var(--display);letter-spacing:-.02em;border-bottom:1px solid color-mix(in srgb, var(--ink) 18%, transparent);align-items:center;gap:.45rem;font-size:1.1rem;font-weight:700;text-decoration:none;transition:color .16s,border-color .16s;display:inline-flex}.project-page__link-list a .link-icon{width:1.05rem;height:1.05rem}.project-page__link-list a:hover,.project-page__link-list a:focus-visible{color:var(--accent);border-color:var(--accent)}.project-page__header{max-width:40rem;margin-bottom:2.75rem}.project-page__header h1{font-family:var(--display);letter-spacing:-.035em;overflow-wrap:anywhere;margin:0 0 .75rem;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:800;line-height:1.05}.project-page__lede{color:var(--mute);max-width:42ch;margin:0 0 1.25rem;font-size:1.08rem}.project-page__tools{margin-top:.25rem}.project-page__aspects h2{font-family:var(--display);letter-spacing:-.02em;margin:0 0 1.25rem;font-size:clamp(1.35rem,3vw,1.75rem);font-weight:700}.project-page__aspects ul{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.project-page__aspects li{border-bottom:1px solid var(--line);color:color-mix(in srgb, var(--ink) 82%, transparent);overflow-wrap:anywhere;max-width:44rem;padding:.7rem 0 .7rem 1.1rem;font-size:.98rem;line-height:1.4;position:relative}.project-page__aspects li:before{content:"";background:var(--accent);border-radius:1px;width:.45rem;height:.45rem;position:absolute;top:1.05rem;left:0}@media (width<=720px){.project-page{padding-top:clamp(1.75rem,5vw,2.5rem)}.project-page__header{margin-bottom:2rem}.project-page__header h1{font-size:clamp(1.7rem,8vw,2.4rem)}.project-page__lede{max-width:none;font-size:1rem}.project-page__link-list{gap:.55rem 1rem}.project-page__aspects li{padding-block:.65rem;font-size:.94rem}}
