@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Source+Serif+4:opsz,wght@8..60,400;8..60,600&family=Manrope:wght@400;500;600;700&display=swap');
body{overflow-x:hidden}h1:focus{outline:none}
:root{--ink:#18201d;--muted:#5c6661;--paper:#f7f6f2;--surface:#eeece6;--line:#d8d7d1;--accent:#0a6654;--serif:"Source Serif 4",Georgia,serif;--sans:Manrope,Arial,sans-serif;--mono:"IBM Plex Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.7;text-rendering:optimizeLegibility}a{color:inherit;text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);text-underline-offset:.2em}a:hover{color:var(--accent)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.08;letter-spacing:-.025em}.shell{width:min(1120px,calc(100% - 48px));margin-inline:auto}.site-header{border-bottom:1px solid var(--line)}.header-inner{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:32px}.wordmark{font-family:var(--serif);font-size:1.55rem;font-weight:600;text-decoration:none;letter-spacing:-.05em}.wordmark span{color:var(--accent)}nav{display:flex;gap:clamp(18px,3vw,36px)}nav a{color:var(--muted);font-size:.86rem;font-weight:600;text-decoration:none}nav a.active,nav a:hover{color:var(--ink)}.hero{padding-top:clamp(88px,13vw,168px);padding-bottom:clamp(90px,12vw,150px)}.eyebrow{color:var(--accent);font:500 .73rem/1.4 var(--mono);letter-spacing:.09em;text-transform:uppercase}.hero h1{font-size:clamp(4rem,10vw,8.4rem);margin:.15em 0 .12em}.hero-lede{max-width:820px;font:400 clamp(1.65rem,3.1vw,2.55rem)/1.32 var(--serif);letter-spacing:-.02em;margin-bottom:24px}.hero-copy{max-width:700px;color:var(--muted);font-size:1.08rem}.actions{display:flex;align-items:center;flex-wrap:wrap;gap:18px;margin-top:30px}.button{display:inline-block;border:1px solid var(--ink);padding:10px 17px;font-size:.82rem;font-weight:600;text-decoration:none}.button.primary{background:var(--ink);color:white}.button:hover{border-color:var(--accent);color:var(--accent)}.button.primary:hover{background:var(--accent);color:white}.text-link{font-size:.88rem;font-weight:600}.section{padding-block:clamp(70px,9vw,112px);border-top:1px solid var(--line)}.section-heading{margin-bottom:46px}.section-heading.split{display:flex;align-items:end;justify-content:space-between;gap:30px}.section-heading h2,.connect h2{font-size:clamp(2.3rem,4vw,3.6rem);margin:0}.book-compact-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line)}.book-compact{display:grid;grid-template-columns:54px 1fr;gap:20px;background:var(--paper);padding:34px;text-decoration:none}.book-compact>span{color:var(--accent);font:500 .8rem var(--mono)}.book-compact strong{font:600 1.45rem/1.25 var(--serif)}.book-compact p{color:var(--muted);font-size:.9rem;margin:12px 0 0}.writing-item{display:grid;grid-template-columns:175px minmax(240px,1fr) minmax(220px,.8fr);gap:38px;padding:34px 0;border-top:1px solid var(--line)}.writing-item:last-child{border-bottom:1px solid var(--line)}.writing-item h2{font-size:clamp(1.4rem,2.3vw,2rem);margin:0}.writing-item h2 a{text-decoration:none}.writing-item>p{color:var(--muted);margin:0}.article-meta{display:flex;flex-direction:column;gap:4px;color:var(--muted);font:400 .74rem/1.5 var(--mono)}.article-meta span:first-child{color:var(--accent)}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:20px}.tags span{border:1px solid var(--line);color:var(--muted);padding:3px 8px;font:400 .67rem var(--mono)}.writing-item .tags{display:none}.project-lines{border-top:1px solid var(--line)}.project-lines a{display:flex;justify-content:space-between;gap:30px;padding:28px 0;border-bottom:1px solid var(--line);text-decoration:none}.project-lines strong{font:600 1.25rem var(--serif)}.project-lines span{color:var(--muted);font:400 .72rem var(--mono)}.connect{padding-block:clamp(80px,10vw,128px)}.connect>p:last-child{color:var(--muted);font-size:1.05rem}.page-intro{padding-top:clamp(80px,11vw,136px);padding-bottom:clamp(70px,9vw,110px)}.page-intro h1,.about-page h1{max-width:920px;font-size:clamp(3rem,7vw,6rem);margin:.15em 0 .3em}.page-intro>p:last-child{max-width:670px;color:var(--muted);font-size:1.1rem}.book-list{padding-bottom:110px}.book-feature{display:grid;grid-template-columns:280px 1fr;align-items:center;gap:clamp(45px,8vw,110px);padding:72px 0;border-top:1px solid var(--line)}.book-feature h2{max-width:680px;font-size:clamp(2.1rem,4vw,3.45rem)}.book-feature>div:last-child>p:not(.eyebrow){max-width:650px;color:var(--muted)}.book-cover-placeholder{aspect-ratio:4/5.7;padding:27px;background:var(--ink);color:white;display:flex;flex-direction:column;justify-content:space-between;box-shadow:12px 16px 0 var(--surface)}.book-cover-placeholder span{font:600 1.4rem/1.2 var(--serif)}.book-cover-placeholder strong{color:#6fd0b5;font:600 3.6rem/1 var(--serif)}.book-cover-placeholder small{font:500 .75rem var(--mono);letter-spacing:.1em;text-transform:uppercase}.project-list{padding-top:0}.project-list article{max-width:850px;padding:55px 0;border-bottom:1px solid var(--line)}.project-list h2{font-size:clamp(2rem,4vw,3rem)}.project-list article>p:not(.eyebrow){max-width:690px;color:var(--muted)}.article-page{max-width:820px;padding-top:clamp(75px,10vw,126px);padding-bottom:120px}.article-page header{padding-bottom:48px;border-bottom:1px solid var(--line)}.article-page h1{font-size:clamp(3rem,7vw,5.5rem);margin:.2em 0 .25em}.article-dek{color:var(--muted);font:400 clamp(1.25rem,2.4vw,1.65rem)/1.45 var(--serif)}.article-page .article-meta{flex-direction:row;gap:24px;margin-top:30px}.article-hero{display:block;width:100%;margin:54px 0}.prose{max-width:700px;margin:58px auto 0;font:400 1.16rem/1.82 var(--serif)}.prose h1{display:none}.prose h2{font-size:2rem;margin:2.1em 0 .65em}.prose h3{font-size:1.45rem;margin:1.8em 0 .5em}.prose p,.prose ul{margin-bottom:1.4em}.prose li{padding-left:.3em;margin:.4em 0}.prose blockquote{border-left:3px solid var(--accent);margin:2em 0;padding:.2em 0 .2em 1.5em;color:var(--muted);font-style:italic}.prose blockquote p{margin:0}.prose code{background:var(--surface);padding:.1em .3em;font:400 .82em var(--mono)}.prose pre{overflow:auto;background:#18201d;color:#e9ede9;padding:24px;margin:2em 0;font-size:.9rem;line-height:1.65}.prose pre code{background:none;padding:0}.article-source{max-width:700px;margin:55px auto 0;padding-top:24px;border-top:1px solid var(--line);font-size:.9rem}.about-page{padding-top:clamp(80px,11vw,136px);padding-bottom:130px}.about-copy{max-width:720px;margin:55px 0 0 auto;font:400 1.25rem/1.75 var(--serif)}.site-footer{border-top:1px solid var(--line)}.footer-inner{min-height:150px;display:flex;justify-content:space-between;align-items:center}.footer-inner>div:first-child{display:flex;flex-direction:column}.footer-inner span{color:var(--muted);font-size:.76rem}.footer-links{display:flex;gap:24px;font-size:.84rem}#blazor-error-ui{display:none;position:fixed;inset:auto 0 0;padding:12px;background:#fff4d3;z-index:99}.loading-progress{position:absolute;inset:30vh 0 auto;margin:auto;width:64px;height:64px}.loading-progress circle{fill:none;stroke:var(--line);stroke-width:8%;transform-origin:50% 50%}.loading-progress circle:last-child{stroke:var(--accent);stroke-dasharray:25%,100%;animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.loading-progress circle:last-child{animation:none}}
@media(max-width:760px){.shell{width:min(100% - 32px,1120px)}.header-inner{min-height:70px;align-items:flex-start;padding-block:18px}nav{gap:12px 18px;flex-wrap:wrap;justify-content:flex-end}nav a{font-size:.75rem}.hero{padding-top:78px}.hero h1{font-size:clamp(3.7rem,18vw,5.5rem)}.book-compact-grid,.book-feature{grid-template-columns:1fr}.book-cover-placeholder{width:min(250px,75vw)}.writing-item{grid-template-columns:1fr;gap:10px}.writing-item .article-meta{flex-direction:row}.project-lines a,.footer-inner{align-items:flex-start;flex-direction:column}.project-lines span{text-align:left}.footer-inner{justify-content:center;gap:20px}.section-heading.split{align-items:flex-start;flex-direction:column}}
@media(max-width:460px){.header-inner{flex-direction:column;gap:12px}nav{justify-content:flex-start}.hero{padding-top:60px}.hero-lede{font-size:1.45rem}.book-compact{padding:25px;grid-template-columns:34px 1fr}}
@media(max-width:460px){nav{width:100%;gap:8px;justify-content:space-between}nav a{font-size:.68rem}}
@media(max-width:600px){.header-inner{flex-direction:column;gap:12px}.header-inner nav{width:100%;gap:8px;justify-content:space-between}.header-inner nav a{font-size:.68rem}.hero{padding-top:60px}.hero-lede{font-size:1.45rem}}
.writing-image{display:block;grid-column:1/-1;aspect-ratio:2.4/1;overflow:hidden}.writing-image img{display:block;width:100%;height:100%;object-fit:cover}
.book-compact{grid-template-columns:1fr}.book-cover{display:block;width:100%;aspect-ratio:4/5.7;object-fit:cover;box-shadow:12px 16px 0 var(--surface)}.profile-image{display:block;width:min(220px,45vw);aspect-ratio:1;object-fit:cover;margin-bottom:36px}.empty-state{max-width:680px;padding:52px 0;border-block:1px solid var(--line)}.empty-state h2{font-size:clamp(2rem,4vw,3rem)}.empty-state>p:last-child{color:var(--muted)}

/* Homepage editorial scale: quieter type and tighter, still-generous rhythm. */
.hero{padding-top:clamp(70px,10vw,126px);padding-bottom:clamp(68px,9vw,106px)}
.hero h1{font-size:clamp(3.6rem,7.5vw,6.3rem);font-weight:400;margin:.16em 0 .14em}
.hero-lede{font-size:clamp(1.45rem,2.55vw,2.08rem);font-weight:400;max-width:760px}
.hero.has-profile{display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,280px);align-items:center;gap:clamp(48px,7vw,88px)}
.hero.has-profile .profile-image{width:100%;margin:0}
.home-section{padding-block:clamp(54px,6.5vw,80px)}
.home-section .section-heading{margin-bottom:36px}
.home-section .section-heading h2,.home-connect h2{font-size:clamp(2.05rem,3.2vw,3rem);font-weight:400}
.home-section .book-compact strong{font-weight:500;font-size:1.32rem}
.home-section .writing-item h2{font-size:clamp(1.3rem,2vw,1.75rem);font-weight:500}
.home-connect{padding-block:clamp(58px,7vw,88px)}
@media(max-width:760px){.hero.has-profile{grid-template-columns:1fr;gap:32px}.hero.has-profile .profile-image{order:-1;width:min(200px,55vw)}.hero h1{font-size:clamp(3.25rem,16vw,4.8rem)}.hero-lede{font-size:clamp(1.35rem,6vw,1.65rem)}.home-section{padding-block:clamp(48px,12vw,64px)}}

