@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4ba802ed8e67eac5-s.341_rbs6dql3t.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d7a0600e467cf0bd-s.40d3ll7mho212.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/dc0d9adbac686440-s.p.3-4lwpipb4a4k.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b8f2b92a9960dd69-s.37aqrzupgb8zi.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28e60ca39c9ae554-s.0e_5-ojqbtsw9.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/8d05cfa5faa8406c-s.p.2p-978ij53_v6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono Fallback;src:local(Arial);ascent-override:81.58%;descent-override:26.3%;line-gap-override:0.0%;size-adjust:137.28%}.space_mono_d9a4d21b-module__NDR6na__className{font-family:Space Mono,Space Mono Fallback;font-style:normal}.space_mono_d9a4d21b-module__NDR6na__variable{--kx-font-mono:"Space Mono", "Space Mono Fallback"}
@font-face{font-family:PT Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/8fe616373cda781a-s.3zsw3i_t0cd25.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:PT Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ac972b96b88588e0-s.38k1yaatxy94d.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:PT Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ea95a6c50203df72-s.0i39tt0a94-to.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:PT Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/80bb744e92754df7-s.p.16jqoopzq5m_9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:PT Serif;font-style:normal;font-weight:700;font-display:swap;src:url(../media/ddbd854add8353d7-s.2-t_q4sotlq4-.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:PT Serif;font-style:normal;font-weight:700;font-display:swap;src:url(../media/35597f1def34002a-s.28ow1rt4u90e-.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:PT Serif;font-style:normal;font-weight:700;font-display:swap;src:url(../media/d7c80d408cfc89af-s.3-5jqd3-qq08n.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:PT Serif;font-style:normal;font-weight:700;font-display:swap;src:url(../media/bec5c09c262b1b7f-s.p.10mmioanno57p.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:PT Serif Fallback;src:local(Times New Roman);ascent-override:94.22%;descent-override:25.93%;line-gap-override:0.0%;size-adjust:110.28%}.pt_serif_725fb68-module__EhVFuG__className{font-family:PT Serif,PT Serif Fallback;font-style:normal}.pt_serif_725fb68-module__EhVFuG__variable{--kx-font-serif:"PT Serif", "PT Serif Fallback"}
@font-face{font-family:Courier Prime;font-style:normal;font-weight:400;font-display:swap;src:url(../media/7f6e389592deb6d0-s.41kzji7o-jdsp.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Courier Prime;font-style:normal;font-weight:400;font-display:swap;src:url(../media/87d3ffffac5dafea-s.p.1e8puyswpvmbr.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Courier Prime;font-style:normal;font-weight:700;font-display:swap;src:url(../media/69c6d7b79c8b79fe-s.2lhqjbmzqepkg.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Courier Prime;font-style:normal;font-weight:700;font-display:swap;src:url(../media/5f440d3eea613716-s.p.15zaksznb5cf5.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Courier Prime Fallback;src:local(Arial);ascent-override:58.08%;descent-override:25.41%;line-gap-override:0.0%;size-adjust:134.5%}.courier_prime_f664c5b5-module__M2i1HG__className{font-family:Courier Prime,Courier Prime Fallback;font-style:normal}.courier_prime_f664c5b5-module__M2i1HG__variable{--kx-font-typewriter:"Courier Prime", "Courier Prime Fallback"}
html,body{margin:0;padding:0}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:url(/cursors/disc.cur),default;background-color:#ece7dd;background-image:radial-gradient(#0000000d 1px,#0000 1px);background-size:3px 3px}a,button,label,summary,[role=button]{cursor:url(/cursors/pointer.cur),pointer}button:disabled,[aria-disabled=true]{cursor:url(/cursors/arrow.cur),default}
.kx-topnav{--kx-blue:#001cad;--kx-paper:#fbfaf6;--kx-ink:#1a1a1a;z-index:900;font-family:var(--kx-font-mono,monospace);pointer-events:none;justify-content:space-between;align-items:flex-start;gap:12px;display:flex;position:fixed;top:14px;left:14px;right:14px}.kx-topnav>*{pointer-events:auto}.kx-topnav *,.kx-topnav :before,.kx-topnav :after{box-sizing:border-box}.kx-topnav-links{scrollbar-width:none;background:var(--kx-paper);border:1.5px solid var(--kx-ink);min-width:0;color:var(--kx-ink);border-radius:6px;align-items:center;padding:5px 4px;display:flex;position:absolute;left:50%;overflow-x:auto;transform:translate(-50%);box-shadow:4px 4px #0000001f}.kx-topnav-links::-webkit-scrollbar{display:none}.kx-topnav-item{letter-spacing:.04em;color:inherit;border-radius:3px;flex-shrink:0;align-items:center;gap:7px;padding:6px 13px;font-size:11px;font-weight:700;text-decoration:none;display:inline-flex}.kx-topnav-item+.kx-topnav-item{border-left:1.5px solid #00000038}.kx-topnav-item:hover{background:var(--kx-blue);color:var(--kx-paper)}.kx-topnav-item svg{width:17px;height:17px}.kx-topnav-clock{border:1.5px solid var(--kx-ink);background:var(--kx-paper);color:var(--kx-ink);letter-spacing:.02em;white-space:nowrap;border-radius:4px;flex-shrink:0;align-items:center;gap:10px;margin-left:auto;padding:8px 10px;font-size:11px;font-weight:700;display:inline-flex;box-shadow:4px 4px #0000001f}@media (max-width:900px){.kx-topnav-links{position:static;transform:none}.kx-topnav-clock{margin-left:0}}@media (max-width:700px){.kx-topnav{top:10px;left:10px;right:10px}.kx-topnav-item span{display:none}.kx-topnav-item{padding:6px 10px}.kx-topnav-clock{padding:7px 8px;font-size:10px}}
.kx-hero{--kx-blue:#001cad;--kx-cream:#ece7dd;--kx-paper:#fbfaf6;--kx-ink:#1a1a1a;--kx-hairline:#ddd8cc;min-height:100dvh;font-family:var(--kx-font-mono,monospace);color:var(--kx-ink);background-image:url(/bg.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover;justify-content:center;align-items:center;padding:60px 20px 16px;scroll-margin-top:0;display:flex}.kx-hero *,.kx-hero :before,.kx-hero :after{box-sizing:border-box}.kx-hero-frame{width:100%;max-width:1080px}.kx-hero-window{background:var(--kx-cream);border:1.5px solid var(--kx-ink);border-radius:3px;box-shadow:8px 8px #00000024}.kx-hero-bar{border-bottom:1.5px solid var(--kx-ink);background:var(--kx-blue);color:var(--kx-paper);align-items:center;padding:8px 14px;display:flex}.kx-hero-wordmark{text-transform:uppercase;letter-spacing:.18em;font-size:20px;font-weight:700}.kx-hero-body{grid-template-columns:.98fr 1.02fr;gap:19px;padding:19px;display:grid}.kx-hero-panel{border:1.5px solid var(--kx-ink);background:#fff;flex-direction:column;justify-content:center;padding:24px 26px 26px;display:flex}.kx-hero-panel p{letter-spacing:.01em;margin:0 0 19px;font-size:15px;line-height:1.62}.kx-hero-points{border-top:2px dotted var(--kx-ink);flex-direction:column;align-items:flex-start;gap:10px;margin:30px 0 0;padding:16px 0 0;list-style:none;display:flex}.kx-hero-points li{letter-spacing:.05em;align-items:center;gap:9px;font-size:11.5px;font-weight:700;display:flex}.kx-hero-photo{border:1.5px solid var(--kx-ink);background:#dfd9cc;order:-1;min-height:560px;position:relative;overflow:hidden}.kx-hero-photo img{object-fit:cover;object-position:center 38%}@media (max-width:900px){.kx-hero{min-height:auto;padding:76px 12px 24px}.kx-hero-body{grid-template-columns:1fr}.kx-hero-photo{aspect-ratio:1;min-height:0}.kx-hero-photo img{object-position:center 55%}.kx-hero-panel{padding:22px}.kx-hero-wordmark{letter-spacing:.12em;font-size:14px}}
.kx-section{--kx-blue:#001cad;--kx-cream:#ece7dd;--kx-paper:#fbfaf6;--kx-ink:#1a1a1a;--kx-muted:#777;--kx-hairline:#ddd8cc;font-family:var(--kx-font-mono,monospace);color:var(--kx-ink);justify-content:center;padding:0 20px 72px;scroll-margin-top:76px;display:flex}.kx-resume{padding:48px 0 72px;position:relative}.kx-resume:before{content:"";z-index:-1;filter:saturate(.7);background-image:url(/bg.jpg);background-position:50%;background-size:cover;position:fixed;inset:0}.kx-resume-plate{max-width:1080px;font-family:var(--kx-font-mono,monospace);text-align:center;margin:0 auto 34px;padding:0 20px}.kx-resume-name{color:#fbfaf6;font-family:var(--kx-font-typewriter,monospace);letter-spacing:.02em;text-transform:uppercase;background:#001cad;border:1.5px solid #1a1a1a;border-radius:3px;margin:0;padding:12px 24px;font-size:40px;font-weight:700;line-height:1.1;display:inline-block;box-shadow:6px 6px #00000029}.kx-section--stacked{padding-bottom:26px}.kx-resume-grid{grid-template-rows:min-content 1fr;grid-template-columns:1.55fr 1fr;align-items:start;gap:26px;width:100%;max-width:1080px;display:grid}.kx-resume-block .kx-window{max-width:none}.kx-resume-block--experience{grid-area:1/1/span 2}.kx-resume-block--skills{grid-area:1/2}.kx-resume-block--contact{grid-area:2/2}.kx-chip{border:1.5px solid var(--kx-ink);letter-spacing:.05em;text-transform:uppercase;background:#fff;margin:4px 0 0;padding:7px 12px;font-size:11.5px;font-weight:700;display:inline-block}.kx-bullets{margin:0;padding:0;list-style:none}.kx-bullets li{max-width:76ch;margin-bottom:9px;padding-left:20px;font-size:14px;line-height:1.5;position:relative}.kx-bullets li:before{content:"";background:var(--kx-ink);width:6px;height:6px;position:absolute;top:8px;left:2px}.kx-bullets a{color:inherit}.kx-job+.kx-job{border-top:2px dotted var(--kx-ink);margin-top:28px;padding-top:24px}.kx-job-role{font-family:var(--kx-font-typewriter,monospace);margin:0 0 3px;font-size:18px;font-weight:700}.kx-job-dates{letter-spacing:.04em;color:var(--kx-muted);margin:0 0 14px;font-size:12px}.kx-hero+.kx-section{padding-top:72px}.kx-section *,.kx-section :before,.kx-section :after{box-sizing:border-box}.kx-window{background:var(--kx-cream);border:1.5px solid var(--kx-ink);border-radius:3px;width:100%;max-width:1080px;position:relative;box-shadow:8px 8px #00000024}.kx-titlebar{border-bottom:1.5px solid var(--kx-ink);background:var(--kx-blue);color:var(--kx-paper);align-items:center;padding:8px 14px;display:flex}.kx-titlebar-title{font-family:var(--kx-font-mono,monospace);letter-spacing:.18em;text-transform:uppercase;margin:0;font-size:22px;font-weight:700}.kx-window-body{background:var(--kx-paper);padding:30px 32px 34px}.kx-prose{max-width:68ch;margin:0 0 18px;font-size:15px;line-height:1.62}.kx-card-grid{grid-template-columns:repeat(3,1fr);gap:24px;display:grid}.kx-card{color:inherit;text-decoration:none;display:block}a.kx-card:hover .kx-card-art{transform:translate(-2px,-2px);box-shadow:5px 5px #0000002e}a.kx-card:hover .kx-card-title{text-decoration:underline}.kx-card-art{aspect-ratio:9/14;border:1.5px solid var(--kx-ink);background:repeating-linear-gradient(45deg,#0000000d 0 8px,#0000 8px 16px),linear-gradient(135deg,#e3b98f,#8fb8d6);margin-bottom:12px;transition:transform .12s,box-shadow .12s;position:relative;overflow:hidden}.kx-card-title span{display:block}.kx-card .kx-card-title{font-family:var(--kx-font-typewriter,monospace);letter-spacing:-.01em;font-size:16px}.kx-card-title{font-family:var(--kx-font-serif,serif);margin:0 0 5px;font-size:17px;font-weight:700;line-height:1.28}.kx-card-meta{letter-spacing:.04em;color:var(--kx-muted);margin:0;font-size:11px}.kx-feature-banner{aspect-ratio:2394/893;border:1.5px solid var(--kx-ink);position:relative;overflow:hidden}.kx-feature-body{grid-template-columns:.8fr 1.2fr;align-items:center;gap:26px;margin-top:26px;display:grid}.kx-feature-portrait{aspect-ratio:3/4;border:1.5px solid var(--kx-ink);position:relative;overflow:hidden}.kx-feature-title span{display:block}.kx-feature-title{font-family:var(--kx-font-typewriter,monospace);margin-bottom:7px;font-size:24px;line-height:1.2}.kx-feature-body .kx-prose{margin:18px 0 0}.kx-with-art{grid-template-columns:1fr auto;align-items:center;gap:34px;display:grid}.kx-with-art--tight>div{text-align:center}.kx-with-art--tight{grid-template-columns:auto auto;justify-content:center;gap:56px}.kx-with-art--tight .kx-art{width:320px}.kx-art{width:100%;max-width:320px;height:auto}.kx-art--framed{border:1.5px solid var(--kx-ink)}.kx-email-row{border:1.5px solid var(--kx-ink);background:#e7e2d6;align-items:stretch;display:inline-flex;box-shadow:3px 3px #0000002e}.kx-email-link{color:inherit;padding:9px 13px;font-size:14.5px;font-weight:700;text-decoration:none}.kx-email-link:hover{background:var(--kx-blue);color:var(--kx-paper)}.kx-copy{color:inherit;border:0;border-left:1.5px solid var(--kx-ink);background:0 0;align-items:center;padding:0 9px;display:inline-flex}.kx-copy:hover{background:var(--kx-blue);color:var(--kx-paper)}.kx-copy:active{background:var(--kx-ink);color:var(--kx-paper)}.kx-sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.kx-channels{flex-wrap:wrap;gap:8px;margin:26px 0 0;padding:0;list-style:none;display:flex}.kx-channels a{border:1.5px solid var(--kx-ink);letter-spacing:.05em;min-width:124px;color:inherit;background:#fff;justify-content:center;align-items:center;gap:7px;padding:7px 12px;font-size:11.5px;font-weight:700;text-decoration:none;display:inline-flex}.kx-channels a:hover{background:var(--kx-blue);color:var(--kx-paper)}@media (max-width:900px){.kx-section{padding:0 12px 44px}.kx-resume{padding:28px 0 44px}.kx-resume-name{padding:10px 14px;font-size:17px}.kx-section--stacked{padding-bottom:18px}.kx-resume-actions{bottom:12px;right:12px}.kx-resume-grid{grid-template-columns:1fr;gap:18px}.kx-resume-block--experience,.kx-resume-block--skills,.kx-resume-block--contact{grid-area:auto/1}.kx-window-body{padding:22px 18px 26px}.kx-titlebar-title{font-size:17px}.kx-card-grid{grid-template-columns:repeat(2,1fr);gap:16px}.kx-feature-body{grid-template-columns:1fr;gap:18px}.kx-feature-title{font-size:19px}.kx-with-art,.kx-with-art--tight{grid-template-columns:1fr;justify-content:stretch;justify-items:center;gap:20px}.kx-art{max-width:220px}}.kx-footer{height:480px;font-family:var(--kx-font-mono,monospace);color:#fff;text-shadow:0 1px 3px #0000008c;background-image:url(/bg1-min.png);background-position:50% 55%;background-repeat:no-repeat;background-size:cover;flex-direction:column;justify-content:flex-end;align-items:center;gap:12px;padding:0 20px 44px;display:flex}@media (max-width:900px){.kx-footer{height:336px}.kx-channels{justify-content:center}#contact{padding-bottom:0}.kx-footer{margin-top:-70px}}.kx-footer-note{letter-spacing:.04em;margin:0;font-size:13px;font-weight:700}.kx-resume-actions{z-index:800;display:flex;position:fixed;bottom:18px;right:18px}.kx-print-btn{color:#1a1a1a;font-family:var(--kx-font-mono,monospace);background:#e7e2d6;border:1.5px solid #1a1a1a;padding:9px 16px;font-size:12px;font-weight:700;text-decoration:none;display:inline-block;box-shadow:3px 3px #0000002e}.kx-print-btn:hover{color:#fbfaf6;background:#001cad}@media print{html,body{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#ece7dd!important}.kx-screen-only,.kx-resume:before{display:none!important}.kx-resume{padding:14mm}.kx-resume-plate{margin-bottom:18px}.kx-section,.kx-section--stacked{padding:0 0 14px}.kx-resume-grid{max-width:none;display:block}.kx-resume-block{margin-bottom:14px}.kx-window{max-width:none;box-shadow:none;break-inside:avoid}.kx-job{break-inside:avoid}.kx-resume-block--experience{break-before:page;padding-top:14mm}.kx-window-body{padding:18px 20px 20px}.kx-bullets li{margin-bottom:6px;font-size:13.5px;line-height:1.45}.kx-prose{font-size:14px;line-height:1.55}.kx-job+.kx-job{margin-top:18px;padding-top:15px}.kx-job-role{font-size:17px}.kx-job-dates{margin-bottom:9px}.kx-titlebar-title{font-size:19px}.kx-art{max-width:210px}.kx-titlebar,.kx-resume-name,.kx-window-body,.kx-chip{-webkit-print-color-adjust:exact;print-color-adjust:exact}.kx-window,.kx-window-body,.kx-chip{background:#fff}}@page{margin:0}
