*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fff;--text:#111;--muted:#888;--rule:#111;--rule-light:#e0e0e0;--link:#8b0000;--bg-code:#f5f5f0;--font-serif:'Playfair Display', Georgia, serif;--font-sans:'IBM Plex Sans', system-ui, sans-serif;--font-mono:'IBM Plex Mono', monospace}body{background:var(--bg);color:var(--text);font:14px/1.6 var(--font-mono);min-height:100vh}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:4px 12px 4px 0;vertical-align:top}th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;border-bottom:2px solid var(--rule)}td{border-bottom:1px solid var(--rule-light);font-size:13px}h1{font:700 28px/1.1 var(--font-serif);letter-spacing:-.02em}h2{font:700 18px/1.2 var(--font-serif);letter-spacing:-.01em;margin:28px 0 8px}hr{border:none;border-top:1px solid var(--rule-light);margin:12px 0}hr.thick{border-top:2px solid var(--rule)}input,button{font:inherit;border-radius:0}button{cursor:pointer}.post{padding:40px;max-width:760px;line-height:1.7}.post p{margin:12px 0;font-size:14px}.post pre{background:var(--bg-code);padding:16px;font-size:12px;overflow-x:auto;margin:12px 0}.post code{font-family:var(--font-mono);font-size:12px}.post p code{background:var(--bg-code);padding:1px 4px}.post ol,.post ul{padding-left:24px;font-size:14px}.post li{margin:4px 0}.post em{font-style:italic}.site-header{margin-bottom:8px}.site-header .subtitle{color:var(--muted);margin:4px 0 12px;line-height:1.6;font-size:13px}.site-header nav{display:flex;gap:20px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;font-weight:600}.site-header nav a{color:var(--muted)}.site-header nav a:hover{color:var(--text);text-decoration:none}.stats-bar{display:flex;gap:40px;padding:16px 0;flex-wrap:wrap}.stat{display:flex;flex-direction:column}.stat-num{font:700 24px/1 var(--font-serif);letter-spacing:-.02em}.stat-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-top:3px}.section-title{font:600 11px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:20px 0 8px}.writeups{margin:4px 0 0}.writeup-row{display:flex;gap:12px;align-items:baseline;padding:6px 0;flex-wrap:wrap;border-bottom:1px solid var(--rule-light)}.writeup-row:last-child{border-bottom:none}.writeup-title{font-weight:600;font-size:14px}.writeup-desc{color:var(--muted);font-size:12px}.timeline{padding:40px;max-width:860px}.timeline article{padding:10px 0;border-bottom:1px solid var(--rule-light)}.tl-row{display:flex;gap:20px;align-items:flex-start}.tl-year{color:var(--muted);font-size:12px;padding-top:2px;text-align:right;flex-shrink:0}.tl-body{flex:1}.tl-top{display:flex;gap:12px;align-items:baseline}.tl-name{font:700 15px/1.3 var(--font-serif)}.tl-qs{font-size:12px;font-weight:600;margin-left:auto;white-space:nowrap}a.tl-qs{color:var(--text)}a.tl-qs:hover{color:var(--link)}.tl-play{font-size:10px;color:var(--muted);text-decoration:none;opacity:.5;transition:opacity .1s,color .1s;margin-left:-4px;line-height:1}.tl-play:hover{color:var(--link);opacity:1}.tl-play-child{font-size:9px}.tl-sub{font-size:12px;color:var(--muted);line-height:1.5;margin-top:1px}.tl-status{text-transform:uppercase;letter-spacing:.03em;font-size:10px}.tl-crack{font-size:11px}article.subdued{opacity:.55}article.subdued:hover{opacity:.9}article.subdued .tl-name{font-weight:500}.tl-lang{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:400;font-family:var(--font-mono)}.tl-children{margin-top:6px;padding:4px 0 2px;border-top:1px solid var(--rule-light)}.tl-child{display:flex;gap:8px;align-items:baseline;padding:2px 0;font-size:12px}.tl-child-name{font-size:11px;color:var(--text);min-width:80px;flex-shrink:0}.tl-child-blurb{color:var(--muted);font-size:11px}.tl-child-qs{margin-left:auto;font-size:11px;font-weight:600;white-space:nowrap}a.tl-child-qs{color:var(--text)}a.tl-child-qs:hover{color:var(--link)}.site-footer{margin-top:40px;padding-top:12px;border-top:2px solid var(--rule);color:var(--muted);font-size:12px}.site-footer-by{float:right}.site-footer-by a{color:var(--muted);text-decoration:none;border-bottom:1px dotted var(--muted)}.site-footer-by a:hover{color:var(--link);border-bottom-color:var(--link)}.posts-list{padding:40px}.posts-list article{margin:16px 0}.posts-list .post-date{color:var(--muted);font-size:12px}