@font-face{font-family:Archivo;font-style:normal;font-weight:400 700;font-stretch:62% 125%;font-display:swap;src:url(/fonts/Archivo-400-700-normal-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Archivo;font-style:normal;font-weight:400 700;font-stretch:62% 125%;font-display:swap;src:url(/fonts/Archivo-400-700-normal-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/SourceSerif4-400-italic-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:"Source Serif 4";font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/SourceSerif4-400-italic-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/SourceSerif4-400-600-normal-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:"Source Serif 4";font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/SourceSerif4-400-600-normal-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-400-normal-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-400-normal-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-500-normal-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-500-normal-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #f8f7f4;--paper-sunk: #f1efea;--ink: #171619;--ink-muted: #6b6870;--ink-faint: #97939b;--rule: #ddd9d2;--rule-faint: #e9e5df;--accent: #1f3a9e;--accent-wash: #1f3a9e14;--font-display: "Archivo", system-ui, sans-serif;--font-body: "Source Serif 4", Georgia, serif;--font-data: "IBM Plex Mono", ui-monospace, monospace;--display-wdth: 92;--display-weight: 640;--display-tracking: -.022em;--t-xs: .6875rem;--t-sm: .8125rem;--t-base: 1.0625rem;--t-lg: 1.375rem;--t-xl: 1.75rem;--t-2xl: 2.5rem;--t-3xl: 4rem;--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-6: 1.5rem;--s-8: 2rem;--s-12: 3rem;--s-16: 4rem;--s-24: 6rem;--col-label: 7rem;--col-main: 36rem;--col-note: 13rem;--gutter: 2.5rem}:root[data-theme=dark]{--paper: #100f13;--paper-sunk: #17161b;--ink: #eceaef;--ink-muted: #928e99;--ink-faint: #625e6b;--rule: #2a2830;--rule-faint: #201e26;--accent: #93a6f0;--accent-wash: #93a6f01f}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #100f13;--paper-sunk: #17161b;--ink: #eceaef;--ink-muted: #928e99;--ink-faint: #625e6b;--rule: #2a2830;--rule-faint: #201e26;--accent: #93a6f0;--accent-wash: #93a6f01f}}:root[data-type=document]{--font-display: "Source Serif 4", Georgia, serif;--display-weight: 600;--display-tracking: -.014em}:root[data-type=terminal]{--font-body: "Archivo", system-ui, sans-serif;--display-wdth: 84;--display-weight: 700;--display-tracking: -.03em}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--t-base);line-height:1.6;font-synthesis-weight:none;-webkit-font-smoothing:antialiased}h1,h2,h3,p,ul,ol,figure{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit}img,svg{display:block;max-width:100%}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}.display{font-family:var(--font-display);font-variation-settings:"wdth" var(--display-wdth);font-weight:var(--display-weight);letter-spacing:var(--display-tracking);line-height:1.02}.mono{font-family:var(--font-data);font-variant-numeric:tabular-nums;font-size:var(--t-xs);letter-spacing:.04em}.doc{max-width:calc(var(--col-label) + var(--col-main) + var(--col-note) + var(--gutter) * 2);margin:0 auto;padding:0 var(--s-6)}.grid{display:grid;grid-template-columns:var(--col-label) minmax(0,var(--col-main)) var(--col-note);-moz-column-gap:var(--gutter);column-gap:var(--gutter)}.grid-main{grid-column:2}.section{border-top:1px solid var(--rule);padding:var(--s-16) 0}.section-label{grid-column:1;font-family:var(--font-data);font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);padding-top:.45rem}.section-head{font-family:var(--font-display);font-variation-settings:"wdth" var(--display-wdth);font-weight:var(--display-weight);letter-spacing:var(--display-tracking);font-size:var(--t-xl);line-height:1.1;margin-bottom:var(--s-3)}.section-lede{color:var(--ink-muted);max-width:34rem;margin-bottom:var(--s-12)}.entry{display:grid;grid-template-columns:minmax(0,var(--col-main)) var(--col-note);-moz-column-gap:var(--gutter);column-gap:var(--gutter);padding:var(--s-6) 0;border-top:1px solid var(--rule-faint)}.entry:first-child{border-top:0;padding-top:0}.claim{transition:color .18s ease}.note{font-family:var(--font-data);font-variant-numeric:tabular-nums;font-size:var(--t-xs);line-height:1.5;color:var(--ink-muted);border-left:1px solid var(--rule);padding-left:var(--s-3);transition:border-color .18s ease,color .18s ease}.note-v{display:block;color:var(--ink);font-weight:500}.note-k{display:block;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.1em;font-size:.625rem;margin-top:var(--s-1)}.entry:hover .note,.entry:focus-within .note{border-left-color:var(--accent);color:var(--ink)}.entry:hover .note-v,.entry:focus-within .note-v{color:var(--accent)}.hero{padding:var(--s-24) 0 var(--s-16)}.hero-name{font-size:var(--t-3xl);margin-bottom:var(--s-6)}.hero-thesis{font-size:var(--t-lg);line-height:1.45;max-width:32rem;margin-bottom:var(--s-8)}.hero-thesis em{font-style:normal;background:var(--accent-wash);box-shadow:0 1px 0 var(--accent);padding:0 .15em}.hero-meta{grid-column:3;grid-row:1 / span 3;border-left:1px solid var(--rule);padding-left:var(--s-3)}.hero-portrait{width:100%;height:auto;aspect-ratio:4 / 5;-o-object-fit:cover;object-fit:cover;-o-object-position:center top;object-position:center top;margin-bottom:var(--s-6)}.work-title{font-family:var(--font-display);font-variation-settings:"wdth" var(--display-wdth);font-weight:var(--display-weight);letter-spacing:var(--display-tracking);font-size:var(--t-lg);line-height:1.15;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 .6rem}.work-kind{color:var(--ink-muted);font-weight:500}.work-ctx{font-family:var(--font-data);font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin-top:var(--s-2);margin-bottom:var(--s-4)}.link{color:var(--accent);text-decoration:none;box-shadow:0 1px 0 var(--accent);padding-bottom:1px}.link:hover{background:var(--accent-wash)}.actions{display:flex;flex-wrap:wrap;gap:var(--s-3)}.btn{font-family:var(--font-data);font-size:var(--t-sm);letter-spacing:.02em;text-decoration:none;padding:var(--s-3) var(--s-4);border:1px solid var(--ink);background:var(--ink);color:var(--paper)}.btn:hover{background:transparent;color:var(--ink)}.btn-ghost{background:transparent;color:var(--ink);border-color:var(--rule)}.btn-ghost:hover{border-color:var(--ink);background:transparent}.contact-list{display:grid;gap:var(--s-4);margin-bottom:var(--s-8)}.contact-row{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:var(--s-4);align-items:baseline;padding-bottom:var(--s-3);border-bottom:1px solid var(--rule-faint)}.contact-k{font-family:var(--font-data);font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.foot{border-top:1px solid var(--rule);padding:var(--s-6) 0 var(--s-16);color:var(--ink-faint)}@media(max-width:68rem){.grid{grid-template-columns:minmax(0,1fr);row-gap:var(--s-4)}.grid-main,.section-label,.hero-meta{grid-column:1}.hero-meta{grid-row:auto;border-left:0;border-top:1px solid var(--rule);padding-left:0;padding-top:var(--s-4);margin-top:var(--s-4);display:grid;grid-template-columns:minmax(0,10rem) minmax(0,1fr);gap:var(--s-6);align-items:start}.hero-portrait{margin-bottom:0}.entry{grid-template-columns:minmax(0,1fr);row-gap:var(--s-4)}.note{justify-self:start}}@media(max-width:34rem){:root{--t-3xl: 2.75rem;--t-2xl: 2rem;--t-xl: 1.5rem}.hero{padding-top:var(--s-16)}.contact-row{grid-template-columns:minmax(0,1fr);gap:var(--s-1)}}.hidden{display:none}.opacity-0{opacity:0}.opacity-100{opacity:1}.scale-95{transform:scale(.95)}.scale-100{transform:scale(1)}.bg-opacity-0{background-color:#0000}.bg-opacity-50{background-color:#0000007f}.chat-launch{position:fixed;right:var(--s-6);bottom:var(--s-6);z-index:60;font-family:var(--font-data);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);background:var(--paper);border:1px solid var(--ink);padding:var(--s-3) var(--s-4);cursor:pointer;transition:background .18s ease,color .18s ease}.chat-launch:hover{background:var(--ink);color:var(--paper)}.chat-window{position:fixed;inset:0;z-index:70;transition:opacity .3s ease}.chat-overlay{position:absolute;inset:0;transition:background-color .3s ease}.chat-box{position:absolute;right:var(--s-6);bottom:var(--s-6);width:24rem;max-width:calc(100vw - var(--s-6) * 2);transition:transform .3s ease}.chat-panel{display:flex;flex-direction:column;max-height:min(32rem,80vh);background:var(--paper);border:1px solid var(--ink);box-shadow:0 12px 40px #0000002e}.chat-head{display:flex;align-items:center;justify-content:space-between;padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--rule);flex:none}.chat-title{font-family:var(--font-data);font-size:var(--t-xs);letter-spacing:.12em;text-transform:uppercase;font-weight:500}.chat-close{font-family:var(--font-data);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);background:none;border:0;padding:var(--s-1) 0;cursor:pointer}.chat-close:hover{color:var(--ink)}.chat-messages{flex:1;overflow-y:auto;padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-3);font-size:var(--t-sm);line-height:1.55}.chat-row{display:flex}.chat-row-user{justify-content:flex-end}.chat-row-bot{justify-content:flex-start}.chat-msg{max-width:85%;padding:var(--s-2) var(--s-3);overflow-wrap:break-word}.chat-msg-user{background:var(--accent-wash);border-left:2px solid var(--accent);color:var(--ink)}.chat-msg-bot{border-left:2px solid var(--rule);color:var(--ink-muted);white-space:pre-wrap}.chat-h{font-weight:600;color:var(--ink);margin-top:var(--s-2)}.chat-h:first-child{margin-top:0}.chat-li{padding-left:var(--s-4);position:relative}.chat-li:before{content:"—";position:absolute;left:0;color:var(--ink-faint)}.chat-sp{height:var(--s-2)}.chat-strong{font-weight:600;color:var(--ink)}.chat-em{font-style:italic;color:var(--ink)}.chat-foot{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-4);border-top:1px solid var(--rule);flex:none}.chat-input{flex:1;min-width:0;font-family:var(--font-body);font-size:var(--t-sm);color:var(--ink);background:transparent;border:0;border-bottom:1px solid var(--rule);padding:var(--s-2) 0}.chat-input::-moz-placeholder{color:var(--ink-faint)}.chat-input::placeholder{color:var(--ink-faint)}.chat-input:focus{outline:0;border-bottom-color:var(--accent)}.chat-send{font-family:var(--font-data);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--paper);background:var(--ink);border:1px solid var(--ink);padding:var(--s-2) var(--s-3);cursor:pointer;flex:none}.chat-send:disabled{opacity:.35;cursor:not-allowed}.chat-dots{display:flex;gap:.25rem;padding:.2rem 0}.chat-dot{width:.3rem;height:.3rem;background:var(--ink-faint);animation:chatPulse 1.2s ease-in-out infinite}.chat-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@keyframes chatPulse{0%,to{opacity:.25}50%{opacity:1}}@keyframes messageSlideIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.message-appear{animation:messageSlideIn .25s ease-out forwards}@media(max-width:40rem){.chat-box{inset:auto 0 0;width:100%;max-width:100%}.chat-panel{max-height:85vh;border-left:0;border-right:0;border-bottom:0}.chat-launch{right:var(--s-4);bottom:var(--s-4)}}@media(prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
