@font-face{font-family:Bricolage Grotesque;src:url(/fonts/bricolage-grotesque-700.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Archivo;src:url(/fonts/archivo-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Archivo;src:url(/fonts/archivo-600.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:DM Mono;src:url(/fonts/dm-mono-400.woff2)format("woff2");font-weight:400;font-display:swap}:root{--paper:#e9e1d2;--paper-light:#f4eddf;--paper-dark:#a48463;--paper-burn:#5c3d29;--ink:#181411;--ink-secondary:#51493f;--ink-quiet:#4a4038;--oxblood:#942418;--void:#08090a;--world-rule:#2c3032;--world-ink:#f4f4ef;--world-secondary:#9da2a1;--font-display:"Bricolage Grotesque", "Arial Black", sans-serif;--font-body:"Archivo", Arial, sans-serif;--font-mono:"DM Mono", Consolas, monospace;--text-2xs:clamp(.75rem, .72rem + .15vw, .8125rem);--text-xs:clamp(.8125rem, .78rem + .18vw, .9rem);--text-sm:clamp(.9rem, .86rem + .2vw, 1rem);--text-base:clamp(1.02rem, .99rem + .16vw, 1.125rem);--text-md:clamp(1.125rem, 1.05rem + .32vw, 1.28rem);--text-lg:clamp(1.3rem, 1.18rem + .5vw, 1.56rem);--text-xl:clamp(1.55rem, 1.38rem + .72vw, 1.94rem);--text-2xl:clamp(1.85rem, 1.55rem + 1.3vw, 2.5rem);--display-3:clamp(2rem, 1.55rem + 2vw, 3rem);--display-2:clamp(2.4rem, 1.7rem + 3vw, 3.9rem);--display-1:clamp(2.75rem, 1.6rem + 5vw, 5.5rem);--leading-tight:.9;--leading-snug:1;--leading-mid:1.3;--leading-body:1.55;--leading-relaxed:1.65;--tracking-display:-.02em;--tracking-tight:-.01em;--tracking-label:.08em;--measure:64ch;--measure-narrow:52ch;--measure-wide:74ch;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--space-32:8rem;--section-y:clamp(3.5rem, 2.5rem + 4.4vw, 6rem);--section-y-loose:clamp(5rem, 4rem + 4.4vw, 7.5rem);--grid-gutter:clamp(1rem, 4vw, 5rem);--grid-content:min(100% - (2 * var(--grid-gutter)), 1640px);--content:var(--grid-content);--focus-color:var(--oxblood);--focus-width:3px;--focus-offset:4px;--duration-fast:.13s;--duration-default:.24s;--duration-reveal:.46s;--duration-paper:.9s;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-paper:cubic-bezier(.22, .76, .2, 1)}*{box-sizing:border-box;touch-action:manipulation}html{scroll-behavior:smooth;background:var(--paper);scroll-padding-top:6rem;overflow-x:clip}body{min-width:320px;color:var(--ink);background:var(--paper);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;overflow-x:clip}a{color:inherit}img{max-width:100%;display:block}:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}.skip-link{z-index:200;color:#fff;background:var(--oxblood);padding:.75rem 1rem;position:fixed;top:.5rem;left:.5rem;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.paper-mobile-menu{position:relative}.paper-mobile-menu .menu-label-close{display:none}@media (width<=760px){.paper-mobile-menu summary{cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;min-height:2.75rem;padding:.65rem .75rem;font-size:.82rem;font-weight:600;list-style:none;display:inline-flex}.paper-mobile-menu summary::-webkit-details-marker{display:none}.paper-mobile-menu[open] summary{color:var(--oxblood);border-color:var(--oxblood)}.paper-mobile-menu[open] .menu-label-open{display:none}.paper-mobile-menu[open] .menu-label-close{display:inline}.paper-mobile-menu nav{z-index:90;border-top:3px solid var(--oxblood);background-color:var(--paper-light);clip-path:polygon(0 0,100% 0,100% 95%,88% 98%,73% 94%,57% 100%,39% 95%,20% 99%,0 94%);background-image:linear-gradient(#ffffff73,#0000 35%,#482f1d1c),url(/media/paper-stock.jpg);background-size:auto,135%;width:min(17rem,100vw - 2.5rem);padding:.35rem 0 .7rem;display:grid;position:absolute;top:calc(100% + .3rem);right:0;box-shadow:0 1rem 1.4rem #1f140d4d}.paper-mobile-menu nav a{min-height:3.35rem;font:600 1rem var(--font-display);border-bottom:1px solid #18141138;align-items:center;padding:.9rem 1.2rem;text-decoration:none;display:flex}.paper-mobile-menu nav a[aria-current=page]{color:var(--oxblood)}}@media (width<=680px){:root{--grid-gutter:1rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.profile-page{background:var(--paper)}.profile-sheet{width:100%;min-height:100vh;position:relative;overflow-x:clip}.profile-paper{background-color:var(--paper);background-image:linear-gradient(90deg,#52321b21,#0000 2.8% 97.2%,#52321b21),linear-gradient(#f4eddf61,#e9e1d242),url(/media/paper-stock.jpg);background-repeat:repeat-y;background-size:100%;min-height:100vh;position:relative}.profile-edge{z-index:60;pointer-events:none;grid-template-rows:31% 36% 33%;width:clamp(10px,1.15vw,17px);display:grid;position:absolute;inset-block:0}.profile-edge-left{left:0}.profile-edge-right{right:0;transform:scaleX(-1)}.profile-edge i{background:0/100% 100% no-repeat;display:block}.profile-edge i:first-child{background-image:url(/media/paper-edge-fibre-a.png)}.profile-edge i:nth-child(2){background-image:url(/media/paper-edge-fibre-b.png)}.profile-edge i:nth-child(3),.profile-edge-right i:first-child{background-image:url(/media/paper-edge-fibre-c.png)}.profile-edge-right i:nth-child(2){background-image:url(/media/paper-edge-fibre-a.png)}.profile-edge-right i:nth-child(3){background-image:url(/media/paper-edge-fibre-b.png)}.profile-nav{z-index:50;background-color:var(--paper);background-image:linear-gradient(#ffffff61,#0000 46%,#482f1d21 100%),url(/media/paper-stock.jpg);background-size:auto,100%;border-bottom:1px solid #18141157;grid-template-columns:1fr auto auto;align-items:center;gap:clamp(1rem,3vw,3rem);min-height:5rem;padding:.8rem max(1.25rem,50% + min(100% - clamp(2rem,8vw,10rem),1640px)/-2);display:grid;position:sticky;top:0;box-shadow:0 .75rem 1.1rem -.65rem #2a1b1185}.profile-wordmark{font:700 1.1rem var(--font-display);text-decoration:none}.profile-nav>nav{gap:clamp(1rem,2.5vw,2rem);display:flex}.profile-nav>nav a{font-weight:600;text-decoration:none}.profile-nav>nav a:hover,.profile-nav>nav a[aria-current=page]{text-underline-offset:.35em;text-decoration:underline 1px}.profile-contact{color:#fff8ed;background:var(--oxblood);border:1px solid #65140d;align-items:center;min-height:2.75rem;padding:.75rem 1rem;font-weight:600;text-decoration:none;display:inline-flex;box-shadow:3px 3px #3a0e094d}.profile-mobile-menu{display:none}.profile-eyebrow{color:var(--ink-quiet);font:var(--text-2xs)/1.5 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 1.1rem}.about-hero{width:var(--content);min-height:clamp(18rem,40svh,27rem);padding-block:var(--section-y-loose);grid-template-columns:minmax(0,1fr) minmax(14rem,22rem);align-items:center;gap:clamp(2.5rem,5vw,5rem);margin:auto;display:grid}.about-hero h1{max-width:13ch;font:700 var(--display-1)/var(--leading-snug) var(--font-display);letter-spacing:var(--tracking-display);text-wrap:balance;margin:0}.about-introduction{max-width:var(--measure);margin-top:clamp(1.75rem,3vw,3rem)}.about-introduction p{color:var(--ink);font-size:var(--text-md);line-height:var(--leading-body);text-wrap:pretty;margin:0}.about-introduction p+p{margin-top:1.1rem}.about-portrait{align-self:start;margin:0;position:relative}.about-portrait:before{content:"";z-index:-1;background:var(--oxblood);clip-path:polygon(2% 3%,99% 0,97% 98%,0 100%);position:absolute;inset:5% -5% -3% 8%;transform:rotate(1.5deg)}.about-portrait img{object-fit:cover;object-position:center;filter:saturate(.72)contrast(1.04);clip-path:polygon(2% 1%,99% 0,100% 97%,92% 99%,79% 97%,68% 100%,55% 98%,41% 100%,28% 97%,15% 100%,0 97%,1% 3%);width:100%;max-height:28rem}.about-portrait figcaption{color:var(--ink-quiet);font:var(--text-2xs) var(--font-mono);letter-spacing:.08em;text-align:right;text-transform:uppercase;margin-top:.75rem}.path-section,.current-work,.rules-section{width:var(--content);padding:var(--section-y) 0;border-top:1px solid var(--ink);margin:auto}.profile-section-heading{gap:1rem;margin-bottom:clamp(2.5rem,4vw,4rem);display:grid}.profile-section-heading h2{max-width:16ch;font:700 var(--display-2)/var(--leading-snug) var(--font-display);letter-spacing:var(--tracking-display);text-wrap:balance;margin:0}.profile-section-heading>p{max-width:var(--measure);color:var(--ink);font-size:var(--text-lg);line-height:var(--leading-mid);text-wrap:pretty;margin:.4rem 0 0}.path-ledger,.rules-ledger,.work-lines{border-top:1px solid var(--ink);margin:0;padding:0;list-style:none}.path-ledger li:last-child,.rules-ledger li:last-child,.work-lines li:last-child{border-bottom:0}.path-ledger li{border-bottom:1px solid #18141157;grid-template-columns:3rem 12rem minmax(0,1fr);align-items:baseline;gap:1.25rem;min-height:3.5rem;padding:1.6rem 0;display:grid}.path-index,.path-date,.path-kind{color:var(--ink-quiet);font:var(--text-2xs)/1.5 var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.path-index{color:var(--oxblood)}.path-ledger h3{font:700 var(--text-xl)/1.05 var(--font-display);letter-spacing:var(--tracking-tight);margin:.35rem 0 .5rem}.path-ledger p{color:var(--ink-secondary);font-size:var(--text-sm);line-height:var(--leading-body);margin:0}.path-ledger p+p{max-width:var(--measure);margin-top:.5rem}.current-work .profile-section-heading h2{max-width:16ch}.work-lines li{border-bottom:1px solid #18141157;grid-template-columns:3.5rem minmax(0,1fr);align-items:baseline;gap:1.25rem;min-height:3rem;padding:.9rem 0;display:grid}.work-lines span{color:var(--oxblood);font:var(--text-2xs) var(--font-mono)}.work-lines p{max-width:var(--measure);font-size:var(--text-md);line-height:var(--leading-body);margin:0}.rules-ledger li{border-bottom:1px solid #18141157;grid-template-columns:3.5rem minmax(14rem,.62fr) minmax(0,1fr);align-items:baseline;gap:1.75rem;min-height:3.5rem;padding:1.5rem 0;display:grid}.rules-ledger li>span{color:var(--oxblood);font:var(--text-2xs) var(--font-mono)}.rules-ledger h3{max-width:24ch;font:700 var(--text-xl)/1.1 var(--font-display);letter-spacing:var(--tracking-tight);margin:0}.rules-ledger p{max-width:var(--measure);color:var(--ink-secondary);font-size:var(--text-sm);line-height:var(--leading-body);margin:0}.profile-close{width:var(--content);border-top:1px solid var(--ink);align-content:center;justify-items:start;min-height:22rem;margin:auto;display:grid}.profile-close h2{max-width:15ch;font:700 var(--display-2)/var(--leading-snug) var(--font-display);letter-spacing:var(--tracking-display);text-wrap:balance;margin:0}.profile-close>div{flex-wrap:wrap;gap:1.5rem;margin-top:2.5rem;display:flex}.profile-close a{text-underline-offset:.35em;font-weight:600}.resume-arrival{width:var(--content);min-height:clamp(17rem,36svh,25rem);padding-block:var(--section-y-loose);grid-template-columns:minmax(0,1.15fr) minmax(17rem,.48fr);align-items:end;gap:clamp(2.5rem,5vw,5rem);margin:auto;display:grid}.resume-arrival h1{font:700 var(--display-1)/var(--leading-snug) var(--font-display);letter-spacing:var(--tracking-display);margin:0}.resume-arrival>div>p:last-child{max-width:var(--measure);color:var(--ink);font-size:var(--text-md);line-height:var(--leading-body);margin:1.75rem 0 0}.resume-actions{border-top:1px solid var(--ink);align-self:end;display:grid}.resume-actions a,.resume-actions button{min-height:3.9rem;color:var(--ink);font:600 var(--text-sm) var(--font-body);text-align:left;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #18141161;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 0;text-decoration:none;display:flex}.resume-actions a:hover,.resume-actions button:hover{color:var(--oxblood)}.resume-actions .resume-download{color:#fff8ed;background:var(--oxblood);border-color:#65140d;padding-inline:1rem}.resume-actions .resume-download:hover{color:#fff8ed;background:#7f1e14}.resume-actions>p{color:var(--ink-quiet);font:var(--text-2xs)/1.55 var(--font-mono);margin:1rem 0 0}.resume-document{width:min(var(--content), 1320px);padding:var(--section-y-loose) 0;border-top:1px solid var(--ink);margin:auto}.resume-identity{grid-template-columns:minmax(0,1fr) minmax(17rem,.42fr);align-items:end;gap:clamp(2.5rem,5vw,5rem);padding-bottom:clamp(2.5rem,4vw,4rem);display:grid}.resume-identity h2{font:700 var(--display-2)/var(--leading-snug) var(--font-display);letter-spacing:var(--tracking-display);margin:0}.resume-identity>div>p:last-child{color:var(--ink);font-size:var(--text-md);margin:1rem 0 0}.resume-identity address{font-style:normal;font-size:var(--text-sm);gap:.55rem;line-height:1.5;display:grid}.resume-identity address span{color:var(--ink-secondary)}.resume-identity address a{overflow-wrap:anywhere;text-underline-offset:.25em;width:max-content;max-width:100%}.resume-section{border-top:1px solid var(--ink);grid-template-columns:11rem minmax(0,1fr);gap:clamp(2rem,4vw,4rem);padding:clamp(2.75rem,5vw,5rem) 0;display:grid}.resume-section>h2{color:var(--oxblood);font:var(--text-2xs)/1.5 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0}.resume-summary>p{max-width:var(--measure);color:var(--ink);font-size:var(--text-lg);line-height:var(--leading-mid);text-wrap:pretty;margin:0}.resume-records{gap:2.5rem;min-width:0;display:grid}.resume-record+.resume-record{border-top:1px solid #18141147;padding-top:2.5rem}.resume-record>header{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:2rem;display:grid}.resume-record h3{font:700 var(--text-xl)/1.1 var(--font-display);letter-spacing:var(--tracking-tight);margin:0}.resume-record h3 a{text-underline-offset:.2em;text-decoration-thickness:1px}.resume-record header div>p{color:var(--ink-secondary);font-size:var(--text-sm);margin:.5rem 0 0}.resume-record header>p{color:var(--ink-quiet);font:var(--text-2xs)/1.5 var(--font-mono);letter-spacing:.06em;text-align:right;text-transform:uppercase;margin:.2rem 0 0}.resume-record>p{max-width:var(--measure);color:var(--ink-secondary);font-size:var(--text-base);line-height:var(--leading-body);margin:1.1rem 0 0}.resume-record>ul{max-width:var(--measure);margin:1.2rem 0 0;padding-left:1.15rem}.resume-record>ul li{font-size:var(--text-base);line-height:var(--leading-body);padding-left:.35rem}.resume-record>ul li+li{margin-top:.6rem}.resume-project-records{border-top:1px solid var(--ink);grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.resume-project{border-bottom:1px solid #18141159;min-width:0;padding:2rem}.resume-project:nth-child(odd){padding-left:0;padding-right:2.5rem}.resume-project:nth-child(2n){border-left:1px solid #18141159;padding-left:2.5rem;padding-right:0}.resume-project+.resume-project{padding-top:2rem}.resume-project>header{grid-template-columns:minmax(0,1fr) auto;gap:1rem}.resume-project header div>p{font:var(--text-2xs)/1.6 var(--font-mono);text-wrap:pretty}.resume-proof{list-style:none;padding-left:0!important}.resume-proof li{border-top:1px solid #18141138;grid-template-columns:auto minmax(0,1fr);gap:.8rem;display:grid;padding:.9rem 0 0!important}.resume-proof strong{color:var(--oxblood);font:var(--text-2xs) var(--font-mono)}.resume-proof span{color:var(--ink-secondary);font-size:var(--text-sm);line-height:var(--leading-body)}.resume-skills{margin:0}.resume-skills div{border-top:1px solid #18141157;grid-template-columns:minmax(10rem,.35fr) minmax(0,1fr);gap:2rem;padding:1.25rem 0;display:grid}.resume-skills div:last-child{border-bottom:1px solid #18141157}.resume-skills dt{font:700 var(--text-base) var(--font-display)}.resume-skills dd{color:var(--ink-secondary);font-size:var(--text-sm);line-height:var(--leading-body);text-wrap:pretty;margin:0}.resume-education-records{gap:2rem}.resume-footnote{border-top:1px solid var(--ink);grid-template-columns:11rem minmax(0,1fr);gap:clamp(2rem,4vw,4rem);padding-top:2rem;display:grid}.resume-footnote:before{content:"Source note";color:var(--ink-quiet);font:var(--text-2xs)/1.5 var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.resume-footnote p{max-width:var(--measure);color:var(--ink-quiet);font:var(--text-2xs)/1.6 var(--font-mono);margin:0}@media (width<=900px){.about-hero{grid-template-columns:minmax(0,1.08fr) minmax(16rem,.72fr);gap:3rem}.profile-section-heading{grid-template-columns:minmax(0,1fr) minmax(16rem,.55fr);gap:3rem}.path-ledger li{grid-template-columns:2.5rem 10rem minmax(0,1fr)}.rules-ledger li{grid-template-columns:3rem minmax(13rem,.65fr) minmax(0,1fr)}.resume-arrival{grid-template-columns:minmax(0,1fr) minmax(16rem,.5fr);gap:4rem}.resume-section,.resume-footnote{grid-template-columns:9rem minmax(0,1fr);gap:3rem}}@media (width<=760px){.profile-nav{grid-template-columns:1fr auto auto;gap:.75rem;min-height:4.5rem}.profile-nav>nav{display:none}.profile-contact{min-height:2.35rem;padding:.55rem .7rem;font-size:.72rem}.profile-mobile-menu{display:block;position:relative}.profile-nav .paper-mobile-menu nav{display:grid}.about-hero{grid-template-columns:1fr;gap:3rem;min-height:auto;padding-block:4rem 4.5rem}.about-hero h1{font-size:clamp(2.4rem,8.5vw,4rem)}.about-portrait{justify-self:end;width:min(86%,27rem)}.profile-section-heading{grid-template-columns:1fr;gap:1.5rem}.profile-section-heading h2,.profile-close h2,.resume-identity h2{font-size:clamp(2rem,7vw,3.1rem)}.path-ledger li{grid-template-columns:2rem minmax(0,1fr);gap:.5rem 1rem;padding:1.75rem 0}.path-index{grid-row:1/span 2}.path-date,.path-ledger li>div{grid-column:2}.rules-ledger li{grid-template-columns:2rem minmax(0,1fr);gap:.75rem 1rem;padding:1.75rem 0}.rules-ledger li>span{grid-row:1/span 2}.rules-ledger p{grid-column:2}.resume-arrival{grid-template-columns:1fr;gap:3rem;min-height:auto;padding-block:4rem}.resume-arrival h1{font-size:clamp(2.4rem,8.5vw,4rem)}.resume-actions{width:100%}.resume-identity{grid-template-columns:1fr;gap:2.5rem}.resume-section,.resume-footnote{grid-template-columns:1fr;gap:2rem}.resume-project-records{grid-template-columns:1fr}.resume-project,.resume-project:nth-child(odd),.resume-project:nth-child(2n){border-left:0;padding:2rem 0}}@media (width<=480px){.profile-nav{padding-inline:1.25rem}.profile-wordmark{max-width:6rem;line-height:1}.about-introduction p{font-size:1rem}.about-portrait{width:94%}.work-lines li{grid-template-columns:2rem minmax(0,1fr)}.resume-record>header{grid-template-columns:1fr;gap:.6rem}.resume-record header>p{text-align:left}.resume-skills div{grid-template-columns:1fr;gap:.6rem}.resume-proof li{grid-template-columns:1fr;gap:.45rem}}@media print{.profile-nav,.profile-edge,.profile-close{display:none}body,.profile-paper{color:#000;background:#fff}.about-hero,.path-section,.current-work,.rules-section{width:100%;min-height:0;padding:1.5rem 0}.about-portrait{max-width:15rem}@page{size:A4;margin:12mm 14mm}html,.resume-page,.resume-page .profile-sheet,.resume-page .profile-paper,.resume-document{overflow:visible;background:#fff!important;min-height:0!important}.resume-page .profile-nav,.resume-page .profile-edge,.resume-arrival{display:none}.resume-document{flex-direction:column;width:100%;padding:0;font-size:9.5pt;display:flex}.resume-identity{order:0}.resume-section[aria-labelledby=resume-summary-title]{order:1}.resume-section[aria-labelledby=resume-experience-title]{order:2}.resume-section[aria-labelledby=resume-skills-title]{order:3}.resume-section[aria-labelledby=resume-education-title]{order:4}.resume-section[aria-labelledby=resume-projects-title]{order:5}.resume-identity{grid-template-columns:1fr auto;gap:10mm;padding-bottom:5mm}.resume-identity h2{font-size:27pt}.resume-identity>div>p:last-child{margin-top:2mm;font-size:10pt}.resume-identity address{gap:1mm;font-size:8.5pt}.resume-section{grid-template-columns:27mm minmax(0,1fr);gap:6mm;padding:3mm 0}.resume-section[aria-labelledby=resume-projects-title]{break-before:page}.resume-summary>p{font-size:10pt;line-height:1.4}.resume-records{gap:3mm}.resume-record{break-inside:avoid}.resume-record+.resume-record{padding-top:4mm}.resume-record h3{font-size:12pt}.resume-record>p,.resume-record>ul li,.resume-skills dd{line-height:1.35}.resume-record>p,.resume-record>ul{margin-top:2mm}.resume-record>ul li+li{margin-top:1mm}.resume-project-records{grid-template-columns:repeat(2,1fr)}.resume-project,.resume-project:nth-child(odd),.resume-project:nth-child(2n){padding:2.5mm}.resume-project>p{font-size:8pt}.resume-proof li{grid-template-columns:auto 1fr;gap:2mm;padding-top:2mm!important}.resume-proof strong,.resume-proof span{font-size:7pt}.resume-skills div{grid-template-columns:30mm 1fr;gap:4mm;padding:1.5mm 0}.resume-skills dt{font-size:8.5pt}.resume-skills dd{font-size:8pt}.resume-footnote{display:none}a{text-decoration:none}}
