*,*:before,*:after{box-sizing:border-box;margin:0}:root{--grid-wide: 72rem;--grid-narrow: 48rem;--bg: #fafafa;--text: #1a1a1a;--muted: #999;--rule: #e0e0e0;--font-body: var(--font-spectral), Georgia, serif;--font-sans: var(--font-ibm-plex-sans), sans-serif;--text-xs: clamp(.75rem, .722rem + .11vw, .8125rem);--text-sm: clamp(.875rem, .847rem + .11vw, .9375rem);--text-base: clamp(1.1rem, 1.006rem + .23vw, 1.3rem);--text-lg: clamp(1.25rem, 1.193rem + .23vw, 1.375rem);--text-xl: clamp(1.4375rem, 1.324rem + .45vw, 1.6875rem);--space: 1.5rem;--accent-1: #f9d5d8;--accent-2: #fde0d0;--accent-3: #fdf5d0;--accent-4: #daefd4;--accent-5: #ecddf5;--accent-1-hover: #f2b5ba;--accent-2-hover: #f9c9a8;--accent-3-hover: #faeaa0;--accent-4-hover: #bde0b4;--accent-5-hover: #d9beed;--accent-2-selection: rgba(253, 224, 208, .55)}[data-theme=dark]{--bg: #18191c;--text: #f0f0f0;--muted: #7a7f88;--rule: #2e3138;--accent-1: #9d2f3f;--accent-2: #a04a28;--accent-3: #8a6f10;--accent-4: #3f7035;--accent-5: #6a3e8a;--accent-1-hover: #b83a4d;--accent-2-hover: #bc5830;--accent-3-hover: #a08018;--accent-4-hover: #4c8040;--accent-5-hover: #7c4e9e;--accent-2-selection: rgba(160, 74, 40, .4)}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;min-height:100dvh;padding-top:var(--space);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background .25s ease,color .25s ease}a{color:inherit;text-decoration:none}p+p{margin-top:1em}h1{font-size:var(--text-xl);font-family:var(--font-sans);font-weight:400;line-height:1.25;text-wrap:balance;margin-bottom:.5em}.grid{display:grid;grid-template-columns:[full-start] minmax(1.25rem,1fr) [wide-start] minmax(0,calc((var(--grid-wide) - var(--grid-narrow)) / 2)) [narrow-start] min(var(--grid-narrow),100%) [narrow-end] minmax(0,calc((var(--grid-wide) - var(--grid-narrow)) / 2)) [wide-end] minmax(1.25rem,1fr) [full-end];column-gap:1rem}.grid>*{grid-column:narrow-start / narrow-end}.full-bleed{width:100%;grid-column:wide-start / wide-end}nav{font-family:var(--font-sans);font-size:var(--text-sm);margin-bottom:calc(var(--space) * 2)}nav.grid>*{grid-column:narrow-start / narrow-end}.navbar{display:flex;align-items:center;justify-content:space-between}.navbar a{color:var(--text)}.navbar-home{padding:2px 4px;border-radius:2px;transition:background-color .15s ease,color .15s ease}.navbar-home:hover{background-color:var(--accent-1);color:var(--text)}.nav-links{display:flex;list-style:none;padding:0;gap:1.5rem;align-items:center}.nav-links a{padding:5px;border-radius:2px;transition:background-color .15s ease}.nav-links a:hover{color:var(--text)}.nav-links li:nth-child(1) a:hover{background-color:var(--accent-2)}.nav-links li:nth-child(2) a:hover{background-color:var(--accent-3)}.nav-links li:nth-child(3) a:hover{background-color:var(--accent-4)}.theme-toggle{position:relative;vertical-align:middle;display:inline-flex;width:14px;height:14px;padding:0;border:none;background:none;cursor:pointer;color:var(--muted)}.theme-toggle:hover{color:var(--text)}.theme-icon{position:absolute;inset:0;width:14px;height:14px;fill:currentColor;transition:opacity .15s ease}.sun-icon{opacity:0}.moon-icon,[data-theme=dark] .sun-icon{opacity:1}[data-theme=dark] .moon-icon{opacity:0}.no-transitions *{transition:none!important}::selection{background-color:var(--accent-2-selection);color:var(--text)}.content{display:grid;grid-column:full-start / full-end;grid-template-columns:subgrid;margin-top:var(--space)}.content>*{grid-column:narrow-start / narrow-end}.content a{padding:0 2px;transition:background-color .15s ease}.content a:nth-child(5n+1){background-color:var(--accent-1)}.content a:nth-child(5n+2){background-color:var(--accent-2)}.content a:nth-child(5n+3){background-color:var(--accent-3)}.content a:nth-child(5n+4){background-color:var(--accent-4)}.content a:nth-child(5n){background-color:var(--accent-5)}.content a:nth-child(5n+1):hover{background-color:var(--accent-1-hover)}.content a:nth-child(5n+2):hover{background-color:var(--accent-2-hover)}.content a:nth-child(5n+3):hover{background-color:var(--accent-3-hover)}.content a:nth-child(5n+4):hover{background-color:var(--accent-4-hover)}.content a:nth-child(5n):hover{background-color:var(--accent-5-hover)}.post-list-year{list-style:none;padding:0;grid-column:narrow-start / narrow-end}.post-list-year li{border-bottom:1px solid var(--rule)}.post-list-year li:last-child,.post-list-year li.last-visible{border-bottom:none}.post-list-row{display:flex;align-items:baseline;gap:1rem;padding:.35rem 0;color:inherit}.post-list-title{font-family:var(--font-body);font-size:var(--text-base);font-weight:400;flex:1;padding:0 3px;color:var(--muted);transition:color .15s ease}@media(hover:hover){.post-list-title:hover{color:var(--text)}}.post-list-meta{display:flex;align-items:baseline;gap:.75rem;flex-shrink:0}[data-tag=politics],[data-tag=Fiction]{--tag-bg: var(--accent-1);--tag-bg-hover: var(--accent-1-hover)}[data-tag=Programming],[data-tag=Film]{--tag-bg: var(--accent-2);--tag-bg-hover: var(--accent-2-hover)}[data-tag=History],[data-tag=Review]{--tag-bg: var(--accent-3);--tag-bg-hover: var(--accent-3-hover)}[data-tag=data],[data-tag=Music]{--tag-bg: var(--accent-4);--tag-bg-hover: var(--accent-4-hover)}[data-tag=Essay]{--tag-bg: var(--accent-5);--tag-bg-hover: var(--accent-5-hover)}.post-list-date{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--muted);flex-shrink:0;min-width:4ch;text-align:right}.expand-btn{display:none;align-items:center;padding:0;border:none;background:none;cursor:pointer;color:var(--muted);flex-shrink:0;transition:color .15s ease}.expand-btn svg{width:12px;height:12px;transition:transform .2s ease}.expand-btn[aria-expanded=true] svg{transform:rotate(180deg)}.post-list-desc{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--muted);max-height:0;overflow:hidden;opacity:0;padding:0 3px;transition:max-height .25s ease,opacity .2s ease,padding .25s ease}.post-list-desc.visible{max-height:10rem;opacity:1;padding:.3rem 3px .5rem}.post-list-widget{margin-top:calc(var(--space) * 1.5);display:flex;flex-direction:column}.view-all{display:inline-block;margin-top:calc(var(--space) * .8);margin-left:auto;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--muted);transition:color .15s ease}.view-all:hover{color:var(--text)}.post-sidebar{grid-column:narrow-end / wide-end;position:sticky;top:var(--space);min-height:8rem;align-self:start;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--muted);line-height:1.4;padding-left:2rem;margin-top:calc(var(--space) * 1.8)}.reading-section{grid-column:narrow-start / narrow-end;margin-top:calc(var(--space) * 1.5)}.reading-label{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;color:var(--muted);margin-bottom:var(--space)}.book-grid{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--space)}.book{display:flex;flex-direction:column;gap:.6rem}.book-cover{aspect-ratio:2 / 3;border-radius:3px;overflow:hidden;background:var(--rule);box-shadow:0 1px 3px #0000001f;transition:transform .15s ease,box-shadow .15s ease}@media(hover:hover){.book:hover .book-cover{transform:translateY(-2px);box-shadow:0 4px 12px #0000002e}}.book-cover img{width:100%;height:100%;object-fit:cover;display:block}.book-meta{display:flex;flex-direction:column;gap:.1rem;line-height:1.3}.book-title{font-style:italic;font-size:var(--text-sm)}.book-author{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--muted)}footer{padding-block:calc(var(--space) * 1.5);font-family:var(--font-sans);font-size:var(--text-sm)}.footer-inner{display:flex;justify-content:space-between;align-items:center;padding-top:var(--space);border-top:1px solid var(--rule)}.footer-name{color:var(--muted)}.footer-links{display:flex;align-items:center;gap:.5rem}.footer-links a{color:var(--muted);transition:color .15s ease}.footer-links a:hover{color:var(--text)}.footer-links span{color:var(--rule);user-select:none}.footer-rss{display:inline-flex;align-items:center;gap:3px}@media(max-width:1024px){.grid{grid-template-columns:[full-start] 1.15rem [wide-start narrow-start] minmax(0,1fr) [narrow-end wide-end] 1.15rem [full-end]}.post-list-year{grid-column:1}.post-sidebar{display:none}.expand-btn{display:inline-flex}}@media(max-width:640px){body{padding-top:1.25rem}.grid{grid-template-columns:[full-start] .3rem [wide-start narrow-start] minmax(0,1fr) [narrow-end wide-end] .3rem [full-end]}nav{margin-bottom:calc(var(--space) * 1.5)}.navbar{justify-content:flex-start;gap:1rem}.nav-links{gap:1rem}}.tag-filter{grid-column:narrow-start / narrow-end;position:relative;width:fit-content;margin-top:.6rem;font-family:var(--font-sans);font-size:var(--text-base)}.tag-filter-trigger{display:inline-flex;align-items:center;gap:.5rem;padding:.2rem 0;color:var(--muted);cursor:pointer;list-style:none;transition:color .15s ease}.tag-filter-trigger::-webkit-details-marker{display:none}.tag-filter-trigger::marker{content:""}.tag-filter-trigger:hover{color:var(--text)}.tag-filter-current{color:var(--text);text-transform:lowercase}.tag-filter-chevron{color:var(--muted);transition:transform .15s ease}.tag-filter[open] .tag-filter-chevron{transform:rotate(180deg)}.tag-filter-menu{position:absolute;z-index:20;top:100%;left:0;margin-top:.5rem;min-width:12rem;display:flex;flex-direction:column;padding:.4rem 0;border:1px solid var(--rule);border-radius:2px;background:var(--bg)}.tag-option{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;padding:.4rem .9rem;border:none;background:none;color:var(--muted);cursor:pointer;font:inherit;text-align:left;text-transform:lowercase;transition:color .15s ease}.tag-option:hover,.tag-option.active{color:var(--text)}.tag-option-count{font-size:.8em;opacity:.5;font-variant-numeric:tabular-nums}.post-list{grid-column:wide-start / narrow-end;display:grid;grid-template-columns:subgrid;align-items:start;margin-top:calc(var(--space) * 1.5);row-gap:calc(var(--space) * 1.5)}.post-list-group{grid-column:wide-start / narrow-end;display:grid;grid-template-columns:subgrid;align-items:start}.post-list-group[hidden]{display:none}.post-list-group-label{grid-column:wide-start / narrow-start;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--muted);text-align:right;padding-right:1rem}.post-list-group .post-list-year{padding-top:.6rem}.post-article{grid-column:full-start / full-end;display:grid;grid-template-columns:subgrid}.post-header{grid-column:narrow-start / narrow-end;padding-bottom:calc(var(--space) * 1.25);border-bottom:1px solid var(--rule);margin-bottom:calc(var(--space) * 1.5)}.post-title{font-family:var(--font-body);font-size:var(--text-xl);font-weight:400;line-height:1.25;text-wrap:balance;margin-bottom:.4em}.post-description{color:var(--muted);font-family:var(--font-sans);font-size:clamp(.9375rem,.91rem + .14vw,1rem);margin-bottom:.75rem}.post-meta{display:flex;align-items:center;gap:.75rem;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--muted)}.post-tags{display:inline-flex;flex-wrap:wrap;gap:.4rem}.post-tag{padding:1px 5px;border-radius:2px;color:var(--text);background-color:var(--tag-bg, var(--accent-3))}.post-body{grid-column:full-start / full-end;display:grid;grid-template-columns:subgrid}.post-body p{text-wrap:pretty}.post-body>*{grid-column:narrow-start / narrow-end;margin-bottom:1em}.post-body>*:last-child{margin-bottom:0}.post-body>.full-bleed{grid-column:wide-start / wide-end}.post-body h2{font-size:var(--text-lg);font-weight:600;font-style:normal;font-family:var(--font-sans);margin-top:calc(var(--space) * 1.5);margin-bottom:.35em}.post-body h3{font-size:var(--text-base);font-weight:500;font-family:var(--font-sans);margin-top:var(--space);margin-bottom:.35em}.post-body a{text-decoration:underline;text-underline-offset:3px}.post-body figure{margin:var(--space) 0}.post-body figure img{display:block;width:100%;height:auto;border-radius:3px}.post-body figcaption{margin-top:.5rem;font-family:var(--font-sans);font-size:var(--text-sm);line-height:1.4;color:var(--muted);text-align:center}.post-body figcaption p{display:inline;margin:0}.figure-credit{opacity:.75}.post-body p+p{margin-top:0}.post-body blockquote{padding-left:1rem;border-left:2px solid var(--rule);color:var(--muted);font-style:italic}.post-body blockquote p{margin-bottom:.4em}.post-body hr{border:none;border-top:1px solid var(--rule);margin:calc(var(--space) * 1.5) 0}.post-body [data-footnote-ref],.post-body .sidenote-ref{font-family:var(--font-sans);font-size:.72em;font-weight:500;text-decoration:none;color:var(--muted);padding:0 .1em;transition:color .15s ease}.post-body .sidenote-ref{border:none;background:none;cursor:pointer;vertical-align:baseline;line-height:inherit}.post-body [data-footnote-ref]:before,.post-body .sidenote-ref:before{content:"["}.post-body [data-footnote-ref]:after,.post-body .sidenote-ref:after{content:"]"}.post-body [data-footnote-ref]:hover,.post-body [data-footnote-ref]:focus-visible,.post-body .sidenote-ref:hover,.post-body .sidenote-ref:focus-visible{color:var(--text)}.post-body .footnotes{grid-column:narrow-start / narrow-end;margin-top:calc(var(--space) * 2);padding-top:var(--space);border-top:1px solid var(--rule);font-family:var(--font-body);font-size:var(--text-sm);color:var(--muted);line-height:1.6}.post-body .footnotes h2.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.post-body .footnotes ol{margin:0;padding-left:1.5rem}.post-body .footnotes li{margin-bottom:.6em}.post-body .footnotes li:target{background:var(--tag-bg, var(--accent-3));border-radius:3px}.post-body .footnotes p{margin:0;display:inline}.post-body .data-footnote-backref{text-decoration:none;margin-left:.3em;color:var(--muted)}.post-body .data-footnote-backref:hover{color:var(--text)}.fn-tooltip{position:fixed;z-index:50;max-width:min(22rem,90vw);padding:.6rem .8rem;background:var(--bg);border:1px solid var(--rule);border-radius:4px;box-shadow:0 4px 16px #00000026;font-family:var(--font-body);font-size:var(--text-sm);line-height:1.5;color:var(--text);opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .15s ease,transform .15s ease,visibility .15s}.fn-tooltip.visible{opacity:1;visibility:visible;transform:translateY(0)}.fn-tooltip p{margin:0}.fn-tooltip a{text-decoration:underline;text-underline-offset:3px}.fn-tooltip .data-footnote-backref{display:none}.fn-drawer-backdrop{position:fixed;inset:0;background:#00000059;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s;z-index:60}.fn-drawer-backdrop.open{opacity:1;visibility:visible}.fn-drawer{position:fixed;left:0;right:0;bottom:0;z-index:61;background:var(--bg);border-top:1px solid var(--rule);border-radius:12px 12px 0 0;box-shadow:0 -4px 24px #0003;padding:1rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom,0px));transform:translateY(100%);transition:transform .25s ease;max-height:70vh;overflow-y:auto}.fn-drawer.open{transform:translateY(0)}.fn-drawer-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--muted)}.fn-drawer-close{border:none;background:none;cursor:pointer;color:var(--muted);padding:4px;line-height:0;border-radius:4px}.fn-drawer-close:hover{color:var(--text);background:var(--rule)}.fn-drawer-body{font-family:var(--font-body);font-size:var(--text-sm);line-height:1.6;color:var(--text)}.fn-drawer-body p{margin:0}.fn-drawer-body a{text-decoration:underline;text-underline-offset:3px}.fn-drawer-body .data-footnote-backref{display:none}.post-nav{grid-column:narrow-start / narrow-end;display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;margin-top:calc(var(--space) * 2);padding-top:var(--space);border-top:1px solid var(--rule);font-family:var(--font-sans);font-size:var(--text-sm)}.post-nav a{width:fit-content}.post-nav-home{justify-self:center}.post-nav-link,.post-nav-home{color:var(--muted);transition:color .15s ease}.post-nav-link--next{justify-self:end}.post-nav-link--empty{visibility:hidden}.post-nav-link:hover,.post-nav-home:hover{color:var(--text)}.post-nav-dir{display:inline-block}@media(max-width:1024px){.post-list{grid-column:narrow-start / narrow-end;grid-template-columns:1fr}.post-list-group{grid-column:1;grid-template-columns:1fr}.post-list-group-label{grid-column:1;text-align:left;padding-right:0;padding-top:0;padding-bottom:.35rem}}
