body[data-page=blog]{background:var(--bg-page);background-image:linear-gradient(to right,var(--fc-graphite-850) 1px,transparent 1px),linear-gradient(to bottom,var(--fc-graphite-850) 1px,transparent 1px);background-size:80px 80px;background-position:-1px -1px;min-height:100vh}.blog-app{max-width:1280px;margin:0 auto;border-left:1px solid var(--rule);border-right:1px solid var(--rule);background:var(--bg-page);min-height:100vh}.blog-masthead{padding:72px 40px 48px;border-bottom:1px solid var(--rule);position:relative}.blog-masthead-label{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--fg-muted)}.blog-masthead-title{font-family:var(--font-serif);font-weight:400;font-size:clamp(72px,12vw,168px);line-height:.92;letter-spacing:var(--ls-tight);margin:20px 0 0;color:var(--fg-primary)}.blog-masthead-title em{font-style:italic;color:var(--fc-signal-500)}.blog-masthead-dek{font-family:var(--font-sans);font-size:18px;line-height:1.55;color:var(--fg-secondary);max-width:640px;margin:28px 0 0}.blog-masthead-meta{margin-top:48px;display:flex;gap:32px;flex-wrap:wrap;font-family:var(--font-mono);font-size:11px;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--fg-tertiary);padding-top:20px;border-top:1px solid var(--rule)}.blog-masthead-meta strong{color:var(--fc-signal-500);font-weight:600}.masthead-rss{color:var(--fc-signal-500)}.blog-controls{display:grid;grid-template-columns:1fr auto auto;gap:0;border-bottom:1px solid var(--rule);background:var(--bg-surface)}@media(max-width:720px){.blog-controls{grid-template-columns:1fr}}.blog-search{display:flex;align-items:center;gap:12px;padding:14px 24px;border-right:1px solid var(--rule)}@media(max-width:720px){.blog-search{border-right:0;border-bottom:1px solid var(--rule)}}.blog-search-icon{font-family:var(--font-mono);font-size:12px;color:var(--fc-signal-500)}.blog-search input{flex:1;background:transparent;border:0;outline:0;font-family:var(--font-mono);font-size:13px;color:var(--fg-primary);letter-spacing:0}.blog-search input::placeholder{color:var(--fg-muted);font-family:var(--font-mono)}.blog-search-kbd{font-family:var(--font-mono);font-size:10px;color:var(--fg-muted);border:1px solid var(--rule);padding:2px 6px;letter-spacing:var(--ls-caps)}.blog-sort{display:flex;align-items:center;padding:0;border-right:1px solid var(--rule)}@media(max-width:720px){.blog-sort{border-right:0;border-bottom:1px solid var(--rule)}}.blog-sort-label{font-family:var(--font-mono);font-size:10px;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--fg-muted);padding:0 16px}.blog-sort-btn{padding:14px 16px;background:transparent;border:0;border-left:1px solid var(--rule);font-family:var(--font-mono);font-size:11px;color:var(--fg-secondary);letter-spacing:var(--ls-caps);text-transform:uppercase;cursor:pointer;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.blog-sort-btn:hover{color:var(--fg-primary)}.blog-sort-btn.active{color:var(--fc-signal-500);background:var(--bg-sunken)}.blog-count{padding:14px 24px;font-family:var(--font-mono);font-size:11px;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--fg-muted);display:flex;align-items:center;gap:8px}.blog-count strong{color:var(--fc-signal-500);font-weight:600}.blog-tags{display:flex;flex-wrap:wrap;gap:0;padding:12px 24px;border-bottom:1px solid var(--rule);background:var(--bg-sunken)}.blog-tag-chip{font-family:var(--font-mono);font-size:10px;letter-spacing:var(--ls-caps);text-transform:uppercase;padding:6px 10px;border:1px solid var(--rule);background:transparent;color:var(--fg-secondary);cursor:pointer;margin:2px 4px 2px 0;transition:all var(--t-fast) var(--ease)}.blog-tag-chip:hover{border-color:var(--fg-primary);color:var(--fg-primary)}.blog-tag-chip.active{background:var(--fc-signal-500);color:var(--bg-sunken);border-color:var(--fc-signal-500)}.blog-tag-chip .count{color:var(--fg-muted);margin-left:6px;font-weight:500}.blog-tag-chip.active .count{color:var(--bg-sunken);opacity:.7}.blog-section-header{padding:40px 40px 14px;display:flex;align-items:baseline;gap:14px;font-family:var(--font-mono);font-size:11px;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--fc-signal-500);font-weight:600;border-bottom:2px solid var(--fc-signal-500);margin:0}.blog-section-header .idx{color:var(--fg-primary);font-weight:700}.blog-section-header .sep,.blog-section-header .count{color:var(--fg-muted);font-weight:400}.blog-list{padding:0}.blog-entry{display:grid;grid-template-columns:120px 1fr auto;gap:32px;padding:40px;border-bottom:1px solid var(--rule);text-decoration:none;color:inherit;transition:background var(--t-fast) var(--ease);position:relative}.blog-entry:hover{background:var(--bg-surface)}.blog-entry:hover .blog-entry-title{color:var(--fc-signal-500)}.blog-entry:hover .blog-entry-arrow{transform:translate(6px);color:var(--fc-signal-500)}.blog-entry-serial{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--fg-muted)}.blog-entry-serial .id{color:var(--fc-signal-500);font-weight:600;display:block;margin-bottom:4px}.blog-entry-serial .date{color:var(--fg-tertiary);display:block}.blog-entry-serial .cat{color:var(--fg-muted);display:block;margin-top:8px;font-size:10px}.blog-entry-body{min-width:0}.blog-entry-title{font-family:var(--font-serif);font-weight:400;font-size:clamp(28px,3.4vw,42px);line-height:1.1;letter-spacing:var(--ls-tight);color:var(--fg-primary);margin:0;transition:color var(--t-fast) var(--ease);text-wrap:pretty}.blog-entry-dek{font-family:var(--font-sans);font-size:16px;line-height:1.55;color:var(--fg-secondary);margin:14px 0 0;max-width:620px;text-wrap:pretty}.blog-entry-meta{margin-top:18px;display:flex;gap:14px;flex-wrap:wrap;font-family:var(--font-mono);font-size:10px;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--fg-tertiary)}.blog-entry-meta .sep{color:var(--fg-muted)}.blog-entry-meta .tag{color:var(--fg-secondary);padding:2px 7px;border:1px solid var(--rule)}.blog-entry-arrow{align-self:center;font-family:var(--font-mono);font-size:24px;color:var(--fg-muted);transition:transform var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}@media(max-width:720px){.blog-entry{grid-template-columns:1fr;gap:12px;padding:32px 20px}.blog-entry-arrow{display:none}.blog-entry-serial{display:flex;gap:12px;flex-wrap:wrap}.blog-entry-serial .id,.blog-entry-serial .date,.blog-entry-serial .cat{display:inline;margin:0}}.blog-empty{padding:96px 40px;text-align:center;font-family:var(--font-mono);color:var(--fg-muted)}.blog-empty .glyph{font-size:36px;color:var(--fc-signal-500);margin-bottom:16px}.blog-empty .label{font-size:11px;letter-spacing:var(--ls-caps);text-transform:uppercase}.blog-empty .sub{font-size:13px;color:var(--fg-tertiary);margin-top:8px}.blog-archive{padding:0 40px 80px;border-bottom:1px solid var(--rule)}.blog-archive .blog-section-header{padding-left:0;padding-right:0;margin-bottom:24px}.blog-archive-group{margin-bottom:48px}.blog-archive-year{font-family:var(--font-serif);font-style:italic;font-size:96px;line-height:1;color:var(--fc-signal-500);letter-spacing:var(--ls-tight);margin:32px 0 24px}.blog-archive-row{display:grid;grid-template-columns:80px 110px 1fr auto;gap:24px;padding:12px 0;border-bottom:1px solid var(--rule);font-family:var(--font-mono);font-size:13px;text-decoration:none;color:inherit;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease),padding var(--t-fast) var(--ease)}.blog-archive-row:hover{color:var(--fc-signal-500);background:var(--bg-surface);padding-left:8px;padding-right:8px;margin-left:-8px;margin-right:-8px}.blog-archive-row .id{color:var(--fc-signal-500);font-weight:600}.blog-archive-row .date{color:var(--fg-muted)}.blog-archive-row .title{color:var(--fg-primary);font-family:var(--font-sans);font-size:15px}.blog-archive-row:hover .title{color:var(--fc-signal-500)}.blog-archive-row .read{color:var(--fg-muted);font-size:11px;letter-spacing:var(--ls-caps);text-transform:uppercase}@media(max-width:720px){.blog-archive-row{grid-template-columns:1fr;gap:4px;padding:14px 0}.blog-archive-row .read{font-size:10px}}.blog-footer{padding:24px 40px 32px;border-top:2px solid var(--fc-signal-500)}.blog-footer-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap;font-family:var(--font-mono);font-size:11px;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--fg-tertiary)}.blog-footer-row .spacer{flex:1}.blog-footer-row a{color:var(--fg-secondary);border-bottom:1px solid transparent;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.blog-footer-row a:hover{color:var(--fc-signal-500);border-bottom-color:var(--fc-signal-500)}@media(max-width:720px){.blog-masthead{padding:40px 20px 28px}.blog-masthead-meta{margin-top:28px;gap:20px;padding-top:16px}.blog-section-header{padding:28px 20px 12px}.blog-archive{padding:0 20px 48px}.blog-archive-year{font-size:64px}.blog-footer{padding:20px}}body[data-page=blog][data-surface=paper]{background:var(--bg-paper);background-image:linear-gradient(to right,var(--fc-bone-200) 1px,transparent 1px),linear-gradient(to bottom,var(--fc-bone-200) 1px,transparent 1px)}body[data-surface=paper] .blog-app,body[data-surface=paper] .blog-masthead,body[data-surface=paper] .blog-entry,body[data-surface=paper] .blog-archive,body[data-surface=paper] .blog-footer{background:var(--bg-paper);border-color:var(--fc-bone-200);color:var(--fg-paper)}body[data-surface=paper] .blog-entry:hover{background:var(--bg-paper-2)}body[data-surface=paper] .blog-controls,body[data-surface=paper] .blog-tags{background:var(--bg-paper-2);border-color:var(--fc-bone-200)}body[data-surface=paper] .blog-masthead-title,body[data-surface=paper] .blog-entry-title,body[data-surface=paper] .blog-archive-row .title{color:var(--fg-paper)}body[data-surface=paper] .blog-masthead-dek,body[data-surface=paper] .blog-entry-dek{color:var(--fg-paper-2)}body[data-surface=paper] .blog-entry-meta .tag{color:var(--fg-paper-2);border-color:var(--fc-bone-200)}body[data-surface=paper] .blog-tag-chip{border-color:var(--fc-bone-200);color:var(--fg-paper-2)}body[data-surface=paper] .blog-search input{color:var(--fg-paper)}body[data-density=loose] .blog-entry{padding:56px 48px}body[data-density=loose] .blog-masthead{padding:96px 48px 64px}body[data-density=tight] .blog-entry{padding:24px 32px}body[data-density=tight] .blog-masthead{padding:48px 32px 32px}
