:root{--serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Source Serif 4", Georgia, Cambria, "Times New Roman", serif;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--measure: 44rem}:root,[data-theme=dark]{--bg: #16181c;--bg-soft: #1d2025;--text: #e7e7e4;--text-muted: #9aa0a6;--heading: #f4f4f1;--accent: #6aa8ff;--accent-hover: #98c2ff;--border: #2a2e34;--tag-bg: #232830;--tag-text: #b9c2cf}[data-theme=light]{--bg: #fbfaf7;--bg-soft: #f1efe9;--text: #22231f;--text-muted: #6b6b63;--heading: #141512;--accent: #1d6fe0;--accent-hover: #1457b8;--border: #e4e1d8;--tag-bg: #ece9e0;--tag-text: #5a5a51}*{box-sizing:border-box}html{font-size:18px;scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--serif);line-height:1.7;font-feature-settings:"kern","liga";-webkit-font-smoothing:antialiased;transition:background .2s ease,color .2s ease}.wrap{max-width:var(--measure);margin:0 auto;padding:0 1.4rem}.site-header{border-bottom:1px solid var(--border)}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;padding-top:1.1rem;padding-bottom:1.1rem}.brand{font-weight:700;font-size:1.05rem;color:var(--heading);text-decoration:none;letter-spacing:.2px}.nav{display:flex;align-items:center;gap:1.15rem;font-family:var(--mono);font-size:.8rem}.nav a{color:var(--text-muted);text-decoration:none}.nav a:hover,.nav a.active{color:var(--accent)}#theme-toggle{background:none;border:1px solid var(--border);color:var(--text-muted);border-radius:6px;width:30px;height:30px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:.85rem;line-height:1}#theme-toggle:hover{color:var(--accent);border-color:var(--accent)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline;text-underline-offset:2px}h1,h2,h3,h4{color:var(--heading);line-height:1.25;font-weight:700}h1{font-size:2.1rem;margin:0 0 .4rem;letter-spacing:-.4px}h2{font-size:1.45rem;margin:2.2rem 0 .6rem}h3{font-size:1.15rem;margin:1.8rem 0 .4rem}main{padding:2.6rem 0 4rem}.muted{color:var(--text-muted)}.date{font-family:var(--mono);font-size:.8rem;color:var(--text-muted)}.hero{text-align:center;padding:2.8rem 0 1.2rem}.hero .kicker{font-family:var(--mono);font-size:.72rem;letter-spacing:2.5px;text-transform:uppercase;color:var(--text-muted);margin:0 0 .9rem}.hero .display{font-size:clamp(2.5rem,7vw,3.8rem);line-height:1.04;letter-spacing:.5px;margin:0}.hero .tagline-big{font-style:italic;font-size:clamp(1.15rem,2.6vw,1.45rem);color:var(--heading);margin:1.1rem auto 0;max-width:30rem}.hero .lede{color:var(--text-muted);font-size:1.05rem;max-width:34rem;margin:1rem auto 0}.rule{width:64px;height:1px;background:var(--accent);opacity:.6;margin:1.6rem auto;border:0}.featured{border:1px solid var(--border);border-radius:12px;padding:1.7rem 1.9rem;background:var(--bg-soft);margin:1rem 0 2.2rem}.featured .label,.recent-label{font-family:var(--mono);font-size:.72rem;text-transform:uppercase;letter-spacing:2px;color:var(--accent)}.recent-label{color:var(--text-muted);display:block;margin:2.4rem 0 .6rem}.featured.has-cover{display:flex;gap:1.4rem;align-items:stretch}.featured-cover{flex:0 0 240px;line-height:0;align-self:stretch}.featured-cover img{display:block;width:240px;height:100%;max-height:220px;object-fit:cover;border-radius:9px;border:1px solid var(--border)}.featured-body{flex:1 1 auto;min-width:0}@media(max-width:640px){.featured.has-cover{flex-direction:column;gap:1rem}.featured-cover,.featured-cover img{flex:none;width:100%;max-height:240px}}.featured h2{font-size:clamp(1.5rem,3.5vw,2rem);margin:.5rem 0 .4rem}.featured h2 a{color:var(--heading)}.featured h2 a:hover{color:var(--accent);text-decoration:none}.featured .excerpt{color:var(--text-muted);margin:.5rem 0 0}.featured .meta{display:flex;gap:.9rem;align-items:center;flex-wrap:wrap;margin-top:.6rem}.intro{font-size:1.18rem;margin-bottom:.4rem}.intro .tagline{color:var(--heading);font-style:italic}.section-title{font-family:var(--mono);font-size:.78rem;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted);margin:3rem 0 .9rem;border-bottom:1px solid var(--border);padding-bottom:.5rem}.post-list{list-style:none;margin:0;padding:0}.post-list li{display:flex;gap:1rem;align-items:baseline;padding:.5rem 0}.post-list .date{flex:0 0 5.6rem}.post-list a{color:var(--text)}.post-list a:hover{color:var(--accent);text-decoration:none}.tags{display:flex;flex-wrap:wrap;gap:.4rem}.tag{font-family:var(--mono);font-size:.72rem;background:var(--tag-bg);color:var(--tag-text);padding:.12rem .5rem;border-radius:5px;text-decoration:none}a.tag:hover{color:var(--accent);text-decoration:none}.prose{font-size:1.08rem}.prose p{margin:1.1rem 0}.prose img{max-width:100%;height:auto;border-radius:8px;border:1px solid var(--border);display:block;margin:1.6rem auto}.prose blockquote{margin:1.4rem 0;padding:.2rem 0 .2rem 1.1rem;border-left:3px solid var(--accent);color:var(--text-muted);font-style:italic}.prose blockquote em{color:var(--text)}.prose ul,.prose ol{padding-left:1.4rem}.prose li{margin:.35rem 0}.prose hr{border:none;border-top:1px solid var(--border);margin:2.4rem 0}.prose code{font-family:var(--mono);font-size:.85em;background:var(--bg-soft);padding:.1rem .35rem;border-radius:4px}.article-header{margin-bottom:2rem}.article-header .meta{display:flex;gap:.9rem;align-items:center;margin-top:.7rem;flex-wrap:wrap}.talk-row{display:flex;gap:1.1rem;padding:1.4rem 0;border-bottom:1px solid var(--border)}.talk-thumb{flex:0 0 180px;line-height:0;align-self:flex-start}.talk-thumb img{display:block;width:180px;height:135px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}@media(max-width:560px){.talk-row{flex-direction:column;gap:.7rem}.talk-thumb{flex:none;width:100%}.talk-thumb img{width:100%;height:200px}}.gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:.7rem;margin:1.6rem 0 2.2rem}.gallery-item{display:block;line-height:0;aspect-ratio:4 / 3;overflow:hidden;border-radius:8px;border:1px solid var(--border)}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:filter .15s ease}.gallery-item:hover img{filter:brightness(1.08)}@media(max-width:560px){.gallery{grid-template-columns:1fr}}.cards{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr))}.card{border:1px solid var(--border);border-radius:10px;padding:1.1rem 1.2rem;background:var(--bg-soft)}.card h3{margin:0 0 .3rem}.card p{margin:0 0 .7rem;font-size:.95rem;color:var(--text-muted)}.card .links{font-family:var(--mono);font-size:.78rem;display:flex;gap:.9rem}.stat-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem;margin:1.2rem 0}.stat-tile{border:1px solid var(--border);background:var(--bg-soft);border-radius:10px;padding:.9rem 1rem;text-align:center}.stat-n{display:block;font-size:clamp(1.5rem,4vw,2.1rem);font-weight:700;color:var(--heading);line-height:1.1}.stat-label{display:block;font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-top:.3rem}@media(max-width:480px){.stat-tiles{grid-template-columns:repeat(2,1fr)}}:root,[data-theme=dark]{--hm-cell: 11px;--hm-gap: 3px;--hm-0: #20242b;--hm-1: #173860;--hm-2: #1f5aa8;--hm-3: #3f86e0;--hm-4: #6aa8ff}[data-theme=light]{--hm-0: #ebedf0;--hm-1: #cfe0fb;--hm-2: #7fb0f0;--hm-3: #2f6fd0;--hm-4: #1457b8}.heatmap-block{margin:.6rem 0 .4rem}.heatmap-scroll{overflow-x:auto;padding-bottom:.3rem}.hm-months{display:flex;gap:0;font-family:var(--mono);font-size:.62rem;color:var(--text-muted);margin-bottom:4px;min-width:max-content}.hm-months span{overflow:hidden;white-space:nowrap;box-sizing:border-box;padding-right:2px}.heatmap{display:flex;gap:var(--hm-gap);min-width:max-content}.hm-week{display:flex;flex-direction:column;gap:var(--hm-gap)}.hm-cell{width:var(--hm-cell);height:var(--hm-cell);border-radius:2px;background:var(--hm-0)}.hm-cell.l1{background:var(--hm-1)}.hm-cell.l2{background:var(--hm-2)}.hm-cell.l3{background:var(--hm-3)}.hm-cell.l4{background:var(--hm-4)}.hm-cell.out{opacity:.35}.hm-footer{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:.5rem;font-size:.75rem}.hm-legend{display:inline-flex;align-items:center;gap:3px;font-family:var(--mono);font-size:.68rem;color:var(--text-muted)}.hm-legend .hm-cell{display:inline-block}.books-grid{display:grid;gap:1.6rem;grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr))}.book{text-align:left}.book .cover{aspect-ratio:2 / 3;width:100%;border-radius:6px;border:1px solid var(--border);background:linear-gradient(135deg,var(--bg-soft),var(--tag-bg));display:flex;align-items:center;justify-content:center;text-align:center;padding:.8rem;color:var(--text-muted);font-size:.85rem}.book .b-title{font-weight:700;color:var(--heading);margin:.5rem 0 .1rem;font-size:.95rem}.book .b-author{color:var(--text-muted);font-size:.82rem;margin:0}.book .progress{font-family:var(--mono);font-size:.72rem;color:var(--text-muted);margin-top:.35rem}.bar{height:4px;background:var(--border);border-radius:3px;margin-top:.3rem;overflow:hidden}.bar>span{display:block;height:100%;background:var(--accent)}.newsletter{border:1px solid var(--border);background:var(--bg-soft);border-radius:10px;padding:1.3rem 1.4rem;margin:1.4rem 0}.newsletter form{display:flex;gap:.5rem;margin-top:.7rem;flex-wrap:wrap}.newsletter input[type=email]{flex:1 1 14rem;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.55rem .7rem;border-radius:7px;font-family:var(--serif)}.newsletter button{background:var(--accent);color:#07101f;border:none;font-weight:700;padding:.55rem 1rem;border-radius:7px;cursor:pointer;font-family:var(--mono);font-size:.85rem}.newsletter button:hover{background:var(--accent-hover)}.site-footer{border-top:1px solid var(--border);margin-top:2rem;padding:1.6rem 0;font-size:.85rem;color:var(--text-muted)}.site-footer .wrap{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}.site-footer .social{display:flex;gap:1rem;font-family:var(--mono);font-size:.8rem}.back-link{font-family:var(--mono);font-size:.8rem}@media(max-width:560px){.post-list li{flex-direction:column;gap:.1rem}.post-list .date{flex:none}h1{font-size:1.7rem}}
