:root{--ink: #141414;--ink-soft: #4a4742;--paper: #f6f3ee;--paper-deep: #ebe6de;--accent: #1a4538;--accent-soft: #c5d4ce;--line: rgba(20, 20, 20, .12);--max: 68rem;--read: 40rem;--font-display: "Fraunces", "Source Serif 4", Georgia, serif;--font-body: "Source Serif 4", Georgia, serif;--font-ui: "Sora", system-ui, sans-serif;--hero-filter: none;color-scheme:light}:root[data-theme=dark]{--ink: #e9e4da;--ink-soft: #a39d92;--paper: #151412;--paper-deep: #1f1d1a;--accent: #8fbfae;--accent-soft: #2a3f38;--line: rgba(233, 228, 218, .14);--hero-filter: brightness(.88);color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme]){--ink: #e9e4da;--ink-soft: #a39d92;--paper: #151412;--paper-deep: #1f1d1a;--accent: #8fbfae;--accent-soft: #2a3f38;--line: rgba(233, 228, 218, .14);--hero-filter: brightness(.88);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--ink);font-family:var(--font-body);font-size:1.125rem;line-height:1.65;background:var(--paper)}.skip{position:absolute;left:-999px;top:0}.skip:focus{left:1rem;top:1rem;z-index:10;background:var(--paper);padding:.5rem 1rem}.site-header,.site-footer,main{position:relative;z-index:1}.site-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.75rem 1rem;max-width:var(--max);margin:0 auto;padding:1.5rem 1.5rem 1rem}.logo{font-family:var(--font-display);font-weight:700;font-size:1.25rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);text-decoration:none}.topic-nav{flex-basis:100%;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}.topic-nav::-webkit-scrollbar{display:none}.topic-nav ul{display:flex;gap:1.5rem;margin:0;padding:0;list-style:none;white-space:nowrap}.topic-nav a{display:inline-block;padding:.6rem 0;border-bottom:2px solid transparent;font-family:var(--font-ui);font-size:.8rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);text-decoration:none}.topic-nav a:hover{color:var(--accent)}.topic-nav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--accent)}.topic-nav li:last-child{margin-left:auto}.header-right{display:flex;align-items:center;gap:1rem}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid transparent;border-radius:50%;background:none;color:var(--ink-soft);cursor:pointer;align-self:center}.theme-toggle:hover{color:var(--accent)}.theme-toggle:focus-visible{outline:none;border-color:var(--accent)}.theme-toggle svg{width:1.05rem;height:1.05rem}:root:not([data-theme]) .theme-toggle{display:none}.theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:block}:root[data-theme=dark] .theme-toggle .icon-moon{display:none}.site-footer{max-width:var(--max);margin:5rem auto 0;padding:1.5rem;border-top:1px solid var(--line);font-family:var(--font-ui);font-size:.85rem;color:var(--ink-soft);display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:1rem}.site-footer p{margin:0}.site-footer nav{display:flex;gap:1.25rem}.site-footer a{color:var(--ink-soft);text-decoration:none}.site-footer a:hover,a{color:var(--accent)}code{font-size:.88em;padding:.1em .3em;border-radius:3px;background:var(--paper-deep)}::selection{background:var(--accent-soft);color:var(--ink)}h1,h2,h3{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;line-height:1.15}.muted{color:var(--ink-soft)}.wrap{max-width:var(--max);margin:0 auto;padding:0 1.5rem 3rem}.read{max-width:var(--read);margin:0 auto;padding:0 1.5rem 3rem}.meta-label{margin:0;font-family:var(--font-ui);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.anim-rise{animation:rise .7s ease-out both}.anim-rise-delay{animation:rise .7s ease-out .15s both}.anim-fade{animation:fade-in .9s ease-out .25s both}@media(prefers-reduced-motion:reduce){.anim-rise,.anim-rise-delay,.anim-fade{animation:none}}
