body,html{padding:0;margin:0;background:var(--paper);color:var(--ink);text-rendering:optimizeLegibility;font-family:Roboto;line-height:var(--leading-normal)}a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}:focus-visible{outline:1px solid var(--accent);outline-offset:2px}*{box-sizing:border-box}:root{--col-w:1000px;--gutter:40px;--section-y:64px;--bar-h:56px;--footer-air:18px;--screen-h:100vh;--paper:#f2f0ec;--paper-raised:#faf9f6;--paper-sunken:#e6e3dd;--ink:#1f2a33;--ink-2:#5c6670;--ink-muted:rgba(31,42,51,0.45);--accent:#5b52d9;--hairline:rgba(31,42,51,0.18);--groove-shadow:#d7d3cb;--groove-light:#fff;--cut:1px;--cut-shadow:rgba(31,42,51,0.3);--cut-light:#fff;--text-xs:11px;--text-sm:14px;--text-md:16px;--text-lg:clamp(16px,14.9px + 0.29vw,18px);--text-xl:clamp(22px,20.9px + 0.29vw,24px);--text-2xl:clamp(28px,25.7px + 0.58vw,32px);--text-display:clamp(44px,32.7px + 2.9vw,64px);--text-display-2:clamp(36px,29.2px + 1.74vw,48px);--leading-tight:1.2;--leading-normal:1.5}@supports (height:100svh){:root{--screen-h:100svh}}.gridlines{position:absolute;inset:0;z-index:-1;pointer-events:none}.gridlines:before{content:"";display:block;height:100%;max-width:var(--col-w);margin-inline:auto;background:linear-gradient(to right,var(--groove-shadow) 1px,var(--groove-light) 1px) 0/2px 100% no-repeat,linear-gradient(to right,var(--groove-shadow) 1px,var(--groove-light) 1px) 100%/2px 100% no-repeat}.section{position:relative;display:flex;flex-direction:column;justify-content:center;padding-block:var(--section-y)}main>.section{min-height:var(--screen-h)}main>.section:first-child{min-height:calc(var(--screen-h) - var(--bar-h))}main>.section:last-child{min-height:calc(var(--screen-h) - var(--bar-h) - var(--footer-air))}@media (min-width:1080px) and (min-height:770px) and (hover:hover) and (pointer:fine){#experience{height:var(--screen-h)}#projects{height:calc(var(--screen-h) - var(--bar-h) - var(--footer-air))}}@media (hover:none),(max-height:769px),(max-width:1079px),(pointer:coarse){#experience,#projects{padding-bottom:calc(var(--section-y) + 24px)}}@media (max-height:700px){:root{--section-y:56px}}.section:after{content:"";position:absolute;inset:auto 0 -1px;height:2px;max-width:calc(var(--col-w) - 4px);margin-inline:auto;background:linear-gradient(to bottom,var(--groove-shadow) 1px,var(--groove-light) 1px);pointer-events:none}.section-navbar:after,main>.section:last-child:after{max-width:none}.column{width:100%;max-width:var(--col-w);margin-inline:auto;padding-inline:var(--gutter)}main>.section>.column{display:flex;flex-direction:column;justify-content:center;flex-grow:1;min-height:0}@media (min-width:1080px) and (min-height:770px) and (hover:hover) and (pointer:fine){html{-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}}main>.section{scroll-snap-align:start;scroll-snap-stop:always}main>.section:first-child{scroll-margin-top:var(--bar-h)}main>.section:last-child{scroll-margin-bottom:calc(var(--bar-h) + var(--footer-air))}h2{margin:0;font-size:var(--text-2xl);line-height:var(--leading-tight);text-wrap:balance}.eyebrow{margin:0;font-size:var(--text-sm);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2)}.eyebrow-dot{margin:0 .6em}@media only screen and (max-width:1079px){:root{--col-w:calc(100vw - 80px)}}@media only screen and (max-width:669px){:root{--col-w:calc(100vw - 48px);--gutter:24px;--section-y:48px}}@property --vent-open{syntax:"<length>";inherits:true;initial-value:4px}@property --vent-slat{syntax:"<length>";inherits:true;initial-value:0}.gradient-vent{--vent-open:4px;--vent-slat:0px;--vent-inset:0px;--vent-angle:180deg;--vent-align:stretch;--vent-open-hover:var(--vent-open);--vent-slat-hover:var(--vent-slat);--vent-x:var(--vent-inset);--vent-y:var(--vent-inset);--vent-w:calc(100% - 2 * var(--vent-inset));--vent-h:calc(100% - 2 * var(--vent-inset));position:absolute;left:0;right:0;bottom:1px;width:100%;max-width:calc(var(--col-w) - 4px);height:48px;margin-inline:auto;background:var(--paper)}.gradient-panel,.vent-slats{position:absolute;left:var(--vent-x);top:var(--vent-y);width:var(--vent-w);height:var(--vent-h);pointer-events:none}.gradient-panel{opacity:0;transition:opacity .4s ease}.gradient-panel.is-visible{opacity:1}.vent-slats{--pitch:calc(var(--vent-slat) + var(--vent-open) + 2px);--stripe:var(--paper-raised) 0,var(--paper-sunken) var(--vent-slat),var(--groove-shadow) var(--vent-slat),var(--groove-shadow) calc(var(--vent-slat) + 1px),transparent calc(var(--vent-slat) + 1px),transparent calc(var(--vent-slat) + 1px + var(--vent-open)),var(--groove-light) calc(var(--vent-slat) + 1px + var(--vent-open)),var(--groove-light) var(--pitch);--layer:repeating-linear-gradient(var(--vent-angle),var(--stripe));--cross:repeating-linear-gradient(90deg,var(--stripe));background-image:var(--layer);background-position:var(--vent-shift-x,0) var(--vent-shift-y,0);transition:--vent-open .5s ease,--vent-slat .5s ease}.gradient-vent:hover .vent-slats{--vent-open:var(--vent-open-hover);--vent-slat:var(--vent-slat-hover)}#about-panel-vent,#projects-panel-vent{--vent-mesh:1}#about-panel-vent .vent-slats,#projects-panel-vent .vent-slats{background-image:var(--layer),var(--cross)}#experience-panel-vent{--vent-angle:90deg}#about-panel-vent,#projects-panel-vent{--vent-open:6px;height:56px}#about-panel-vent .vent-slats,#projects-panel-vent .vent-slats{--stripe:var(--groove-shadow) 0,var(--groove-shadow) 0.5px,transparent 0.5px,transparent var(--pitch)}.traces{position:absolute;inset:0;z-index:-1;pointer-events:none;transition:opacity .4s ease}.traces.is-resizing{opacity:0;transition-duration:.1s}.traces canvas{position:absolute;inset:0;width:100%;height:100%;background:transparent}.traces-flight{opacity:0;transition:opacity .4s ease}.traces-flight.is-visible{opacity:1}canvas{background:color-mix(in srgb,var(--paper-raised) var(--gradient-tint,0),var(--gradient-color-1))}.gradient-field{position:fixed;inset:0;width:100%;height:100%;visibility:hidden;pointer-events:none}:root{--gradient-color-1:#22394f;--gradient-color-2:#2f6f7e;--gradient-color-3:#5fa9b8;--gradient-color-4:#b7d6dc}.icon-links,.links,.menu-button,.nav-buttons{--gradient-deepen:35%;--cut:0.5px;--cut-shadow:rgba(31,42,51,0.2)}#experience-panel{--gradient-tint:50%}#main-container{position:relative;min-height:100vh;isolation:isolate}.mark{margin:0;font-size:24px;font-weight:700;line-height:1;letter-spacing:-.01em}.section-navbar{position:relative;z-index:10;height:var(--bar-h);padding-block:0}.section-navbar>.column{height:100%}#navbar{display:flex;justify-content:space-between;align-items:center;width:100%;height:100%;-webkit-animation:visible 1s linear;animation:visible 1s linear}#navbar>.logo{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;z-index:10}.menu-button{display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin-left:auto;margin-right:-10px;padding:0;border:none;background-color:transparent;color:var(--ink);cursor:pointer;z-index:10}.menu-mark{width:20px;height:20px}.menu-button:focus:not(:focus-visible){outline:none}.links,.nav-buttons{list-style:none}.nav-buttons{display:flex;grid-gap:8px;gap:8px;margin:0 0 0 auto;padding:0}.nav-buttons>li{display:flex;align-items:center}.nav-button{display:inline-flex;align-items:center;grid-gap:8px;gap:8px;height:32px;padding:0 12px;color:var(--ink);font-size:var(--text-sm);letter-spacing:.25px;text-decoration:none}.nav-button:focus-visible{outline:1px solid var(--ink);outline-offset:2px}.nav-icon{width:16px;height:16px}.icon-links{display:flex;grid-gap:8px;gap:8px;margin:0;padding:0;list-style:none}.icon-link{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--ink)}.icon-mark{width:20px;height:20px}@-webkit-keyframes visible{0%{opacity:0}to{opacity:1}}@keyframes visible{0%{opacity:0}to{opacity:1}}#about .column{align-items:center;text-align:center;padding-bottom:10vh}#intro{display:grid;justify-items:center;grid-gap:20px;gap:20px}.display{margin:0;font-size:var(--text-display);font-weight:700;line-height:1.05;letter-spacing:-.01em;text-wrap:balance}h2.display{font-size:var(--text-display-2)}.tagline{margin:10px 0 0;max-width:30ch;font-size:var(--text-lg);font-weight:400;text-wrap:balance}#contact-button-container{position:relative;margin-top:40px}.contact-fallback{position:absolute;top:100%;left:50%;translate:-50% 0;margin:12px 0 0;font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--ink-2);white-space:nowrap;-webkit-animation:visible .2s ease;animation:visible .2s ease}.contact-copy{margin:0;padding:0;border:0;background:none;font:inherit;color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--hairline);text-decoration-color:var(--hairline);text-underline-offset:3px;cursor:pointer}.contact-copy:hover{-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}.contact-copy:focus-visible{outline:1px solid var(--ink);outline-offset:2px}.button{display:inline-block;line-height:33px;padding:3px 30px;margin:0;color:var(--ink);font-size:var(--text-sm);letter-spacing:.25px;text-align:center;text-decoration:none;cursor:pointer}.button:focus-visible{outline:1px solid var(--ink);outline-offset:2px}.etched{position:relative;display:inline-grid}.etched>*{grid-area:1/1}.etched-field{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .4s ease;pointer-events:none}.etched-field.is-visible{opacity:1}.etched-over{position:relative;margin:0;background:transparent}.etched-text .etched-over{color:transparent}.etched-text .etched-over:after,.etched-text .etched-over:before{content:attr(data-text);position:absolute;inset:0;padding:inherit;pointer-events:none}.etched-text .etched-over:before{color:var(--cut-shadow);transform:translate(calc(-1 * var(--cut)),calc(-1 * var(--cut)))}.etched-text .etched-over:after{color:var(--cut-light);transform:translate(var(--cut),var(--cut))}.etched-plate{transition:transform .15s ease}.etched-plate:focus-within,.etched-plate:hover{transform:translateY(-2px)}.etched-plate .etched-over{color:var(--paper);box-shadow:calc(-1 * var(--cut)) calc(-1 * var(--cut)) 0 var(--cut-shadow),var(--cut) var(--cut) 0 var(--cut-light)}.etched-wash{--wash:0.12}.etched-wash .etched-over{color:var(--ink)}.etched-wash .etched-field{opacity:0;transition:opacity .2s ease}.etched-wash:focus-within .etched-field.is-visible,.etched-wash:hover .etched-field.is-visible{opacity:var(--wash)}.etched-mark{position:relative;display:block}.etched-mark>*{position:absolute;inset:0;width:100%;height:100%;-webkit-mask:var(--mark) center/contain no-repeat;mask:var(--mark) center/contain no-repeat}.etched-mark-shadow{background:var(--cut-shadow);translate:calc(-1 * var(--cut)) calc(-1 * var(--cut))}.etched-mark-light{background:var(--cut-light);translate:var(--cut) var(--cut)}.etched-mark-field{display:block;opacity:0;transition:opacity .4s ease}.etched-mark-field.is-visible{opacity:1}.timeline{--card-w:360px;--deck-pad:20px;--deck-w:calc(var(--card-w) + 2 * var(--deck-pad));--titles-lift:24px;--titles-w:440px;--heading-w:calc(var(--text-display-2) * 9.1667);--plate-h:220px;--card-h:480px;display:grid;grid-template-columns:minmax(0,1fr);grid-gap:24px 40px;gap:24px 40px;flex:1 1;min-height:0}.timeline-titles{display:grid;grid-gap:12px;gap:12px;align-content:start;max-width:var(--titles-w)}.timeline-titles .display{max-width:var(--heading-w)}.timeline-subtitle{color:var(--ink-2);margin:0;font-size:var(--text-md)}.timeline-action{position:relative;margin-top:16px}.timeline-action .contact-fallback{left:0;translate:0 0}@media (min-width:1080px){.timeline{grid-template-columns:minmax(0,1fr) minmax(0,var(--deck-w))}.timeline-titles{align-self:center;margin-left:var(
      --deck-pad
    );translate:0 calc(-1 * var(--titles-lift))}}.timeline-deck{--gradient-tint:50%;display:flex;flex-direction:column;justify-content:center;grid-gap:24px;gap:24px;width:100%;max-width:var(--deck-w);min-height:0}@media (max-width:1079px){.timeline-titles{justify-self:center;justify-items:center;text-align:center}.timeline-action .contact-fallback{left:50%;translate:-50% 0}.timeline-deck{max-width:none;margin-top:32px}}.timeline-pile{position:relative;flex:none}.timeline-cards{position:absolute;inset:0;margin:0;padding:0;list-style:none;overflow:clip}.timeline-slot{position:absolute;top:0;left:calc((100% - min(var(--card-w), 100%)) / 2);width:min(var(--card-w),100%);pointer-events:none}.timeline-slide{position:absolute;top:0;left:0;right:0;pointer-events:auto;transition:transform .7s cubic-bezier(.22,1,.36,1);will-change:transform}.timeline-deck.is-settling .timeline-slide{transition:none}.timeline-card{--frame-line:var(--hairline);display:grid;grid-template-rows:auto 1fr;background:var(--paper);box-shadow:inset 0 0 0 1px var(--frame-line);color:var(--ink);line-height:var(--leading-tight);text-decoration:none;cursor:default;transition:box-shadow .2s ease,transform .15s ease}.timeline-card-linked{cursor:pointer}.is-top>.timeline-card-linked:focus-visible,.is-top>.timeline-card-linked:hover{--frame-line:var(--ink-muted);transform:translateY(-2px)}.timeline-card-linked:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.timeline-plate{--plate-box-radius:8px;position:relative;height:var(--plate-h);margin:1px 1px 0;box-shadow:0 1px var(--hairline)}.timeline-plate-box{position:absolute;inset:12px 12px 0;display:grid;place-items:center;background:var(--paper-raised);border-radius:var(--plate-box-radius) var(--plate-box-radius) 0 0}.timeline-mark{--mark-w:200px;--mark-h:56px;position:relative;width:var(--mark-w);height:var(--mark-h)}.timeline-mark-text{font-size:32px;font-weight:700;line-height:1;letter-spacing:-.01em;white-space:nowrap}.timeline-card-body{display:grid;grid-template-columns:minmax(0,1fr) auto;align-content:start;grid-column-gap:16px;-moz-column-gap:16px;column-gap:16px;padding:24px}.timeline-card-body>p{grid-column:1}.timeline-card-dates{color:var(--ink-2);margin:0 0 10px;font-size:var(--text-xs);line-height:1;letter-spacing:.16em;text-transform:uppercase;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.timeline-card-heading{margin:0;font-size:var(--text-xl);font-weight:700}.timeline-card-detail{color:var(--ink-2);margin:4px 0 0;font-size:var(--text-md)}.timeline-card-dot{margin:0 .5em}.timeline-card-blurb{margin:14px 0 0;max-width:44ch;font-size:var(--text-md);line-height:var(--leading-normal)}.timeline-card-arrow{color:var(--ink-2);grid-column:2;grid-row:1/span 4;align-self:start;justify-self:end;width:16px;height:16px;transition:transform .15s ease}.timeline-card-arrow svg{display:block;width:100%;height:100%;fill:currentColor}.is-top>.timeline-card-linked:focus-visible .timeline-card-arrow,.is-top>.timeline-card-linked:hover .timeline-card-arrow{transform:translate(2px,-2px)}.timeline-stepper{display:flex;align-items:center;grid-gap:16px;gap:16px;align-self:center}.timeline-index{--index-step:48px;position:relative;display:flex;grid-gap:var(--index-step);gap:var(--index-step);margin:0;padding:8px 0;list-style:none}.timeline-index:before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;translate:0 -50%;background:linear-gradient(to bottom,var(--groove-shadow) 1px,var(--groove-light) 1px);pointer-events:none}.timeline-index-fill{position:absolute;top:50%;left:0;width:0;height:2px;translate:0 -50%;margin:0;padding:0;list-style:none;pointer-events:none}.timeline-index-fill-field{display:block;width:100%;height:100%;opacity:0;transition:opacity .2s ease}.timeline-index-fill-field.is-visible{opacity:1}.timeline-square{position:relative;display:block;width:7px;height:7px;padding:0;border:0;background:var(--paper-sunken);box-shadow:inset 1px 1px var(--groove-shadow),inset -1px -1px var(--groove-light);cursor:pointer;transition:background-color .2s ease,box-shadow .2s ease}.timeline-square:after{content:"";position:absolute;inset:-10px}.timeline-square-field{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .2s ease}.timeline-square.is-top,.timeline-square:hover{background:transparent;box-shadow:calc(-1 * var(--cut)) calc(-1 * var(--cut)) 0 var(--cut-shadow),var(--cut) var(--cut) 0 var(--cut-light)}.timeline-square.is-top .timeline-square-field.is-visible,.timeline-square:hover .timeline-square-field.is-visible{opacity:1}.timeline-square:focus-visible{outline:1px solid var(--accent);outline-offset:4px}.timeline-chevron{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;background:none;color:var(--ink-2);cursor:pointer;transition:color .2s ease}.timeline-chevron svg{display:block;width:12px;height:12px;fill:currentColor;transition:transform .15s ease}.timeline-chevron:hover{color:var(--ink)}.timeline-chevron-prev:hover svg{transform:translateX(-1px)}.timeline-chevron-next:hover svg{transform:translateX(1px)}.timeline-chevron:focus-visible{outline:1px solid var(--accent);outline-offset:-4px}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.section-footer{height:calc(var(--bar-h) + var(--footer-air));padding-block:var(--footer-air) 0}.section-footer>.column{display:flex;align-items:center;justify-content:center;height:100%}.section-footer:after{content:none}@media (prefers-reduced-motion:reduce){.etched-mark-field,.etched-plate,.timeline-card,.timeline-card-arrow,.timeline-chevron,.timeline-chevron svg,.timeline-slide,.timeline-square,.timeline-square-field{transition:none}.etched-field,.gradient-panel,.traces-flight{transition:none;opacity:1}.traces,.vent-slats{transition:none}.contact-fallback{-webkit-animation:none;animation:none}}@media only screen and (max-width:669px){.timeline{--plate-h:180px}.timeline-card-body{padding:20px}.eyebrow{font-size:var(--text-xs)}}@media only screen and (max-width:450px){.etched-plate{display:grid;width:100%}.button{width:100%;padding:3px 42px}}