/* Shared publication page introductions. */
.page-intro,.article-page{padding-top:clamp(72px,8vw,108px)}
.page-intro{padding-bottom:clamp(58px,7vw,88px)}
.page-intro h1,.article-intro h1{max-width:920px;font-size:clamp(2.8rem,5vw,4.6rem);font-weight:400;margin:.18em 0 .3em}
.page-intro>p:last-child{max-width:700px;font-size:1.08rem}
.article-page{padding-bottom:clamp(84px,9vw,112px)}
.article-intro{padding-bottom:44px}
.about-page{padding:0 0 clamp(84px,9vw,112px)}
.about-body{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,700px);align-items:start;gap:clamp(48px,7vw,96px);padding-top:clamp(48px,6vw,72px);border-top:1px solid var(--line)}
.about-body.without-image{grid-template-columns:minmax(0,700px);justify-content:end}
.about-profile-image{display:block;width:100%;aspect-ratio:1;object-fit:cover}
.about-copy{max-width:700px;margin:0;font-size:1.18rem}
@media(max-width:760px){.page-intro,.article-page{padding-top:clamp(56px,12vw,76px)}.page-intro{padding-bottom:clamp(48px,10vw,64px)}.page-intro h1,.article-intro h1{font-size:clamp(2.55rem,11vw,3.6rem)}.about-body{grid-template-columns:1fr;gap:36px;padding-top:48px}.about-profile-image{width:min(240px,68vw)}.about-copy{font-size:1.1rem}}
