@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/ibm-plex/sans-latin-variable.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex/mono-latin-regular.woff2) format("woff2")}:root{color-scheme:light;--paper: #eee9d9;--surface: #f7f3e7;--ink: #253d31;--muted: #586052;--rule: #d7d3bf;--accent: #526544;--gold: #c6aa68;--forest: #172c24;--rail: #e9e6d5;--gutter: 2.5rem;--section-rail: 13.5rem;--font-text: "IBM Plex Sans", sans-serif;--font-detail: "IBM Plex Mono", monospace;--font-display: "Palatino Linotype", "Book Antiqua", Palatino, Georgia, serif;font:16px/1.75 var(--font-text);background:var(--forest);color:var(--ink);-webkit-font-smoothing:antialiased;scroll-behavior:smooth;scroll-padding-top:1.5rem}*{box-sizing:border-box}body{margin:0;background:url(/textures/canvas.svg) var(--forest)}::selection{background:#d6c58e;color:#172c24}a{color:var(--accent);text-underline-offset:.25em;text-decoration-thickness:1px}a:hover{color:var(--ink)}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:5px}h1,h2,h3,p,ul,dl,dd{margin:0}button{font:inherit}.skip-link{position:absolute;z-index:10;top:.5rem;left:1rem;padding:.5rem 1rem;background:var(--surface);transform:translateY(-150%)}.skip-link:focus{transform:none}.site-nav{max-width:72rem;margin:auto;padding:1.8rem 2rem;display:flex;align-items:center;justify-content:space-between;gap:2rem}.site-nav a{text-decoration:none;color:#e6e3cc}.site-nav a:hover{color:#d9bd7d}.site-brand{font-family:var(--font-display);font-size:1.35rem;letter-spacing:.04em;white-space:nowrap}.crest{color:var(--gold);margin-right:.5rem}.brand-detail{margin-left:.8rem;color:#9fae97;font:.72rem var(--font-detail);letter-spacing:0}.site-nav>div{display:flex;gap:2rem;font-size:.8rem}.site-nav>div a:last-child{color:#dcc388}.resume{max-width:68rem;margin:0 auto;background:url(/textures/paper.svg) var(--surface);box-shadow:0 14px 65px #061c222b;border:1px solid #c2b98e;overflow-wrap:anywhere}.resume-header{display:grid;position:relative;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:2rem;padding:5.8rem var(--gutter) 3.2rem;background:url(/textures/paper.svg) var(--paper);border-bottom:4px double #bcb897}.resume-header:before{content:"";position:absolute;inset:.65rem;border:1px solid #c8c2a2;pointer-events:none}.hero-emblem{position:absolute;width:6.3rem;right:3.3rem;top:2.2rem;color:#9a854e;opacity:.65}.hero-emblem svg{display:block;width:100%}.hero-kicker{color:#687258;font:.69rem var(--font-detail);letter-spacing:.035em;margin-bottom:1.25rem}h1{font:400 clamp(3.1rem,6vw,5.25rem)/1.02 var(--font-display);letter-spacing:-.065em;max-width:11ch}.headline{color:var(--muted);font-size:1rem;line-height:1.7;margin-top:1.25rem}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1.5rem;margin-top:1.8rem;font-size:.8rem}.quest-button{display:inline-flex;align-items:center;gap:.75rem;padding:.65rem 1.1rem;border:1px solid #3c573d;outline:1px solid #657453;outline-offset:3px;background:#304c37;color:#f5edcf;text-decoration:none;box-shadow:2px 3px #a4a588}.quest-button:hover{background:#405f42;color:#fff}.quest-button span{color:#d5bb77}.quiet-link{text-decoration-color:#92967b}.contact{padding-bottom:.2rem;color:var(--muted);font-size:.7rem}.contact-line{display:flex;align-items:center;gap:.45rem;width:fit-content}.contact-line .resume-icon{width:13px;height:13px}.email{margin-top:.35rem}.resume-icon{flex-shrink:0}.resume-icon.external-link-icon{width:14px;height:14px;vertical-align:-.15em}.profile-links{display:flex;gap:1rem;list-style:none;padding:0;margin-top:.65rem}.profile-links a,.project-list a{display:inline-flex;align-items:center;gap:.25rem}.profile-links .resume-icon,.project-list .resume-icon{width:13px;height:13px}.resume-section{display:grid;grid-template-columns:var(--section-rail) minmax(0,1fr);border-bottom:1px solid var(--rule)}.resume-section>h2{display:flex;align-items:baseline;gap:.65rem;padding:2.5rem 1rem 2.5rem var(--gutter);color:#5a6549;font:400 1.15rem/1.4 var(--font-display)}.resume-section>h2 .resume-icon{width:17px;height:17px;transform:translateY(3px)}.section-content{padding:2.5rem var(--gutter) 2.5rem 1.5rem;color:var(--muted);font-size:.9rem}.summary p+p{margin-top:.8rem}.summary p,.accomplishments,.project-list p,.skills-list dd{max-width:76ch}h3{font:600 1rem/1.5 var(--font-text);color:var(--ink)}.entry-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem 1rem}.date{font:.67rem/1.75 var(--font-detail);color:#6e735e;font-variant-numeric:tabular-nums}.employer{display:flex;flex-wrap:wrap;gap:.3rem .75rem;margin-top:.35rem;font-size:.8rem}.employer strong{color:#526544;font-weight:500}.employer span{border-left:1px solid var(--rule);padding-left:.75rem}.accomplishments{padding-left:1rem;margin-top:1rem;list-style-type:square}.accomplishments li{padding-left:.3rem}.accomplishments li+li{margin-top:.6rem}.accomplishments li::marker{color:#9d9e72;font-size:.65em}.role+.role{border-top:1px solid var(--rule);padding-top:1.75rem;margin-top:1.75rem}.project-list{list-style:none;padding:0}.project-list h3{font:400 1.45rem/1.4 var(--font-display)}.project-list a{color:#3e5839}.project-list p{margin-top:.5rem}.project-list li+li{border-top:1px dashed #c9c8af;margin-top:1.5rem;padding-top:1.5rem}.skills-list>div+div{margin-top:1.15rem}.skills-list dt{color:#4b5c41;font-size:.8rem;font-weight:600}.skills-list dd{margin-top:.25rem}.education>p{margin-top:.5rem}.education .emphasis{margin-top:.2rem;font-size:.8rem}.machine-summary{padding-inline:var(--gutter);background:#e9e6d5}.machine-summary>summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:.85rem;color:#6b725a;font:.65rem/1.75 var(--font-detail);list-style:none;cursor:pointer}.machine-summary>summary::-webkit-details-marker{display:none}.machine-summary>summary .resume-icon{width:14px;height:14px}.machine-summary[open]>summary .resume-icon{transform:rotate(90deg)}.machine-summary dl{padding-bottom:1rem;color:var(--muted);font-size:.8rem}.machine-summary dl>div{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:.3rem 1rem;padding:.6rem 0;border-top:1px solid #d6d3bd}.machine-summary dt{font-weight:600}.world-footer{color:#e5e2c8}.farewell{text-align:center;padding:4rem 1.5rem 2.8rem}.farewell>span{color:#b9a366;font-size:1.5rem}.farewell p{margin:.6rem 0 1rem;font:400 clamp(2rem,4vw,3rem)/1.15 var(--font-display);letter-spacing:-.025em}.farewell em{font-weight:400;color:#c8bd8d}.farewell a{color:#b1bda4;font-size:.8rem}.footer-colophon{max-width:72rem;margin:auto;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.75rem 2rem;padding:1.5rem 2rem;font:.6rem/1.75 var(--font-detail);color:#a2af96}.footer-colophon a{color:#c7c5a4}@media(min-width:1500px){.site-nav{padding-block:2.3rem}}@media(max-width:1100px){.resume{margin-inline:1.5rem}.brand-detail{display:none}.hero-emblem{width:5rem;top:2rem}.resume-header{padding-top:4rem}}@media(max-width:850px){:root{--gutter: 1.75rem;--section-rail: 11.5rem}.resume-header{grid-template-columns:1fr;gap:1.5rem}h1{max-width:none;font-size:clamp(2.6rem,8vw,4rem)}.hero-emblem{right:2rem;top:1.5rem;width:3rem}.contact{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1.5rem}.email,.profile-links{margin-top:0}.section-content{padding-left:.75rem}}@media(max-width:600px){:root{--gutter: 1.4rem;scroll-padding-top:.5rem}.site-nav{padding:1.1rem 1.25rem;gap:1rem}.site-nav>div{gap:1rem;font-size:.7rem}.site-brand{font-size:1.1rem}.resume{margin-inline:.75rem}.resume-header{padding:4rem var(--gutter) 2rem}.hero-kicker{font-size:.56rem;max-width:28ch}.hero-emblem{width:2.5rem;right:1.5rem;top:1.5rem}h1{max-width:10ch;font-size:3.6rem}.headline{font-size:.88rem}.hero-actions{gap:1.25rem;font-size:.72rem}.contact{gap:.5rem 1rem;font-size:.65rem}.resume-section{grid-template-columns:1fr}.resume-section>h2{padding:1.5rem var(--gutter) 0;font-size:1.3rem}.section-content{padding:1rem var(--gutter) 1.75rem;font-size:.85rem}.date{font-size:.63rem}.machine-summary dl>div{grid-template-columns:1fr}.farewell{padding-block:3rem 2rem}.footer-colophon{padding-inline:1.25rem;flex-direction:column;text-align:center;gap:.4rem}}@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}}@media print{:root{background:#fff;color:#000;font-size:10pt;line-height:1.4;--gutter: 0;--ink: #000;--muted: #000;--accent: #000}body,.resume{background:#fff}.site-nav,.world-footer,.hero-emblem,.hero-kicker,.hero-actions,.machine-summary,.skip-link,.resume-icon{display:none}.resume{max-width:none;margin:0;border:0;box-shadow:none}.resume-header{display:block;padding:0 0 1rem;background:none;border-bottom:1px solid #bbb}.resume-header:before{display:none}h1{max-width:none;font-size:24pt}.headline,.contact{margin-top:.5rem}.profile-links{margin-top:.25rem}.resume-section{display:block}.resume-section>h2{display:block;padding:.75rem 0 .5rem;color:#000}.section-content{padding:0 0 .75rem}.accomplishments li+li{margin-top:.3rem}.role+.role,.project-list li+li{padding-top:.75rem;margin-top:.75rem}h1,h2,h3,.entry-heading,.employer{break-after:avoid}li,.education,.skills-list>div{break-inside:avoid}}.field-mural[data-astro-cid-g475qmvz]{--sky-top: #82b7b4;--sky-bottom: #d5d8a6;--sun: #f6e2a4;--cloud: #e6e8ca;--mountain-back: #849e91;--mountain-snow: #c7d1b2;--mountain-front: #617f71;--field-back: #7e9461;--grass: #7c904b;--grass-shadow: #65793f;--grass-detail: #b1b96d;--tree-dark: #2d503b;--tree-mid: #456943;--tree-light: #61844e;--tree-spark: #849458;--bark: #4e5940;--bark-light: #7a7950;--castle-shadow: #7b8472;--castle-light: #c0bda0;--castle-roof: #536e63;--water-light: #92b8a4;--water-dark: #537d70;--water-shine: #d3d9ad;--river-bank: #a0a16a;--path: #bbb17c;--path-light: #d0c28e;--stone-shadow: #637461;--stone-light: #a0aa86;--flower: #e8d398;--foreground: #284b36;position:relative;overflow:hidden;background:var(--sky-top);border-top:1px solid #b1b58c}.field-mural[data-astro-cid-g475qmvz][data-world=dawn]{--sky-top: #a899b0;--sky-bottom: #e6c79e;--sun: #ffe5b4;--cloud: #e7cdbd;--mountain-back: #9a96a5;--mountain-snow: #c9bec1;--mountain-front: #747c86;--field-back: #78886b;--grass: #7b8753;--grass-shadow: #677545;--water-light: #bdafaa;--water-dark: #798b86}.field-mural[data-astro-cid-g475qmvz][data-world=dusk]{--sky-top: #827b9a;--sky-bottom: #e7b181;--sun: #f6d09b;--cloud: #d3a69e;--mountain-back: #8b7e96;--mountain-snow: #bcadb5;--mountain-front: #646778;--field-back: #687963;--grass: #697948;--grass-shadow: #53663e;--tree-light: #5d7750;--tree-mid: #415d42;--water-light: #b5a195;--water-dark: #6e7b7a;--water-shine: #d4b6a0;--castle-light: #b5ab92}.field-mural[data-astro-cid-g475qmvz][data-world=night]{--sky-top: #172c42;--sky-bottom: #516875;--sun: #e1dfba;--cloud: #748588;--mountain-back: #3d5667;--mountain-snow: #758389;--mountain-front: #2d4b57;--field-back: #3d5d52;--grass: #385d44;--grass-shadow: #2c4f3b;--grass-detail: #688264;--tree-dark: #193a32;--tree-mid: #254b3b;--tree-light: #3d6149;--tree-spark: #587357;--bark: #2d4037;--bark-light: #52614c;--castle-shadow: #41595b;--castle-light: #7c8b7d;--castle-roof: #2d494c;--water-light: #728f8b;--water-dark: #3c6363;--water-shine: #a0b4a4;--river-bank: #637951;--path: #7d8660;--path-light: #9c9e76;--stone-shadow: #496154;--stone-light: #81917b;--flower: #c0bc8d;--foreground: #18392e}.pixel-world[data-astro-cid-g475qmvz]{display:block;width:100%;height:auto;min-height:260px;max-height:600px;object-fit:cover}.world-caption[data-astro-cid-g475qmvz]{display:flex;align-items:center;justify-content:space-between;gap:1rem;position:absolute;z-index:1;top:1.1rem;left:2rem;right:2rem;color:#233f36;font:.6rem/1.5 var(--font-detail)}.world-caption[data-astro-cid-g475qmvz]>div[data-astro-cid-g475qmvz]{display:flex;align-items:center;gap:.6rem}.world-caption[data-astro-cid-g475qmvz] time[data-astro-cid-g475qmvz]{opacity:.8}.world-indicator[data-astro-cid-g475qmvz]{width:5px;height:5px;background:currentColor;box-shadow:0 0 0 3px #ecedcb30}.motion-toggle[data-astro-cid-g475qmvz]{color:inherit;font:inherit;padding:.4rem .6rem;background:#f5efcd85;border:1px solid #516c5966;cursor:pointer}.motion-toggle[data-astro-cid-g475qmvz]:hover{background:#f5efcdbb}[data-astro-cid-g475qmvz][data-world=night] .world-caption[data-astro-cid-g475qmvz]{color:#e1dfbf}[data-astro-cid-g475qmvz][data-world=night] .motion-toggle[data-astro-cid-g475qmvz]{background:#172c4266;border-color:#d6d6bc66}.world-note[data-astro-cid-g475qmvz]{position:absolute;bottom:1.1rem;left:1rem;right:1rem;text-align:center;font:.6rem/1.5 var(--font-detail);color:#f0e7c4;text-shadow:0 1px 3px #142d28}.world-discoveries[data-astro-cid-g475qmvz]{position:absolute;z-index:1;top:3.6rem;left:2rem;display:flex;align-items:center;gap:.5rem;font:.53rem/1.5 var(--font-detail);color:#2c4b3d}.world-discoveries[data-astro-cid-g475qmvz]>span[data-astro-cid-g475qmvz]:first-child{color:#3a644c;font-size:.9rem}[data-astro-cid-g475qmvz][data-world=night] .world-discoveries[data-astro-cid-g475qmvz]{color:#d1d8b1}[data-astro-cid-g475qmvz][data-world=night] .world-discoveries[data-astro-cid-g475qmvz]>span[data-astro-cid-g475qmvz]:first-child{color:#c3d39a}.scene-interactions[data-astro-cid-g475qmvz]{position:absolute;inset:0;pointer-events:none}.scene-secret[data-astro-cid-g475qmvz]{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;border:0;padding:0;background:transparent;color:#ede9bd;cursor:pointer;pointer-events:auto;width:5%;min-width:44px;min-height:44px;aspect-ratio:1}.scene-secret[data-astro-cid-g475qmvz]>svg[data-astro-cid-g475qmvz]{width:80%;height:auto;overflow:visible;filter:drop-shadow(1px 2px 0 #15342b66)}.secret-fairy[data-astro-cid-g475qmvz]{left:49%;top:53%}.secret-fairy[data-astro-cid-g475qmvz]>svg[data-astro-cid-g475qmvz]{width:58%;filter:drop-shadow(0 0 5px #f1f2ac66);animation:fairy-hover 3s steps(6) infinite alternate}.secret-sword[data-astro-cid-g475qmvz]{left:64.7%;top:78%}.secret-chest[data-astro-cid-g475qmvz]{left:81%;top:85%}.secret-label[data-astro-cid-g475qmvz]{position:absolute;bottom:100%;left:50%;transform:translate(-50%);white-space:nowrap;padding:.35rem .5rem;background:#16352de6;border:1px solid #afa474;font:.53rem/1.5 var(--font-detail);opacity:0;pointer-events:none}.scene-secret[data-astro-cid-g475qmvz]:hover .secret-label[data-astro-cid-g475qmvz],.scene-secret[data-astro-cid-g475qmvz]:focus-visible .secret-label[data-astro-cid-g475qmvz]{opacity:1}.scene-secret[data-astro-cid-g475qmvz][data-found] .secret-label[data-astro-cid-g475qmvz]:before{content:"✓ ";color:#cad79f}.scene-secret[data-astro-cid-g475qmvz][data-found].secret-chest svg[data-astro-cid-g475qmvz]{transform:rotate(-4deg);filter:drop-shadow(0 -3px 5px #e9d59866)}.scene-message[data-astro-cid-g475qmvz]{display:flex;align-items:flex-start;gap:1rem;position:absolute;z-index:2;bottom:3.3rem;left:50%;transform:translate(-50%);width:min(420px,calc(100% - 2rem));padding:.85rem 1rem;border:1px solid #d9c695;outline:2px solid #1c392e;background:#17372ef0;box-shadow:4px 4px #0f251b88;color:#eee7c4}.scene-message[data-astro-cid-g475qmvz] p[data-astro-cid-g475qmvz]{font:.68rem/1.8 var(--font-text)}.scene-message[data-astro-cid-g475qmvz] button[data-astro-cid-g475qmvz]{border:0;padding:.1rem .4rem;margin-left:auto;background:transparent;color:#d5c38e;font-size:1rem;cursor:pointer}.field-mural[data-astro-cid-g475qmvz][data-paused] .secret-fairy[data-astro-cid-g475qmvz]>svg[data-astro-cid-g475qmvz]{animation-play-state:paused}@keyframes fairy-hover{to{transform:translateY(-5px)}}@media(max-width:600px){.scene-interactions[data-astro-cid-g475qmvz]{width:180%;left:-40%;right:auto}.secret-chest[data-astro-cid-g475qmvz]{left:73%}.world-discoveries[data-astro-cid-g475qmvz]{top:2.7rem;left:1rem;font-size:.45rem}.scene-message[data-astro-cid-g475qmvz]{padding:.65rem .8rem;bottom:2.3rem}.scene-message[data-astro-cid-g475qmvz] p[data-astro-cid-g475qmvz]{font-size:.62rem}}@media(prefers-reduced-motion:reduce){.secret-fairy[data-astro-cid-g475qmvz]>svg[data-astro-cid-g475qmvz]{animation:none}}.celestial-body[data-astro-cid-g475qmvz]{transform:translate(var(--sun-x, 460px),var(--sun-y, 46px))}.moon-shadow[data-astro-cid-g475qmvz],.world-stars[data-astro-cid-g475qmvz],.world-fireflies[data-astro-cid-g475qmvz]{opacity:0}[data-astro-cid-g475qmvz][data-world=night] .moon-shadow[data-astro-cid-g475qmvz],[data-astro-cid-g475qmvz][data-world=night] .world-stars[data-astro-cid-g475qmvz],[data-astro-cid-g475qmvz][data-world=night] .world-fireflies[data-astro-cid-g475qmvz],[data-astro-cid-g475qmvz][data-world=dusk] .world-fireflies[data-astro-cid-g475qmvz]{opacity:1}.cloud-one[data-astro-cid-g475qmvz]{animation:drift 40s ease-in-out infinite alternate}.cloud-two[data-astro-cid-g475qmvz]{animation:drift 55s ease-in-out -20s infinite alternate-reverse}.water-ripples[data-astro-cid-g475qmvz]{animation:shimmer 4s steps(4) infinite alternate}.castle-flag[data-astro-cid-g475qmvz]{animation:flag 2s steps(2) infinite;transform-origin:2px -21px}.world-stars[data-astro-cid-g475qmvz] rect[data-astro-cid-g475qmvz]{animation:twinkle 5s steps(3) var(--delay) infinite alternate}.world-fireflies[data-astro-cid-g475qmvz] rect[data-astro-cid-g475qmvz]{animation:firefly 6s steps(6) var(--delay) infinite}.field-mural[data-astro-cid-g475qmvz][data-paused] [data-astro-cid-g475qmvz]:is(.cloud,.water-ripples,.castle-flag,.world-stars rect,.world-fireflies rect){animation-play-state:paused}@keyframes drift{to{transform:translate(22px)}}@keyframes shimmer{to{opacity:.35;transform:translate(2px)}}@keyframes flag{50%{transform:scaleY(.7)}}@keyframes twinkle{to{opacity:.25}}@keyframes firefly{0%,to{opacity:0;transform:translate(0)}35%{opacity:1}75%{opacity:.7;transform:translate(4px,-6px)}}@media(max-width:600px){.pixel-world[data-astro-cid-g475qmvz]{width:180%;max-width:none;margin-left:-40%;min-height:240px}.world-caption[data-astro-cid-g475qmvz]{top:.75rem;left:1rem;right:1rem;font-size:.52rem}.world-caption[data-astro-cid-g475qmvz]>div[data-astro-cid-g475qmvz]{gap:.4rem}.world-caption[data-astro-cid-g475qmvz] time[data-astro-cid-g475qmvz]{display:none}.world-note[data-astro-cid-g475qmvz]{font-size:.5rem;bottom:.75rem}}@media(prefers-reduced-motion:reduce){.field-mural[data-astro-cid-g475qmvz] [data-astro-cid-g475qmvz]:is(.cloud,.water-ripples,.castle-flag,.world-stars rect,.world-fireflies rect){animation:none}}
