@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url('/static/fonts/InterVariable.woff2') format('woff2')}
@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url('/static/fonts/InterVariable-Italic.woff2') format('woff2')}
:root{--paper:#f7f6f2;--ink:#252924;--muted:#747971;--line:#dcded7;--accent:#476351;--chip:#e9ece6;--serif:Georgia,'Times New Roman',serif;--sans:Inter,'Helvetica Neue',Helvetica,Arial,sans-serif}
*{box-sizing:border-box}
html{font-size:16px}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
a:hover{color:var(--accent)}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[contenteditable]:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
button,input,textarea,select{font:inherit}
button,a{touch-action:manipulation}
button{cursor:pointer}
button:disabled{cursor:wait;opacity:.6}
.site{max-width:1120px;margin:auto;padding:0 52px}
.header{height:92px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:24px}
.wordmark{font-family:var(--serif);font-size:24px;letter-spacing:-1.3px;white-space:nowrap}
.wordmark-divider{color:var(--accent);margin:0 6px}
.header nav{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.header nav a{font-size:13px;color:var(--muted);padding:10px 0}
.header nav a:hover,.header nav a.active{color:var(--ink)}
.header nav a.active{border-bottom:1px solid var(--ink)}
main{min-height:68vh}
.blog-intro{padding:90px 0 78px;max-width:780px}
.eyebrow{font-size:11px;line-height:1.5;letter-spacing:2px;color:var(--accent);font-weight:600}
.blog-intro .eyebrow{margin:0 0 22px}
.blog-intro h1{font:400 clamp(52px,7vw,88px)/1.04 var(--serif);letter-spacing:-3.5px;margin:0 0 24px;overflow-wrap:anywhere}
.title-dot{color:var(--accent)}
.blog-intro>p:last-child{font-size:17px;line-height:1.65;color:var(--muted);margin:0;max-width:560px}
.section-heading{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--ink);padding-bottom:17px;gap:15px}
.section-heading h2{font:400 19px var(--sans);margin:0}
.section-heading span{font-size:12px;color:var(--muted)}
.filters{display:flex;flex-wrap:wrap;gap:8px;padding:23px 0 18px}
.filter,.tag,.sample{font-size:12px;line-height:1.2;border:1px solid var(--line);border-radius:100px;padding:7px 12px;white-space:nowrap}
.filter{color:var(--muted)}
.filter:hover,.filter.chosen{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.filter span{opacity:.65;margin-left:5px;font-size:11px}
.text-row{display:grid;grid-template-columns:174px minmax(0,1fr);gap:30px;padding:36px 0 39px;border-bottom:1px solid var(--line)}
.row-date{font-size:12px;color:var(--muted);padding-top:5px;line-height:1.5;font-variant-numeric:tabular-nums}
.row-content{min-width:0}
.row-tags{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.tag{display:inline-block;background:var(--chip);border-color:transparent;color:var(--accent);font-size:11px;padding:6px 10px}
.tag:hover{background:var(--accent);color:white}
.sample{color:var(--muted);font-size:10px;padding:5px 9px}
.text-row h2{font:400 clamp(28px,3.2vw,40px)/1.18 var(--serif);letter-spacing:-1px;margin:0 0 13px;overflow-wrap:anywhere}
.text-row h2 a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
.text-row p{color:#656b64;font-size:15px;line-height:1.7;max-width:680px;margin:0 0 16px}
.read-link{color:var(--accent);font-size:12px;letter-spacing:.02em}
.read-link span{margin-left:4px}
.empty{padding:40px 0;color:var(--muted)}
.demo-note{font-size:12px;line-height:1.7;color:var(--muted);margin:22px 0 0}
footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:22px;padding:26px 0 36px;margin-top:72px;font-size:12px;color:var(--muted)}
.editor-link{color:var(--muted)}
.reading{max-width:760px;margin:0 auto;padding-top:54px}
.back{display:inline-block;font-size:13px;color:var(--muted);margin-bottom:56px}
.back:hover,.reading-bottom a:hover{text-decoration:underline;text-underline-offset:4px}
.article-header{border-bottom:1px solid var(--line);padding-bottom:33px;margin-bottom:39px}
.article-header .row-tags{margin-bottom:24px}
.article-header h1{font:400 clamp(42px,5.6vw,70px)/1.1 var(--serif);letter-spacing:-2px;margin:0 0 22px;overflow-wrap:anywhere}
.standfirst{font-size:19px;line-height:1.6;color:#626861;margin:0 0 22px}
.metadata{font-size:12px;color:var(--muted)}
.article-demo{font-size:12px;color:var(--muted);margin:0 0 25px}
.cover{display:block;width:100%;max-height:620px;object-fit:contain;margin:0 0 35px}
.prose{font:400 18px/27px var(--sans);overflow-wrap:anywhere}
.prose p{margin:0 0 27px}
.prose h2{font-family:var(--serif);font-size:31px;font-weight:400;line-height:1.3;margin:46px 0 22px}
.prose h3{font-family:var(--serif);font-size:25px;font-weight:400;line-height:1.4}
.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:4px}
.prose img{max-width:100%;height:auto;display:block;margin:30px auto}
.prose blockquote{margin:35px 0;padding:5px 0 5px 27px;border-left:2px solid var(--accent);font-style:italic;color:#626861}
.prose figure{margin:30px 0}
.prose figcaption{font:13px/1.6 var(--sans);color:var(--muted)}
.reading-bottom{border-top:1px solid var(--line);margin-top:50px;padding-top:29px;font-size:13px;color:var(--accent)}
.related{margin-top:70px}
.related>h2{font-size:15px;font-weight:400;border-bottom:1px solid var(--ink);padding-bottom:16px}
.related .text-row{grid-template-columns:140px minmax(0,1fr)}
.related .text-row h2{font-size:27px}
.related .text-row p{font-size:14px}
.simple{max-width:690px;margin:75px auto 110px}
.simple h1,.admin h1{font:400 44px/1.2 var(--serif);letter-spacing:-1px;margin:20px 0 32px}
.admin{max-width:820px;margin:50px auto 80px}
.admin-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}
.admin-heading h1{margin-top:0}
.admin label,.login label{display:block;font-size:14px;line-height:1.6;margin-bottom:22px}
.admin input:not([type=checkbox]):not([type=hidden]),.admin textarea,.admin select,.login input:not([type=hidden]){display:block;width:100%;background:#fff;border:1px solid #ced1ca;border-radius:2px;color:var(--ink);padding:12px 14px;margin-top:7px;line-height:1.5;font-size:16px}
.admin textarea{resize:vertical}
.admin small{display:block;font-size:12px;color:var(--muted);margin-top:7px;line-height:1.6}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 25px}
.button{display:inline-block;background:var(--ink);color:#fff;padding:13px 20px;border:1px solid var(--ink);border-radius:2px;font-size:14px;line-height:1.5;white-space:nowrap}
.button:hover{background:var(--accent);border-color:var(--accent);color:white}
.muted{color:var(--muted);font-size:14px;line-height:1.8}
.notice{background:#edf2ee;padding:14px;font-size:14px;color:var(--accent)}
.error{color:#993a30;font-size:14px;line-height:1.7}
.login{max-width:460px}
.login>p{font-size:15px;line-height:1.7;color:var(--muted)}
.toolbar{display:flex;gap:5px;flex-wrap:wrap;border:1px solid #ced1ca;border-bottom:0;padding:10px;background:#f1f2ee}
.toolbar button{border:0;background:transparent;font-size:13px;padding:8px;color:var(--ink)}
.toolbar button:hover{background:#e1e5de}
.rich-editor{background:white;border:1px solid #ced1ca;min-height:400px;padding:25px;margin-bottom:25px;font-size:19px}
.checks{display:flex;gap:24px;flex-wrap:wrap;margin:25px 0}
.checks label{font-size:14px;margin:0;display:flex;align-items:center;gap:8px}
.checks input{width:17px;height:17px;accent-color:var(--accent)}
.save-bar{display:flex;align-items:center;gap:25px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:25px;font-size:14px}
.save-bar>span{color:var(--muted)}
.text-button{border:0;background:none;color:var(--muted);font-size:13px;text-decoration:underline;text-underline-offset:3px;padding:12px 0}
.danger{color:#993a30}
.delete-form{margin-top:35px}
.file-label{max-width:420px}
.admin-list{margin:30px 0}
.admin-row{display:flex;justify-content:space-between;gap:25px;border-bottom:1px solid var(--line);padding:25px 0}
.admin-row>div:first-child{min-width:0}
.admin-row a{font:23px/1.4 var(--serif);overflow-wrap:anywhere}
.stat-total{font:54px var(--serif)}
.stat-total span{font:16px var(--sans);color:var(--muted)}
.stat-row{display:flex;justify-content:space-between;gap:24px;padding:15px 0;border-bottom:1px solid var(--line);font-size:14px;overflow-wrap:anywhere}
.admin>h2{font-size:18px;font-weight:500;margin-top:40px}
[hidden]{display:none!important}
@media(max-width:760px){.site{padding:0 24px}.header{height:auto;min-height:79px}.wordmark{font-size:21px}.header nav{gap:14px}.header nav a{font-size:12px}.blog-intro{padding:70px 0 58px}.blog-intro h1{font-size:clamp(48px,10vw,67px);letter-spacing:-2px}.blog-intro>p:last-child{font-size:15px}.text-row{grid-template-columns:1fr;gap:10px;padding:29px 0 31px}.row-date{padding:0}.text-row h2{font-size:32px}.reading{padding-top:32px}.back{margin-bottom:42px}.article-header h1{font-size:44px}.standfirst{font-size:17px}.prose{font-size:19px}.related .text-row{grid-template-columns:1fr}.simple{margin:50px auto 80px}.simple h1,.admin h1{font-size:37px}.admin{margin-top:35px}.header:has(+main .admin){align-items:flex-start;flex-direction:column;padding:20px 0;gap:6px}.form-grid{grid-template-columns:1fr}.admin-heading{align-items:flex-start;flex-direction:column;gap:0}.admin-heading h1{margin-bottom:20px}.toolbar button{padding:8px 6px}.rich-editor{padding:18px;min-height:350px}.checks{flex-direction:column;gap:15px}}
@media(max-width:380px){.site{padding:0 18px}.wordmark{font-size:18px}.header nav a{font-size:11px}.blog-intro h1{font-size:44px}.text-row h2{font-size:29px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
/* Public feed */
body:has(.public-site){background:#fff;color:#1e1e1e}
.public-site{max-width:1320px;padding:0 36px}
.public-site main{min-height:100vh}
.public-footer{border-top:1px solid #e8e8e8;display:flex;justify-content:space-between;gap:12px 30px;flex-wrap:wrap;margin:0;padding:24px 0 36px;color:#555;font-size:14px}
.public-footer a{overflow-wrap:anywhere}
.public-footer a:hover{text-decoration:underline;text-underline-offset:3px}
.feed-page{padding:58px 0 90px}
.feed-page .filters{display:flex;gap:9px;flex-wrap:wrap;border-bottom:1px solid #e8e8e8;padding:0 0 24px}
.feed-page .filter{border:1px solid #dedede;border-radius:100px;padding:8px 14px;font-size:13px;line-height:1.2;color:#555;background:#fff}
.feed-page .filter:hover,.feed-page .filter.chosen{color:#fff;background:#1e1e1e;border-color:#1e1e1e}
.feed{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 28px;align-content:start;min-height:65vh}
.feed .text-row{display:block;min-width:0;border-bottom:1px solid #e8e8e8;padding:28px 0 30px}
.feed .row-date{color:#888;font-size:12px;padding-top:5px}
.feed .row-tags{margin:0 0 12px;gap:10px}
.feed .tag,.reading .tag{padding:0;border:0;border-radius:0;background:none;color:#777;font-size:12px}
.feed .tag:hover,.reading .tag:hover{color:#1e1e1e;text-decoration:underline}
.feed .post-meta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 14px;margin-top:14px}
.feed .row-date{padding:0;white-space:nowrap}
.feed .row-tags{margin:0;justify-content:flex-end}
.post-preview{display:block;aspect-ratio:3/2;overflow:hidden;background:#eee}
.post-preview img{display:block;width:100%;height:100%;object-fit:cover}
.feed .post-heading{display:block;margin-top:16px}
.feed .text-row .post-title{font:400 clamp(25px,2.5vw,31px)/1.2 var(--serif);letter-spacing:-.6px;margin:0}
.feed .post-heading:hover .post-title{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
.feed .post-subtitle{font:400 17px/1.4 var(--sans);color:#555;margin:7px 0 0}
.tag-fieldset{border:0;padding:0;margin:0 0 27px}
.tag-fieldset legend{font-size:14px;margin-bottom:10px}
.tag-choices{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.admin .tag-choice{display:inline-flex;align-items:center;gap:7px;margin:0;padding:8px 12px;border:1px solid var(--line);border-radius:100px;cursor:pointer;font-size:13px}
.tag-choice:has(input:checked){background:var(--ink);border-color:var(--ink);color:#fff}
.tag-choice input{accent-color:var(--accent)}
.tag-add{display:flex;gap:9px;max-width:430px}
.admin .tag-add input{margin:0!important}
.tag-add .button{align-self:stretch}
#tag-status{font-size:13px;min-height:1.3em;color:var(--muted)}
.tag-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:22px 0 35px}
.tag-list li{padding:8px 12px;border:1px solid var(--line);border-radius:100px;font-size:13px}
.public-site .reading{padding:58px 0 100px;max-width:720px}
.public-site .back{margin-bottom:52px}
.public-site .article-header{border-color:#e8e8e8}
.public-site .article-header h1{color:#1e1e1e}
.public-site .article-header h1:has(+ .article-subtitle){margin-bottom:10px}
.article-subtitle{font:400 clamp(25px,3.5vw,34px)/1.3 var(--serif);color:#555;margin:0 0 26px}
@media(max-width:960px){.feed{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}}
@media(max-width:760px){.public-site{padding:0 22px}.feed-page{padding-top:36px}.public-site .reading{padding-top:34px}.public-site .prose{font-size:18px;line-height:27px}}
@media(max-width:640px){.feed{grid-template-columns:1fr}.feed .text-row{padding:27px 0 34px}.feed .post-meta{align-items:flex-start}.feed .row-tags{margin:0}.feed .text-row .post-title{font-size:32px}.feed .post-subtitle{font-size:19px}}
@media(max-width:480px){.post-preview{aspect-ratio:4/3}.feed .text-row .post-title{font-size:29px}.tag-add{flex-wrap:wrap}.tag-add .button{width:100%}}
