:root{--code:#4ec2e6;--bg:#14100c;--paper:#1b1610;--ink:#e7ddca;--ink-soft:#b4a88f;--muted:#8d8069;--rule:#2c2419;--blood:#d4583f;--cyan:#4ec2e6;--green:#9ab87a;
  --serif:"Iowan Old Style","Palatino Linotype","Source Serif Pro",Georgia,serif;
  --mono:ui-monospace,"JetBrains Mono","SF Mono","IBM Plex Mono",Menlo,Consolas,monospace}
@media (prefers-color-scheme:light){:root{--code:#145a73;--bg:#efe7d4;--paper:#e7dcc4;--ink:#181206;--ink-soft:#41382a;--muted:#655a46;--rule:#cfc1a1;--blood:#a8341e;--cyan:#1d7c9c;--green:#5d7038}}
*{box-sizing:border-box;margin:0;padding:0}
html{color-scheme:dark light}
body{background:var(--bg);color:var(--ink);font-family:var(--mono);font-size:15px;line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.wrap{max-width:760px;width:100%;margin:0 auto;padding:1.6rem 1.4rem 2rem;position:relative;z-index:2}
.topbar{font-size:.8rem;color:var(--muted);letter-spacing:.04em;border-bottom:1px solid var(--rule);padding-bottom:.7rem;margin-bottom:1.6rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.3rem .8rem}
.topbar b{color:var(--ink-soft);font-weight:500}
.topbar .blood{color:var(--blood)}
.topbar a{color:var(--ink-soft);text-decoration:none}
.topbar a:hover,.topbar a[aria-current]{color:var(--blood)}
.topbar nav a+a::before{content:"·";color:var(--muted);margin:0 .5em}
.echo{color:var(--muted);margin:0 0 .9rem;font-size:.9rem}
.echo .p{color:var(--blood)}
.echo .c{color:var(--ink)}
article header{margin-bottom:1.4rem}
article h1{font-family:var(--serif);font-weight:500;font-size:1.9rem;line-height:1.2;color:var(--ink);margin:.2rem 0 .5rem}
.meta{font-size:.82rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:.3rem 1rem}
.meta .tag{color:var(--cyan)}
.meta .tag.h{color:var(--blood)}
.meta a{color:inherit;text-decoration:none}
.meta a:hover{color:var(--blood)}
.prose{font-family:var(--serif);font-size:1.08rem;line-height:1.6;color:var(--ink-soft);max-width:42em}
.prose p,.prose ul,.prose ol,.prose blockquote,.prose pre,.prose table{margin:0 0 1.1em}
.prose h2,.prose h3,.prose h4{font-family:var(--serif);font-weight:500;color:var(--ink);margin:1.8em 0 .6em;line-height:1.25}
.prose h2{font-size:1.4rem}.prose h3{font-size:1.2rem}.prose h4{font-size:1.05rem}
.prose strong{color:var(--ink);font-weight:600}
.prose a{color:var(--blood);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--blood) 30%,transparent)}
.prose a:hover{border-bottom-color:var(--blood)}
.prose ul,.prose ol{padding-left:1.4em}
.prose li{margin-bottom:.25em}
.prose blockquote{border-left:2px solid var(--blood);padding-left:1rem;color:var(--ink);font-style:italic}
.prose code{font-family:var(--mono);font-size:.84em;color:var(--code);background:color-mix(in srgb,var(--paper) 70%,var(--bg));padding:.1em .35em;border-radius:2px}
.prose pre{font-family:var(--mono);font-size:.82rem;line-height:1.5;color:#9ab87a;background:#0c0a07;border:1px solid var(--rule);border-radius:3px;padding:.9rem 1rem;overflow-x:auto;white-space:pre}
.prose pre code{color:inherit;background:none;padding:0;font-size:inherit}
.prose img{max-width:100%;height:auto;display:block;margin:0 auto 1.1em;border:1px solid var(--rule);border-radius:2px}
.prose table{border-collapse:collapse;font-family:var(--mono);font-size:.82rem;width:100%}
.prose th,.prose td{border:1px solid var(--rule);padding:.3rem .5rem;text-align:left;vertical-align:top}
.prose th{color:var(--ink)}
.prose hr{border:0;border-top:1px solid var(--rule);margin:1.6em 0}
.year{color:var(--muted);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;margin:1.4rem 0 .4rem}
.row{display:grid;grid-template-columns:6.5rem 1fr auto;gap:.4rem 1rem;padding:.12rem 0;align-items:baseline}
.row .d{color:var(--muted);font-size:.86rem}
.row .t{color:var(--ink);text-decoration:none}
.row a.t:hover{color:var(--blood)}
.row .tag{color:var(--cyan);font-size:.82rem}
.row .tag.h{color:var(--blood)}
.tagline{color:var(--muted);font-size:.9rem;margin-bottom:.4rem}
.tagline a{color:var(--ink-soft);text-decoration:none}
.tagline a:hover{color:var(--blood)}
footer{margin-top:2.4rem;padding-top:.9rem;border-top:1px solid var(--rule);font-size:.8rem;color:var(--muted);line-height:1.8;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.3rem 1rem}
footer a{color:var(--ink-soft);text-decoration:none}
footer a:hover{color:var(--blood)}
footer nav a+a::before{content:"·";color:var(--muted);margin:0 .5em}
@media (max-width:560px){.row{grid-template-columns:4.6rem 1fr}.row .tag{grid-column:2}article h1{font-size:1.55rem}}
/* the CV */
.cv header{text-align:left;margin-bottom:1.6rem}
.cv h1{font-family:var(--serif);font-weight:500;font-size:1.9rem;line-height:1.2;color:var(--ink);margin:.2rem 0 .5rem}
.cv .contact{font-size:.85rem;color:var(--muted);line-height:1.9}
.cv .contact .nw{white-space:nowrap}
.cv .contact a{color:var(--ink-soft);text-decoration:none}
.cv .contact a:hover{color:var(--blood)}
.cv .contact .sep{color:var(--rule);margin:0 .4rem}
.cv .contact .pdf{color:var(--blood)}
.cv h2{font-family:var(--mono);font-weight:500;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--rule);padding-bottom:.3rem;margin:1.8rem 0 .7rem}
.cv h3{font-family:var(--serif);font-weight:500;font-size:1.12rem;color:var(--ink);margin:1rem 0 .2rem;display:flex;flex-wrap:wrap;gap:.2rem .6rem;align-items:baseline}
.cv h3 .org{color:var(--ink-soft);font-style:italic;font-weight:400}
.cv h3 .when{margin-left:auto;font-family:var(--mono);font-style:normal;font-size:.82rem;color:var(--cyan)}
.cv ul{font-family:var(--serif);font-size:1.02rem;line-height:1.5;color:var(--ink-soft);margin:.2rem 0 .6rem 1.2rem;padding:0}
.cv li{margin:.2rem 0}
.cv p{font-family:var(--serif);font-size:1.02rem;line-height:1.5;color:var(--ink-soft);margin:.2rem 0 .6rem}
.cv p em{color:var(--ink);font-style:italic}
.cv .skills dl{display:grid;grid-template-columns:max-content 1fr;gap:.3rem 1rem;margin:.25rem 0;font-family:var(--serif);font-size:1.02rem;color:var(--ink-soft)}
.cv .skills dt{font-family:var(--mono);font-size:.82rem;color:var(--muted);padding-top:.2rem}
.cv .skills dd{margin:0}
@media (max-width:560px){.cv h3 .when{margin-left:0;flex-basis:100%}}
@media print{
  body{background:#fff;color:#111;font-size:10pt}
  body::before,.topbar,.echo,footer,.cv .contact .pdf,.cv .contact .sep.pdf{display:none}
  .wrap{max-width:none;padding:0}
  .cv h1,.cv h3,.cv p em,.cv .skills dd,.cv ul,.cv p,.cv .skills dl,.cv h3 .org{color:#111}
  .cv h2,.cv .contact,.cv .skills dt,.cv h3 .when{color:#444}
  .cv .contact a{color:#111}
  .cv h2{border-color:#999;page-break-after:avoid}
  .cv h3{page-break-after:avoid}
}
