:root{--ease-out: cubic-bezier(.23, 1, .32, 1)}html[data-theme=light]{--bg: oklch(.98 .005 80);--ink: oklch(.2 .012 60);--ink-soft: oklch(.42 .012 60);--ink-faint: oklch(.62 .012 60);--rule: oklch(.2 .012 60 / .1);--hairline: oklch(.2 .012 60 / .06);--mark: oklch(.5 .14 30);--accent: oklch(.5 .14 30)}html[data-theme=dark]{--bg: oklch(.18 .012 60);--ink: oklch(.9 .008 80);--ink-soft: oklch(.72 .01 70);--ink-faint: oklch(.55 .01 70);--rule: oklch(.9 .008 80 / .12);--hairline: oklch(.9 .008 80 / .06);--mark: oklch(.74 .11 75);--accent: oklch(.74 .11 75)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--ink);font-family:Rubik,Helvetica Neue,sans-serif;font-weight:400;font-size:17px;line-height:1.85;-webkit-font-smoothing:antialiased;transition:background-color .32s var(--ease-out),color .32s var(--ease-out)}::selection{background:var(--ink);color:var(--bg)}.page{max-width:680px;margin:0 auto;padding:56px 32px 160px;position:relative}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:96px}.topbar-name{font-family:Rubik,sans-serif;font-weight:700;font-size:15px;color:var(--ink-soft);text-decoration:none}.topbar-controls{display:flex;align-items:center;gap:12px}.theme-toggle{background:transparent;border:1px solid var(--rule);border-radius:999px;padding:5px;display:flex;align-items:center;gap:2px;cursor:pointer;transition:border-color .18s var(--ease-out)}.theme-toggle:hover{border-color:var(--ink-faint)}.theme-toggle .opt{width:22px;height:22px;border:none;background:transparent;border-radius:50%;cursor:pointer;color:var(--ink-faint);display:flex;align-items:center;justify-content:center;transition:background-color .18s var(--ease-out),color .18s var(--ease-out)}.theme-toggle .opt[data-active=true]{background:var(--ink);color:var(--bg)}.theme-toggle .opt svg{width:11px;height:11px}.theme-toggle .opt:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.masthead{margin-bottom:32px}.masthead h1{font-family:Rubik,sans-serif;font-weight:800;font-size:clamp(40px,5.5vw,60px);line-height:1.2;color:var(--ink);margin-bottom:18px;letter-spacing:-.005em}.masthead h1 .accent{color:var(--ink-soft);font-weight:400}.about{font-family:Rubik,sans-serif;font-weight:300;font-size:15px;line-height:1.8;color:var(--ink-faint);max-width:50ch}.about .accent{color:var(--ink-soft);font-weight:400}.tagline{margin-top:40px;margin-bottom:80px;font-family:Rubik,sans-serif;font-weight:400;font-size:17px;line-height:1.85;color:var(--ink-soft);max-width:52ch}.tagline .strike{text-decoration:line-through;text-decoration-thickness:1px;text-decoration-color:var(--ink-faint);color:var(--ink-faint)}.tagline .ts{font-weight:700;color:var(--ink)}.posts{list-style:none}.post{padding:32px 0;border-top:1px solid var(--rule);position:relative}.post:last-child{border-bottom:1px solid var(--rule)}.post-circle{position:absolute;right:-12px;top:26px;width:110px;height:26px;pointer-events:none}.post-circle path{stroke:var(--mark);stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:280;stroke-dashoffset:280;animation:ink 1.2s 1.1s var(--ease-out) forwards;opacity:.85}.post-annotation{position:absolute;right:-160px;top:32px;width:148px;pointer-events:none;color:var(--mark);display:flex;align-items:center;gap:8px;justify-content:flex-start}.annotation-text{font-family:Rubik,sans-serif;font-weight:400;font-size:13px;line-height:1.4;color:var(--mark);text-align:right;opacity:0;animation:appear .6s 1.9s var(--ease-out) forwards}.annotation-arrow{width:44px;height:14px;flex-shrink:0;transform:scaleX(-1)}.annotation-arrow path{stroke:var(--mark);stroke-width:1.3;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:80;stroke-dashoffset:80;animation:ink 1.1s 1.4s var(--ease-out) forwards;opacity:.85}.post-link{display:block;color:inherit;text-decoration:none;cursor:pointer;position:relative}.post-meta{font-family:Geist Mono,ui-monospace,monospace;font-size:11px;color:var(--ink-faint);letter-spacing:.03em;margin-bottom:18px;display:flex;align-items:center;gap:10px;direction:ltr;justify-content:flex-end}.post-meta .dot{width:3px;height:3px;background:var(--ink-faint);border-radius:50%}.post-meta .rule-fill{flex:1;height:1px;background:var(--hairline)}.post-title{font-family:Rubik,sans-serif;font-weight:700;font-size:26px;line-height:1.45;color:var(--ink);margin-bottom:14px;display:inline;background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-size:0% 1px;background-position:0 100%;transition:background-size .32s var(--ease-out),color .2s var(--ease-out)}.post-preview{font-family:Rubik,sans-serif;font-weight:400;font-size:16px;line-height:1.85;color:var(--ink-soft);max-width:60ch;margin-top:14px}.post-thumb{width:56px;height:56px;border-radius:3px;overflow:hidden;border:1px solid var(--rule);flex-shrink:0;margin:-10px 12px -10px 0}.post-thumb img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.88) contrast(.96);transition:filter .28s var(--ease-out)}@media(hover:hover)and (pointer:fine){.post-link:hover .post-thumb img{filter:saturate(1) contrast(1)}}.post-link:before{content:"";position:absolute;right:-16px;top:50%;width:4px;height:4px;background:var(--accent);border-radius:50%;transform:translateY(-50%) scale(0);transition:transform .28s var(--ease-out)}@media(hover:hover)and (pointer:fine){.post-link:hover:before{transform:translateY(-50%) scale(1)}.post-link:hover .post-title{background-size:100% 1px}}.post-link:focus-visible{outline:none}.post-link:focus-visible .post-title{background-size:100% 1px;color:var(--accent)}.post-link:focus-visible:before{transform:translateY(-50%) scale(1)}.colophon{margin-top:88px;padding-top:32px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:16px;font-family:Rubik,sans-serif;font-weight:400;font-size:14px;line-height:1.8;color:var(--ink-faint)}.colophon-line{max-width:50ch}.colophon a{font-family:Geist Mono,ui-monospace,monospace;font-size:12px;color:var(--ink-soft);text-decoration:none;border-bottom:1px solid transparent;transition:color .2s var(--ease-out),border-color .2s var(--ease-out);flex-shrink:0;direction:ltr}@media(hover:hover)and (pointer:fine){.colophon a:hover{color:var(--accent);border-bottom-color:var(--accent)}}@keyframes appear{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes ink{to{stroke-dashoffset:0}}.topbar{animation:appear .5s var(--ease-out) both}.masthead h1{animation:appear .6s 80ms var(--ease-out) both}.about{animation:appear .6s .18s var(--ease-out) both}.tagline{animation:appear .6s .28s var(--ease-out) both}.post:nth-child(1){animation:appear .6s .38s var(--ease-out) both}.post:nth-child(2){animation:appear .6s .46s var(--ease-out) both}.post:nth-child(3){animation:appear .6s .54s var(--ease-out) both}.post:nth-child(4){animation:appear .6s .62s var(--ease-out) both}.post:nth-child(5){animation:appear .6s .7s var(--ease-out) both}.post:nth-child(n+6){animation:appear .6s .78s var(--ease-out) both}.colophon{animation:appear .6s .68s var(--ease-out) both}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:0ms!important;transition-duration:0ms!important}.post-circle path,.annotation-arrow path{stroke-dashoffset:0!important}.annotation-text{opacity:1!important}}@media(max-width:1080px){.post-annotation{display:none}}@media(max-width:700px){.page{padding:40px 24px 100px}.topbar{margin-bottom:56px}.masthead h1{font-size:34px}.post-title{font-size:22px}.post-circle{display:none}.post-link:before{display:none}.post-meta .rule-fill{display:none}.post-meta{flex-wrap:wrap}.post-thumb{margin:0 8px 0 0;width:44px;height:44px}}.post-body{font-family:Rubik,sans-serif;font-weight:400;font-size:17px;line-height:1.95;color:var(--ink);max-width:64ch}.post-body>*+*{margin-top:1.1em}.post-body h1,.post-body h2,.post-body h3{font-family:Rubik,sans-serif;font-weight:700;color:var(--ink);line-height:1.35;letter-spacing:-.005em}.post-body h1{font-size:30px;margin-top:1.6em}.post-body h2{font-size:24px;margin-top:1.6em}.post-body h3{font-size:20px;margin-top:1.4em;color:var(--ink-soft)}.post-body p{color:var(--ink)}.post-body a{color:var(--ink);text-decoration:none;background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-size:100% 1px;background-position:0 100%;padding-bottom:1px;transition:color .18s var(--ease-out)}.post-body a:hover{color:var(--accent)}.post-body strong{font-weight:700;color:var(--ink)}.post-body em{font-style:italic;color:var(--ink-soft)}.post-body blockquote{border-right:2px solid var(--mark);padding-right:18px;margin-right:0;color:var(--ink-soft);font-weight:400;font-size:18px;line-height:1.85}.post-body ul,.post-body ol{padding-right:1.5em}.post-body li{margin-top:.4em}.post-body li::marker{color:var(--ink-faint)}.post-body hr{border:none;border-top:1px solid var(--rule);margin:2.2em auto;width:60%}.post-body img{max-width:100%;border-radius:4px;border:1px solid var(--rule);filter:saturate(.92) contrast(.97);display:block;margin:1.4em auto}.post-body code{font-family:Geist Mono,ui-monospace,monospace;font-size:.92em;background:var(--hairline);padding:.15em .4em;border-radius:3px}.post-body pre{font-family:Geist Mono,ui-monospace,monospace;font-size:13px;line-height:1.7;padding:16px 18px;border-radius:4px;border:1px solid var(--rule);overflow-x:auto;direction:ltr;text-align:left}.post-body pre code{background:transparent;padding:0}.post-header{margin-bottom:40px;padding-bottom:24px;border-bottom:1px solid var(--rule)}.post-header h1{font-family:Rubik,sans-serif;font-weight:800;font-size:clamp(32px,4.2vw,44px);line-height:1.25;color:var(--ink);margin-bottom:16px;letter-spacing:-.005em}.post-header .post-meta{justify-content:flex-end;margin-bottom:0}.back-link{font-family:Geist Mono,ui-monospace,monospace;font-size:12px;color:var(--ink-faint);text-decoration:none;display:inline-flex;align-items:center;gap:6px;margin-bottom:40px;border-bottom:1px solid transparent;transition:color .18s var(--ease-out),border-color .18s var(--ease-out)}.back-link:hover{color:var(--ink);border-bottom-color:var(--ink)}
