:root,:root[data-theme=dark]{--color-bg:#0e0e13;--color-bg-2:#14141b;--color-surface:#1a1a23;--color-surface-2:#20202b;--color-ink:#ecedf2;--color-ink-soft:#a6a7b5;--color-ink-faint:#76778a;--color-line:#2a2a37;--color-line-soft:#22222e;--color-strong:#ffffff;--color-accent:#5247e2;--color-accent-2:#8278f2;--color-accent-soft:rgba(82,71,226,.14);--color-accent-line:rgba(82,71,226,.35);--color-accent-glow:rgba(82,71,226,.18);--color-ok:#38b48b;--shadow-s:0 1px 2px rgba(0,0,0,.4);--shadow-m:0 12px 40px -12px rgba(0,0,0,.6);--shadow-l:0 24px 70px -20px rgba(0,0,0,.7);--bg-glow-1:rgba(82,71,226,.16);--bg-glow-2:rgba(82,71,226,.07)}:root[data-theme=light]{--color-bg:#f5f5fb;--color-bg-2:#ffffff;--color-surface:#ffffff;--color-surface-2:#f1f1f7;--color-ink:#191922;--color-ink-soft:#54566a;--color-ink-faint:#8a8c9e;--color-line:#e7e7f0;--color-line-soft:#eeeef5;--color-strong:#111111;--color-accent:#5247e2;--color-accent-2:#5247e2;--color-accent-soft:rgba(82,71,226,.1);--color-accent-line:rgba(82,71,226,.28);--color-accent-glow:rgba(82,71,226,.12);--color-ok:#23a06f;--shadow-s:0 1px 2px rgba(20,20,40,.06);--shadow-m:0 12px 30px -14px rgba(20,20,40,.16);--shadow-l:0 22px 55px -22px rgba(30,30,60,.28);--bg-glow-1:rgba(82,71,226,.1);--bg-glow-2:rgba(82,71,226,.05)}:root{--font-sans:"Inter",system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--font-body:var(--font-sans);--font-heading:var(--font-sans);--font-reading:var(--font-sans);--step--1:clamp(.82rem, .79rem + .14vw, .9rem);--step-0: clamp(1rem, .97rem + .18vw, 1.1rem);--step-1: clamp(1.18rem, 1.1rem + .4vw, 1.4rem);--step-2: clamp(1.4rem, 1.26rem + .7vw, 1.8rem);--step-3: clamp(1.68rem, 1.46rem + 1.1vw, 2.25rem);--step-4: clamp(2rem, 1.66rem + 1.7vw, 2.9rem);--step-5: clamp(2.4rem, 1.95rem + 2.6vw, 3.9rem);--reading-size:clamp(1.06rem, 1rem + .3vw, 1.2rem);--leading-tight:1.14;--leading-snug:1.32;--leading-body:1.6;--leading-read:1.72;--weight-normal:400;--weight-medium:500;--weight-bold:700;--weight-black:800;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-s:1rem;--space-m:1.5rem;--space-l:2.5rem;--space-xl:4rem;--space-2xl:6rem;--space-3xl:9rem;--content-width:42rem;--wide-width:64rem;--full-width:65rem;--topbar-width:65rem;--gutter:clamp(1.1rem,4vw,2rem);--radius-s:8px;--radius-m:13px;--radius-l:18px;--radius-xl:26px;--ease:cubic-bezier(.22,1,.36,1);--dur:.22s}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-body);font-size:var(--step-0);line-height:var(--leading-body);color:var(--color-ink);background:radial-gradient(1100px 600px at 82% -10%,var(--bg-glow-1),transparent 60%),radial-gradient(900px 520px at -5% 2%,var(--bg-glow-2),transparent 55%),var(--color-bg);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh;transition:background .3s ease,color .3s ease}img,picture,svg,video{max-width:100%;height:auto;display:block}a{color:var(--color-accent-2);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--color-accent);color:#fff}:focus-visible{outline:2px solid var(--color-accent-2);outline-offset:2px;border-radius:6px}h1,h2,h3,h4{font-family:var(--font-heading);line-height:var(--leading-tight);font-weight:var(--weight-black);letter-spacing:-.025em;text-wrap:balance;color:var(--color-ink)}.skip-link{position:absolute;left:-9999px;background:var(--color-ink);color:var(--color-bg);padding:var(--space-2xs) var(--space-s)}.skip-link:focus{left:var(--space-s);top:var(--space-s);z-index:100}.wrap{width:100%;margin-inline:auto;padding-inline:var(--gutter)}.wrap--content{max-width:var(--content-width)}.wrap--wide{max-width:var(--wide-width)}.wrap--full{max-width:var(--full-width)}.flow>*+*{margin-top:var(--space-m)}.site-topbar{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--color-bg) 72%,transparent);backdrop-filter:saturate(150%) blur(14px);-webkit-backdrop-filter:saturate(150%) blur(14px);border-bottom:1px solid var(--color-line-soft)}.topbar-inner{max-width:var(--topbar-width);margin-inline:auto;display:flex;align-items:center;gap:14px;padding:13px var(--gutter)}.brand{display:flex;align-items:center;gap:11px;font-weight:600;letter-spacing:-.01em;color:var(--color-ink)}.brand:hover{text-decoration:none}.brand-mark{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(150deg,#6a60ee,#4a3fd6);box-shadow:0 6px 18px -6px #5247e2cc,inset 0 1px #ffffff40;flex:none}.brand-mark svg{width:18px;height:18px}.brand-name{font-size:15.5px}.brand-name b{font-weight:700}.brand-dot{color:var(--color-accent-2)}.topnav{margin-left:auto;display:flex;align-items:center;gap:4px}.topnav a{font-size:14px;color:var(--color-ink-soft);padding:8px 13px;border-radius:9px;font-weight:500;transition:background .15s,color .15s}.topnav a:hover{background:var(--color-surface);color:var(--color-ink);text-decoration:none}.topnav a.active{color:var(--color-ink)}.theme-toggle{width:36px;height:36px;border-radius:10px;flex:none;cursor:pointer;display:grid;place-items:center;color:var(--color-ink-soft);background:var(--color-surface);border:1px solid var(--color-line);transition:color .15s,border-color .15s,transform .15s}.theme-toggle:hover{color:var(--color-ink);border-color:var(--color-accent-line);transform:translateY(-1px)}:root[data-theme=dark] .ic-moon{display:none}:root[data-theme=light] .ic-sun{display:none}.status-pill{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:11.5px;color:var(--color-ink-soft);padding:6px 11px;border:1px solid var(--color-line);border-radius:999px;background:var(--color-surface)}.status-pill i{width:7px;height:7px;border-radius:50%;background:var(--color-ok);box-shadow:0 0 0 3px #38b48b2e;animation:tbpulse 2.6s ease-in-out infinite}@keyframes tbpulse{0%,to{opacity:1}50%{opacity:.5}}.site-footer{border-top:1px solid var(--color-line-soft);margin-top:var(--space-2xl);background:var(--color-bg-2)}.site-footer__inner{max-width:var(--wide-width);margin-inline:auto;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-m);padding:var(--space-l) var(--gutter)}.brand--footer .brand-name{font-size:16px}.site-footer__nav{display:flex;gap:var(--space-m)}.site-footer__nav a{color:var(--color-ink-soft);font-size:var(--step--1)}.site-footer__nav a:hover{color:var(--color-accent-2);text-decoration:none}.site-footer__copy{margin-left:auto;color:var(--color-ink-faint);font-size:var(--step--1);font-family:var(--font-mono)}.page-head{padding-block:var(--space-xl) var(--space-l)}.page-head__title{font-size:var(--step-4)}.page-head__desc{color:var(--color-ink-soft);margin-top:var(--space-2xs)}.section-title{font-size:var(--step-2)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-m);margin-bottom:var(--space-m)}.section-head__link{font-weight:500;font-size:var(--step--1)}.kicker{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-2)}.button{display:inline-flex;align-items:center;gap:8px;background:var(--color-accent);color:#fff;font-weight:600;padding:var(--space-xs) var(--space-m);border-radius:var(--radius-m);box-shadow:0 1px 1px #0000000f,0 10px 24px -10px var(--color-accent-glow);transition:transform var(--dur) var(--ease),filter var(--dur) var(--ease)}.button:hover{text-decoration:none;transform:translateY(-1px);filter:brightness(1.06)}.button--ghost{background:var(--color-surface);color:var(--color-ink);border:1px solid var(--color-line);box-shadow:none}.button--ghost:hover{border-color:var(--color-accent-line)}.post-grid{display:grid;gap:var(--space-m);grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr))}.card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-l);transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease),border-color var(--dur) var(--ease)}.card:hover{box-shadow:var(--shadow-m);transform:translateY(-3px);border-color:var(--color-accent-line)}.card__link{color:inherit;display:flex;flex-direction:column;gap:var(--space-2xs);height:100%;padding:var(--space-m)}.card__link:hover{text-decoration:none}.card__kicker{font-family:var(--font-mono);color:var(--color-accent-2);font-size:var(--step--1);font-weight:500;text-transform:uppercase;letter-spacing:.05em}.card__title{font-size:var(--step-1);font-weight:700;letter-spacing:-.02em;line-height:var(--leading-snug);margin-top:2px}.card:hover .card__title{color:var(--color-accent-2)}.card__excerpt{color:var(--color-ink-soft);font-size:var(--step--1);line-height:var(--leading-body)}.card__meta{color:var(--color-ink-faint);font-size:var(--step--1);font-family:var(--font-mono);margin-top:auto;padding-top:var(--space-s)}.article{padding-top:var(--space-xl)}.article__grid{max-width:var(--content-width);margin-inline:auto;padding-inline:var(--gutter)}.article__main{min-width:0}.article__head{padding-bottom:var(--space-m)}.article__kicker{font-family:var(--font-mono);color:var(--color-accent-2);font-weight:500;text-transform:uppercase;letter-spacing:.06em;font-size:var(--step--1)}.article__kicker a{color:inherit}.article__title{font-size:var(--step-5);margin-top:var(--space-xs);line-height:1.08}.article__byline{display:flex;align-items:center;gap:var(--space-xs);margin-top:var(--space-m)}.article__avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;border:1px solid var(--color-line);flex:none}.article__byline-text{display:flex;flex-direction:column;gap:2px;line-height:1.3}.article__author{font-weight:600;font-size:var(--step--1);color:var(--color-ink)}.article__meta{color:var(--color-ink-faint);font-size:var(--step--1);font-family:var(--font-mono);display:flex;gap:var(--space-2xs);align-items:center}.article__cover{margin-block:var(--space-l)}.article__cover img{width:100%;border-radius:var(--radius-l);border:1px solid var(--color-line);box-shadow:var(--shadow-s)}.toc__title{font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-faint)}.toc__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1px}.toc__item a{display:block;color:var(--color-ink-soft);font-size:.92rem;line-height:1.35;padding:5px 0 5px 12px;border-left:2px solid var(--color-line);transition:color .15s,border-color .15s}.toc__item a:hover{color:var(--color-ink);text-decoration:none;border-color:var(--color-accent-line)}.toc__item a.is-active{color:var(--color-accent-2);border-color:var(--color-accent);font-weight:500}.toc__item--h3 a{padding-left:24px;font-size:.86rem}.toc--side{display:none;align-self:start;position:sticky;top:calc(var(--space-l) + 44px);max-height:calc(100vh - 6rem);overflow:auto}.toc--side .toc__title{margin-bottom:var(--space-2xs)}.toc--inline{display:none;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-m);padding:var(--space-xs) var(--space-s);margin-bottom:var(--space-l)}.toc--inline summary{cursor:pointer;list-style:revert}.toc--inline[open] .toc__list{margin-top:var(--space-xs)}@media(max-width:1080px){.toc--inline{display:block}}@media(min-width:1081px){.article__grid{max-width:60rem;display:grid;grid-template-columns:minmax(0,var(--content-width)) 1fr;column-gap:var(--space-l);align-items:start}.toc--side{display:block}}.article__body{font-family:var(--font-reading);font-size:var(--reading-size);line-height:var(--leading-read);color:var(--color-ink);overflow-wrap:break-word}.article__body :is(h2,h3){scroll-margin-top:90px}.article__body>*+*{margin-top:var(--space-m)}.article__body h2{font-size:var(--step-2);margin-top:var(--space-xl)}.article__body h3{font-size:var(--step-1);margin-top:var(--space-l)}.article__body ul,.article__body ol{padding-left:1.3em}.article__body li+li{margin-top:var(--space-2xs)}.article__body img{border-radius:var(--radius-m);border:1px solid var(--color-line)}.article__body a{color:var(--color-accent-2);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.article__body strong{color:var(--color-strong);font-weight:700}.article__body blockquote{border-left:3px solid var(--color-accent);background:var(--color-surface);padding:var(--space-s) var(--space-m);border-radius:0 var(--radius-m) var(--radius-m) 0}.article__body blockquote>*+*{margin-top:var(--space-2xs)}.article__body code{font-family:var(--font-mono);font-size:.88em;background:var(--color-surface);border:1px solid var(--color-line);padding:1px 6px;border-radius:6px;color:var(--color-accent-2)}.article__body pre{background:var(--color-bg-2);border:1px solid var(--color-line);border-radius:var(--radius-m);padding:var(--space-s) var(--space-m);overflow:auto}.article__body pre code{background:none;border:none;padding:0;color:var(--color-ink)}.article__foot{margin-top:var(--space-xl);padding-top:var(--space-m);border-top:1px solid var(--color-line)}.tags{display:flex;flex-wrap:wrap;gap:var(--space-2xs);list-style:none;padding:0}.tags a{font-family:var(--font-mono);font-size:var(--step--1);background:var(--color-surface);border:1px solid var(--color-line);padding:3px var(--space-2xs);border-radius:var(--radius-s);color:var(--color-ink-soft)}.tags a:hover{text-decoration:none;color:var(--color-accent-2);border-color:var(--color-accent-line)}.pagination{margin-top:var(--space-xl);display:flex;justify-content:center}.pagination .nav-links{display:flex;gap:var(--space-2xs);flex-wrap:wrap}.pagination a,.pagination .current{font-family:var(--font-mono);font-size:var(--step--1);padding:var(--space-2xs) var(--space-s);border:1px solid var(--color-line);border-radius:var(--radius-s);color:var(--color-ink-soft);background:var(--color-surface)}.pagination a:hover{text-decoration:none;border-color:var(--color-accent-line);color:var(--color-ink)}.pagination .current{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.search-form{display:flex;gap:var(--space-2xs);max-width:28rem}.search-form input[type=search]{flex:1;padding:var(--space-2xs) var(--space-s);border:1px solid var(--color-line);border-radius:var(--radius-m);font:inherit;background:var(--color-surface);color:var(--color-ink)}.search-form button{padding:var(--space-2xs) var(--space-m);border:0;border-radius:var(--radius-m);background:var(--color-accent);color:#fff;font:inherit;cursor:pointer}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(max-width:680px){.topnav a{padding:8px 9px}.status-pill{display:none}.site-footer__copy{margin-left:0;width:100%}}.contact-form{display:grid;gap:var(--space-m);margin:var(--space-l) 0}.contact-form__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-m)}@media(max-width:560px){.contact-form__row{grid-template-columns:1fr}}.contact-field{display:grid;gap:6px}.contact-field>span{font-size:.85rem;font-weight:600;color:var(--color-ink-soft)}.contact-field input,.contact-field textarea{width:100%;box-sizing:border-box;font:inherit;color:var(--color-ink);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-s);padding:10px 12px;transition:border-color var(--dur) var(--ease)}.contact-field input:focus,.contact-field textarea:focus{outline:none;border-color:var(--color-accent)}.contact-field textarea{resize:vertical}.contact-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.contact-form__foot{display:flex;align-items:center;gap:var(--space-m);flex-wrap:wrap}.contact-form__status{margin:0;font-size:.9rem;color:var(--color-ink-soft)}.contact-alt{font-size:.9rem;color:var(--color-ink-soft)}.page-search{display:flex;gap:var(--space-xs);margin-top:var(--space-m);max-width:460px}.page-search input{flex:1;font:inherit;color:var(--color-ink);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-s);padding:10px 12px}.page-search input:focus{outline:none;border-color:var(--color-accent)}:root{--pagefind-ui-primary: var(--color-accent);--pagefind-ui-text: var(--color-ink);--pagefind-ui-background: var(--color-surface);--pagefind-ui-border: var(--color-line);--pagefind-ui-tag: var(--color-surface-2);--pagefind-ui-border-radius: var(--radius-m);--pagefind-ui-font: inherit}
