@import "https://fonts.googleapis.com/css2?family=Azeret+Mono:wght@300;400;500;600;700&family=Bitter:ital,wght@0,300;0,400;0,600;1,700;1,900&family=Montserrat:wght@300;400;500;600;700;900&display=swap";@layer components{.site-header[data-v-a25d2261]{z-index:10;display:grid;position:relative}nav[data-v-a25d2261]{border-block-end:1px inset hsl(var(--clr-black-800) / .3);background:var(--clr-accent-800);width:100%;max-width:100vw;box-shadow:0 0 6px -2px hsl(var(--clr-white-200) / .1), inset 0 0 6px -2px hsl(var(--clr-white-200) / .1);grid-template-columns:max-content 1fr minmax(0,7rem);grid-template-areas:"logo links";gap:1.25em;padding:1.15em 1em;display:grid;overflow:auto clip}.logo-link[data-v-a25d2261]{min-height:2.75rem;color:var(--clr-text);font-family:var(--ff-serif);font-size:var(--txt-lrg);letter-spacing:1px;-webkit-text-stroke:1px hsl(var(--clr-white-200) / .2);grid-area:logo;align-items:center;margin-inline:.5em;font-weight:300;text-decoration:none;display:inline-flex}.nav-items[data-v-a25d2261]{grid-area:links;place-self:center;gap:1em;display:flex}.nav-items a[data-v-a25d2261]{min-height:2.75rem;color:var(--clr-text);font-family:var(--ff-mono);font-size:var(--txt-med);text-transform:uppercase;align-items:center;font-weight:300;text-decoration:none;display:inline-flex;position:relative}.nav-items a.active[data-v-a25d2261]{font-weight:600}.nav-items a[data-v-a25d2261]:after{content:"";background:var(--clr-text);transform-origin:50%;height:2px;transition:transform var(--transition-fast);border-radius:5px;position:absolute;inset:auto 0 .25rem;transform:scaleX(0)}.nav-items a[data-v-a25d2261]:is(:hover,:focus-visible,.active):after{transform:scaleX(1)}@media (width<=36rem){nav[data-v-a25d2261]{grid-template-columns:1fr;grid-template-areas:"logo""links"}.nav-items[data-v-a25d2261]{flex-wrap:wrap;justify-self:start}}footer[data-v-00fcc03a]{border-block-start:.35rem solid var(--clr-primary-400);padding:clamp(1.5rem, 4vw, 2.5rem) max(var(--content-gutter), calc((100% - var(--content-wide)) / 2));background:var(--clr-accent-800);grid-template-columns:minmax(14rem,1fr) minmax(20rem,1.5fr) max-content;align-items:end;gap:1.5rem clamp(2rem,5vw,5rem);display:grid}footer p[data-v-00fcc03a],footer a[data-v-00fcc03a]{font-size:var(--txt-small)}.footer-identity[data-v-00fcc03a]{gap:.4rem;display:grid}.footer-identity>a[data-v-00fcc03a]{width:max-content;color:var(--clr-text);font-family:var(--ff-serif);font-size:var(--txt-lrg);font-weight:600;text-decoration:none}.footer-identity p[data-v-00fcc03a]{color:var(--clr-secondary-200);font-family:var(--ff-mono);font-size:var(--txt-xsm);text-transform:uppercase;line-height:1.55}.footer-navigation[data-v-00fcc03a]{border-inline-start:1px solid var(--clr-border);gap:.15rem;padding-inline-start:clamp(1rem,3vw,2rem);display:grid}nav[data-v-00fcc03a]{flex-wrap:wrap;align-items:center;gap:0 1.5rem;display:flex}a[data-v-00fcc03a]{min-height:2.75rem;color:var(--clr-text);text-underline-offset:.25em;align-items:center;display:inline-flex}.footer-meta[data-v-00fcc03a]{color:var(--clr-secondary-200);font-family:var(--ff-mono);font-size:var(--txt-xsm);white-space:nowrap;align-self:end}@media (width<=48rem){footer[data-v-00fcc03a]{grid-template-columns:1fr max-content;align-items:start}.footer-navigation[data-v-00fcc03a]{border-inline-start:0;border-block-start:1px solid var(--clr-border);grid-area:2/1/auto/-1;padding:.75rem 0 0}}@media (width<=30rem){footer[data-v-00fcc03a]{grid-template-columns:1fr}.footer-meta[data-v-00fcc03a]{grid-row:3}}#app{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.skip-link{z-index:100;color:var(--clr-btn);background:var(--clr-btn-bg);padding:.5rem .75rem;position:fixed;inset:.5rem auto auto .5rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}#main-content:focus{outline:0}.project-container[data-v-f28cd477]{min-inline-size:0;container:project/inline-size}.project-card[data-v-f28cd477]{border-radius:var(--radius);background-image:linear-gradient(hsl(var(--clr-black-600) / .91), hsl(var(--clr-black-600) / .94)), linear-gradient(66deg, var(--clr-accent-400), var(--clr-secondary-400), var(--clr-primary-400));background-origin:border-box;background-clip:padding-box,border-box;border:2px double #0000;grid-template-columns:minmax(0,1fr);grid-template-areas:"title""image""info""summary";display:grid}.project-card[data-v-f28cd477]>*{min-inline-size:0}.project-heading[data-v-f28cd477]{grid-area:title;align-content:center;justify-items:start;gap:1rem;padding:clamp(1rem,3cqi,2.5rem);display:grid}.title[data-v-f28cd477]{font-family:var(--ff-primary);overflow-wrap:anywhere;font-size:clamp(1.65rem,3cqi,2.75rem);line-height:1.15}.project-deck[data-v-f28cd477]{color:var(--clr-primary-200);max-inline-size:42ch;font-size:clamp(1rem,1.5cqi,1.2rem)}.project-links[data-v-f28cd477]{flex-wrap:wrap;gap:.85rem;padding-block:.25rem;display:flex}.project-links .btn[data-v-f28cd477]{min-block-size:2.75rem;min-inline-size:7.5rem;font-size:var(--txt-small);flex:0 auto}.card-image[data-v-f28cd477]{border-block-start:1px inset var(--clr-border);grid-area:image;align-content:center;gap:.75rem;padding:.75rem;display:grid}.card-image img[data-v-f28cd477]{object-fit:contain;block-size:auto;max-block-size:26rem;inline-size:100%}.card-image figcaption[data-v-f28cd477]{color:var(--clr-primary-200);font-family:var(--ff-mono);text-align:center;font-size:.8rem}.info[data-v-f28cd477]{border-block-start:1px inset var(--clr-border);flex-direction:column;grid-area:info;gap:1rem;padding:clamp(1rem,2cqi,1.75rem);display:flex}.time[data-v-f28cd477]{font-size:var(--txt-small);gap:.75rem;display:grid}.project-status[data-v-f28cd477]{color:var(--clr-secondary-200);font-family:var(--ff-mono)}.tags[data-v-f28cd477]{flex-wrap:wrap;align-content:start;gap:.5rem;list-style:none;display:flex}.tags li[data-v-f28cd477]{border:1px solid var(--clr-border);background:hsl(var(--clr-black-200) / .75);color:var(--clr-accent-200);font-size:var(--txt-small);white-space:nowrap;border-radius:100vw;padding:.2em .65em}.summary[data-v-f28cd477]{border-block-start:1px inset var(--clr-border);grid-area:summary;gap:1.5rem;padding:clamp(1rem,2.5cqi,2.25rem);font-size:clamp(1rem,1.35cqi,1.125rem);line-height:1.65;display:grid;container:summary/inline-size}.section-title[data-v-f28cd477]{color:var(--clr-accent-200);font-family:var(--ff-mono);letter-spacing:.06em;text-transform:uppercase;padding-block-end:.5rem;font-size:.8rem}.summary p+p[data-v-f28cd477]{padding-block-start:.8em}.significance[data-v-f28cd477]{color:var(--clr-primary-200);font-size:clamp(1.1rem,1.65cqi,1.25rem)}.retrospective-points[data-v-f28cd477]{gap:1.5rem;display:grid}.summary ul[data-v-f28cd477]{max-inline-size:65ch;padding-inline-start:1.2rem}.summary li+li[data-v-f28cd477]{padding-block-start:.4rem}.project-card--text-only[data-v-f28cd477]{grid-template-areas:"title""info""summary"}@container project (width>=48rem){.project-card[data-v-f28cd477]{grid-template-columns:clamp(13rem,23cqi,18rem) minmax(0,.65fr) minmax(0,2fr);grid-template-areas:"title title image""info summary summary"}.card-image[data-v-f28cd477]{border-block-start:0;border-inline-start:1px inset var(--clr-border);padding:1.25rem}.info[data-v-f28cd477]{border-inline-end:1px inset var(--clr-border)}.project-card--text-only[data-v-f28cd477]{grid-template-areas:"title title title""info summary summary"}.project-card--text-only .project-heading[data-v-f28cd477]{grid-template-columns:1fr auto}.project-card--text-only .title[data-v-f28cd477]{grid-column:1}.project-card--text-only .project-deck[data-v-f28cd477]{grid-column:1;max-inline-size:65ch}.project-card--text-only .project-links[data-v-f28cd477]{grid-area:1/2/3;align-self:center}}@container summary (width>=34rem){.retrospective-points[data-v-f28cd477]{grid-template-columns:repeat(2,minmax(0,1fr))}}@container project (width>=90rem){.summary[data-v-f28cd477]{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:start}.summary>section[data-v-f28cd477]:first-child{grid-column:1/-1}.retrospective-points[data-v-f28cd477]{grid-template-columns:minmax(0,1fr)}}.project-card--supporting[data-v-f28cd477]{grid-template:"title"1fr"image""info"/minmax(0,1fr);block-size:100%}.project-card--supporting.project-card--text-only[data-v-f28cd477]{grid-template-rows:1fr auto;grid-template-areas:"title""info"}.project-card--supporting .project-heading[data-v-f28cd477]{grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);align-content:start;padding:1.5rem}.project-card--supporting .title[data-v-f28cd477]{font-size:clamp(1.4rem,3cqi,1.75rem)}.project-card--supporting .project-deck[data-v-f28cd477]{font-size:1rem}.project-card--supporting .project-links[data-v-f28cd477]{grid-area:auto/1}.project-card--supporting .info[data-v-f28cd477]{border-inline-end:0;padding:1rem 1.5rem}.project-card--supporting .card-image[data-v-f28cd477]{border-inline-start:0;border-block-start:1px inset var(--clr-border)}@supports (grid-template-rows:subgrid){.project-container--supporting[data-v-f28cd477]{grid-row:span 2;grid-template-rows:subgrid;row-gap:0;display:grid;container-type:normal}.project-card--supporting.project-card--text-only[data-v-f28cd477]{grid-row:span 2;grid-template-rows:subgrid;row-gap:0}}@media (forced-colors:active){.project-card[data-v-f28cd477]{border-color:canvastext}}.resume-page{max-width:68rem;padding-block:clamp(2rem,6vw,5rem)}.resume-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-block-end:1.5rem;display:flex}.resume-actions{flex-wrap:wrap;gap:.65rem;display:flex}.resume-document{border-radius:var(--radius);background-image:linear-gradient(var(--clr-bg-panel), var(--clr-bg-panel)), linear-gradient(66deg, var(--clr-accent-400), var(--clr-secondary-400), var(--clr-primary-400));background-origin:border-box;background-clip:padding-box,border-box;border:2px double #0000;padding:clamp(1.25rem,5vw,3.5rem);container-type:inline-size}.resume-identity{padding-block-end:2rem}.resume-identity .eyebrow{margin-block-end:.6rem}.resume-identity h1{font-family:var(--ff-serif);letter-spacing:-.045em;font-size:clamp(2.5rem,8vw,5.25rem);font-weight:400}.resume-title{color:var(--clr-text);font-size:var(--text-lg);margin-block-start:.45rem;font-weight:700}.resume-subtitle{color:var(--clr-secondary-200);font-family:var(--ff-mono);font-size:var(--text-sm);margin-block-start:.2rem}.resume-location{color:hsl(var(--clr-white-600));margin-block-start:1.2rem}.resume-links{flex-wrap:wrap;gap:.4rem 1.4rem;margin-block-start:.5rem;display:flex}.resume-links a{overflow-wrap:anywhere;align-items:center;min-height:2.75rem;padding-block:.2rem;display:inline-flex}.resume-document section{border-block-start:1px solid var(--clr-border);padding-block:1.7rem}.resume-document section:last-child{padding-block-end:0}.resume-document h2{color:var(--clr-accent-200);font-family:var(--ff-mono);font-size:var(--text-sm);letter-spacing:.08em;text-transform:uppercase;margin-block-end:1rem}.resume-document h3{font-size:var(--text-lg);line-height:1.45}.resume-document h3 span{font-weight:400}.resume-document :is(p,li,dd){max-width:none}.resume-document section :is(p,li,dd){color:hsl(var(--clr-white-600))}.resume-skills{gap:.8rem;display:grid}.resume-skills dt{color:var(--clr-text);font-weight:700}.resume-skills dd{margin-block-start:.15rem}.resume-meta{font-family:var(--ff-mono);font-size:var(--text-sm);margin-block-start:.25rem}.resume-bullets{margin-block-start:.65rem;padding-inline-start:1.2rem;list-style:square}.resume-bullets li+li{margin-block-start:.55rem}.resume-entry+.resume-entry{margin-block-start:1.3rem}.resume-entry>p:not(.resume-meta){margin-block-start:.3rem}.resume-print{display:none}@container (width>=44rem){.resume-skills>div{grid-template-columns:minmax(10rem,13.5rem) 1fr;gap:1.5rem;display:grid}.resume-skills dd{margin:0}}.btn{border:1px solid var(--clr-btn-border);border-inline-start:.35rem solid var(--clr-secondary-400);background:var(--clr-btn-bg);width:max-content;min-height:clamp(2.75rem,2.25rem + 1vmin,4.5rem);box-shadow:.25rem .25rem 0 var(--clr-accent-400);color:var(--clr-btn);font-family:var(--ff-mono);font-size:clamp(var(--txt-xsm), calc(.55rem + .7vmin), 1.5rem);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:background-color var(--transition-fast), box-shadow var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);border-radius:.2rem;justify-content:center;align-items:center;padding:.45em .9em;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover,.btn:focus-visible{background:var(--clr-btn-bg-hover);box-shadow:.1rem .1rem 0 var(--clr-accent-400);color:var(--clr-btn-hover);transform:translate(.15rem,.15rem)}.btn--secondary{color:var(--clr-text);background:0 0}}@layer pages{.home-hero[data-v-0ac824d6]{--home-grid-columns:minmax(0, .78fr) minmax(0, 1.22fr);--home-grid-gap:clamp(1.5rem, 4vmin, 6rem);grid-template-columns:var(--home-grid-columns);align-content:center;gap:0 var(--home-grid-gap);grid-template-areas:"meta meta""identity projects""copy projects""actions actions";min-height:100svh;padding-block:clamp(1rem,3vmin,4rem);display:grid}.home-meta[data-v-0ac824d6]{border-block-start:.3rem solid var(--clr-secondary-400);border-block-end:1px solid var(--clr-border);color:var(--clr-secondary-200);font-family:var(--ff-mono);font-size:clamp(var(--txt-xsm), calc(.5rem + .3vmin), var(--txt-small));letter-spacing:.08em;text-transform:uppercase;grid-area:meta;justify-content:space-between;gap:1rem;padding-block:.55rem;display:flex}.identity[data-v-0ac824d6]{border-block-end:2px solid var(--clr-primary-400);grid-area:identity;align-content:end;justify-items:start;gap:clamp(1rem,2.5vh,1.5rem);min-width:0;padding-block:clamp(1rem,3vmin,4rem);display:grid}h1[data-v-0ac824d6]{color:var(--clr-text);font-family:var(--ff-primary);letter-spacing:-.075em;text-transform:uppercase;-webkit-text-stroke:2px hsl(var(--clr-white-200) / .18);font-size:clamp(2.75rem,1.3rem + 3.7vw,10rem);font-weight:900;line-height:.78}h1 span[data-v-0ac824d6]{display:block}.role[data-v-0ac824d6]{border-inline-start:.45rem solid var(--clr-secondary-400);background:var(--clr-accent-800);max-width:10ch;color:var(--clr-accent-200);font-family:var(--ff-mono);font-size:clamp(var(--txt-xsm), calc(.75rem + .3vmin), var(--txt-med));letter-spacing:.04em;text-transform:uppercase;padding:.65rem .75rem .65rem 1rem;font-weight:500;line-height:1.15}.role span[data-v-0ac824d6]{display:block}.home-copy[data-v-0ac824d6]{grid-area:copy;align-content:start;padding-block:clamp(1.5rem,4vmin,6rem);display:grid;container-type:inline-size}.home-copy>p[data-v-0ac824d6]:first-child{max-width:22ch;font-size:clamp(1.1rem,7.5cqi,4.5rem);font-weight:600;line-height:1.15}.home-copy>p span[data-v-0ac824d6]{white-space:nowrap;display:block}.home-actions[data-v-0ac824d6]{grid-area:actions;grid-template-columns:var(--home-grid-columns);column-gap:var(--home-grid-gap);border-block-start:1px solid var(--clr-border);grid-column:1/-1;align-items:center;margin-block-start:clamp(.75rem,2vmin,2rem);padding-block-start:clamp(.5rem,1.5vmin,1rem);display:grid;container-type:inline-size}.home-links[data-v-0ac824d6]{flex-wrap:wrap;grid-area:1/1;align-items:center;gap:clamp(.5rem,1.5vmin,1.25rem);display:flex}.home-pages[data-v-0ac824d6],.home-profiles[data-v-0ac824d6]{flex-wrap:wrap;align-items:center;display:flex}.home-pages[data-v-0ac824d6]{gap:clamp(.35rem,.75vmin,.65rem)}.home-pages a[data-v-0ac824d6]{border:1px solid var(--clr-border);border-inline-start:.25rem solid var(--clr-primary-400);background:var(--clr-primary-800-3);min-height:clamp(2.75rem,2.25rem + 1vmin,4.5rem);color:var(--clr-text);font-family:var(--ff-mono);font-size:clamp(var(--txt-xsm), calc(.55rem + .25vmin), var(--txt-small));letter-spacing:.04em;text-transform:uppercase;border-radius:.15rem;align-items:center;padding-inline:clamp(.55rem,1vmin,.85rem);font-weight:500;text-decoration:none;display:inline-flex}.home-pages a[data-v-0ac824d6]:is(:hover,:focus-visible){border-color:var(--clr-primary-400);border-inline-start-color:var(--clr-secondary-400);background:var(--clr-primary-800);color:var(--clr-secondary-200)}.home-profiles[data-v-0ac824d6]{gap:clamp(.1rem,.5vmin,.4rem)}.home-profiles a[data-v-0ac824d6]{width:clamp(2.75rem,2.25rem + 1vmin,4.5rem);min-height:clamp(2.75rem,2.25rem + 1vmin,4.5rem);color:var(--clr-accent-200);border-block-end:.2rem solid #0000;place-items:center;padding:0;text-decoration:none;display:grid;position:relative}.home-profiles a[data-v-0ac824d6]:is(:hover,:focus-visible){border-block-end-color:var(--clr-secondary-400);background:var(--clr-accent-800)}.home-profiles svg[data-v-0ac824d6]{width:clamp(1.25rem,1rem + .5vmin,1.75rem);height:auto}.profile-link--github[data-v-0ac824d6]{--clr-brand-profile-mark:hsl(var(--clr-white-200))}.profile-link--linkedin[data-v-0ac824d6]{--clr-brand-profile-mark:#0a66c2}.profile-link--email[data-v-0ac824d6]{--clr-brand-gmail-blue:#4285f4;--clr-brand-gmail-green:#34a853;--clr-brand-gmail-red:#ea4335;--clr-brand-gmail-yellow:#fbbc04;--clr-brand-gmail-fold:#c5221f}.profile-mark[data-v-0ac824d6]{color:var(--clr-brand-profile-mark)}.gmail-blue[data-v-0ac824d6]{fill:var(--clr-brand-gmail-blue)}.gmail-green[data-v-0ac824d6]{fill:var(--clr-brand-gmail-green)}.gmail-red[data-v-0ac824d6]{fill:var(--clr-brand-gmail-red)}.gmail-yellow[data-v-0ac824d6]{fill:var(--clr-brand-gmail-yellow)}.gmail-fold[data-v-0ac824d6]{fill:var(--clr-brand-gmail-fold)}.profile-tooltip[data-v-0ac824d6]{z-index:2;visibility:hidden;border:1px solid var(--clr-secondary-400);background:var(--clr-bg-panel);box-shadow:.2rem .2rem 0 var(--clr-accent-800);color:var(--clr-text);font-family:var(--ff-mono);font-size:var(--txt-xsm);letter-spacing:.04em;opacity:0;pointer-events:none;text-transform:uppercase;white-space:nowrap;padding:.25em .5em;line-height:1.2;position:absolute;inset-block-end:calc(100% + .4rem);inset-inline-start:50%;transform:translate(-50%)}.profile-link:is(:hover,:focus-visible) .profile-tooltip[data-v-0ac824d6]{visibility:visible;opacity:1}.project-carousel[data-v-0ac824d6]{border-inline-start:1px solid var(--clr-border);grid-area:projects;align-content:center;align-self:stretch;min-width:0;padding-inline-start:clamp(1rem,2vmin,3rem);display:grid;position:relative}.carousel-heading[data-v-0ac824d6]{border-block-start:.4rem solid var(--clr-primary-400);color:var(--clr-secondary-200);font-family:var(--ff-mono);text-transform:uppercase;justify-content:space-between;align-items:baseline;gap:1rem;padding-block:.45rem;display:flex}.carousel-heading h2[data-v-0ac824d6]{font-size:clamp(var(--txt-xsm), calc(.5rem + .3vmin), var(--txt-small));font-weight:500}.carousel-heading p[data-v-0ac824d6]{font-size:clamp(var(--txt-xsm), calc(.5rem + .3vmin), var(--txt-small))}.carousel-track[data-v-0ac824d6]{scroll-snap-type:x mandatory;scrollbar-width:none;display:flex;overflow-x:auto}.carousel-track[data-v-0ac824d6]::-webkit-scrollbar{display:none}.carousel-slide[data-v-0ac824d6]{scroll-snap-align:start;border:1px solid var(--clr-primary-400);background:var(--clr-bg-panel);flex:0 0 100%;grid-template-rows:auto max-content;min-width:0;display:grid}.carousel-slide img[data-v-0ac824d6]{aspect-ratio:16/10;object-fit:contain;object-position:center;background:var(--clr-bg-panel);filter:contrast(1.12)saturate(.9);width:100%;height:auto}.project-summary[data-v-0ac824d6]{border-block-start:1px solid var(--clr-primary-400);font-size:clamp(var(--txt-small), calc(.7rem + .35vmin), var(--txt-med));gap:.2rem;padding:.65rem;display:grid}.project-summary h3[data-v-0ac824d6]{color:var(--clr-accent-200);font-size:clamp(var(--txt-med), calc(.8rem + .5vmin), var(--txt-lrg))}.project-summary a[data-v-0ac824d6]{color:var(--clr-secondary-200);font-family:var(--ff-mono);font-size:clamp(var(--txt-xsm), calc(.5rem + .3vmin), var(--txt-small));text-transform:uppercase;justify-self:start;margin-block-start:.35rem}.carousel-progress[data-v-0ac824d6]{grid-template-columns:repeat(auto-fit,minmax(2rem,1fr));gap:.4rem;display:grid}.carousel-progress button[data-v-0ac824d6]{cursor:pointer;background:0 0;border:0;min-height:clamp(2.75rem,2.25rem + 1vmin,4.5rem);padding:0;position:relative}.carousel-progress button[data-v-0ac824d6]:after{content:"";background:var(--clr-primary-800);height:.25rem;position:absolute;inset:calc(50% - .125rem) 0 auto}.carousel-progress button[data-v-0ac824d6]:is(:hover,:focus-visible):after{background:var(--clr-secondary-400)}.carousel-progress button[aria-current=true][data-v-0ac824d6]:after{background:var(--clr-primary-400)}.carousel-projects-link[data-v-0ac824d6]{grid-area:1/2;justify-self:end;display:flex}@media (width<=60rem){.home-hero[data-v-0ac824d6]{grid-template-columns:1fr;grid-template-areas:"meta""identity""copy""projects""actions";gap:0;min-height:auto}.home-meta[data-v-0ac824d6]{border-block-end:0}.identity[data-v-0ac824d6]{border-block-end-width:1px;gap:clamp(.75rem,2.5svh,1.25rem);padding-block:clamp(.9rem,3.5svh,1.75rem)}h1[data-v-0ac824d6]{font-size:clamp(3rem,13vw,7rem)}.role[data-v-0ac824d6]{max-width:none;font-size:clamp(var(--txt-xsm), calc(.65rem + .25vmin), var(--txt-small));background:0 0;border-inline-start-width:.3rem;padding:.15rem 0 .15rem .65rem;line-height:1.2}.role span[data-v-0ac824d6]{display:inline}.home-copy[data-v-0ac824d6]{padding-block:clamp(1.1rem,4svh,2rem) clamp(1.5rem,6svh,3rem)}.project-carousel[data-v-0ac824d6]{border-inline-start:0;padding:clamp(1rem,4svh,2rem) 0 0}.home-actions[data-v-0ac824d6]{grid-template-columns:1fr;gap:clamp(.65rem,2vmin,1rem);margin-block-start:clamp(.5rem,2svh,1rem)}.carousel-projects-link[data-v-0ac824d6]{grid-area:1/1}.home-links[data-v-0ac824d6]{grid-area:2/1}}@media (width<=24rem){.home-meta[data-v-0ac824d6]{flex-direction:column;align-items:flex-start;gap:.2rem}h1[data-v-0ac824d6]{font-size:clamp(2.5rem,13vw,3rem);line-height:.82}}@container (width<=32rem){.carousel-projects-link[data-v-0ac824d6]{justify-self:stretch;width:100%}}@media (forced-colors:active){.profile-mark[data-v-0ac824d6]{color:linktext}.profile-mark--email path[data-v-0ac824d6]{fill:linktext}}.projects-page[data-v-20b4ea3b]{inline-size:min(calc(100% - 2 * var(--content-gutter)), 180rem);margin-inline:auto;padding-block:2rem 3rem;container:projects-page/inline-size}h1[data-v-20b4ea3b]{color:var(--clr-text);font-family:var(--ff-primary);font-size:var(--txt-xlrg);text-align:center}.projects[data-v-20b4ea3b]{grid-template-columns:repeat(auto-fit,minmax(min(100%,64rem),1fr));align-items:start;gap:clamp(2rem,3vw,4rem);padding-block-start:2.5rem;display:grid}.supporting-work[data-v-20b4ea3b]{gap:1.5rem;padding-block-start:clamp(3rem,5vw,6rem);display:grid}.supporting-work>h2[data-v-20b4ea3b]{border-block-start:2px solid var(--clr-accent-400);color:var(--clr-accent-200);padding-block-start:1.5rem;font-size:clamp(1.5rem,2vw,2rem)}.supporting-projects[data-v-20b4ea3b]{grid-template-columns:repeat(auto-fit,minmax(min(100%,30rem),1fr));gap:1.5rem;display:grid}.projects[data-v-20b4ea3b],.supporting-work[data-v-20b4ea3b]{inline-size:min(100%,80rem);margin-inline:auto}@container projects-page (width>=132rem){.projects[data-v-20b4ea3b],.supporting-work[data-v-20b4ea3b]{inline-size:100%}}.about[data-v-c20df521]{width:min(calc(100% - var(--content-gutter) - var(--content-gutter)), var(--content-wide));margin-inline:auto;padding-block:clamp(2rem,6vw,5rem)}h1[data-v-c20df521]{max-width:20ch;color:var(--clr-text);font-family:var(--ff-mono);letter-spacing:3px;text-align:center;text-transform:uppercase;-webkit-text-stroke:3px hsl(var(--clr-white-200) / .3);margin-inline:auto;font-size:clamp(2.5rem,8vw,6rem);font-style:oblique;font-weight:900;line-height:1}.about-body[data-v-c20df521]{max-width:72ch;margin-inline:auto;padding-block-start:clamp(2.5rem,6vw,5rem)}.about-prose[data-v-c20df521]{margin-block-start:clamp(2rem,4vw,3rem);display:flow-root}.about-prose p[data-v-c20df521]{font-size:var(--txt-med);margin-block-end:1.5rem;line-height:1.75}.pretext[data-v-c20df521]{color:var(--clr-text);font-family:var(--ff-serif);font-size:clamp(1.35rem,2.5vw,1.75rem);font-weight:600;line-height:1.5}picture[data-v-c20df521]{display:contents}img[data-v-c20df521]{float:inline-start;aspect-ratio:1;object-fit:cover;shape-outside:circle(42% at center);shape-margin:1.25rem;border-radius:50%;width:clamp(13rem,25vw,17rem);height:auto;margin:0 1rem 1rem 0;padding:clamp(.5rem,2vw,1.25rem)}@media (width<=48rem){img[data-v-c20df521]{float:none;shape-outside:none;width:min(15rem,70vw);margin:0 auto 2rem}}@media (width<=30rem){h1[data-v-c20df521]{letter-spacing:1px;font-size:clamp(2rem,11vw,3rem)}}.not-found[data-v-49664a66]{place-content:center;justify-items:center;gap:1rem;min-height:60vh;padding:2rem;display:grid}.not-found p[data-v-49664a66]{font-family:var(--ff-mono);font-size:var(--txt-lrg)}.not-found h1[data-v-49664a66]{font-family:var(--ff-serif);font-size:var(--txt-xlrg-fluid)}}@media print{@page{size:letter;margin:.5in}html.resume-route{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#fff;min-height:0}body.resume-route{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;min-height:0;font:10.5pt/1.12 Arial,sans-serif;overflow:visible;color:#161616!important;background:#fff!important}body.resume-route #app{min-height:0;display:block}body.resume-route :is(.site-header,.site-footer,.skip-link,.resume-toolbar,.resume-document){display:none!important}body.resume-route main{display:block}body.resume-route .resume-page{width:auto;max-width:none;margin:0;padding:0}.resume-page .resume-print{background:#fff;border:0;padding:0;display:flow-root}.resume-print *{color:#161616;box-shadow:none;text-shadow:none;background:0 0;transition:none;animation:none}.resume-print :is(h1,h2,h3,p,ul){letter-spacing:0;text-transform:none;max-width:none;margin:0;font-family:Arial,sans-serif;line-height:1.2}.resume-print a{color:inherit;text-decoration:none}.resume-print .print-name{margin-block-end:2pt;font-size:20pt;font-weight:700}.resume-print .print-title{margin-block-end:2pt;font-size:12pt;font-weight:700}.resume-print .print-subtitle{margin-block-end:2pt;font-size:10pt}.resume-print .print-contact{margin-block-end:1pt;font-size:9.5pt}.resume-print .print-section{border-block-end:.5pt solid #aaa;margin:6pt 0 4pt;font-size:11pt;font-weight:700}.resume-print .print-entry{margin:3pt 0 1pt;font-size:10.5pt;font-weight:700}.resume-print .print-meta{margin-block-end:2pt;font-size:9.5pt}.resume-print .print-paragraph{margin-block-end:2pt;font-size:10.5pt}.resume-print .print-skill{margin-block-end:1pt;font-size:10pt}.resume-print .print-bullets{padding-inline-start:12pt;font-size:10.5pt;list-style:outside}.resume-print .print-bullets li{margin-block-end:2pt}.resume-print :is(p,li){break-inside:avoid;orphans:2;widows:2}.resume-print .keep-next{break-after:avoid}}@layer reset{*,:before,:after{box-sizing:border-box}:where(body,h1,h2,h3,h4,p,ul,ol,li,figure,figcaption,blockquote,dl,dd){margin:0}:where(ul[class],ol[class]){padding:0;list-style:none}a:not([class]){-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto}:where(img,picture,svg){max-width:100%;display:block}:where(button,input,textarea,select){font:inherit}}@layer tokens{:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--clr-black-200:0 0% 15%;--clr-black-400:0 0% 12%;--clr-black-600:0 0% 9%;--clr-black-800:0 0% 3%;--clr-white-200:0 0% 95%;--clr-white-400:0 0% 85%;--clr-white-600:0 0% 75%;--clr-white-800:0 0% 65%;--clr-primary-h:186deg;--clr-secondary-h:calc(var(--clr-primary-h) + 180deg);--clr-accent-h:calc(var(--clr-secondary-h) + 270deg);--clr-primary-s:42%;--clr-secondary-s:var(--clr-primary-s);--clr-accent-s:var(--clr-primary-s);--clr-200:75%;--clr-400:55%;--clr-600:35%;--clr-800:15%;--opacity-1:.1;--opacity-3:.3;--opacity-5:.5;--opacity-7:.7;--clr-primary-200:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-200));--clr-primary-200-1:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-200) / var(--opacity-1));--clr-primary-200-3:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-200) / var(--opacity-3));--clr-primary-200-5:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-200) / var(--opacity-5));--clr-primary-200-7:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-200) / var(--opacity-7));--clr-primary-400:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-400));--clr-primary-400-1:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-400) / var(--opacity-1));--clr-primary-400-3:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-400) / var(--opacity-3));--clr-primary-400-5:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-400) / var(--opacity-5));--clr-primary-400-7:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-400) / var(--opacity-7));--clr-primary-600:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-600));--clr-primary-600-1:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-600) / var(--opacity-1));--clr-primary-600-3:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-600) / var(--opacity-3));--clr-primary-600-5:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-600) / var(--opacity-5));--clr-primary-600-7:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-600) / var(--opacity-7));--clr-primary-800:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-800));--clr-primary-800-1:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-800) / var(--opacity-1));--clr-primary-800-3:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-800) / var(--opacity-3));--clr-primary-800-5:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-800) / var(--opacity-5));--clr-primary-800-7:hsl(var(--clr-primary-h) var(--clr-primary-s) var(--clr-800) / var(--opacity-7));--clr-secondary-200:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-200));--clr-secondary-200-1:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-200) / var(--opacity-1));--clr-secondary-200-3:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-200) / var(--opacity-3));--clr-secondary-200-5:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-200) / var(--opacity-5));--clr-secondary-200-7:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-200) / var(--opacity-7));--clr-secondary-400:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-400));--clr-secondary-400-1:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-400) / var(--opacity-1));--clr-secondary-400-3:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-400) / var(--opacity-3));--clr-secondary-400-5:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-400) / var(--opacity-5));--clr-secondary-400-7:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-400) / var(--opacity-7));--clr-secondary-600:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-600));--clr-secondary-600-1:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-600) / var(--opacity-1));--clr-secondary-600-3:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-600) / var(--opacity-3));--clr-secondary-600-5:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-600) / var(--opacity-5));--clr-secondary-600-7:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-600) / var(--opacity-7));--clr-secondary-800:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-800));--clr-secondary-800-1:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-800) / var(--opacity-1));--clr-secondary-800-3:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-800) / var(--opacity-3));--clr-secondary-800-5:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-800) / var(--opacity-5));--clr-secondary-800-7:hsl(var(--clr-secondary-h) var(--clr-secondary-s) var(--clr-800) / var(--opacity-7));--clr-accent-200:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-200));--clr-accent-200-1:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-200) / var(--opacity-1));--clr-accent-200-3:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-200) / var(--opacity-3));--clr-accent-200-5:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-200) / var(--opacity-5));--clr-accent-200-7:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-200) / var(--opacity-7));--clr-accent-400:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-400));--clr-accent-400-1:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-400) / var(--opacity-1));--clr-accent-400-3:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-400) / var(--opacity-3));--clr-accent-400-5:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-400) / var(--opacity-5));--clr-accent-400-7:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-400) / var(--opacity-7));--clr-accent-600:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-600));--clr-accent-600-1:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-600) / var(--opacity-1));--clr-accent-600-3:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-600) / var(--opacity-3));--clr-accent-600-5:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-600) / var(--opacity-5));--clr-accent-600-7:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-600) / var(--opacity-7));--clr-accent-800:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-800));--clr-accent-800-1:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-800) / var(--opacity-1));--clr-accent-800-3:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-800) / var(--opacity-3));--clr-accent-800-5:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-800) / var(--opacity-5));--clr-accent-800-7:hsl(var(--clr-accent-h) var(--clr-accent-s) var(--clr-800) / var(--opacity-7));--ff-primary:"Montserrat", sans-serif;--ff-mono:"Azeret Mono", monospace;--ff-serif:"Bitter", serif;--txt-xsm:.7rem;--txt-small:.9rem;--txt-small-fluid:clamp(.5rem, calc(10px + 1vmin), .75rem);--txt-med:1.1rem;--txt-med-fluid:clamp(1rem, 3vw, 1.5rem);--txt-lrg:1.45rem;--txt-lrg-fluid:clamp(1.5rem, 7vw, 3.5rem);--txt-xlrg:3.5rem;--txt-xlrg-fluid:clamp(2.5rem, 10vw, 6rem);--txt-xxl-fluid:clamp(4rem, 20vw, 12rem);--radius:10px;--radius-input:.5em;--clr-bg:hsl(var(--clr-black-600));--clr-text:hsl(var(--clr-primary-h) calc(var(--clr-primary-s) * 2) var(--clr-400));--clr-btn-bg:var(--clr-primary-800);--clr-btn-bg-hover:var(--clr-primary-800-7);--clr-btn:var(--clr-secondary-200);--clr-btn-hover:var(--clr-accent-200);--clr-border:var(--clr-accent-400-3);--clr-bg-panel:hsl(var(--clr-black-400));--clr-btn-border:var(--clr-primary-200-5);--clr-focus:var(--clr-secondary-200);--text-xs:var(--txt-xsm);--text-sm:var(--txt-small);--text-base:var(--txt-med);--text-lg:var(--txt-lrg);--content-wide:clamp(70rem, 75vw, 180rem);--content-gutter:clamp(1rem, 2vw, 3rem);--transition-fast:.25s ease-in-out}}@layer base{html{scroll-behavior:smooth;text-rendering:optimizespeed;scrollbar-color:var(--clr-primary-400) var(--clr-secondary-400);scrollbar-width:thin;height:100%;min-height:100vh}body{background:var(--clr-bg);height:100%;min-height:100%;color:var(--clr-text);font-family:var(--ff-primary);line-height:1.5}#app{grid-template-rows:max-content 1fr max-content;grid-template-areas:"header""main""footer";min-height:100%;display:grid}header{grid-area:header;transform:translate(0,0)}main{flex-direction:column;grid-area:main;width:100%;min-width:0;display:flex}footer{grid-area:footer}p{max-width:65ch}a{color:var(--clr-secondary-200);text-underline-offset:.25em}:focus-visible{outline:.18rem solid var(--clr-focus);outline-offset:.22rem}::-webkit-scrollbar{width:.45rem;height:.45rem;display:block}::-webkit-scrollbar-track{background:var(--clr-primary-400)}::-webkit-scrollbar-thumb{background:var(--clr-secondary-400);border-radius:100vh}::-webkit-scrollbar-corner{background:var(--clr-secondary-400)}}@layer utilities{.shell{width:min(calc(100% - var(--content-gutter) - var(--content-gutter)), var(--content-wide));max-width:calc(100vw - var(--content-gutter) - var(--content-gutter));margin-inline:auto}.eyebrow{color:var(--clr-secondary-200);font-family:var(--ff-mono);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.btn:hover,.btn:focus-visible{transform:none}}@media (forced-colors:active){.btn{border:1px solid buttontext}}
