:root{color-scheme:dark;--bg:#0c1015;--panel:#1b1e23;--text:#e2e5e9;--muted:#a1a9b3;--line:#353c46;--accent:#b7cee5}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 25% 15%,#1c2a38 0,transparent 55%),var(--bg);color:var(--text);font:16px/1.65 "Segoe UI",Arial,sans-serif;min-height:100vh}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}[hidden]{display:none!important}.topbar{display:flex;align-items:center;gap:32px;padding:18px max(5vw,20px);border-bottom:1px solid #ffffff0b;background:#171b20e8}.home-link{color:var(--muted)}.brand{font-weight:600;letter-spacing:.04em}.brand span{color:var(--muted);font-weight:400}#search-form{margin-left:auto;display:flex;gap:10px;align-items:center;border:1px solid #59616c;border-radius:30px;padding:5px 16px;width:300px;background:#0c101599}#search-form span{font-size:26px;line-height:1}#search{width:100%;min-width:0;border:0;background:transparent;color:var(--text);padding:3px 0;outline-offset:2px}main{max-width:1500px;margin:auto;padding:50px max(4vw,20px) 80px}.intro{margin-bottom:30px}.eyebrow{font-size:11px;letter-spacing:.22em;color:var(--accent);margin:0 0 8px}h1{font-size:clamp(30px,4vw,46px);font-weight:500;letter-spacing:-.035em;line-height:1.2;margin:0 0 15px}.intro>p:last-child{color:var(--muted);margin:0}.layout{display:grid;grid-template-columns:minmax(0,1fr) 255px;gap:48px}.list-toolbar{display:flex;justify-content:space-between;align-items:center;min-height:46px;margin-bottom:12px;font-size:13px;color:var(--muted)}.list-toolbar p{margin:0}#clear{border:0;background:none;color:var(--accent)}#posts{display:grid;gap:26px}.post-card{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);overflow:hidden;border:1px solid #ffffff26;border-radius:15px;background:var(--panel);box-shadow:0 8px 30px #9bbbd01c;transition:border-color .2s,box-shadow .2s}.post-card:hover{border-color:#aecbe37a;box-shadow:0 8px 34px #9bbbd034}.card-copy{padding:30px;min-width:0;display:flex;flex-direction:column}.card-copy h2{font-size:23px;line-height:1.35;font-weight:500;margin:9px 0 12px}.card-copy h2 a:after{content:" ↗";font-size:16px;color:var(--muted)}.excerpt{color:var(--muted);margin:0 0 24px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.post-meta{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:12px;color:var(--muted);margin-top:auto}.card-image{display:block;position:relative;width:100%;aspect-ratio:2 / 1;align-self:start;overflow:hidden;background:#10151a}.card-image img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.post-label{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--accent)}.card-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;font-size:11px;color:var(--accent)}aside{padding-top:58px}aside section{border-left:1px solid #68727d;padding-left:24px;margin-bottom:42px}aside h2{font-size:17px;font-weight:600;margin:0 0 19px}.recent-list{list-style:none;padding:0;margin:0}.recent-list li{margin:0 0 14px}.recent-list a{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted);font-size:14px}.recent-list a:hover{color:var(--text)}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{color:var(--muted);border:1px solid #59616c;background:transparent;border-radius:22px;padding:4px 12px;font-size:12px}.chip:hover,.chip[aria-pressed=true]{background:#b7cee51a;color:var(--text);border-color:var(--accent)}.sidebar-note{font-size:12px;color:#7e8996;padding-left:25px}footer{text-align:center;padding:24px;border-top:1px solid #ffffff10;color:var(--muted);font-size:11px;letter-spacing:.08em}footer span{padding:0 12px}.empty,.notice{padding:30px;border:1px solid var(--line);border-radius:12px;color:var(--muted)}.back-link{display:inline-block;color:var(--accent);margin-bottom:32px;font-size:14px}#reader{min-width:0;padding-top:16px}#post-header h1{font-size:clamp(28px,4vw,42px);margin:12px 0 22px}#post-header{padding-bottom:30px;border-bottom:1px solid var(--line);margin-bottom:32px}.markdown-body{font:17px/1.85 "Segoe UI",Arial,sans-serif;overflow-wrap:anywhere}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{line-height:1.35;margin:1.8em 0 .7em;font-weight:600;letter-spacing:-.02em}.markdown-body h1{font-size:2em}.markdown-body h2{font-size:1.55em;border-bottom:1px solid var(--line);padding-bottom:.3em}.markdown-body h3{font-size:1.2em}.markdown-body a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.markdown-body p{margin:1em 0}.markdown-body img{max-width:100%;height:auto;border-radius:8px}.markdown-body blockquote{margin:1.5em 0;border-left:3px solid #8ca8c2;padding:2px 22px;color:var(--muted);background:#ffffff04}.markdown-body code{font: .86em/1.6 Consolas,monospace;background:#ffffff0a;padding:.2em .4em;border-radius:4px}.markdown-body pre{overflow:auto;padding:22px;background:#090d12;border:1px solid var(--line);border-radius:8px}.markdown-body pre code{background:none;padding:0}.table-wrap{overflow:auto}.markdown-body table{border-collapse:collapse;width:100%;font-size:.9em}.markdown-body th,.markdown-body td{padding:10px 14px;border:1px solid var(--line);text-align:left}.markdown-body th{background:#ffffff08}.markdown-body tr:nth-child(even){background:#ffffff03}.markdown-body hr{border:0;border-top:1px solid var(--line);margin:2em 0}.markdown-body .task-list-item{list-style:none}.markdown-body input[type=checkbox]{margin-right:8px;accent-color:#b7cee5}.markdown-body .footnotes{font-size:.85em;color:var(--muted)}.markdown-body eqn{display:block;overflow:auto;text-align:center;padding:16px 0}.markdown-body .katex-display{overflow:auto;overflow-y:hidden}.toc{padding:18px 24px;background:#ffffff04;border:1px solid var(--line);border-radius:8px}.toc a{display:block;font-size:14px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:absolute;top:-100px;left:20px;background:var(--panel);padding:12px;z-index:10}.skip-link:focus{top:10px}
@media(min-width:1500px){.card-copy{padding:36px}.card-copy h2{font-size:26px}}
@media(max-width:1000px){.layout{grid-template-columns:minmax(0,1fr) 200px;gap:28px}.card-copy{padding:22px}.card-copy h2{font-size:20px}.post-card{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}}
@media(max-width:760px){.topbar{gap:18px;flex-wrap:wrap;padding:16px 20px}.brand{margin-left:auto}#search-form{width:100%;order:3}main{padding-top:32px}.layout{grid-template-columns:1fr;gap:24px}aside{padding-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:20px}aside section{margin-bottom:10px}.sidebar-note{display:none}.post-card{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.card-copy{padding:20px}.card-copy h2{font-size:20px}.excerpt{font-size:14px}.markdown-body{font-size:16px}}
@media(max-width:440px){.post-card{display:flex;flex-direction:column-reverse}.card-copy{padding:22px}aside{grid-template-columns:1fr}.intro>p:last-child{font-size:14px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Two-line titles keep the archive compact; the full title remains on the link. */
.card-copy h2 a{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
.card-copy h2 a:after{content:none}
.pagination{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;margin-top:32px;font-size:14px}
.pagination a,.pagination span{padding:7px 12px;border:1px solid transparent;border-radius:8px}
.pagination a{border-color:var(--line)}
.pagination a:hover,.pagination a[aria-current=page]{background:#b7cee51a;border-color:var(--accent);color:var(--accent)}
.pagination [aria-disabled=true]{color:var(--muted);opacity:.5}
@media(max-width:440px){.pagination{gap:4px;font-size:12px}.pagination a,.pagination span{padding:6px 9px}}

/* Let the 2:1 cover determine the row height, rather than the text. */
#archive{container-type:inline-size;min-width:0}
.post-card{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
.post-card .card-copy{contain:size;min-height:0;padding:14px 20px;overflow:hidden}
.post-card .card-copy>.post-label{display:none}
.post-card .card-copy h2{font-size:18px;line-height:1.25;margin:0 0 6px;flex-shrink:0}
.post-card .excerpt{font-size:13px;line-height:1.4;margin:0 0 6px;-webkit-line-clamp:2;flex-shrink:0}
.post-card .post-meta{font-size:11px;line-height:1.5;flex-wrap:nowrap;gap:10px;white-space:nowrap}
.post-card .post-meta span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.post-card .card-tags{font-size:10px;line-height:1.5;margin-top:4px;flex-wrap:nowrap;overflow:hidden;white-space:nowrap;flex-shrink:0}
.post-card .card-image{align-self:stretch}
/* Stack at narrow card widths so text remains readable without changing the cover ratio. */
@container (max-width:760px){
  .post-card{display:flex;flex-direction:column-reverse}
  .post-card .card-copy{contain:none;padding:16px 20px}
  .post-card .card-image{flex-shrink:0;align-self:auto}
  .post-card .post-meta{margin-top:6px;flex-wrap:wrap;white-space:normal}
  .post-card .card-tags{flex-wrap:wrap;white-space:normal}
}
