:root{--paper:#f3ebd8;--paper-cool:#ebe4d2;--ink:#1a1208;--ink-soft:#3d3428;--muted:#5e5548;--oxblood:#6b2e2a;--oxblood-deep:#4a1f1c;--rule:color-mix(in srgb, var(--ink) 18%, transparent);--grain:color-mix(in srgb, var(--ink) 7%, transparent);--font-brand:"Playfair Display", "Times New Roman", Georgia, serif;--font-body:"Libre Franklin", "Helvetica Neue", sans-serif;--ink-spread:.4px 0 0 color-mix(in srgb, var(--ink) 35%, transparent), -.3px .2px 0 color-mix(in srgb, var(--ink) 22%, transparent);--sheet:radial-gradient(ellipse 120% 80% at 12% 8%, #c5c0b059, transparent 55%), radial-gradient(ellipse 90% 70% at 88% 92%, #b8b2a047, transparent 50%), linear-gradient(168deg, var(--paper) 0%, var(--paper-cool) 48%, #e6dfcc 100%);--sheet-noise:url("data:image/svg+xml,%3Csvg viewBox='0 0 240 240' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.08 0 0 0 0 0.07 0 0 0 0 0.04 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--sheet-lines:repeating-linear-gradient(0deg, transparent, transparent 3px, color-mix(in srgb, var(--ink) 8%, transparent) 3px, color-mix(in srgb, var(--ink) 8%, transparent) 4px);--masthead-offset:3.05rem}@property --press{syntax:"<number>";inherits:true;initial-value:1}@property --rule-progress{syntax:"<number>";inherits:true;initial-value:1}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:1.15rem}body{font-family:var(--font-body);color:var(--ink);background:var(--paper);letter-spacing:.01em;-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}.paper-grain{z-index:-1;pointer-events:none;background:var(--sheet);position:fixed;inset:0}.paper-grain:before{content:"";opacity:.28;background-image:var(--sheet-noise);background-size:180px 180px;position:absolute;inset:0}.paper-grain:after{content:"";opacity:.06;background:var(--sheet-lines);position:absolute;inset:0}.page{z-index:1;isolation:isolate;max-width:980px;margin:0 auto;padding:1.25rem 1.35rem 4.5rem;position:relative}.masthead{z-index:20;border-bottom:1px solid var(--rule);background-color:var(--paper);background-image:var(--sheet);background-position:top;background-repeat:no-repeat;background-size:100vw 100vh;justify-content:space-between;align-items:baseline;gap:1rem;padding:.35rem 0 1rem;display:flex;position:sticky;top:0}.masthead:before,.masthead:after{content:"";z-index:-1;pointer-events:none;background-position:calc(50% - 50vw) 0;background-repeat:repeat;position:absolute;inset:0}.masthead:before{opacity:.28;background-image:var(--sheet-noise);background-size:180px 180px}.masthead:after{opacity:.06;background-image:var(--sheet-lines)}.masthead-mark{font-family:var(--font-body);letter-spacing:.22em;text-transform:uppercase;color:var(--ink);font-size:.75rem;font-weight:700;text-decoration:none}.masthead ul{flex-wrap:wrap;gap:1.1rem;margin:0;padding:0;list-style:none;display:flex}.masthead a{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:.78rem;font-weight:600;text-decoration:none}.hero{border-bottom:2px solid var(--ink);grid-template-columns:minmax(0,1.35fr) minmax(12rem,.75fr);align-items:end;gap:clamp(1.5rem,4vw,3rem);min-height:calc(100vh - 4rem);padding:3.5rem 0 2.75rem;display:grid}.hero-copy{flex-direction:column;justify-content:flex-end;gap:1.1rem;min-width:0;display:flex}.hero-plate{justify-self:end;width:min(100%,22rem);margin:0;position:relative}.hero-plate img{aspect-ratio:1;object-fit:cover;object-position:center top;border:1px solid var(--ink);width:100%;height:auto;box-shadow:3px 3px 0 color-mix(in srgb, var(--ink) 18%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--paper) 35%, transparent);filter:contrast(1.04)saturate(.92);display:block}.hero-plate figcaption{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:.55rem;font-size:.68rem;font-weight:600}.brand{font-family:var(--font-brand);letter-spacing:-.03em;color:var(--ink);text-shadow:var(--ink-spread);max-width:14ch;margin:0;font-size:clamp(3.2rem,11.5vw,6.75rem);font-weight:900;line-height:.9}.hero h1{font-family:var(--font-body);letter-spacing:.04em;color:var(--oxblood);text-transform:uppercase;margin:0;font-size:clamp(1rem,2.2vw,1.2rem);font-weight:600}.lede{max-width:36rem;color:var(--muted);margin:0;font-size:1.02rem;font-weight:400}.folio{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:.75rem 0 0;font-size:.72rem;font-weight:600}.cta-row{flex-wrap:wrap;align-items:baseline;gap:1.25rem 1.75rem;margin-top:.35rem;display:flex}.cta{font-family:var(--font-body);letter-spacing:.02em;color:var(--paper);background:var(--ink);border:1px solid var(--ink);box-shadow:2px 2px 0 color-mix(in srgb, var(--ink) 25%, transparent);padding:.85rem 1.2rem;font-size:.92rem;font-weight:600;text-decoration:none}.cta.secondary{color:var(--oxblood);box-shadow:none;text-underline-offset:.28em;background:0 0;border:none;padding:.85rem 0;text-decoration:underline;text-decoration-thickness:1px}.press-link{transition:transform .16s,box-shadow .16s,color .16s}.press-link:hover{transform:translate(1px,1px)}.cta.press-link:hover{box-shadow:1px 1px 0 color-mix(in srgb, var(--ink) 20%, transparent);background:var(--ink-soft)}.cta.secondary.press-link:hover,.masthead a.press-link:hover,.links a.press-link:hover,.contact-line a.press-link:hover,.github-status a.press-link:hover{color:var(--oxblood-deep);box-shadow:none}.press-link:focus-visible{outline:2px solid var(--oxblood);outline-offset:3px}@keyframes ink-bleed{0%{opacity:0;transform:translateY(.35rem)}to{opacity:1;transform:translateY(0)}}.ink-bleed{animation:.85s cubic-bezier(.22,.61,.36,1) both ink-bleed}.ink-bleed.delay-1{animation-delay:.1s}.ink-bleed.delay-2{animation-delay:.18s}.ink-bleed.delay-3{animation-delay:.28s}.ink-bleed.delay-4{animation-delay:.38s}.press-reveal{opacity:0;transition:opacity .65s cubic-bezier(.22,.61,.36,1),transform .65s cubic-bezier(.22,.61,.36,1);transform:translateY(.85rem)}.press-reveal.is-pressed{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.ink-bleed,.press-reveal,.timeline-track.is-tracked .timeline-when,.timeline-track.is-tracked .timeline-copy,.timeline-mark,.timeline-mark:before,.timeline-mark:after{opacity:1;filter:none;transition:none;animation:none;transform:none}.press-link:hover{transform:none}}section{border-bottom:1px solid var(--rule);padding:3rem 0 2.75rem}section h2{font-family:var(--font-body);letter-spacing:.22em;text-transform:uppercase;color:var(--ink);text-shadow:var(--ink-spread);margin:0 0 1rem;font-size:.78rem;font-weight:700}.section-lede{max-width:40rem;color:var(--ink-soft);margin:0 0 2rem;font-size:1.08rem;line-height:1.55}.kicker{letter-spacing:.2em;text-transform:uppercase;color:var(--oxblood);margin:0 0 1.25rem;font-size:.72rem;font-weight:700}.imprint-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.75rem 2rem;display:grid}.imprint figure{background:0 0;border:none;margin:0;padding:0}.imprint strong{font-family:var(--font-body);letter-spacing:-.01em;color:var(--ink);text-shadow:var(--ink-spread);margin-bottom:.45rem;font-size:clamp(1.35rem,3vw,1.85rem);font-weight:700;display:block}.imprint figcaption{color:var(--muted);flex-direction:column;gap:.25rem;font-size:.88rem;display:flex}.imprint figcaption span{color:var(--ink-soft);font-weight:600}.imprint em{color:var(--muted);font-style:normal}.project{border-top:1px solid var(--rule);margin-top:2.25rem;padding-top:1.75rem}.project:first-of-type{margin-top:.5rem}.project h3,.timeline-copy h3{font-family:var(--font-body);letter-spacing:-.01em;color:var(--ink);margin:0 0 .3rem;font-size:1.2rem;font-weight:700}.timeline .sep,.contact-line .sep{color:var(--muted);font-weight:400}.timeline-folio{top:var(--masthead-offset);z-index:3;border-bottom:1px solid var(--rule);background-color:var(--paper);background-image:var(--sheet);letter-spacing:.14em;text-transform:uppercase;color:var(--oxblood);background-position:top;background-repeat:no-repeat;background-size:100vw 100vh;margin:0 0 1.6rem;padding:.7rem 0 .55rem;font-size:.72rem;font-weight:700;line-height:1.45;position:sticky}.timeline-folio:before{content:"";z-index:-1;pointer-events:none;opacity:.28;background-image:var(--sheet-noise);background-position:calc(50% - 50vw) 0;background-size:180px 180px;position:absolute;inset:0}.timeline-track{position:relative}.timeline-spine{pointer-events:none;width:3px;position:absolute;top:.55rem;bottom:0;left:calc(12.975rem - 1.5px)}.timeline-rule,.timeline-rule-ink{position:absolute;top:0}.timeline-rule{background:color-mix(in srgb, var(--ink) 14%, transparent);width:1px;bottom:0;left:1px}.timeline-rule-ink{width:3px;height:calc(var(--rule-progress,1) * 100%);background:var(--ink);left:0}.timeline-rule-ink:after{content:"";background:var(--oxblood);opacity:0;width:.45rem;height:.45rem;position:absolute;bottom:0;left:50%;transform:translate(-50%,50%)rotate(45deg)}.timeline-track.is-tracked:not(.is-idle):not(.is-complete) .timeline-rule-ink:after{opacity:1}.timeline-list{margin:0;padding:0;list-style:none}.timeline-station{padding-bottom:2.65rem}.timeline-station:last-child{padding-bottom:.25rem}.timeline-station article{grid-template-columns:11rem 2.25rem minmax(0,1fr);align-items:start;column-gap:.85rem;display:grid}.timeline-when{text-align:right;flex-direction:column;align-items:flex-end;gap:.28rem;margin:0;display:flex}.timeline-index{font-family:var(--font-brand);letter-spacing:-.03em;color:var(--ink);text-shadow:var(--ink-spread);font-size:1.85rem;font-weight:900;line-height:.9}.timeline-station.is-current .timeline-index{color:var(--oxblood)}.timeline-dates,.timeline-place{letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;font-weight:700;line-height:1.35}.timeline-dates{color:var(--oxblood);flex-direction:column;align-items:flex-end;gap:.12rem;display:flex}.timeline-place{letter-spacing:.06em;color:var(--muted);text-transform:none;font-weight:600}.timeline-mark{z-index:1;border:1.5px solid var(--ink);background:var(--paper);width:1.05rem;height:1.05rem;box-shadow:2px 2px 0 color-mix(in srgb, var(--ink) 18%, transparent);border-radius:50%;justify-self:center;margin-top:.32rem;position:relative}.timeline-mark:before{content:"";background:var(--ink);width:.7rem;height:1px;transform:scaleX(var(--press,1));transform-origin:0;position:absolute;top:50%;left:calc(100% + 3px)}.timeline-mark:after{content:"";border-radius:inherit;background:var(--ink);transform:scale(var(--press,1));position:absolute;inset:2px}.timeline-station.is-current .timeline-mark{border-color:var(--oxblood)}.timeline-station.is-current .timeline-mark:after{background:var(--oxblood)}.timeline-track.is-tracked .timeline-mark{transform:scale(var(--mark-scale,1));box-shadow:var(--mark-shadow,2px 2px 0 #1a12082e)}.timeline-track.is-tracked .timeline-when,.timeline-track.is-tracked .timeline-copy{opacity:var(--fade,1);transform:translate3d(0, var(--shift,0px), 0)}.timeline-copy h3{margin-bottom:.85rem}.timeline-copy ul{margin:0;padding-left:1.05rem}.timeline-copy li{color:var(--ink-soft);margin-bottom:.5rem}.timeline-copy li:last-child{margin-bottom:0}.stack{color:var(--muted);letter-spacing:.02em;margin:0 0 .85rem;font-size:.88rem}.project span{color:var(--muted);font-weight:400}.project p{max-width:42rem;color:var(--ink-soft);margin:0 0 .65rem}.links{gap:1.35rem;margin:0;display:flex}.links a{letter-spacing:.06em;text-transform:uppercase;color:var(--oxblood);border-bottom:1px solid color-mix(in srgb, var(--oxblood) 45%, transparent);padding-bottom:.1rem;font-size:.88rem;font-weight:600;text-decoration:none}.type-drawer{flex-direction:column;gap:1rem;margin:0;display:flex}.type-drawer div{border-bottom:1px solid var(--rule);grid-template-columns:7.5rem 1fr;align-items:baseline;gap:.75rem 1.25rem;padding-bottom:.85rem;display:grid}.type-drawer dt{letter-spacing:.16em;text-transform:uppercase;color:var(--oxblood);margin:0;font-size:.72rem;font-weight:700}.type-drawer dd{color:var(--ink-soft);margin:0;font-size:.95rem}.contact-line{color:var(--ink-soft);margin:0;font-size:1.05rem}.contact-line a{color:var(--oxblood);border-bottom:1px solid color-mix(in srgb, var(--oxblood) 40%, transparent);font-weight:600;text-decoration:none}.colophon{padding:1.75rem 0 0}.colophon p{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.7rem}.project h3 a{color:inherit;text-decoration:none}.project h3 a:hover{color:var(--oxblood-deep)}.essay{border-bottom:1px solid var(--rule);padding:2.75rem 0 3rem}.essay-layout{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:1.75rem;display:grid}.essay-copy{grid-area:1/1;min-width:0}.read-progress{top:var(--masthead-offset);z-index:4;background:var(--paper);flex-direction:column;grid-area:1/2;align-items:flex-end;gap:.4rem;width:6.75rem;margin-top:.15rem;padding:.15rem 0 .35rem .65rem;display:flex;position:sticky}.read-progress-value{letter-spacing:.14em;font-variant-numeric:tabular-nums;color:var(--oxblood);font-size:.72rem;font-weight:700}.read-progress-track{background:var(--rule);width:100%;height:4px;display:block}.read-progress-bar{background:var(--ink);width:0;height:100%;display:block}@media (prefers-reduced-motion:no-preference){.read-progress-bar{transition:width 80ms linear}}.essay h1{font-family:var(--font-brand);letter-spacing:-.025em;max-width:22em;text-shadow:var(--ink-spread);margin:0 0 .85rem;font-size:clamp(2.05rem,5vw,3.35rem);font-weight:700;line-height:1.05}.essay .meta a,.essay-body a,.kicker a{color:var(--oxblood);border-bottom:1px solid color-mix(in srgb, var(--oxblood) 45%, transparent);font-weight:600;text-decoration:none}.essay-body{margin-top:1.75rem}.essay-body h2,.essay-body h3,.essay-body p,.essay-body ul,.essay-body ol,.essay-body blockquote{max-width:40rem}.essay-body h2{font-family:var(--font-brand);letter-spacing:-.02em;text-transform:none;color:var(--ink);text-shadow:var(--ink-spread);margin:2.1rem 0 .65rem;font-size:1.65rem;font-weight:700;line-height:1.2}.essay-body h3{font-family:var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--oxblood);margin:1.6rem 0 .45rem;font-size:.78rem;font-weight:700}.essay-body p,.essay-body li{color:var(--ink-soft)}.essay-body p{margin:0 0 .95rem}.essay-body ul,.essay-body ol{margin:0 0 1rem;padding-left:1.15rem}.essay-body li{margin-bottom:.4rem}.essay-body blockquote{border-left:2px solid var(--oxblood);font-family:var(--font-brand);color:var(--ink);margin:1.4rem 0 1.5rem;padding:0 0 0 1rem;font-size:1.28rem;font-style:italic;font-weight:500;line-height:1.4}.essay-body blockquote p,.essay-body blockquote em{font:inherit;color:inherit;margin:0}.essay-body figure{margin:1.5rem 0 1.65rem}.essay-body img{border:1px solid var(--ink);background:var(--paper-cool);max-width:100%;height:auto;display:block}.essay-body pre{white-space:pre-wrap;tab-size:2;max-width:100%;color:var(--ink);background:color-mix(in srgb, var(--ink) 5%, var(--paper));border-left:2px solid var(--oxblood);margin:0 0 1.15rem;padding:.95rem 1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.82rem;line-height:1.55;overflow-x:auto}.essay-body hr{border:0;border-top:1px solid var(--rule);margin:1.75rem 0}.github-sheet{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:1.25rem 1.75rem;display:grid}.github-dateline{letter-spacing:.14em;text-transform:uppercase;color:var(--oxblood);margin:0 0 .85rem;font-size:.72rem;font-weight:700}.github-dateline .sep{color:var(--muted);font-weight:400}.github-hero-value{font-family:var(--font-brand);letter-spacing:-.04em;color:var(--ink);text-shadow:var(--ink-spread);margin:0;font-size:clamp(4.2rem,12vw,6.4rem);font-weight:900;line-height:.84}.github-hero-label{letter-spacing:-.02em;color:var(--ink);margin:.35rem 0 0;font-size:clamp(1.15rem,2.4vw,1.55rem);font-weight:700}.github-metrics{flex-wrap:wrap;gap:1.1rem 2.1rem;margin:1.35rem 0 0;display:flex}.github-metrics p{margin:0}.github-metrics strong{letter-spacing:-.03em;color:var(--ink);text-shadow:var(--ink-spread);font-size:clamp(1.55rem,3vw,2.05rem);font-weight:700;line-height:1;display:block}.github-metrics span{color:var(--muted);margin-top:.35rem;font-size:.78rem;display:block}.github-mark{justify-self:end;width:min(7.75rem,22vw);height:auto;margin-top:.15rem;display:block}.github-cal{grid-template-columns:1.7rem minmax(0,1fr);gap:.28rem .4rem;max-width:100%;margin-top:1.6rem;padding-bottom:.2rem;display:grid;overflow-x:auto}.github-months,.github-weeks{grid-auto-columns:11px;grid-auto-flow:column;gap:3px;width:max-content;display:grid}.github-months span{height:.85rem;color:var(--muted);white-space:nowrap;font-size:.62rem;line-height:.85rem;display:block;overflow:visible}.github-wdays,.github-week{grid-template-rows:repeat(7,11px);gap:3px;display:grid}.github-wdays span{color:var(--muted);font-size:.58rem;line-height:11px}.github-day{background:color-mix(in srgb, var(--ink) 10%, transparent);width:11px;height:11px;display:block}.github-day.lvl-1{background:color-mix(in srgb, var(--oxblood) 38%, var(--paper))}.github-day.lvl-2{background:color-mix(in srgb, var(--oxblood) 62%, var(--paper))}.github-day.lvl-3{background:color-mix(in srgb, var(--oxblood) 82%, var(--ink))}.github-day.lvl-4{background:var(--oxblood-deep)}.github-day.pad{background:0 0}.github-day:not(.pad):hover{outline:1px solid var(--ink);outline-offset:1px}.github-note{max-width:40rem;color:var(--muted);margin:.95rem 0 0;font-size:.92rem}.github-status{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:.85rem 0 0;font-size:.72rem;font-weight:600}.github-status a{color:var(--oxblood);border-bottom:1px solid color-mix(in srgb, var(--oxblood) 45%, transparent);text-decoration:none}.github-status .sep{font-weight:400}@media (width<=720px){html{scroll-padding-top:2rem}.ink-bleed{opacity:1;animation:none;transform:none}.imprint-row{grid-template-columns:1fr;gap:1.5rem}.type-drawer div{grid-template-columns:1fr;gap:.25rem}.masthead{flex-wrap:wrap;row-gap:.65rem;padding-bottom:.85rem}.essay-layout{column-gap:.85rem}.read-progress{width:5.1rem;padding-left:.4rem}.hero{grid-template-columns:1fr;align-items:start;gap:1.5rem;min-height:auto;padding-top:1.75rem;padding-bottom:2rem}.hero-copy{order:0;gap:.85rem}.hero-plate{order:1;justify-self:start;width:min(100%,14rem)}.brand{max-width:none;font-size:clamp(2.35rem,11vw,3.6rem);line-height:.92}.hero h1{font-size:.92rem}.lede{font-size:.98rem}.cta-row{flex-direction:column;align-items:flex-start;gap:.5rem;margin-top:.15rem}.cta{padding:.75rem 1.05rem}.press-reveal{opacity:1;transform:none}.github-sheet{grid-template-columns:minmax(0,1fr) auto;column-gap:.85rem}.github-mark{width:3.75rem;margin-top:.35rem}.github-hero-value{font-size:clamp(3.4rem,18vw,4.6rem)}.github-dateline,.timeline-folio{letter-spacing:.08em}.timeline-mark:before{width:.4rem}.timeline-spine{left:calc(.875rem - 1.5px)}.timeline-station{padding-bottom:2.15rem}.timeline-station article{grid-template-columns:1.75rem minmax(0,1fr);gap:.4rem .75rem}.timeline-mark{grid-area:1/1/span 2;margin-top:.28rem}.timeline-when{text-align:left;grid-area:1/2;align-items:flex-start}.timeline-copy{grid-area:2/2}.timeline-dates{flex-direction:row;align-items:baseline;gap:.35rem}.timeline-end:before{content:"– "}.timeline-index{font-size:1.45rem}}@media (prefers-reduced-motion:reduce){.timeline-track.is-tracked .timeline-when,.timeline-track.is-tracked .timeline-copy,.timeline-track.is-tracked .timeline-mark,.timeline-track.is-tracked .timeline-mark:before,.timeline-track.is-tracked .timeline-mark:after{opacity:1;transform:none}.timeline-rule-ink{height:100%}.timeline-rule-ink:after{opacity:0}}@media (width<=490px){:root{--masthead-offset:5.15rem}html{scroll-padding-top:2.5rem}}@media (width<=440px){:root{--masthead-offset:7.75rem}html{scroll-padding-top:5.75rem}}
