@font-face{font-family:lekton;src:url(/_next/static/media/4d371da5eda5bbb1-s.p.ttf) format("truetype");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:lekton;src:url(/_next/static/media/e395f9e9b2cca315-s.p.ttf) format("truetype");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:lekton;src:url(/_next/static/media/671bbd3c3fc6f8dc-s.p.ttf) format("truetype");font-display:swap;font-weight:400;font-style:italic}@font-face{font-family:lekton Fallback;src:local("Arial");ascent-override:68.45%;descent-override:22.82%;line-gap-override:0.00%;size-adjust:109.58%}.__className_ccd420{font-family:lekton,lekton Fallback}.__variable_ccd420{--font-lekton:"lekton","lekton Fallback"}:root{color-scheme:light dark;--bg:#f7f3ec;--bg-elevated:#fffdf8;--text:#1c1a17;--text-secondary:#6b645a;--border:rgba(28,26,23,0.16);--rule:rgba(28,26,23,0.28);--accent:#c2410c;--accent-contrast:#fffdf8;--accent-soft:rgba(194,65,12,0.16);--nav-bg:rgba(247,243,236,0.88);--font-sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-display:var(--font-lekton),ui-monospace,"SF Mono",Menlo,Consolas,monospace}@media (prefers-color-scheme:dark){:root{--bg:#161310;--bg-elevated:#1e1a15;--text:#ece5da;--text-secondary:#a39a8d;--border:rgba(236,229,218,0.16);--rule:rgba(236,229,218,0.3);--accent:#fb923c;--accent-contrast:#1c1a17;--accent-soft:rgba(251,146,60,0.2);--nav-bg:rgba(22,19,16,0.88)}}*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:hidden}body{margin:0;overflow-x:clip;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:var(--font-display);font-weight:700;line-height:1.1;letter-spacing:-.01em;margin:0}p{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:.25em}::selection{background:var(--accent);color:var(--accent-contrast)}.dot{color:var(--accent)}mark{background:var(--accent-soft);color:inherit;padding:.05em .2em;border-radius:4px;-webkit-box-decoration-break:clone;box-decoration-break:clone}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}img{max-width:100%;display:block}.container{max-width:58rem;margin:0 auto;padding-inline:1.25rem}.skip-link{position:absolute;left:1rem;top:-3rem;z-index:100;background:var(--accent);color:var(--accent-contrast);padding:.5rem 1rem;border-radius:0 0 8px 8px;transition:top .15s ease}.skip-link:focus{top:0}.mlinks{display:flex;flex-wrap:wrap;gap:1.5rem}.mlink{font-family:var(--font-display);font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);white-space:nowrap}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:var(--nav-bg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:3.5rem}.nav-brand{font-family:var(--font-display);font-weight:700;font-size:1.1rem;color:var(--text);white-space:nowrap}.nav-brand:hover{text-decoration:none;color:var(--accent)}.brand-short{display:none}.nav-links{display:flex;gap:1.4rem;list-style:none;margin:0;padding:0}.nav-links a{font-family:var(--font-display);font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);white-space:nowrap}.nav-links a:hover{color:var(--accent);text-decoration:none}@media (max-width:30rem){.brand-full{display:none}.brand-short{display:inline}.nav-links{gap:1rem}.nav-links a{font-size:.75rem}}.section{padding-block:4.25rem 0;scroll-margin-top:4.25rem}.section-header{display:flex;align-items:baseline;gap:1rem;margin-bottom:1.75rem}.section-index{font-family:var(--font-display);font-weight:700;font-size:.8rem;color:var(--accent);border:1.5px solid var(--accent);border-radius:5px;padding:.05rem .4rem}.section-header h2{font-size:clamp(1.9rem,4.5vw,2.6rem)}.section-rule{flex:1 1;border-top:1px solid var(--rule);transform:translateY(-.35rem)}.hero{display:flex;align-items:flex-start;gap:3.5rem;padding-block:4.5rem .5rem;animation:rise .5s ease both}.hero-text{flex:1 1;min-width:0}.hero h1{font-size:clamp(2.75rem,7vw,4.5rem);margin-bottom:1.25rem}.hero-lede{font-size:1.12rem;color:var(--text-secondary);max-width:34rem;margin-bottom:2rem}.spec{margin:0 0 2rem;max-width:27rem;border-top:1px solid var(--rule)}.spec-row{display:flex;align-items:baseline;gap:1.5rem;padding-block:.55rem;border-bottom:1px solid var(--border)}.spec-row dt{font-family:var(--font-display);font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;color:var(--text-secondary);width:4.5rem;flex-shrink:0}.spec-row dd{margin:0;font-weight:600;font-size:.98rem}.polaroid-wrap{position:relative;margin:.5rem .5rem 0 0;--dir:-1;--flip:1}.polaroid{position:relative;z-index:1;display:block;margin:0;padding:.55rem .55rem .2rem;background:#fffdf8;border:1px solid rgba(28,26,23,.1);border-radius:4px;box-shadow:0 14px 34px rgba(28,26,23,.22);font:inherit;color:inherit;cursor:pointer;rotate:-2.5deg;transition:rotate .35s ease;animation:card-nudge 5s ease-in-out infinite}.polaroid img{width:13rem;height:15.5rem;object-fit:cover;object-position:70% 20%;border-radius:2px;filter:grayscale(1) contrast(1.05);transition:filter .4s ease}.polaroid-caption{display:block;font-family:var(--font-display);font-style:italic;font-size:.82rem;color:#6b645a;text-align:center;padding-block:.45rem .3rem}@media (hover:hover){.polaroid:hover{rotate:0deg}.polaroid:hover img{filter:none}}.is-walking .polaroid{rotate:0deg;animation:none}.is-walking .polaroid img{filter:none}.cat{--cat-ink:var(--text);--cat-face:#fff3e0;--cat-inner:#e9a3b4;--cat-nose:#e98ca6;--cat-shine:#fff8ee;position:absolute;z-index:0;overflow:visible}.cat--black{--cat-fill:#3b332d;--cat-eye-rim:#dff2df}.cat--tortie{--cat-fill:#3b332d;--cat-patch:#fb923c;--cat-eye-rim:#fdeec9}.cat-fur{fill:var(--cat-fill);stroke:var(--cat-ink);stroke-width:2.6;stroke-linejoin:round}.cat--tortie .cat-ear-r,.cat--tortie .cat-sock,.cat-patch{fill:var(--cat-patch)}.cat-tail-outline{fill:none;stroke:var(--cat-ink);stroke-width:11;stroke-linecap:round}.cat-tail-fill{fill:none;stroke:var(--cat-fill);stroke-width:6;stroke-linecap:round}.cat-tail-tip{fill:none;stroke:var(--cat-patch);stroke-width:6;stroke-linecap:round}.cat-inner{fill:var(--cat-inner)}.cat-whiskers{fill:none;stroke:var(--cat-ink);stroke-width:1.8;stroke-linecap:round}.cat-eyes-happy,.cat-face-lines,.cat-toes{fill:none;stroke:var(--cat-face);stroke-linecap:round;stroke-linejoin:round}.cat-face-lines{stroke-width:2.2}.cat-toes{stroke-width:1.6}.cat-eyes-happy{stroke-width:2.8;display:none}.cat-nose{fill:var(--cat-nose)}.cat-eye-rim{fill:var(--cat-eye-rim)}.cat-eye{fill:#1c1a17}.cat-eye-shine{fill:var(--cat-shine)}.cat-body,.cat-eyes-open,.cat-head,.cat-leg,.cat-tail{transform-box:fill-box}.cat-body{transform-origin:50% 100%}.cat-head{transform-origin:50% 85%;animation:cat-tilt 5s ease-in-out infinite}.cat-eyes-open{transform-origin:50% 50%;animation:cat-blink 4s infinite}.cat-leg{transform-origin:50% 0}.cat-tail{transform-origin:0 100%}.cat-side{left:-2rem;animation:cat-peek 5s ease-in-out infinite}.cat-follow,.cat-side{bottom:.4rem;transform:translateX(0) scaleX(var(--flip))}.cat-follow{left:1.6rem}.cat-top{top:-1.1rem;right:2.2rem;animation:cat-pop 5s ease-in-out infinite}.cat-top .cat-head{animation:cat-tilt-top 5s ease-in-out infinite}.cat-top .cat-eyes-open{animation-delay:1.3s}.is-walking .cat-side{animation:cat-walk 4.5s linear forwards}.is-walking .cat-follow{animation:cat-walk-follow 4.5s linear .8s forwards}.is-walking .cat-top{animation:cat-duck .35s ease-in forwards}.is-walking .cat-head{animation:none}.is-walking .cat-eyes-open{display:none}.is-walking .cat-eyes-happy{display:block}.is-walking .cat-body{animation:cat-bob .4s ease-in-out infinite}.is-walking .cat-leg-a{animation:cat-step-a .4s ease-in-out infinite}.is-walking .cat-leg-b{animation:cat-step-b .4s ease-in-out infinite}.is-walking .cat-tail{animation:cat-tail .8s ease-in-out infinite}@keyframes card-nudge{0%,26%,42%,70%,90%,to{transform:none}31%{transform:translateY(-2px) rotate(.6deg)}36%{transform:rotate(-.4deg)}74%{transform:rotate(1.6deg) translate(2px,-1px)}78%{transform:rotate(-1.1deg)}82%{transform:rotate(.7deg)}86%{transform:rotate(-.4deg)}}@keyframes cat-peek{0%,62%,96%,to{transform:translateX(0) scaleX(var(--flip))}70%,88%{transform:translateX(calc(var(--dir) * 1.2rem)) scaleX(var(--flip))}}@keyframes cat-pop{0%,26%,58%,to{transform:translateY(0)}34%,50%{transform:translateY(-1.5rem)}}@keyframes cat-tilt{0%,62%,96%,to{transform:rotate(0deg)}70%,88%{transform:rotate(-9deg)}}@keyframes cat-tilt-top{0%,26%,58%,to{transform:rotate(0deg)}34%,50%{transform:rotate(7deg)}}@keyframes cat-blink{0%,91%,to{transform:scaleY(1)}95%{transform:scaleY(.12)}}@keyframes cat-walk{0%{transform:translateX(0) scaleX(var(--flip))}to{transform:translateX(calc(var(--dir) * 120vw)) scaleX(var(--flip))}}@keyframes cat-walk-follow{0%{transform:translateX(0) scaleX(var(--flip))}to{transform:translateX(calc(var(--dir) * 120vw)) scaleX(var(--flip))}}@keyframes cat-duck{to{transform:translateY(2.5rem)}}@keyframes cat-bob{0%,to{transform:translateY(0) rotate(-1.2deg)}50%{transform:translateY(-2.5px) rotate(1.2deg)}}@keyframes cat-step-a{0%,to{transform:rotate(24deg)}50%{transform:rotate(-24deg)}}@keyframes cat-step-b{0%,to{transform:rotate(-24deg)}50%{transform:rotate(24deg)}}@keyframes cat-tail{0%,to{transform:rotate(-12deg)}50%{transform:rotate(14deg)}}@media (max-width:48rem){.hero{flex-direction:column-reverse;gap:2.25rem;padding-block:3rem 0}.polaroid-wrap{--dir:1;--flip:-1;align-self:flex-start;margin-left:.35rem}.polaroid img{width:10rem;height:12rem}.cat-follow,.cat-side{left:auto;width:104px;height:74px}.cat-side{right:-2rem}.cat-follow{right:1.6rem}.cat-top{right:auto;left:1.6rem;width:54px;height:45px}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.story p{max-width:40rem;margin-bottom:1.15rem;font-size:1.05rem}.education{margin-top:1.5rem;padding-top:.9rem;border-top:1px solid var(--border);color:var(--text-secondary);display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem 1.25rem;font-size:.97rem}.education-label{font-family:var(--font-display);font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;color:var(--accent)}.ledger{list-style:none;margin:0;padding:0}.ledger-row:first-child{padding-top:0}.ledger-row{display:grid;grid-template-columns:10.5rem 1fr auto auto;align-items:baseline;grid-column-gap:1.75rem;column-gap:1.75rem;padding-block:1.05rem;border-bottom:1px solid var(--border)}.ledger-row h3{font-size:1.08rem}.ledger-desc{font-size:.97rem}.ledger-desc,.ledger-meta{color:var(--text-secondary)}.ledger-meta{font-family:var(--font-display);font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;white-space:nowrap}.ledger-spacer{min-width:3.2rem}.ledger-row .mlink{min-width:3.2rem;text-align:right}@media (max-width:44rem){.ledger-row{grid-template-columns:1fr auto;row-gap:.3rem}.ledger-row h3{grid-column:1}.ledger-meta{grid-column:2;grid-row:1}.ledger-desc{grid-column:1/-1}.ledger-row .mlink,.ledger-spacer{grid-column:1/-1;text-align:left;min-width:0}.ledger-spacer{display:none}}.skills{margin:0}.skills-row:first-child{padding-top:0}.skills-row{display:grid;grid-template-columns:10.5rem 1fr;align-items:baseline;grid-column-gap:1.75rem;column-gap:1.75rem;padding-block:.9rem;border-bottom:1px solid var(--border)}.skills-row dt{font-family:var(--font-display);font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;color:var(--accent)}.skills-row dd{margin:0;font-weight:500}@media (max-width:44rem){.skills-row{grid-template-columns:1fr;row-gap:.25rem}}.projects-more{margin-top:1.25rem;color:var(--text-secondary);font-size:.97rem}.contact-copy{color:var(--text-secondary);max-width:36rem;margin-bottom:1.75rem}.contact-email{display:inline-block;font-family:var(--font-display);font-weight:700;font-size:clamp(1.3rem,4vw,2rem);letter-spacing:-.01em;margin-bottom:1.75rem;border-bottom:2px solid var(--accent);padding-bottom:.15rem}.contact-email:hover{text-decoration:none;color:var(--text);border-color:var(--text)}.footer{margin-top:5rem;border-top:1px solid var(--rule);padding-block:1.4rem}.footer-inner{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;color:var(--text-secondary);font-family:var(--font-display);font-size:.85rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}