:root{color-scheme:light;--bg:#f4ede6;--bg-raised:#fbf6f1;--ink:#3b3a46;--ink-muted:#6c6560;--rust:#9a4232;--turquoise:#2c6b78;--brass:#bca179;--font-name:"Rye", "Bookman Old Style", Georgia, serif;--font-display:"Bevan", "Bookman Old Style", Georgia, serif;--font-body:"Newsreader", Georgia, "Times New Roman", serif;--font-data:"Archivo Narrow", "Helvetica Neue", Arial, sans-serif;--t-hero:clamp(2.25rem, min(calc((100vw - 2 * var(--bleed)) / 8.8), 20vh), 15rem);--t-name:44px;--t-name-sm:32px;--t-h2:27px;--t-h3:21px;--t-feature:34px;--t-body:17px;--t-small:15px;--t-data:14px;--lh-body:1.65;--lh-tight:1.25;--ls-name:.01em;--ls-data:.02em;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:40px;--s-7:64px;--s-8:96px;--wordmark-ratio:8.2793;--col:760px;--col-editorial:1040px;--section-rail:192px;--date-col:120px;--skill-col:112px;--touch-target:44px;--pad:24px;--pad-sm:20px;--bleed:24px;--measure:34em;--header-h:88px;--rule:1px;--focus-width:2px;--focus-offset:3px;--icon:18px;--star:10px;--icon-sun:none;--icon-moon:block;--navlinks-opacity:1;--navlinks-visibility:visible;--horizon-opacity:.8;--ridge-height:64px;--horizon-mid-height:104px;--horizon-near-height:148px;--horizon-mid:20vh;--horizon-near:10vh;--dur-name:.4s;--delay-links:.12s;--dur-toggle:.15s;--dur-turn:.28s;--dur-turn-in:.32s;--delay-turn:60ms;--shift-turn:32px;--dur-folio:.22s}@media (width>=640px){:root{--bleed:40px}}:root[data-scrolled=false]{--navlinks-opacity:0;--navlinks-visibility:hidden}[data-theme=dark]{color-scheme:dark;--bg:#171a21;--bg-raised:#1f232c;--ink:#e8e1d0;--ink-muted:#918c7b;--rust:#df684c;--turquoise:#4fa9b4;--brass:#c9a961;--icon-sun:block;--icon-moon:none}:root[data-theme=dark]{--horizon-opacity:.4}@font-face{font-family:Rye;src:url(/fonts/rye-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Bevan;src:url(/fonts/bevan-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Newsreader;src:url(/fonts/newsreader-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Archivo Narrow;src:url(/fonts/archivo-narrow-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--bg)}body{color:var(--ink);font-family:var(--font-body);font-size:var(--t-body);line-height:var(--lh-body);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}svg{display:block}:focus-visible{outline:var(--focus-width) solid var(--turquoise);outline-offset:var(--focus-offset)}.skip{z-index:20;padding:var(--s-2) var(--s-3);background:var(--bg-raised);color:var(--ink);font-family:var(--font-data);font-size:var(--t-data);position:absolute;inset-block-start:var(--s-2);inset-inline-start:var(--s-2);transform:translateY(-200%)}.skip:focus-visible{transform:translateY(0)}.shell{max-inline-size:var(--col);padding-inline:var(--pad-sm);margin-inline:0}.bleed{inline-size:100%;padding-inline:var(--bleed)}.header{z-index:10;background:var(--bg);position:sticky;inset-block-start:0}.header-inner{padding-block:var(--s-1);flex-direction:column;gap:0;display:flex}.header-row{justify-content:space-between;align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.header-mark{min-block-size:var(--touch-target);font-family:var(--font-name);font-size:var(--t-h3);line-height:var(--lh-tight);letter-spacing:var(--ls-name);color:var(--ink);align-items:center;text-decoration:none;display:inline-flex}.header-mark:hover{color:var(--rust)}.sections-nav{align-items:center;gap:var(--s-3);min-inline-size:0;max-inline-size:100%;padding:var(--s-1);scrollbar-width:none;display:flex;overflow-x:auto}.section-link{min-block-size:var(--touch-target);padding-inline:var(--s-1);font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);color:var(--ink-muted);text-underline-offset:var(--s-1);white-space:nowrap;align-items:center;text-decoration:none;display:inline-flex}.section-link:hover{color:var(--ink)}.section-link[aria-current]{color:var(--rust);text-decoration-line:underline;text-decoration-thickness:var(--focus-width)}.folio{font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);color:var(--ink-muted);font-variant-numeric:tabular-nums;flex:none;display:none}.header-progress{block-size:var(--rule);background:var(--brass);transform-origin:0;transform:scaleX(1)}@supports (animation-timeline:scroll()){.header-progress{animation:linear both progress scroll(root)}}@keyframes progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.hero{gap:var(--s-4);min-block-size:calc(100vh - var(--header-h) - var(--s-7));min-block-size:calc(100svh - var(--header-h) - var(--s-7));padding-block:var(--s-5);animation:fade var(--dur-name) ease-out both;flex-direction:column;display:flex;position:relative}.hero-name{line-height:0}.hero-wordmark{inline-size:calc(var(--t-hero) * var(--wordmark-ratio));block-size:auto;max-inline-size:100%;color:var(--ink)}.hero-role{font-family:var(--font-data);font-size:var(--t-h3);letter-spacing:var(--ls-data);color:var(--rust);line-height:var(--lh-tight)}.hero-role-sep{color:var(--ink-muted)}.hero-intro{gap:var(--s-2);flex-direction:column;display:flex}.hero-tagline{max-inline-size:var(--measure);font-size:var(--t-body)}.hero-body{gap:var(--s-5);flex-direction:column;margin-block:auto;display:flex}.hero-foot{gap:var(--s-3);flex-direction:column;display:flex}.hero-explore{align-self:flex-start;align-items:center;gap:var(--s-5);min-block-size:var(--touch-target);font-family:var(--font-data);font-size:var(--t-body);color:var(--rust);text-decoration-thickness:var(--rule);text-underline-offset:var(--s-2);display:inline-flex}.hero-explore:hover{color:var(--ink)}.ridgeline{inline-size:100%;block-size:var(--ridge-height);stroke:var(--brass);fill:none;display:block}.horizons{z-index:-1;pointer-events:none;opacity:var(--horizon-opacity);position:absolute;inset:0;overflow:clip}.horizon{position:absolute;inset-inline:0}.horizon-mid{block-size:var(--horizon-mid-height);inset-block-end:22%}.horizon-near{block-size:var(--horizon-near-height);inset-block-end:0}@supports (animation-timeline:scroll()){.horizon-mid,.horizon-near{animation:linear both drift scroll(root);animation-range:0 100vh}.horizon-mid{--drift:var(--horizon-mid)}.horizon-near{--drift:var(--horizon-near)}}@keyframes drift{0%{translate:0}to{translate:0 var(--drift)}}.hero-links{align-items:baseline;gap:var(--s-2) var(--s-5);font-family:var(--font-data);font-size:var(--t-h3);letter-spacing:var(--ls-data);animation:fade var(--dur-name) ease-out var(--delay-links) both;flex-wrap:wrap;display:flex}.hero-resume{min-block-size:var(--touch-target);color:var(--rust);text-underline-offset:var(--s-1);align-items:center;display:inline-flex}.hero-link{align-items:center;gap:var(--s-1);min-block-size:var(--touch-target);color:var(--ink);text-decoration-color:var(--brass);text-underline-offset:var(--s-1);display:inline-flex}.hero-link:hover{color:var(--rust)}.nav{justify-content:flex-end;align-items:center;gap:var(--s-2);min-inline-size:0;animation:fade var(--dur-name) ease-out var(--delay-links) both;flex:1;display:flex}.nav-links{justify-content:flex-end;align-items:center;gap:0 var(--s-3);opacity:var(--navlinks-opacity);visibility:var(--navlinks-visibility);transition:opacity var(--dur-toggle) ease, visibility var(--dur-toggle);flex-wrap:wrap;display:flex}.nav-link{align-items:center;gap:var(--s-1);min-block-size:var(--touch-target);font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);color:var(--ink);text-decoration-color:var(--brass);text-underline-offset:var(--s-1);display:inline-flex}.nav-link:hover,.nav-todo{color:var(--rust)}.toggle{min-inline-size:var(--touch-target);min-block-size:var(--touch-target);color:var(--ink-muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex}.toggle:hover{color:var(--rust)}.toggle-icon{inline-size:var(--icon);block-size:var(--icon);transition:opacity var(--dur-toggle) ease}.main{padding-block-end:var(--s-8)}.sections-wrap{padding-block-start:var(--s-6)}.section-page{padding-block-start:var(--s-7)}.back{font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);padding-block-start:var(--s-7)}.sections{gap:var(--s-8);flex-direction:column;display:flex}.section{gap:var(--s-5);flex-direction:column;scroll-margin-block-start:calc(var(--header-h) + var(--s-4));display:flex}.section-body{overflow-wrap:anywhere;min-inline-size:0}.section-head{z-index:1;gap:var(--s-1);padding-block:var(--s-2);background:var(--bg);flex-direction:column;display:flex;position:sticky;inset-block-start:var(--header-h)}.section-index{font-family:var(--font-data);font-size:var(--t-data);color:var(--rust);font-variant-numeric:tabular-nums}.section-name{font-family:var(--font-display);font-size:var(--t-h2);font-weight:400;line-height:var(--lh-tight)}.section-label{font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);color:var(--ink-muted)}.divider{align-items:center;gap:var(--s-4);display:flex}.divider-line{block-size:var(--rule);background:var(--brass);flex:1}.divider-star{inline-size:var(--star);block-size:var(--star);fill:var(--brass)}.prose{max-inline-size:var(--measure)}.prose-link{color:var(--rust);text-underline-offset:var(--s-1)}.prose-link:visited{color:var(--turquoise)}.rows{gap:var(--s-6);flex-direction:column;display:flex}.row{gap:var(--s-2);padding-inline:var(--s-3);margin-inline:calc(var(--s-3) * -1);flex-direction:column;display:flex}.row:focus-within{background:var(--bg-raised)}.row+.row{border-block-start:var(--rule) solid var(--brass);padding-block-start:var(--s-6)}.row-head{gap:var(--s-1);flex-direction:column;display:flex}.row-title{font-family:var(--font-display);font-size:var(--t-h3);font-weight:400;line-height:var(--lh-tight)}.row-meta{font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);color:var(--ink-muted)}.row-text{max-inline-size:var(--measure)}.row-reward{font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);color:var(--rust)}.row-links{gap:var(--s-4);font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);flex-wrap:wrap;display:flex}.row-link{min-block-size:var(--touch-target);color:var(--rust);text-underline-offset:var(--s-1);align-items:center;display:inline-flex}.row-link:visited{color:var(--turquoise)}.bullets{gap:var(--s-2);max-inline-size:var(--measure);flex-direction:column;padding-inline-start:var(--s-4);list-style:outside;display:flex}.project-featured{gap:var(--s-5);padding-block-end:var(--s-4)}.project-eyebrow{font-family:var(--font-data);font-size:var(--t-data);color:var(--rust);letter-spacing:var(--ls-data)}.project-featured-title{font-size:var(--t-feature)}.project-details{gap:var(--s-5);border-inline-start:var(--rule) solid var(--brass);flex-direction:column;padding-inline-start:var(--s-5);display:flex}.project-detail{gap:var(--s-1);flex-direction:column;display:flex}.project-detail-label{font-family:var(--font-data);font-size:var(--t-data);color:var(--ink-muted)}.project-outcome{color:var(--rust)}.experience-body{gap:var(--s-3);flex-direction:column;min-inline-size:0;display:flex}.experience-dates{font-family:var(--font-data);font-size:var(--t-data);color:var(--ink-muted);font-variant-numeric:tabular-nums}.experience-role{font-family:var(--font-data);font-size:var(--t-body);color:var(--rust)}.skills{flex-direction:column;gap:0;display:flex}.skill-group{gap:var(--s-3);padding-block:var(--s-5);border-block-end:var(--rule) solid var(--brass);display:grid}.skill-group:first-child{padding-block-start:0}.skill-label{font-family:var(--font-data);font-size:var(--t-h3);letter-spacing:var(--ls-data);color:var(--ink)}.skill-list{gap:var(--s-2) var(--s-5);flex-wrap:wrap;display:flex}.skill-item{min-inline-size:0}.contact{gap:var(--s-5);max-inline-size:var(--measure);flex-direction:column;display:flex}.contact-invitation{font-size:var(--t-feature);line-height:var(--lh-tight)}.contact-email{max-inline-size:100%;min-block-size:var(--touch-target);font-size:var(--t-h3);color:var(--rust);text-decoration-thickness:var(--rule);text-underline-offset:var(--s-2);overflow-wrap:anywhere;align-self:flex-start}.contact-links{gap:var(--s-4);font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);flex-wrap:wrap;display:flex}.footer{border-block-start:var(--rule) solid var(--brass);padding-block:var(--s-5);font-family:var(--font-data);font-size:var(--t-data);letter-spacing:var(--ls-data);color:var(--ink-muted)}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.hero,.hero-links,.nav{opacity:1;animation:none}.header-progress{animation:none;transform:scaleX(1)}.horizon-mid,.horizon-near{animation:none;translate:0}.nav-links,.toggle-icon{transition:none}}@view-transition{navigation:auto}.header{view-transition-name:header}.footer{view-transition-name:footer}.folio{view-transition-name:folio}.page-head{view-transition-name:section-head}.page-body{view-transition-name:section-body}@keyframes turn-out{to{opacity:0;translate:calc(-1 * var(--shift-turn)) 0}}@keyframes turn-in{0%{opacity:0;translate:var(--shift-turn) 0}}::view-transition-old(section-body){animation:turn-out var(--dur-turn) cubic-bezier(.4, 0, 1, 1) both}::view-transition-new(section-body){animation:turn-in var(--dur-turn-in) var(--delay-turn) cubic-bezier(0, 0, .2, 1) both}::view-transition-group(section-head),::view-transition-old(section-head),::view-transition-new(section-head){animation-duration:var(--dur-turn)}@keyframes folio-out{to{opacity:0;translate:0 calc(-1 * var(--s-3))}}@keyframes folio-in{0%{opacity:0;translate:0 var(--s-3)}}::view-transition-old(folio){animation:folio-out var(--dur-folio) ease-in both}::view-transition-new(folio){animation:folio-in var(--dur-folio) ease-out both}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}@media (width>=640px){.folio{display:block}.shell{padding-inline:var(--pad)}.hero-role{font-size:var(--t-h2)}.hero-tagline{font-size:var(--t-h3)}.row-head{justify-content:space-between;align-items:baseline;gap:var(--s-4);flex-direction:row}.project-featured-head{gap:var(--s-2);flex-direction:column}.experience-row{grid-template-columns:var(--date-col) minmax(0, 1fr);gap:var(--s-5);align-items:start;display:grid}.skill-group{grid-template-columns:var(--skill-col) minmax(0, 1fr);gap:var(--s-5);align-items:baseline}}@media (width>=900px){.shell{max-inline-size:var(--col-editorial);margin-inline:auto}.section{grid-template-columns:var(--section-rail) minmax(0, 1fr);column-gap:var(--s-6);row-gap:var(--s-6);align-items:start;display:grid}.section-divider{grid-column:1/-1}.section-head{gap:var(--s-2);padding-block:0;inset-block-start:calc(var(--header-h) + var(--s-5))}.back{padding-inline-start:calc(var(--section-rail) + var(--s-6))}}.visually-hidden{inline-size:var(--rule);block-size:var(--rule);clip-path:inset(50%);white-space:nowrap;padding:0;position:absolute;overflow:hidden}.toggle-sun{display:var(--icon-sun)}.toggle-moon{display:var(--icon-moon)}
