:root{--text-color:     #333;--color-text-secondary:   #666;--color-text-tertiary:    #999;--background-color:       #fff;--highlighted-background-color:     #f5f5f5;--color-border-primary:   #333;--border-color: #ccc;--color-border-tertiary:  #e0e0e0;--link-color:             #3273dc;--link-visited-color:     rebeccapurple;--link-hover-color:       #363636;--font-heading: 'Alegreya Sans SC', sans-serif;--font-body:    'IBM Plex Serif', serif;--font-mono:    'IBM Plex Mono', monospace;--type-nav-brand:      1.125rem;--type-nav-link:       0.9375rem;--type-nav-tagline:    0.875rem;--type-h1:             1.75rem;--type-h2:             1.5rem;--type-h3:             1.25rem;--type-body:           0.9375rem;--type-subtitle:       1rem;--type-byline:         0.6875rem;--type-series-label:   0.6875rem;--type-tag:            0.6875rem;--type-footer-link:    0.6875rem;--type-footnote-text:  0.75rem;--type-footnote-num:   0.625rem;--type-post-nav:       0.8125rem;--leading-tight:  1.2;--leading-body:   1.85;--leading-loose:  1.7;--space-nav-padding:      1rem 1.5rem;--space-footer-padding:   1.5rem;--max-width-content:      48rem}@media (prefers-color-scheme: dark){:root{--text-color:     #ccc;--color-text-secondary:   #aaa;--color-text-tertiary:    lightsteelblue;--background-color:       #1a1a1a;--highlighted-background-color:     #2a2a2a;--color-border-primary:   #ccc;--border-color: #555;--color-border-tertiary:  #444;--link-color:             #90b3ed;--link-visited-color:     #cb93ff;--link-hover-color:       #fff}}html{font-size:16px}body{font-family:var(--font-body);color:var(--text-color);background:var(--background-color);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}img.avatar{border-radius:50%;box-shadow:0 0 0 2px var(--background-color),0 0 0 4px var(--border-color)}a{color:var(--link-color)}a:visited{color:var(--link-visited-color)}a:hover{color:var(--link-hover-color)}.site-header{display:flex;align-items:flex-start;flex-wrap:wrap;padding:var(--space-nav-padding);border-bottom:0.5px solid var(--border-color)}.site-header .brand{flex:1;display:flex;flex-direction:column;text-align:left}.site-header .brand .brand-name{font-family:var(--font-heading);font-size:var(--type-nav-brand);font-weight:700;letter-spacing:0.04em;text-decoration:none;color:var(--text-color)}.site-header .brand .tagline{font-family:var(--font-heading);font-size:var(--type-nav-tagline);color:var(--color-text-tertiary);letter-spacing:0.03em}.site-header .nav-toggle{display:none}.site-header .hamburger{display:block;width:auto;margin-top:0;cursor:pointer;color:var(--text-color);font-size:1.25rem}.site-header .hamburger .fa-xmark{display:none}.site-header .nav-toggle:checked~.hamburger .fa-bars{display:none}.site-header .nav-toggle:checked~.hamburger .fa-xmark{display:block}.site-header .site-nav{position:static;left:auto;width:100%;padding-top:0;background-image:none;background-color:transparent;border-bottom:none;display:none}.site-header .site-nav ul{display:flex;flex-direction:column;list-style:none;padding:0.5rem 0;margin:0}.site-header .site-nav li{display:block;margin:0}.site-header .site-nav li a{display:block;font-family:var(--font-heading);font-size:var(--type-nav-link);letter-spacing:0.03em;text-decoration:none;color:var(--text-color);padding:0.5rem 0;white-space:normal}.site-header .site-nav li a:hover{color:var(--link-color)}.site-header .nav-toggle:checked~.site-nav{display:block}@media (min-width: 30rem){.site-header{align-items:center}.site-header .hamburger{display:none}.site-header .site-nav{display:block;width:auto}.site-header .site-nav ul{flex-direction:row;padding:0}.site-header .site-nav li a{display:inline;padding:0 0.5rem;white-space:nowrap}}.site-footer{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:var(--space-footer-padding);border-top:0.5px solid var(--border-color);font-family:var(--font-heading);font-size:var(--type-footer-link);color:var(--color-text-tertiary);text-align:center}@media (min-width: 30rem){.site-footer{flex-direction:row;align-items:center;justify-content:space-between;text-align:left;gap:0}}.site-footer .footer-brand{font-weight:700;color:var(--text-color)}.site-footer .footer-social{display:flex;gap:1rem}.site-footer .footer-social a{color:var(--color-text-tertiary);text-decoration:none;letter-spacing:0.02em}.site-footer .footer-social a:hover{color:var(--link-hover-color)}.site-footer .footer-copy{letter-spacing:0.02em}.article-header{margin-bottom:1.5rem}.article-header h1{font-family:var(--font-heading);font-size:var(--type-h1);font-weight:700;line-height:var(--leading-tight);margin:0.25rem 0 0.5rem}.article-header .series-label{font-family:var(--font-heading);font-size:var(--type-series-label);letter-spacing:0.06em;color:var(--color-text-tertiary);margin:0 0 0.25rem}.article-header .subtitle{font-family:var(--font-body);font-size:var(--type-subtitle);font-style:italic;color:var(--color-text-secondary);margin:0 0 0.75rem}.article-header .byline{display:flex;align-items:center;flex-wrap:wrap;font-family:var(--font-heading);font-size:var(--type-post-nav);color:var(--color-text-tertiary);letter-spacing:0.02em}.article-header .byline .sep{margin:0 0.25rem}.article-header .byline .sharing{display:inline-flex;align-items:center}.article-header .byline .share{font-family:var(--font-heading);font-size:var(--type-post-nav);color:var(--color-text-tertiary);background:none;border:none;padding:0;cursor:pointer;letter-spacing:0.02em}.article-header .byline .share:hover{color:var(--link-color)}article{font-family:var(--font-body);font-size:var(--type-body);line-height:var(--leading-body)}article p{margin-bottom:1.2em}article h2{font-size:var(--type-h2);border-bottom:0.5px solid var(--border-color);padding-bottom:0.25rem;margin-bottom:1rem}article h3{font-size:var(--type-h3);font-weight:700;letter-spacing:0.02em}blockquote{margin:1.25rem 0 1.25rem 1.5rem;padding:0;color:var(--color-text-secondary);font-style:italic}blockquote.pullquote{border-left:2px solid var(--color-border-primary);border-radius:0;margin:1.5rem 0;padding:0.1rem 0 0.1rem 1.1rem}blockquote.pullquote p{font-family:var(--font-body);font-size:var(--type-subtitle);font-style:italic;line-height:var(--leading-loose);color:var(--color-text-secondary);margin-bottom:0}.article-nav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:2rem;padding-top:1rem;border-top:0.5px solid var(--border-color)}.article-nav .prev,.article-nav .next{display:flex;flex-direction:column;gap:0.25rem}.article-nav .next{text-align:right}.article-nav .nav-label{font-family:var(--font-heading);font-size:var(--type-byline);letter-spacing:0.06em;color:var(--color-text-tertiary)}.article-nav a{font-family:var(--font-body);font-size:var(--type-post-nav);font-style:italic;color:var(--color-text-secondary);text-decoration:none}.article-nav a:hover{color:var(--link-hover-color)}sup.footnote{font-family:var(--font-mono);font-size:var(--type-footnote-num);color:var(--color-text-tertiary)}sup.footnote a{text-decoration:none;color:inherit}.footnotes{margin-top:2rem;border-top:0.5px solid var(--border-color);padding-top:1rem}.footnotes::before{content:"Notes";display:block;font-family:var(--font-heading);font-size:var(--type-h3);font-weight:700;letter-spacing:0.02em;color:var(--text-color);margin-bottom:0.75rem}.footnotes ol{list-style:decimal;padding:0 0 0 1.5rem;margin:0}.footnotes li{font-family:var(--font-body);font-size:var(--type-footnote-text);color:var(--color-text-secondary);margin-bottom:0.5rem}.footnotes li::marker{font-family:var(--font-mono);font-size:var(--type-footnote-num);color:var(--color-text-tertiary)}.article-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin:1.5rem 0}.article-tags .tag{font-family:var(--font-heading);font-size:var(--type-tag);background:var(--highlighted-background-color);border:0.5px solid var(--color-border-tertiary);border-radius:6px;padding:2px 9px;letter-spacing:0.02em;text-decoration:none;color:var(--color-text-secondary)}.article-tags .tag:hover{color:var(--link-hover-color)}picture.hero img{display:block;width:100%;max-height:13.75rem;object-fit:cover}.profile-strip{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1.5rem;background:var(--highlighted-background-color);border-radius:4px;margin-bottom:2rem;text-align:center}@media (min-width: 30rem){.profile-strip{flex-direction:row;align-items:flex-start;text-align:left}}.profile-strip img.avatar{width:3.5rem;height:3.5rem;border-radius:50%;flex-shrink:0}.profile-strip .profile-text h1{font-family:var(--font-heading);font-size:var(--type-h2);margin:0 0 0.5rem}.profile-strip .profile-text p{font-family:var(--font-body);font-size:var(--type-body);color:var(--color-text-secondary);margin:0}.series-list .series-entry{padding:0.75rem 0;border-top:0.5px solid var(--color-border-tertiary)}.series-list .series-entry:last-of-type{border-bottom:0.5px solid var(--color-border-tertiary)}.series-list .series-entry h3{font-size:var(--type-body);margin:0 0 0.25rem}.series-list .series-entry .series-title{display:block;font-family:var(--font-heading);text-decoration:none;color:var(--color-text-secondary)}.series-list .series-entry .series-title:hover{color:var(--link-color)}.series-list .series-entry .series-teaser{font-family:var(--font-body);font-size:var(--type-body);font-style:italic;color:var(--color-text-secondary);margin:0}.home-grid{display:grid;grid-template-columns:1fr;gap:2rem}@media (min-width: 40rem){.home-grid{grid-template-columns:3fr 2fr}}.home-grid .series-list{background:var(--highlighted-background-color);border-radius:4px;padding:0 1rem}.home-grid .recent-posts .post-entry{padding:1rem 0;border-top:0.5px solid var(--color-border-tertiary)}.home-grid .recent-posts .post-entry:last-of-type{border-bottom:0.5px solid var(--color-border-tertiary)}.home-grid .recent-posts .post-entry h3{font-size:var(--type-body);margin:0 0 0.25rem}.home-grid .recent-posts .post-entry .title{display:block;text-decoration:none;color:var(--text-color)}.home-grid .recent-posts .post-entry .title:hover{color:var(--link-color)}.home-grid .recent-posts .post-entry .teaser{font-family:var(--font-body);font-size:var(--type-body);font-style:italic;color:var(--color-text-secondary);margin:0 0 0.25rem}.home-grid .recent-posts .post-entry .date{font-family:var(--font-heading);font-size:var(--type-byline);color:var(--color-text-tertiary);letter-spacing:0.02em;margin:0}.home-grid .more{margin-top:1rem;font-family:var(--font-heading);font-size:var(--type-byline);letter-spacing:0.02em}.home-grid .more a{color:var(--link-color);text-decoration:none}.home-grid .more a:hover{color:var(--link-hover-color)}ul.articles{list-style:none;padding:0}ul.articles hr{border:none;border-top:0.5px solid var(--color-border-tertiary);margin:0}ul.articles li{padding:0.5rem 0}ul.articles h3{margin:0}ul.articles a.title{font-family:var(--font-heading);font-size:var(--type-h3);font-weight:700;text-decoration:none;color:var(--text-color)}ul.articles a.title:hover{color:var(--link-hover-color)}ul.articles p.teaser{font-family:var(--font-body);font-size:var(--type-body);font-style:italic;color:var(--color-text-secondary);margin:0.25rem 0}ul.articles p.date{font-family:var(--font-heading);font-size:var(--type-footnote-text);color:var(--color-text-tertiary);letter-spacing:0.02em;margin:0}.social-links ul{list-style:none;padding:0;margin:1.5rem 0;display:flex;flex-wrap:wrap;gap:1.25rem}.social-links a.social-link{display:inline-flex;align-items:center;gap:0.4rem;font-family:var(--font-heading);font-size:var(--type-nav-link);text-decoration:none;color:var(--color-text-secondary);letter-spacing:0.02em}.social-links a.social-link:hover{color:var(--link-color)}.social-links a.social-link i{font-size:1rem}.resume{padding:0 0.5rem;max-width:100%}.resume h1,.resume h2,.resume h3,.resume h4{margin-top:1rem;margin-bottom:0}.resume h2{border-bottom:var(--color-border-tertiary) 1px solid;font-size:1.5rem}.resume h3{border-bottom:var(--color-border-tertiary) 1px solid;font-size:1.2rem}.resume h4{font-size:1.1rem}.resume h3,.resume h4{display:flex;justify-content:space-between}.resume h2,.resume h3,.resume h4,.resume dl{margin-left:0.5rem;margin-right:0.5rem}.resume a{text-decoration:none}.resume dl,.resume dt,.resume dd{margin-top:0.5rem;margin-bottom:0}.resume dt{font-weight:bold}.resume dd{margin-left:0.75rem;line-height:1.4}.resume p{margin:0.75rem 0.5rem 0 0.75rem;line-height:1.3}.resume ul{padding-inline-start:2rem;margin-bottom:0}.resume ul li{margin-bottom:0}.resume ul.social{list-style-type:none;padding:0 0.5rem;margin-top:1rem;margin-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.resume ul.social li{font-size:0.9rem;font-family:var(--font-body);margin:0}.resume .tabs-panels{margin-top:0.75rem;display:flex;flex-direction:column;flex-wrap:nowrap}.resume .tabs-panels input{display:none}.resume .tabs{display:flex;flex-direction:row;flex-wrap:nowrap}.resume .tabs label{margin:0;width:0;justify-content:center}.resume .tabs label .tab-text{margin:0 0.5rem;font-size:smaller}.resume .tabs .tab{flex:none;display:flex;flex-direction:row;flex-grow:1;text-align:center;padding:0.5rem;background-color:transparent;color:var(--link-color);height:60px;border:1px solid var(--background-color);border-bottom:1px solid var(--text-color)}.resume .tabs .tab:hover{color:var(--link-hover-color)}.resume #tab1:checked~.tabs #icon1,.resume #tab2:checked~.tabs #icon2,.resume #tab3:checked~.tabs #icon3{cursor:default;color:var(--text-color);border:1px solid var(--text-color);border-bottom:1px solid var(--background-color)}.resume #tab1:checked~.tabs #icon1 .tab-text,.resume #tab2:checked~.tabs #icon2 .tab-text,.resume #tab3:checked~.tabs #icon3 .tab-text{display:none}.resume .panels{margin-left:0.5rem}.resume .panels .panel{display:none}.resume #tab1:checked~.panels #panel1,.resume #tab2:checked~.panels #panel2,.resume #tab3:checked~.panels #panel3{cursor:default;display:block}.resume .print-only{display:none}.resume .version{font-size:0.8rem}@media screen and (min-width: 767px) and (max-width: 1000px) and (orientation: portrait){.resume .social li{flex-basis:26%}}@media print{html{font-size:12px}.resume{padding:0;color:#000}.resume h1,.resume h2,.resume h3,.resume h4,.resume h5{break-after:avoid-page;page-break-after:avoid}.resume .social li{flex-basis:26%}.resume .print-only{display:list-item}.resume .tabs{display:none}.resume #tab1~.panels #panel1,.resume #tab2~.panels #panel2,.resume #tab3~.panels #panel3{cursor:default;display:block}h1,h2,h3,h4,h5,body{color:#000}dl{break-before:avoid-page}}