@import url(https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&family=Newsreader:opsz,wght@6..72,400;6..72,500;6..72,600&display=swap);:root{--background:#eee9dc;--paper:#f7f3e8;--paper-deep:#dfd8c8;--ink:#171711;--muted:#615e54;--outline:#171711;--signal:#f04a24;--blue:#2142d7;--max-width:1320px;--page-gutter:clamp(1.25rem,5vw,4rem);color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5.5rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#eee9dc;background:var(--background);background-image:repeating-linear-gradient(0deg,rgba(23,23,17,.025),rgba(23,23,17,.025) 1px,#0000 0,#0000 4px);color:#171711;color:var(--ink);font-family:Newsreader,Georgia,serif;font-size:16px;line-height:1.6;margin:0;overflow-x:hidden}a,button{font:inherit}a,button{color:inherit}a{text-decoration:none}img,svg{display:block}img{max-width:100%}::selection{background:#f04a24;background:var(--signal);color:#f7f3e8;color:var(--paper)}:focus-visible{outline:3px solid #2142d7;outline:3px solid var(--blue);outline-offset:4px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.site-shell{isolation:isolate;min-height:100vh}.section-wrap{margin-inline:auto;width:min(var(--max-width),calc(100% - var(--page-gutter)*2))}.skip-link{background:var(--blue);color:var(--paper);font-family:IBM Plex Mono,monospace;font-size:.75rem;left:.75rem;padding:.75rem 1rem;position:fixed;top:.75rem;transform:translateY(-160%);transition:transform .16s ease;z-index:200}.skip-link:focus{transform:translateY(0)}.site-header{background:#eee9dcf5;border-bottom:2px solid var(--ink);inset:0 0 auto;position:fixed;z-index:100}.nav-wrap{align-items:center;display:flex;justify-content:space-between;margin-inline:auto;min-height:78px;width:min(var(--max-width),calc(100% - var(--page-gutter)*2))}.brand-mark{align-items:center;color:var(--ink);display:inline-flex;font-family:IBM Plex Mono,monospace;gap:.75rem;line-height:1;min-height:44px;min-width:44px}.brand-mark>span{font-size:1.55rem;font-weight:600;letter-spacing:-.09em}.brand-mark small{border-left:1px solid var(--ink);font-size:.52rem;font-weight:500;letter-spacing:.08em;line-height:1.35;padding-left:.75rem}.desktop-nav{align-items:stretch;align-self:stretch;display:flex}.nav-link{align-items:center;border-left:1px solid #1717114d;color:var(--ink);display:inline-flex;font-family:IBM Plex Mono,monospace;font-size:.68rem;font-weight:500;gap:.5rem;justify-content:center;letter-spacing:.05em;min-width:112px;padding-inline:1rem;text-transform:uppercase;transition:background .15s ease,color .15s ease}.nav-link:last-child{border-right:1px solid #1717114d}.nav-link span{color:var(--signal);font-size:.55rem}.nav-link:hover{background:var(--ink);color:var(--paper)}.menu-button,.mobile-nav{display:none}.hero{grid-column-gap:clamp(.8rem,2vw,1.75rem);align-content:center;column-gap:clamp(.8rem,2vw,1.75rem);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));min-height:100svh;overflow:hidden;padding-bottom:clamp(5rem,8vw,7rem);padding-top:clamp(7.5rem,11vw,10rem);position:relative}.hero-register{border-bottom:1px solid var(--ink);border-top:1px solid var(--ink);display:grid;font-family:IBM Plex Mono,monospace;font-size:.58rem;grid-column:1/-1;grid-template-columns:1fr auto 1fr;letter-spacing:.08em;margin-bottom:clamp(2.5rem,5vw,4.5rem);padding-block:.6rem}.hero-register span:nth-child(2){text-align:center}.hero-register span:last-child{text-align:right}.eyebrow{color:var(--signal);font-family:IBM Plex Mono,monospace;font-size:.67rem;font-weight:600;letter-spacing:.08em;line-height:1.5;margin:0;text-transform:uppercase}.hero-eyebrow{align-self:end;grid-column:1/span 5;margin-bottom:1.1rem}.about h2,.contact-section h2,.hero h1,.section-heading h2{text-wrap:balance;font-weight:500;letter-spacing:-.055em;margin:0}.hero h1{font-size:clamp(4.6rem,10.1vw,9.1rem);grid-column:1/span 11;line-height:.78;max-width:1120px;position:relative;z-index:2}.hero-copy{align-self:end;animation:rise-in .65s cubic-bezier(.16,1,.3,1) both;grid-column:1/span 5;margin-top:clamp(2.5rem,5vw,5rem);position:relative;z-index:3}.hero-intro{border-top:4px solid var(--ink);color:var(--ink);font-size:clamp(1.15rem,1.8vw,1.5rem);line-height:1.42;margin:0;max-width:560px;padding-top:1rem}.hero-actions{display:flex;flex-wrap:wrap;gap:0;margin-top:2rem}.button{align-items:center;border:1px solid var(--ink);border-radius:0;display:inline-flex;font-family:IBM Plex Mono,monospace;font-size:.7rem;font-weight:600;gap:.75rem;justify-content:center;letter-spacing:.03em;min-height:48px;padding:.8rem 1.1rem;text-transform:uppercase;transition:background .15s ease,color .15s ease,transform .15s ease}.button svg{height:18px;transition:transform .15s ease;width:18px}.button:hover svg{transform:translateX(4px)}.button-primary{background:var(--signal);color:var(--ink)}.button-primary:hover{background:var(--ink);color:var(--paper)}.button-secondary{background:var(--paper);margin-left:-1px}.button-secondary:hover{background:var(--blue);color:var(--paper)}.hero-note{align-items:center;color:var(--muted);display:flex;font-family:IBM Plex Mono,monospace;font-size:.62rem;gap:.55rem;letter-spacing:.05em;margin-top:1.5rem;text-transform:uppercase}.hero-note span{color:var(--blue);font-size:1.1rem}.portrait-frame{align-self:end;animation:portrait-in .8s cubic-bezier(.16,1,.3,1) 80ms both;background:var(--blue);border:2px solid var(--ink);box-shadow:14px 14px 0 var(--blue);grid-column:7/-1;height:min(45vw,650px);margin-top:-2.5rem;min-height:540px;overflow:visible;position:relative;z-index:1}.portrait-frame:after{background-image:radial-gradient(#1717113d .65px,#0000 0);background-size:3px 3px;content:"";inset:0;mix-blend-mode:multiply;pointer-events:none;position:absolute}.portrait{filter:grayscale(1) contrast(1.25) brightness(1.08);height:100%;object-fit:cover;object-position:50% 43%;transition:filter .35s ease;width:100%}.portrait-frame:hover .portrait{filter:grayscale(.25) contrast(1.1) saturate(.75)}.portrait-stamp{background:var(--signal);border:2px solid var(--ink);font-weight:600;letter-spacing:.08em;line-height:1.3;padding:.55rem .75rem;right:-1.25rem;top:1rem;transform:rotate(3deg);z-index:2}.portrait-caption,.portrait-stamp{color:var(--ink);font-family:IBM Plex Mono,monospace;font-size:.55rem;position:absolute}.portrait-caption{background:var(--paper);border-top:2px solid var(--ink);display:flex;gap:1rem;inset:auto 0 0;justify-content:space-between;letter-spacing:.03em;padding:.65rem .8rem;z-index:3}.hero-folio{bottom:-.28em;color:var(--signal);font-family:IBM Plex Mono,monospace;font-size:clamp(11rem,24vw,23rem);font-weight:600;letter-spacing:-.12em;line-height:1;opacity:.14;position:absolute;right:-.05em;z-index:-1}.content-section{border-top:2px solid var(--ink);padding-block:clamp(6rem,11vw,10rem)}.section-heading{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(12,minmax(0,1fr));margin-bottom:clamp(3.5rem,7vw,6rem)}.section-heading .eyebrow{border-top:4px solid var(--signal);grid-column:1/span 3;padding-top:.75rem}.section-heading h2{font-size:clamp(3.4rem,7vw,6.8rem);grid-column:4/span 8;line-height:.9}.projects-grid{border-top:2px solid var(--ink)}.project-card{background:var(--paper);border-bottom:2px solid var(--ink);display:grid;grid-template-columns:minmax(0,2fr) minmax(290px,1fr);min-height:460px}.project-body{flex-direction:column;padding:clamp(1.5rem,4vw,3.5rem)}.project-body,.project-topline{align-items:flex-start;display:flex}.project-topline{justify-content:space-between;margin-bottom:auto;width:100%}.capabilities-label,.contact-button-label,.contribution-caption,.github-handle,.github-margin-note,.project-index,.project-meta,.project-verdict{font-family:IBM Plex Mono,monospace;font-size:.64rem;letter-spacing:.06em;text-transform:uppercase}.project-index{border-bottom:1px solid var(--ink);padding-bottom:.4rem}.icon-link{background:var(--blue);border:2px solid var(--ink);color:var(--paper);display:grid;height:48px;place-items:center;transition:background .15s ease,color .15s ease,transform .15s ease;width:48px}.icon-link svg{height:21px;width:21px}.icon-link:hover{background:var(--signal);color:var(--ink);transform:rotate(-4deg)}.project-kicker{color:var(--signal)!important;font-family:IBM Plex Mono,monospace;font-size:.65rem;font-weight:600;letter-spacing:.06em;margin:4rem 0 .55rem!important;text-transform:uppercase}.project-card h3{font-size:clamp(3.5rem,8vw,7.5rem);font-weight:500;letter-spacing:-.065em;line-height:.85;margin:0 0 1rem}.project-card p:not(.project-kicker){color:var(--muted);font-size:clamp(1.05rem,1.55vw,1.3rem);line-height:1.45;margin:0;max-width:620px}.project-footer{align-items:flex-start;border-left:2px solid var(--ink);display:flex;flex-direction:column;padding:clamp(1.5rem,3vw,2.5rem)}.project-verdict{border:3px double var(--signal);color:var(--signal);font-weight:600;line-height:1.35;padding:.75rem .9rem;transform:rotate(-3deg)}.project-meta{grid-gap:.55rem;color:var(--muted);display:grid;gap:.55rem;margin-top:auto}.project-meta span{border-bottom:1px solid #17171159;padding-bottom:.35rem}.project-meta span:first-child{color:var(--blue);font-weight:600}.text-link{align-items:center;border-bottom:2px solid var(--ink);display:inline-flex;font-family:IBM Plex Mono,monospace;font-size:.68rem;font-weight:600;gap:.45rem;margin-top:2rem;min-height:44px;text-transform:uppercase}.all-work-link span:last-child,.contact-email span,.github-profile-link span,.text-link span{transition:transform .15s ease}.contact-email:hover span,.github-profile-link:hover span,.text-link:hover span{transform:translate(3px,-3px)}.all-work-link{align-items:center;border-bottom:2px solid var(--ink);display:flex;font-family:IBM Plex Mono,monospace;font-size:.7rem;justify-content:space-between;letter-spacing:.04em;min-height:72px;padding-inline:1rem;text-transform:uppercase;transition:background .15s ease,color .15s ease}.all-work-link:hover{background:var(--signal)}.all-work-link:hover span:last-child{transform:translate(3px,-3px)}.github-panel{background:var(--ink);border:2px solid var(--ink);box-shadow:12px 12px 0 var(--signal);color:var(--paper);overflow:hidden;padding:clamp(2rem,6vw,5rem);position:relative}.github-panel:before{background-image:linear-gradient(#f7f3e812 1px,#0000 0);background-size:100% 24px;content:"";inset:0;pointer-events:none;position:absolute}.github-margin-note{border:1px solid var(--signal);color:var(--signal);line-height:1.35;margin:0;padding:.5rem;position:absolute;right:2rem;top:2rem;transform:rotate(2deg)}.github-panel-header{grid-gap:2rem;align-items:end;display:grid;gap:2rem;grid-template-columns:2fr 1fr;max-width:900px;padding-right:10rem;position:relative;z-index:1}.github-handle{color:var(--signal);margin:0 0 .75rem}.github-panel h3{font-size:clamp(2.1rem,4.5vw,4.2rem);font-weight:500;letter-spacing:-.04em;line-height:.95;margin:0 0 .7rem}.github-panel-header p:last-child{color:#bcb6a8;font-size:1.05rem;margin:0;max-width:570px}.github-profile-link{align-items:center;border-bottom:1px solid var(--signal);color:var(--signal);display:inline-flex;font-family:IBM Plex Mono,monospace;font-size:.65rem;gap:.5rem;justify-self:end;letter-spacing:.04em;min-height:44px;text-transform:uppercase}.contribution-shell{background:var(--paper);border:2px solid var(--signal);color:var(--ink);margin-top:3rem;padding:clamp(1rem,3vw,1.75rem);position:relative;z-index:1}.contribution-scroll{overflow-x:auto;scrollbar-color:var(--signal) var(--paper-deep);scrollbar-width:thin}.contribution-scroll img,.contribution-scroll svg{height:auto;min-width:663px;width:100%}.contribution-scroll img.is-error{display:none}.contribution-placeholder{align-items:flex-end;background-image:repeating-linear-gradient(90deg,#0000,#0000 10px,#17171117 0,#17171117 11px);border-bottom:1px solid var(--ink);color:var(--muted);display:flex;font-family:IBM Plex Mono,monospace;font-size:.62rem;gap:1rem;justify-content:space-between;letter-spacing:.05em;min-height:180px;min-width:663px;padding:1.25rem;text-transform:uppercase}.contribution-placeholder a{align-items:center;border-bottom:1px solid var(--signal);color:var(--signal);display:inline-flex;min-height:44px}.contribution-caption{color:var(--muted);display:flex;font-size:.57rem;gap:1rem;justify-content:space-between;margin-top:.8rem}.about{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(12,minmax(0,1fr))}.about-heading{grid-column:1/span 6;position:relative}.about-heading:after{color:var(--signal);content:"03";font-family:IBM Plex Mono,monospace;font-size:clamp(9rem,17vw,16rem);font-weight:600;left:0;letter-spacing:-.12em;line-height:1;opacity:.15;position:absolute;top:7rem}.about h2{font-size:clamp(3.4rem,7vw,6.8rem);line-height:.88;margin-top:1.5rem;position:relative;z-index:1}.about-copy{border-top:8px solid var(--blue);grid-column:7/-1;padding-top:2rem}.about-copy>p{color:var(--muted);font-size:1.05rem;margin:0 0 1.5rem;max-width:700px}.about-copy .about-lead{color:var(--ink);font-size:clamp(1.4rem,2.4vw,2rem);letter-spacing:-.025em;line-height:1.35}.capabilities{border-top:2px solid var(--ink);margin-top:3rem;padding-top:1rem}.capabilities-label{color:var(--signal)!important;font-weight:600;margin:0 0 1rem!important}.capabilities ul{grid-column-gap:2rem;column-gap:2rem;counter-reset:capability;display:grid;grid-template-columns:1fr 1fr;list-style:none;margin:0;padding:0}.capabilities li{align-items:center;border-bottom:1px solid #17171173;counter-increment:capability;display:flex;font-family:IBM Plex Mono,monospace;font-size:.67rem;justify-content:space-between;min-height:44px}.capabilities li:after{color:var(--signal);content:"0" counter(capability);font-size:.55rem}.contact-section{padding-block:clamp(5rem,10vw,8rem)}.contact-inner{grid-gap:clamp(2rem,6vw,6rem);background:var(--blue);border:2px solid var(--ink);border-top:14px solid var(--signal);box-shadow:12px 12px 0 var(--ink);color:var(--paper);display:grid;gap:clamp(2rem,6vw,6rem);grid-template-columns:1.1fr .9fr;padding:clamp(2rem,6vw,5rem)}.eyebrow-on-dark{color:#ffab94}.contact-section h2{font-size:clamp(3.4rem,7vw,6.8rem);line-height:.86;margin-top:1.25rem;max-width:760px}.contact-copy{align-self:end}.contact-copy>p:first-child{color:#e0deef;font-size:1.15rem;margin:0 0 2.5rem;max-width:570px}.contact-email{align-items:flex-end;border-bottom:3px solid var(--paper);color:var(--paper);display:flex;font-size:clamp(1.35rem,3vw,2.6rem);gap:1rem;justify-content:space-between;line-height:1.1;padding-bottom:.3rem}.contact-button-label{color:#b7bce9;margin:.6rem 0 0!important}.contact-links{border-top:1px solid #f7f3e88c;color:var(--paper);display:flex;flex-wrap:wrap;font-family:IBM Plex Mono,monospace;font-size:.65rem;gap:1rem;grid-column:1/-1;justify-content:space-between;letter-spacing:.06em;padding-top:1rem;text-transform:uppercase}.contact-links a{align-items:center;display:inline-flex;min-height:44px}.contact-links a:hover{color:#ffab94}.contact-links span{display:none}.site-footer{border-top:2px solid var(--ink)}.footer-inner{grid-gap:2rem;align-items:center;color:var(--muted);display:grid;font-family:IBM Plex Mono,monospace;font-size:.62rem;gap:2rem;grid-template-columns:1fr auto 1fr;letter-spacing:.03em;min-height:150px;text-transform:uppercase}.footer-inner p{margin:0;text-align:center}.footer-inner>a:last-child{align-items:center;border-bottom:1px solid var(--ink);display:inline-flex;justify-self:end;min-height:44px}@keyframes rise-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes portrait-in{0%{opacity:0;transform:translate(14px,18px)}to{opacity:1;transform:translate(0)}}@media (max-width:1000px){.desktop-nav{display:none}.menu-button{align-items:center;background:var(--signal);border:1px solid var(--ink);cursor:pointer;display:flex;flex-direction:column;gap:7px;height:48px;justify-content:center;padding:0;width:48px}.menu-button span{background:currentColor;height:2px;transition:transform .15s ease;width:22px}.menu-button[aria-expanded=true] span:first-child{transform:translateY(4.5px) rotate(45deg)}.menu-button[aria-expanded=true] span:last-child{transform:translateY(-4.5px) rotate(-45deg)}.mobile-nav{background:var(--ink);color:var(--paper);display:grid;max-height:0;opacity:0;overflow:hidden;padding-inline:var(--page-gutter);transition:max-height .22s ease,opacity .15s ease,padding .22s ease;width:100%}.mobile-nav.is-open{max-height:360px;opacity:1;padding-bottom:1.25rem}.mobile-nav a{align-items:center;border-bottom:1px solid #f7f3e859;display:grid;font-size:1.1rem;grid-template-columns:36px 1fr auto;min-height:58px}.mobile-nav a>span{color:var(--signal);font-family:IBM Plex Mono,monospace;font-size:.6rem}.hero h1{grid-column:1/-1}.hero-copy{grid-column:1/span 6}.portrait-frame{grid-column:7/-1;height:52vw;min-height:460px}.section-heading h2{grid-column:4/-1}.github-panel-header{grid-template-columns:1fr;padding-right:0}.github-profile-link{justify-self:start}.github-margin-note{display:none}}@media (max-width:720px){.nav-wrap{min-height:68px}.hero{display:flex;flex-direction:column;overflow:visible;padding-bottom:5rem;padding-top:6.5rem}.hero-register{grid-template-columns:1fr 1fr;margin-bottom:2.5rem}.hero-register span:nth-child(2){display:none}.hero h1{font-size:clamp(4rem,19vw,6.2rem);line-height:.82}.hero-copy{margin-top:2.25rem;order:4}.portrait-frame{aspect-ratio:.88;box-shadow:10px 10px 0 var(--blue);height:auto;margin:2.75rem 0 0;min-height:0;order:3;width:calc(100% - 12px)}.portrait-stamp{right:-.75rem}.portrait-caption{align-items:flex-start;flex-direction:column;gap:.2rem}.hero-folio{display:none}.content-section{padding-block:5.5rem}.section-heading{display:block}.section-heading .eyebrow{margin-bottom:2rem;width:45%}.about h2,.contact-section h2,.section-heading h2{font-size:clamp(3.5rem,16vw,5.5rem)}.project-card{display:block;min-height:0}.project-body{min-height:440px}.project-card h3{font-size:clamp(3.8rem,18vw,6rem)}.project-footer{border-left:0;border-top:2px solid var(--ink);min-height:330px}.github-panel{box-shadow:8px 8px 0 var(--signal);padding:1.5rem}.contribution-shell{margin-top:2rem}.contribution-caption{align-items:flex-start;flex-direction:column;gap:.25rem}.about{display:block}.about-heading{min-height:380px}.about-heading:after{font-size:13rem;top:9rem}.about-copy{padding-top:1.5rem}.capabilities ul{grid-template-columns:1fr}.contact-inner{box-shadow:8px 8px 0 var(--ink);display:block;padding:2rem 1.5rem}.contact-copy{margin-top:3rem}.contact-email{overflow-wrap:anywhere}.contact-links{margin-top:3.5rem}.footer-inner{align-items:flex-start;display:flex;flex-direction:column;gap:1rem;justify-content:center;min-height:210px;padding-block:2rem}.footer-inner p{text-align:left}.footer-inner>a:last-child{justify-self:auto}}@media (prefers-reduced-motion:reduce){.hero-copy,.portrait-frame{animation:none}}
/*# sourceMappingURL=main.58b62814.css.map*/