:root{--ink:#141824;--panel:#1e2436;--panel-2:#262d42;--line:#384259;--text:#f3f6fc;--muted:#a8b5cc;--violet:#8b78ff;--violet-soft:#c7beff;--amber:#e4a853;--green:#6bc7a4;--max:1180px;--radius:10px;--shadow:0 24px 80px rgba(0,0,0,.35);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color-scheme:dark}
*{box-sizing:border-box}
html{background:var(--ink);color:var(--text);scroll-behavior:smooth}
body{margin:0;min-width:320px;background:radial-gradient(circle at 80% 5%,rgba(139,120,255,.11),transparent 34rem),var(--ink);line-height:1.65}
a{color:inherit}
button,a{font:inherit}
.skip-link{position:fixed;left:1rem;top:-5rem;z-index:100;background:var(--text);color:var(--ink);padding:.7rem 1rem}
.skip-link:focus{top:1rem}
.site-header{width:min(calc(100% - 2rem),var(--max));margin:0 auto;min-height:76px;display:flex;align-items:center;gap:2rem;border-bottom:1px solid var(--line)}
.brand{display:inline-flex;align-items:center;text-decoration:none;font-size:1.12rem;font-weight:760;letter-spacing:-.02em}
.brand:hover{color:var(--violet-soft)}
.site-header nav{display:flex;gap:1.4rem;margin-left:auto}
.site-header nav a,.site-footer a{color:var(--muted);text-decoration:none}
.header-actions{display:flex;align-items:center;gap:.7rem}
.language-switch{display:flex;border:1px solid var(--line);border-radius:999px;padding:3px}
.language-switch button{border:0;background:transparent;color:var(--muted);padding:.35rem .55rem;border-radius:999px;cursor:pointer}
.language-switch button[aria-pressed="true"]{background:var(--panel-2);color:var(--text)}
.button{display:inline-flex;justify-content:center;align-items:center;text-decoration:none;background:var(--violet);color:#080810;font-weight:760;padding:.82rem 1.1rem;border:1px solid transparent;border-radius:7px;transition:background .15s,border-color .15s,color .15s}
.button:hover{background:var(--violet-soft)}
.button-secondary{background:var(--panel-2);color:var(--text);border:1px solid var(--line)}
.button-small{padding:.48rem .8rem;font-size:.88rem;white-space:nowrap}
.booth-button{display:inline-flex;align-items:center;justify-content:center;height:38px;padding:0;border-radius:4px;overflow:hidden;box-shadow:0 2px 10px rgba(252,77,80,.25);transition:transform .15s,box-shadow .15s,opacity .15s;line-height:0;vertical-align:middle;text-decoration:none}
.booth-button:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(252,77,80,.4);opacity:.95}
.booth-button img{height:38px;width:auto;display:block}
.text-link{color:var(--violet-soft);text-underline-offset:4px}
.section,.page-shell,.article-shell,.site-footer{width:min(calc(100% - 2rem),var(--max));margin-inline:auto}
.eyebrow{font-family:ui-monospace,"Cascadia Code",monospace;color:var(--violet-soft);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase}
.section{padding:6rem 0;border-top:1px solid var(--line)}
main>.section:first-child{border-top:0}
.section-heading{max-width:720px;margin-bottom:2rem}
.blog-hero h1,.section-heading h4{font-size:1.4rem;letter-spacing:-.03em;line-height:1.2;margin:.4rem 0}
.section-heading>p:last-child,.blog-hero>p:last-child{color:var(--muted)}
.support,.post-category{font:700 .7rem ui-monospace,monospace;letter-spacing:.08em;color:var(--violet-soft)}
.row-heading{display:flex;justify-content:space-between;align-items:end;max-width:none}
.bento-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:1fr;gap:1rem}
.post-card{min-height:260px;background:var(--panel);border:1px solid var(--line);padding:1.4rem;display:flex;flex-direction:column;text-decoration:none;transition:border-color .2s,transform .2s}
.post-card-featured{border-top-color:var(--violet)}
.post-card:hover,.post-card:focus-visible{border-color:var(--violet);transform:translateY(-3px)}
.post-category{color:var(--violet-soft)}
.post-card h3,.post-card h4{font-size:1.25rem;line-height:1.25;margin:.9rem 0}
.post-card p{color:var(--muted);margin:0 0 1rem}
.post-card time{margin-top:auto;color:var(--muted);font:400 .75rem ui-monospace,monospace}
.site-footer{border-top:1px solid var(--line);padding:2.5rem 0;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1.2rem;color:var(--muted)}
.site-footer-brand{margin:0;display:flex;align-items:center;gap:.75rem;font-size:.9rem}
.site-footer-brand strong{color:var(--text)}
.footer-copy{font-size:.82rem;color:var(--muted)}
.site-footer nav{display:flex;gap:1.4rem;align-items:center}
.page-shell{padding:5rem 0}
.blog-hero{max-width:760px;margin-bottom:3rem}
.article-shell{max-width:880px;padding:3rem 0 6rem}
.breadcrumb{display:flex;gap:.55rem;color:var(--muted);font-size:.85rem;margin-bottom:3rem}
.article-header{padding-bottom:2.5rem;border-bottom:1px solid var(--line)}
.article-header h1{font-size:clamp(2.5rem,6vw,5rem);line-height:1;letter-spacing:-.06em;margin:1rem 0}
.article-header>p{font-size:1.1rem;color:var(--muted)}
.article-dates{display:flex;gap:1rem;color:var(--muted);font:400 .78rem ui-monospace,monospace}
.article-body{font-size:1.05rem;padding:2.5rem 0}
.article-body h2{margin-top:3rem;font-size:1.8rem;letter-spacing:-.03em}
.article-body h3{margin-top:2rem}
.article-body p,.article-body li{color:#cad1de}
.article-body a{color:var(--violet-soft)}
.article-body code{font-family:ui-monospace,"Cascadia Code",monospace;background:var(--panel-2);padding:.15rem .35rem}
.article-body pre{background:var(--panel);border:1px solid var(--line);padding:1rem;overflow:auto}
.article-body pre code{padding:0}
.article-body blockquote{border-left:2px solid var(--violet);margin:2rem 0;padding:.2rem 1.2rem;color:var(--muted)}
.article-body table{width:100%;border-collapse:collapse}
.article-body th,.article-body td{border:1px solid var(--line);padding:.7rem;text-align:left}
.related{padding-top:4rem}
.related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.related-grid .post-card{grid-column:auto;min-height:210px}
.error-page{min-height:100vh;display:grid;place-content:center;text-align:center;padding:2rem}
.error-page .button{justify-self:center}
:focus-visible{outline:3px solid var(--amber);outline-offset:3px}
@media(max-width:900px){.bento-grid{grid-template-columns:1fr 1fr}.post-card,.post-card:nth-child(1),.post-card-featured{grid-column:auto}.related-grid{grid-template-columns:1fr}}
@media(max-width:620px){.site-header{min-height:60px;gap:.6rem}.brand{font-size:1.02rem}.header-actions{gap:.45rem}.language-switch button{padding:.25rem .45rem;font-size:.78rem}.booth-button{height:32px}.booth-button img{height:32px}.row-heading{align-items:flex-start;flex-direction:column}.bento-grid{grid-template-columns:1fr}.section{padding:4rem 0}.site-footer{grid-template-columns:1fr}.site-footer nav{flex-wrap:wrap}.article-header h1{font-size:2.7rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
@supports(view-transition-name:none){.view-transitions .post-card{view-transition-name:match-element}}
.gumroad-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:1.5rem;background:rgba(10,13,20,.78);backdrop-filter:blur(12px);opacity:0;pointer-events:none;transition:opacity .2s ease}
.gumroad-modal.is-open{opacity:1;pointer-events:auto}
.gumroad-modal-dialog{position:relative;width:min(96vw,980px);height:min(94vh,900px);background:#ffffff;border:1px solid var(--line);border-radius:20px;box-shadow:0 30px 90px rgba(0,0,0,.7);overflow:hidden;transform:translateY(16px) scale(.98);transition:transform .2s ease}
.gumroad-modal.is-open .gumroad-modal-dialog{transform:translateY(0) scale(1)}
.gumroad-modal-close{position:absolute;top:12px;right:14px;z-index:20;width:36px;height:36px;border-radius:50%;border:1px solid rgba(0,0,0,.15);background:rgba(255,255,255,.9);color:#111;font-size:1.1rem;font-weight:700;display:grid;place-items:center;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.15);transition:background .15s,transform .15s}
.gumroad-modal-close:hover{background:#000;color:#fff;transform:scale(1.05)}
.gumroad-modal iframe{width:100%;height:100%;border:0;display:block;background:#ffffff}
