:root{--paper: #f6f3ec;--paper-deep: #efeadf;--ink: #1c1a16;--ink-soft: #4a463d;--ink-faint: #8b857769;--signal: #e8462b;--signal-deep:#c2371f;--display: "Fraunces", Georgia, serif;--read: "Newsreader", Georgia, serif;--mono: "JetBrains Mono", ui-monospace, monospace;--rule: 1px solid color-mix(in srgb, var(--ink) 14%, transparent);--measure: 62ch}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--read);font-weight:400;font-size:19px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background-image:radial-gradient(circle at 1px 1px,color-mix(in srgb,var(--ink) 4%,transparent) 1px,transparent 0);background-size:4px 4px}::selection{background:var(--signal);color:var(--paper)}a{color:inherit;text-decoration:none}.kicker{font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--signal-deep)}.shell{max-width:1080px;margin:0 auto;padding:0 clamp(1.4rem,5vw,4rem)}.masthead{display:flex;align-items:baseline;justify-content:space-between;gap:2rem;padding:2.2rem 0 1.6rem;border-bottom:var(--rule);position:sticky;top:0;background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:50}.wordmark{font-family:var(--display);font-weight:600;font-size:1.5rem;letter-spacing:-.02em;display:inline-flex;align-items:baseline;gap:.12em}.wordmark .dot{color:var(--signal)}.wordmark:hover .lab{font-style:italic}.nav{display:flex;gap:1.8rem;font-family:var(--mono);font-size:.78rem;letter-spacing:.04em}.nav a{position:relative;padding-bottom:2px;color:var(--ink-soft);transition:color .2s ease}.nav a:after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:var(--signal);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}.nav a:hover,.nav a.active{color:var(--ink)}.nav a:hover:after,.nav a.active:after{transform:scaleX(1)}.footer{margin-top:6rem;padding:2.4rem 0 3rem;border-top:var(--rule);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;font-family:var(--mono);font-size:.74rem;color:var(--ink-soft);letter-spacing:.03em}.footer a:hover{color:var(--signal-deep)}.footer .links{display:flex;gap:1.4rem}.hero{padding:clamp(3rem,9vw,6.5rem) 0 clamp(2.5rem,6vw,4rem);border-bottom:var(--rule);position:relative}.hero .index-no{position:absolute;top:clamp(2rem,6vw,4rem);right:0;font-family:var(--mono);font-size:.72rem;color:var(--ink-faint);letter-spacing:.1em}.hero h1{font-family:var(--display);font-weight:400;font-size:clamp(2.7rem,8vw,5.4rem);line-height:1.02;letter-spacing:-.03em;max-width:16ch;margin:1.2rem 0 0}.hero h1 em{font-style:italic;color:var(--signal)}.hero .lede{margin-top:1.8rem;max-width:46ch;font-size:1.15rem;line-height:1.6;color:var(--ink-soft)}.list-head{display:flex;align-items:baseline;justify-content:space-between;padding:2.6rem 0 .4rem}.list-head h2{font-family:var(--display);font-weight:500;font-size:1rem;letter-spacing:.01em}.entry{display:grid;grid-template-columns:7rem 1fr auto;gap:1.5rem;align-items:baseline;padding:1.7rem 0;border-bottom:var(--rule);transition:padding-left .3s cubic-bezier(.2,.7,.3,1)}.entry:hover{padding-left:.9rem}.entry .meta{font-family:var(--mono);font-size:.72rem;color:var(--ink-soft);letter-spacing:.03em;padding-top:.45rem}.entry .body h3{font-family:var(--display);font-weight:500;font-size:1.55rem;line-height:1.18;letter-spacing:-.015em;transition:color .2s ease}.entry:hover .body h3{color:var(--signal-deep)}.entry .body p{margin-top:.4rem;font-size:1rem;color:var(--ink-soft);max-width:56ch}.entry .tag{font-family:var(--mono);font-size:.68rem;color:var(--ink-soft);white-space:nowrap;padding-top:.5rem}.entry .arrow{display:inline-block;color:var(--signal);opacity:0;transform:translate(-6px);transition:all .25s ease}.entry:hover .arrow{opacity:1;transform:translate(0)}.article{padding:clamp(2.5rem,7vw,4.5rem) 0 0;max-width:var(--measure)}.article .back{font-family:var(--mono);font-size:.74rem;color:var(--ink-soft);letter-spacing:.03em}.article .back:hover{color:var(--signal-deep)}.article .head{margin:2rem 0 2.6rem}.article .head .meta{font-family:var(--mono);font-size:.74rem;color:var(--ink-soft);letter-spacing:.04em;display:flex;gap:1rem;flex-wrap:wrap}.article h1{font-family:var(--display);font-weight:400;font-size:clamp(2.1rem,6vw,3.4rem);line-height:1.08;letter-spacing:-.025em;margin:1rem 0 0}.prose>*+*{margin-top:1.4rem}.prose p{line-height:1.72}.prose h2{font-family:var(--display);font-weight:500;font-size:1.5rem;letter-spacing:-.01em;margin-top:2.6rem}.prose a{color:var(--signal-deep);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.prose code{font-family:var(--mono);font-size:.86em;background:var(--paper-deep);padding:.1em .4em;border-radius:4px}.prose pre{font-family:var(--mono);font-size:.82rem;line-height:1.6;background:var(--ink);color:var(--paper);padding:1.3rem 1.5rem;border-radius:8px;overflow-x:auto}.prose pre code{background:none;padding:0}.prose blockquote{border-left:2px solid var(--signal);padding-left:1.2rem;font-style:italic;color:var(--ink-soft)}.prose ul,.prose ol{padding-left:1.3rem}.prose li+li{margin-top:.4rem}.about{padding:clamp(2.5rem,7vw,4.5rem) 0 0;max-width:var(--measure)}.about h1{font-family:var(--display);font-weight:400;font-size:clamp(2.1rem,6vw,3.2rem);line-height:1.1;letter-spacing:-.025em}.about h1 em{font-style:italic;color:var(--signal)}.about .prose{margin-top:1.8rem}.about .signoff{font-family:var(--display);font-style:italic;font-size:1.3rem;margin-top:2.4rem;color:var(--ink)}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.reveal{opacity:0;animation:rise .7s cubic-bezier(.2,.7,.3,1) forwards}@media (prefers-reduced-motion: reduce){.reveal{animation:none;opacity:1}html{scroll-behavior:auto}}@media (max-width: 640px){body{font-size:18px}.nav{gap:1.1rem}.entry{grid-template-columns:1fr;gap:.4rem}.entry .tag{display:none}.entry:hover{padding-left:0}.masthead{flex-direction:column;align-items:flex-start;gap:1rem}}
