@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-latin.woff2) format("woff2");font-weight:100 1000;font-style:normal;font-display:swap}@font-face{font-family:Playfair Display;src:url(/fonts/playfair-display-latin.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--paper: #faf8f3;--surface: #f0ece4;--ink: #201e1b;--muted: #66645f;--accent: #ab402b;--line: #d4cec3;--serif: "Playfair Display", Georgia, serif;--sans: "DM Sans", system-ui, sans-serif;color-scheme:light}:root.dark{--paper: #211f1b;--surface: #2c2924;--ink: #f4eee4;--muted: #c0b9af;--accent: #e7977e;--line: #514a40;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}main{flex:1;min-width:0}img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration:none;text-underline-offset:5px;transition:color .18s}a:hover{color:var(--accent)}button{font:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::-moz-selection{background:var(--accent);color:var(--paper)}::selection{background:var(--accent);color:var(--paper)}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-family:var(--serif);font-weight:400;line-height:1.12;letter-spacing:-.035em}h1{font-size:clamp(3.2rem,6.1vw,6rem)}h2{font-size:clamp(2.1rem,3.5vw,3.4rem)}h3{font-size:clamp(1.5rem,2.3vw,2.1rem)}em{font-style:normal;color:var(--accent)}.wrap{width:min(1280px,calc(100% - 96px));margin-inline:auto}.eyebrow{font-size:.66rem;font-weight:600;text-transform:uppercase;letter-spacing:.28em;color:var(--muted);margin-bottom:16px}.lede{font-size:clamp(1rem,1.45vw,1.22rem);color:var(--muted);line-height:1.6;max-width:62ch}.text-link{color:var(--accent);display:inline-flex;align-items:center;gap:12px;font-size:.92rem;min-height:44px}.text-link:hover{text-decoration:underline}.text-link:after{content:"→";transition:transform .2s}.text-link:hover:after{transform:translate(4px)}.back-link{font-size:.85rem;color:var(--accent);display:inline-block;margin-bottom:32px;min-height:32px}.back-link:before{content:"←";margin-right:10px}.skip-link{position:fixed;left:16px;top:-100px;background:var(--ink);color:var(--paper);padding:12px 20px;z-index:100}.skip-link:focus{top:12px}.site-header{display:flex;align-items:center;gap:32px;min-height:100px}.wordmark{font-family:var(--serif);font-size:1.6rem;letter-spacing:-.025em;white-space:nowrap}.wordmark-dot{color:var(--accent)}.site-header nav{display:flex;gap:28px;margin-left:auto;align-items:center}.site-header nav a{font-size:.85rem;padding:12px 0;position:relative}.site-header nav a[aria-current]{color:var(--accent)}.site-header nav a[aria-current]:after{content:"";position:absolute;bottom:4px;left:0;right:0;border-bottom:1px solid}.header-controls{order:3;display:flex;gap:12px}.theme-toggle,.menu-toggle{background:none;border:1px solid var(--line);border-radius:0;padding:7px 12px;color:var(--muted);font-size:.75rem;min-height:40px}.theme-toggle:hover,.menu-toggle:hover{color:var(--accent);border-color:var(--accent)}.menu-toggle{display:none}.site-footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:24px;padding-block:25px;margin-top:60px;color:var(--muted);font-size:.75rem}.site-footer nav{display:flex;flex-wrap:wrap;gap:24px;align-items:center}.site-footer a{padding-block:8px}.hero{display:grid;grid-template-columns:1.5fr 1fr;align-items:center;gap:36px;padding:40px 0 56px;min-height:440px}.hero h1{font-size:clamp(3.2rem,5.7vw,5.6rem)}.hero h1 em{display:block}.hero .specialty{color:var(--muted);margin-top:24px;font-size:1.05rem}.hero .bio{color:var(--muted);max-width:57ch;font-size:.92rem;margin-top:16px}.hero .text-link{margin-top:22px}.hero-visual{position:relative;align-self:stretch;display:flex;align-items:center;min-height:350px}.systems-art{width:100%;mix-blend-mode:multiply}.dark .systems-art,.dark .intro-art{mix-blend-mode:screen;filter:invert(1) hue-rotate(160deg);opacity:.65}.profile-note{position:absolute;left:0;bottom:4px;width:112px;text-align:center;margin:0}.profile-note img{width:96px;margin-inline:auto}.profile-note figcaption{font-family:var(--serif);font-size:.85rem;color:var(--muted);line-height:1.35;margin-top:8px}.section{padding-block:40px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:28px}.section-heading .eyebrow{margin-bottom:7px}.section-note{color:var(--muted);font-size:.85rem}.home-work{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(0,1fr);gap:40px}.home-writing{border-left:1px solid var(--line);padding-left:36px}.home-writing .eyebrow{margin-top:7px}.home-writing h3{margin-block:22px 15px}.home-writing p:not(.eyebrow){font-size:.88rem;color:var(--muted)}.flagship{display:grid;grid-template-columns:160px minmax(0,1fr);gap:28px;align-items:center;padding:0 0 28px}.wordchess-art{background:#eee4d2;padding:14px;display:flex;align-items:center;justify-content:center;aspect-ratio:1}.wordchess-art img{width:100%;border-radius:10px}.flagship .eyebrow{color:var(--accent);margin-bottom:10px}.flagship h3{font-size:2.5rem}.flagship p:not(.eyebrow){font-size:.9rem;color:var(--muted);margin-top:12px}.link-group{display:flex;gap:22px;flex-wrap:wrap;margin-top:12px}.project-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:20px;align-items:start;border-top:1px solid var(--line);padding-block:24px}.project-number{font-family:var(--serif);font-size:1.8rem;color:var(--accent);line-height:1.3}.project-row h3{font-size:1.5rem}.project-row p{color:var(--muted);font-size:.85rem;margin-top:9px;max-width:70ch}.project-row .text-link{font-size:.8rem}.tech-list{display:flex;gap:6px 16px;flex-wrap:wrap;color:var(--muted);font-size:.7rem;margin-top:16px}.experience-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px}.experience-item+.experience-item{border-left:1px solid var(--line);padding-left:44px}.experience-item h3{font-size:1.65rem}.experience-item .role{font-size:.88rem;color:var(--muted);margin-top:5px}.experience-item .date{font-size:.7rem;letter-spacing:.06em;color:var(--accent);margin-block:12px}.experience-item p{font-size:.88rem;color:var(--muted)}.bottom-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:70px}.skill-list{display:flex;gap:16px 28px;flex-wrap:wrap;margin-top:26px;color:var(--muted);font-size:.88rem}.education h3{font-size:1.6rem;margin-block:26px 8px}.education p{color:var(--muted);font-size:.87rem}.education small{display:block;color:var(--accent);margin-top:12px}.page-intro{display:grid;grid-template-columns:2.2fr 1fr;align-items:center;gap:50px;padding:30px 0 44px;border-bottom:1px solid var(--line);min-height:300px}.page-intro h1{margin-bottom:22px}.intro-art{width:250px;justify-self:end;mix-blend-mode:multiply}.project-list .flagship{padding-block:42px;grid-template-columns:minmax(180px,.65fr) 2fr;gap:48px}.project-list .flagship h2{font-size:clamp(3rem,5vw,4.8rem)}.project-list .flagship .lede{margin-top:18px}.project-list .project-row{padding-block:34px;grid-template-columns:55px minmax(0,1fr) 170px}.project-list .project-row h3{font-size:2rem}.project-list .project-row p{font-size:.95rem}.essay-row{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:70px;align-items:center;padding-block:42px;border-bottom:1px solid var(--line)}.essay-row h2{font-size:clamp(2rem,3.5vw,3.5rem);max-width:23ch}.essay-row .lede{margin-top:20px;font-size:1rem}.essay-row .tech-list{margin-block:20px 6px;font-size:.65rem;text-transform:uppercase;letter-spacing:.1em}.essay-art{padding:20px;background:var(--surface)}.essay-art img{width:100%;max-height:240px;-o-object-fit:contain;object-fit:contain}.shelf-layout{display:grid;grid-template-columns:minmax(0,2.5fr) minmax(230px,1fr);gap:46px;padding-top:38px}.shelf-section{margin-bottom:38px}.shelf-section h2{font-size:2rem;margin-bottom:18px}.book-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.book-entry{padding-block:22px;border-top:1px solid var(--line)}.book-entry h3{font-size:1.4rem}.book-entry p{font-size:.8rem;color:var(--muted);margin-top:7px}.book-entry .text-link{font-size:.78rem;margin-top:7px}.book-feature{border-left:1px solid var(--line);padding-left:36px}.book-feature h2{font-size:2.25rem}.book-feature .cover{width:175px;margin-block:24px;max-height:240px;-o-object-fit:contain;object-fit:contain;-o-object-position:left;object-position:left}.book-feature p:not(.eyebrow){font-size:.87rem;color:var(--muted);margin-block:15px}.status{font-size:.68rem;color:var(--accent);text-transform:uppercase;letter-spacing:.13em}.social-layout{display:grid;grid-template-columns:2fr 1fr;gap:65px;padding-top:20px}.social-row{display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:20px;padding-block:28px;border-bottom:1px solid var(--line)}.social-row h2{font-size:2rem}.social-row p{color:var(--muted);font-size:.85rem}.social-row .handle{font-size:.7rem;margin-top:4px;overflow-wrap:anywhere}.social-aside{border-left:1px solid var(--line);padding:40px 0 0 40px}.social-aside img{width:130px;margin-bottom:25px}.social-aside h2{font-size:2rem}.social-aside p{color:var(--muted);font-size:.9rem;margin-top:16px}.social-index{font-family:var(--serif);font-size:1.65rem;color:var(--accent)}.article-shell{padding-top:32px}.article-grid{display:grid;grid-template-columns:190px minmax(0,780px);gap:60px;justify-content:center}.toc{align-self:start;position:sticky;top:28px;font-size:.76rem;padding-top:30px}.toc ul{list-style:none;margin:0;padding:0;border-left:1px solid var(--line)}.toc a{display:block;padding:7px 0 7px 16px;color:var(--muted);line-height:1.5}.toc a:hover{color:var(--accent)}.toc li[data-depth="3"]{padding-left:12px}.article-body{min-width:0}.article-header{padding-bottom:32px;border-bottom:1px solid var(--line);margin-bottom:36px}.article-header h1{font-size:clamp(2.8rem,4.8vw,4.6rem);line-height:1.06}.article-meta{display:flex;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:.78rem;margin-top:24px}.article-header .lede{margin-top:22px}.article-header .tech-list{margin-top:20px}.book-header{display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:30px;align-items:start}.book-header .cover{width:160px;max-height:220px;-o-object-fit:contain;object-fit:contain}.book-header .author{font-size:1.1rem;color:var(--muted);margin-top:20px}.article-end{border-top:1px solid var(--line);margin-top:48px;padding-top:24px;display:flex;justify-content:space-between;gap:20px;font-size:.85rem}.prose{font-size:1.0625rem;line-height:1.85;color:var(--muted);overflow-wrap:anywhere}.prose>:first-child{margin-top:0}.prose p{margin:0 0 1.4em}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--ink);scroll-margin-top:24px}.prose h1,.prose h2{font-size:2rem;margin:1.7em 0 .7em}.prose h3{font-size:1.6rem;margin:1.5em 0 .7em}.prose h4{font-size:1.25rem;margin:1.4em 0 .7em}.prose h5,.prose h6{font-family:var(--sans);font-size:1rem;font-weight:600;margin:1.4em 0 .7em}.prose strong{color:var(--ink);font-weight:600}.prose em{font-style:italic;color:inherit}.prose a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px}.prose ul,.prose ol{padding-left:1.5em;margin:0 0 1.6em}.prose ul{list-style:disc}.prose ol{list-style:decimal}.prose li{padding-left:.35em;margin:.5em 0}.prose li::marker{color:var(--accent)}.prose li>ul,.prose li>ol{margin-block:.5em}.prose blockquote{border-left:2px solid var(--accent);margin:2em 0;padding:.2em 0 .2em 1.3em;font-family:var(--serif);font-size:1.6rem;line-height:1.5;color:var(--accent)}.prose blockquote p:last-child{margin-bottom:0}.prose code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.83em;background:var(--surface);color:var(--accent);padding:.16em .3em;border-radius:3px;overflow-wrap:anywhere}.prose pre{max-width:100%;overflow-x:auto;background:#252723!important;border:1px solid #44483e;border-radius:4px;padding:24px;margin:1.8em 0;line-height:1.7;-moz-tab-size:2;-o-tab-size:2;tab-size:2}.prose pre code{padding:0;color:#eee9dd;background:none;font-size:.81rem;overflow-wrap:normal}.prose pre .line{white-space:pre}.prose img{width:auto;max-width:100%;margin:2em auto;border-radius:3px}.prose figure{margin:2em 0}.prose figcaption{font-size:.8rem;text-align:center}.prose table{width:100%;border-collapse:collapse;margin:0;font-size:.85rem;line-height:1.65;text-align:left}.prose th{color:var(--ink);font-weight:600;background:var(--surface)}.prose td,.prose th{border:1px solid var(--line);padding:14px;vertical-align:top;min-width:140px}.table-scroll{overflow-x:auto;max-width:100%;margin:2em 0;border:1px solid var(--line)}.table-scroll table{border-style:hidden}.prose hr{border:0;border-top:1px solid var(--line);margin:2.5em 0}.prose input[type=checkbox]{accent-color:var(--accent)}.empty-note{padding:24px;border-block:1px solid var(--line);color:var(--muted);font-size:.95rem}.notes-list{max-width:850px}.notes-row{border-bottom:1px solid var(--line);padding-block:30px}.notes-row h2{font-size:1.8rem;margin-bottom:14px}.notes-row p{color:var(--muted)}.notes-row a{color:var(--accent)}.hero-visual .systems-art{max-height:360px;-o-object-fit:contain;object-fit:contain}.hero{min-height:0;padding-top:28px;padding-bottom:40px}.hero-visual{min-height:360px}.hero h1{letter-spacing:-.025em}.no-cover{grid-template-columns:1fr}.toc summary{font-size:.65rem;text-transform:uppercase;letter-spacing:.2em;color:var(--muted);margin-bottom:16px;cursor:pointer}.article-grid:has(.toc:empty){grid-template-columns:minmax(0,780px)}@media (min-width: 1500px){.hero h1{font-size:6.1rem}}@media (max-width: 1050px){.wrap{width:calc(100% - 64px)}.site-header{gap:18px}.site-header nav{gap:20px}.wordmark{font-size:1.4rem}.hero{grid-template-columns:1.6fr 1fr;gap:10px}.hero h1{font-size:4.5rem}.profile-note{left:-15px;width:90px}.profile-note img{width:75px}.home-work{grid-template-columns:1.8fr 1fr;gap:28px}.home-writing{padding-left:26px}.flagship{grid-template-columns:115px 1fr;gap:22px}.project-row{grid-template-columns:32px 1fr}.project-row>.text-link{grid-column:2}.article-grid{grid-template-columns:160px minmax(0,1fr);gap:32px}.shelf-layout{gap:28px}.book-feature{padding-left:25px}.page-intro{gap:24px}.project-list .project-row{grid-template-columns:42px 1fr 130px}.project-list .project-row>.text-link{grid-column:auto}}@media (max-width: 760px){.wrap{width:calc(100% - 40px)}.site-header{min-height:80px;flex-wrap:wrap;gap:0;position:relative}.wordmark{font-size:1.35rem}.header-controls{margin-left:auto;order:initial}.menu-toggle{display:block}.site-header nav{display:none;flex-basis:100%;margin:0;padding:12px 0 22px;gap:5px;flex-direction:column;align-items:stretch;border-bottom:1px solid var(--line)}.site-header nav.is-open{display:flex}.site-header nav a{padding:10px 4px;min-height:44px}.site-header nav a[aria-current]:after{display:none}.hero{grid-template-columns:1fr;padding:30px 0 34px;gap:10px}.hero h1{font-size:clamp(3.3rem,10.5vw,5.2rem)}.hero .specialty{font-size:.92rem;margin-top:20px}.hero .bio{font-size:.9rem}.hero-visual{min-height:0;height:230px;max-width:420px;width:100%;justify-self:center}.systems-art{width:245px;margin-left:auto;max-height:230px;-o-object-fit:contain;object-fit:contain}.profile-note{left:18px;bottom:10px;width:110px}.profile-note img{width:86px}.home-work{grid-template-columns:1fr;gap:28px}.home-writing{border-left:0;border-top:1px solid var(--line);padding:28px 0 0}.home-writing h3{margin-block:14px;font-size:1.8rem}.section{padding-block:30px}.section-heading{margin-bottom:24px}.section-note{display:none}.flagship{grid-template-columns:95px 1fr;gap:20px}.flagship h3{font-size:2rem}.project-row{padding-block:23px}.experience-grid{grid-template-columns:1fr;gap:25px}.experience-item+.experience-item{border-left:0;border-top:1px solid var(--line);padding:25px 0 0}.bottom-grid{grid-template-columns:1fr;gap:38px}.skill-list{gap:12px 24px}.page-intro{grid-template-columns:1fr;padding:30px 0 32px;gap:0;min-height:0}.page-intro h1{font-size:clamp(3.2rem,11vw,4.5rem)}.intro-art{display:none}.page-intro .lede{font-size:1rem}.project-list .flagship{grid-template-columns:110px minmax(0,1fr);padding-block:30px;gap:24px}.project-list .flagship h2{font-size:2.8rem}.project-list .flagship .lede{font-size:.92rem}.project-list .project-row{grid-template-columns:32px minmax(0,1fr);gap:15px}.project-list .project-row>.text-link{grid-column:2}.project-list .project-row h3{font-size:1.8rem}.essay-row{grid-template-columns:1fr;gap:20px;padding-block:30px}.essay-row h2{font-size:2.1rem}.essay-art{max-width:420px}.shelf-layout{grid-template-columns:1fr;padding-top:28px;gap:5px}.book-grid{gap:0 20px}.book-entry h3{font-size:1.3rem}.book-feature{border-left:0;border-top:1px solid var(--line);padding:30px 0 0}.book-feature .cover{float:left;width:110px;margin:20px 24px 15px 0}.book-feature:after{content:"";display:block;clear:both}.social-layout{grid-template-columns:1fr;gap:0}.social-row{grid-template-columns:30px 1fr auto;gap:14px}.social-row h2{font-size:1.8rem}.social-row .text-link{font-size:0}.social-row .text-link:after{font-size:1.3rem}.social-aside{border-left:0;padding:35px 0 0}.social-aside img{width:95px;float:left;margin-right:24px}.social-aside h2{font-size:1.8rem}.social-aside p{margin-top:12px}.article-shell{padding-top:20px}.article-grid{grid-template-columns:1fr;gap:24px}.toc{position:static;padding:0;order:0}.toc details{border-block:1px solid var(--line);padding:15px 0}.toc summary{cursor:pointer;color:var(--accent);font-size:.8rem}.toc ul{margin-top:12px}.article-header h1{font-size:clamp(2.55rem,8vw,3.8rem)}.article-header{margin-bottom:28px;padding-bottom:26px}.book-header{grid-template-columns:1fr 95px;gap:18px}.book-header .cover{width:95px}.book-header h1{font-size:2.5rem}.prose{font-size:1rem;line-height:1.85}.prose h1,.prose h2{font-size:1.8rem}.prose h3{font-size:1.45rem}.prose blockquote{font-size:1.4rem}.prose pre{padding:17px}.site-footer{margin-top:45px;flex-direction:column;gap:10px;padding-block:24px}.site-footer nav{gap:20px}.article-end{flex-wrap:wrap}.project-list .flagship .link-group{gap:8px 18px}.project-list .flagship .tech-list{font-size:.65rem}}.section-heading>.text-link{white-space:nowrap;flex-shrink:0}.home-writing>.text-link{display:flex;width:-moz-fit-content;width:fit-content}.book-feature,.social-aside{align-self:start}@media (max-width: 390px){.wrap{width:calc(100% - 32px)}.book-grid{grid-template-columns:1fr}.hero h1{font-size:3.1rem}.project-list .flagship{grid-template-columns:1fr}.project-list .flagship .wordchess-art{width:125px}.header-controls{gap:6px}.theme-toggle,.menu-toggle{padding-inline:9px}.section-heading{align-items:flex-start;gap:14px}.section-heading>.text-link{font-size:.75rem;gap:6px}}.article-grid{grid-template-columns:190px minmax(0,850px);gap:44px;justify-content:start}.article-header h1{font-size:clamp(2.8rem,4.3vw,4.1rem)}.prose{max-width:740px}@media (min-width: 761px) and (max-width: 1050px){.hero h1{font-size:clamp(3.2rem,6.2vw,4.3rem)}.profile-note{width:110px}.article-grid{grid-template-columns:150px minmax(0,1fr);gap:28px}.home-work{grid-template-columns:1.7fr 1fr}}@media (max-width: 760px){.article-grid{grid-template-columns:1fr;gap:24px}.article-header h1{font-size:clamp(2.55rem,8vw,3.8rem)}}.intro-copy{min-width:0}@media (max-width: 390px){.page-intro h1{font-size:2.7rem}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}.project-side{display:flex;flex-direction:column;align-items:flex-end;gap:12px}.experience-details{margin-top:18px;font-size:.85rem;color:var(--muted)}.experience-details summary{cursor:pointer;color:var(--accent);padding-block:6px}.experience-details ul{list-style:disc;padding-left:18px;margin-top:12px}.experience-details li{margin-block:9px}.project-art{width:160px;height:145px;-o-object-fit:contain;object-fit:contain}.dark .project-art{filter:invert(1) hue-rotate(160deg);opacity:.8}@media (max-width: 1050px){.project-row>.project-side{grid-column:2;align-items:flex-start}.project-list .project-row>.project-side{grid-column:auto;align-items:flex-end}}@media (max-width: 760px){.project-list .project-row>.project-side{grid-column:2;align-items:flex-start}.project-art{display:none}}
