﻿:root{color-scheme:dark;--dracula-bg: #282a36;--dracula-current-line: #44475a;--dracula-foreground: #f8f8f2;--dracula-comment: #6272a4;--dracula-cyan: #8be9fd;--dracula-green: #50fa7b;--dracula-orange: #ffb86c;--dracula-pink: #ff79c6;--dracula-purple: #bd93f9;--dracula-red: #ff5555;--dracula-yellow: #f1fa8c;--dracula-bg-dark: #1e1f29;--bg: var(--dracula-bg);--bg-darker: var(--dracula-bg-dark);--current: var(--dracula-current-line);--fg: var(--dracula-foreground);--comment: var(--dracula-comment);--cyan: var(--dracula-cyan);--green: var(--dracula-green);--orange: var(--dracula-orange);--pink: var(--dracula-pink);--purple: var(--dracula-purple);--red: var(--dracula-red);--yellow: var(--dracula-yellow)}::selection{background:color-mix(in srgb, var(--purple) 42%, var(--bg));color:var(--fg)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:18px;scroll-behavior:smooth;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--current) var(--bg-darker)}html::-webkit-scrollbar{width:10px;height:10px}html::-webkit-scrollbar-track{background:var(--bg-darker)}html::-webkit-scrollbar-thumb{background:var(--current);border-radius:6px;border:2px solid var(--bg-darker)}html::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--comment) 55%, var(--current))}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background:var(--bg);color:var(--fg);line-height:1.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body::before{content:"";display:block;height:3px;background:linear-gradient(90deg, var(--purple), var(--pink), var(--cyan))}.skip-link{position:fixed;top:0;left:0;z-index:10001;padding:.5rem 1rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.85rem;font-weight:600;text-decoration:none;color:var(--bg-darker);background:var(--fg);border-radius:0 0 .35rem 0;transform:translateY(-120%);transition:transform .15s ease-out;}.skip-link:focus{transform:translateY(0)}.skip-link:focus:not(:focus-visible){outline:none}.skip-link:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){.skip-link{transition:none}}.back-to-top{position:fixed;right:clamp(1rem,4vw,2rem);bottom:clamp(1rem,4vw,2rem);z-index:10002;display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;padding:0;margin:0;color:var(--fg);background:color-mix(in srgb, var(--bg-darker) 88%, var(--purple));border:1px solid color-mix(in srgb, var(--current) 80%, var(--purple));border-radius:8px;cursor:pointer;box-shadow:0 4px 18px color-mix(in srgb, #000 45%, rgba(0,0,0,0));opacity:0;visibility:hidden;transform:translateY(.35rem);pointer-events:none;transition:opacity .2s ease,visibility .2s ease,transform .2s ease,background .15s ease,border-color .15s ease,color .15s ease;-webkit-tap-highlight-color:rgba(0,0,0,0);}.back-to-top.is-visible{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.back-to-top:hover{color:var(--bg);background:var(--purple);border-color:color-mix(in srgb, var(--purple) 70%, var(--fg))}.back-to-top:focus{outline:none}.back-to-top:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.back-to-top svg{pointer-events:none;display:block}html.image-zoom-open .back-to-top{opacity:0 !important;visibility:hidden !important;pointer-events:none !important}@media (prefers-reduced-motion: reduce){.back-to-top{transition:none}}.container{max-width:56rem;margin:0 auto;padding:0 1.75rem}.article-measure{max-width:760px;margin-left:auto;margin-right:auto}.container>nav{padding:2.5rem 0 .85rem;display:flex;flex-direction:column;align-items:stretch;gap:.4rem;border-bottom:1px solid var(--current);margin-bottom:2.5rem;--site-search-collapsed-width: calc(6.9rem + 2px)}.container>nav .nav-primary{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:1rem clamp(1.75rem,5vw,3.25rem)}.container>nav .site-search-bar{display:flex;justify-content:flex-end;margin:0;padding:0}.container>nav .site-title{flex-shrink:0;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:1rem;font-weight:700;color:var(--purple);text-decoration:none;letter-spacing:-.02em}.container>nav .site-title:hover{color:var(--pink)}.container>nav .nav-links{display:flex;flex-wrap:wrap;align-items:center;gap:1.75rem;list-style:none;flex:1 1 auto;min-width:0;justify-content:flex-end}.container>nav .nav-links .nav-links__book-slot{margin-left:auto}.container>nav .nav-links a{font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;color:var(--comment);text-decoration:none;font-size:.8rem;padding-bottom:.25rem;border-bottom:2px solid rgba(0,0,0,0);border-radius:2px;transition:color .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease}.container>nav .nav-links a:hover{color:var(--cyan);border-bottom-color:var(--cyan)}.container>nav .nav-links a:focus{outline:none}.container>nav .nav-links a:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.container>nav .nav-links a.active{color:var(--fg);border-bottom-color:var(--purple)}.container>nav .nav-links a.nav-link--book{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;flex-shrink:0;min-width:var(--site-search-collapsed-width);padding:.35rem .85rem;padding-bottom:.35rem;border:1px solid color-mix(in srgb, var(--orange) 55%, var(--current));border-bottom:1px solid color-mix(in srgb, var(--orange) 55%, var(--current));border-radius:999px;background:color-mix(in srgb, var(--orange) 14%, var(--bg-darker));color:var(--orange);font-weight:600;letter-spacing:.04em;box-shadow:0 0 0 1px color-mix(in srgb, var(--orange) 12%, rgba(0,0,0,0))}.container>nav .nav-links a.nav-link--book:focus-visible{border-radius:999px}.container>nav .nav-links a.nav-link--book:hover{color:var(--yellow);border-color:color-mix(in srgb, var(--yellow) 45%, var(--orange));background:color-mix(in srgb, var(--orange) 22%, var(--bg));box-shadow:0 0 12px color-mix(in srgb, var(--orange) 25%, rgba(0,0,0,0))}.container>nav .nav-links a.nav-link--book.active{color:var(--yellow);border-color:color-mix(in srgb, var(--purple) 40%, var(--orange));background:color-mix(in srgb, var(--orange) 28%, var(--bg));box-shadow:0 0 0 2px color-mix(in srgb, var(--purple) 55%, rgba(0,0,0,0)),0 0 16px color-mix(in srgb, var(--orange) 36%, rgba(0,0,0,0))}.site-search-bar__shell{position:relative;display:flex;align-items:stretch;box-sizing:border-box;width:var(--site-search-collapsed-width);max-width:100%;border:1px solid var(--current);border-radius:9999px;background:var(--bg-darker);transition:width .35s cubic-bezier(.4, 0, .2, 1),border-color .2s ease,box-shadow .2s ease}.site-search-bar__shell:focus-within{border-color:color-mix(in srgb, var(--purple) 65%, var(--current));box-shadow:0 0 0 3px color-mix(in srgb, var(--purple) 22%, rgba(0,0,0,0))}.site-search-bar.is-expanded .site-search-bar__shell{width:min(11.5rem,100%)}.site-search-bar__control{display:flex;align-items:center;flex:1 1 auto;min-width:0;margin:0;padding:.35rem .85rem;cursor:text}.site-search-bar:not(.is-expanded) .site-search-bar__control{justify-content:center;gap:.35rem}.site-search-bar.is-expanded .site-search-bar__control{justify-content:flex-start;gap:.4rem}.site-search-bar.is-expanded .site-search-bar__hint{display:none}.site-search-bar__hint{flex-shrink:0;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.72rem;font-weight:600;letter-spacing:.06em;color:var(--comment);user-select:none}.site-search-bar__icon{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:1.05rem;height:1.05rem;color:var(--comment)}.site-search-bar__icon svg{display:block;width:100%;height:100%}.site-search-bar__input{flex:1 1 auto;min-width:0;margin:0;padding:0;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.8rem;color:var(--fg);background:rgba(0,0,0,0);border:none;border-radius:0;appearance:none;outline:none;transition:opacity .25s ease}.site-search-bar__input::placeholder{color:var(--comment)}.site-search-bar:not(.is-expanded) .site-search-bar__input{flex:0 0 0;width:0;min-width:0;opacity:0;pointer-events:none}@media (prefers-reduced-motion: reduce){.site-search-bar__shell,.site-search-bar__input{transition:none}}.site-search-bar__panel{position:absolute;right:0;left:auto;top:calc(100% + .35rem);width:max(100%,min(18rem,100vw - 3.5rem));max-height:min(22rem,70vh);overflow:auto;z-index:50;padding:.35rem 0;background:var(--bg-darker);border:1px solid var(--current);border-radius:8px;box-shadow:0 12px 40px color-mix(in srgb, #000 45%, rgba(0,0,0,0)),0 0 0 1px color-mix(in srgb, var(--purple) 12%, rgba(0,0,0,0))}.site-search-bar__panel[hidden]{display:none !important}.site-search-bar__hits{list-style:none}.site-search-bar__hit{border-bottom:1px solid color-mix(in srgb, var(--current) 70%, rgba(0,0,0,0))}.site-search-bar__hit:last-child{border-bottom:none}.site-search-bar__hit.is-highlighted{background:color-mix(in srgb, var(--purple) 12%, var(--bg-darker))}.site-search-bar__hit-link{display:block;padding:.55rem .85rem .2rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.8rem;font-weight:600;color:var(--cyan) !important;text-decoration:none !important;background:none !important;background-image:none !important}.site-search-bar__hit-link:hover{color:var(--pink) !important}.site-search-bar__hit-snippet{padding:0 .85rem .65rem;margin:0;font-size:.78rem;line-height:1.45;color:var(--comment)}.site-search-bar__empty{padding:.65rem .85rem;margin:0;font-size:.8rem;color:var(--comment);font-style:italic}.site-search-bar__empty[hidden]{display:none !important}.content a:not(.post-title):not(.tag-link):not(.github-repo-card):not(.youtube-card):not(.book-cta__button):not(.book-order-now):not(.hero-intent):not(.hero-tagline__link){color:var(--purple);text-decoration:none;background-image:linear-gradient(var(--pink), var(--pink));background-position:0% 100%;background-repeat:no-repeat;background-size:0% 2px;transition:background-size .25s ease,color .2s ease;padding-bottom:1px}.content a:not(.post-title):not(.tag-link):not(.github-repo-card):not(.youtube-card):not(.book-cta__button):not(.book-order-now):not(.hero-intent):not(.hero-tagline__link):hover{color:var(--pink);background-size:100% 2px}a{color:var(--purple);text-decoration:none;transition:color .2s ease}a:hover{color:var(--pink)}a.tag-link{display:inline-block;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.8rem;color:var(--green);background:var(--current);padding:.3em .8em;border-radius:4px;border:1px solid rgba(0,0,0,0);text-decoration:none;background-image:none;transition:color .2s ease,background .2s ease,border-color .2s ease}a.tag-link .tag-count{color:var(--comment)}a.tag-link:hover{color:var(--bg);background:var(--green);border-color:var(--green)}h1,h2,h3,h4,h5,h6{color:var(--fg);line-height:1.3;margin:2.5rem 0 1rem;letter-spacing:-.01em}h1{font-size:2rem;color:var(--purple);font-weight:800}h2{font-size:1.4rem;color:var(--cyan);font-weight:700}h3{font-size:1.15rem;color:var(--green);font-weight:600}h4{font-size:1.05rem;color:var(--orange);font-weight:600}.has-heading-anchor{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:.4rem}.heading-anchor{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;margin:0;padding:.1em;line-height:1;color:var(--comment);text-decoration:none;border-radius:4px;transition:color .15s ease,opacity .15s ease,background-color .15s ease}.heading-anchor:hover{color:var(--cyan)}.heading-anchor:focus-visible{outline:2px solid var(--purple);outline-offset:2px}.heading-anchor svg{display:block}@media (hover: hover) and (pointer: fine){.has-heading-anchor .heading-anchor{opacity:.35}.has-heading-anchor:hover .heading-anchor,.has-heading-anchor:focus-within .heading-anchor{opacity:1}}.heading-anchor--copied{color:var(--green) !important;opacity:1 !important}.hero{margin-bottom:3rem;padding-bottom:2.5rem;border-bottom:1px solid var(--current);}.hero .hero-image-wrap{margin:0 0 1.5rem;border-radius:10px;overflow:hidden;border:1px solid var(--current);aspect-ratio:1400/349;background:var(--bg-alt, var(--bg));animation:hero-enter .75s cubic-bezier(.22, 1, .36, 1) both;animation-delay:0s}.hero .hero-image{display:block;width:100%;height:100%;object-fit:cover;margin:0;border:none;border-radius:0}.hero .hero-name{font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:2.2rem;font-weight:800;color:var(--fg);margin:0 0 .25rem;letter-spacing:-.03em;min-height:1.2em;}.hero .hero-name .accent{color:var(--green)}.hero .hero-name #hero-typewriter{color:var(--fg);text-shadow:none;transition:color .4s ease,text-shadow .4s ease}.hero.hero-typewriter-pending #hero-typewriter{color:var(--green);text-shadow:0 0 10px color-mix(in srgb, var(--green) 55%, rgba(0,0,0,0)),0 0 22px color-mix(in srgb, var(--green) 28%, rgba(0,0,0,0))}.hero.hero--typed #hero-typewriter{color:var(--fg);text-shadow:none}.hero .hero-type-cursor{display:none;width:.7ch;min-width:4px;height:1.14em;margin-left:.08em;vertical-align:-.1em;background:var(--green);border-radius:1px;box-shadow:0 0 6px color-mix(in srgb, var(--green) 85%, rgba(0,0,0,0)),0 0 14px color-mix(in srgb, var(--green) 45%, rgba(0,0,0,0)),0 0 24px color-mix(in srgb, var(--green) 22%, rgba(0,0,0,0));animation:blink .95s step-end infinite;transition:opacity .25s ease,width .25s ease,margin .25s ease,box-shadow .25s ease}.hero.hero-typewriter-pending .hero-type-cursor,.hero.hero--typed .hero-type-cursor{display:inline-block}.hero .hero-tagline{color:color-mix(in srgb, var(--fg) 84%, var(--comment));font-size:1.05rem;margin-bottom:1rem;line-height:1.6;font-weight:500}.hero .hero-tagline .hero-tagline__link{color:var(--cyan);text-decoration:none;font-weight:600;background-image:linear-gradient(var(--pink), var(--pink));background-position:0% 100%;background-repeat:no-repeat;background-size:0% 2px;transition:background-size .25s ease,color .2s ease;padding-bottom:1px}.hero .hero-tagline .hero-tagline__link:hover{color:var(--pink);background-size:100% 2px}.hero .hero-cta{margin:.35rem 0 0;padding:1.15rem 1.25rem 1.25rem;border-radius:12px;border:2px solid rgba(0,0,0,0);background:linear-gradient(160deg, color-mix(in srgb, var(--bg-darker) 88%, var(--purple) 12%) 0%, color-mix(in srgb, var(--bg-darker) 94%, var(--current) 6%) 100%) padding-box,linear-gradient(125deg, var(--purple), var(--pink) 45%, var(--cyan)) border-box;background-origin:border-box;background-clip:padding-box,border-box;box-shadow:0 0 0 1px color-mix(in srgb, var(--purple) 14%, rgba(0,0,0,0)),0 14px 40px color-mix(in srgb, #000 42%, rgba(0,0,0,0));transition:opacity .7s cubic-bezier(.22, 1, .36, 1),transform .7s cubic-bezier(.22, 1, .36, 1)}.hero .hero-cta__label{margin:0 0 .85rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--comment)}.hero .hero-intents{margin:0}.hero .hero-intents__groups{display:flex;flex-direction:column;gap:1rem}.hero .hero-intents__group-label{margin:0 0 .45rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.65rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--comment)}.hero .hero-intents__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill, minmax(min(100%,11.25rem), 1fr));gap:.55rem;font-size:.95rem;line-height:1.45}.hero .hero-intents__list .hero-intent{box-sizing:border-box;display:flex;align-items:center;justify-content:center;min-height:2.65rem;padding:.5rem .75rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.78rem;font-weight:600;text-align:center;text-decoration:none;color:var(--cyan);background:color-mix(in srgb, var(--bg-darker) 72%, var(--bg));background-image:none;border:1px solid color-mix(in srgb, var(--cyan) 32%, var(--current));border-radius:9px;box-shadow:0 1px 0 color-mix(in srgb, var(--fg) 6%, rgba(0,0,0,0));transition:color .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease,transform .2s cubic-bezier(.22, 1, .36, 1)}.hero .hero-intents__list .hero-intent:hover{color:var(--pink);border-color:color-mix(in srgb, var(--pink) 42%, var(--purple));background:color-mix(in srgb, var(--bg-darker) 55%, var(--bg));box-shadow:0 0 0 1px color-mix(in srgb, var(--purple) 22%, rgba(0,0,0,0)),0 8px 22px color-mix(in srgb, #000 38%, rgba(0,0,0,0));transform:translateY(-2px)}.hero .hero-intents__list .hero-intent:focus{outline:none}.hero .hero-intents__list .hero-intent:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.hero .hero-intents__list .hero-intent--primary{color:var(--green);border-color:color-mix(in srgb, var(--green) 38%, var(--current));background:color-mix(in srgb, var(--green) 14%, var(--bg-darker));box-shadow:0 0 0 1px color-mix(in srgb, var(--green) 12%, rgba(0,0,0,0)),0 6px 20px color-mix(in srgb, var(--green) 12%, rgba(0,0,0,0))}.hero .hero-intents__list .hero-intent--primary:hover{color:color-mix(in srgb, var(--green) 88%, var(--fg));border-color:color-mix(in srgb, var(--green) 55%, var(--cyan));background:color-mix(in srgb, var(--green) 22%, var(--bg-darker));box-shadow:0 0 0 1px color-mix(in srgb, var(--green) 28%, rgba(0,0,0,0)),0 10px 28px color-mix(in srgb, var(--green) 18%, rgba(0,0,0,0))}.hero .hero-intents__list .hero-intent--primary:focus-visible{outline-color:var(--green)}.hero .hero-deferred{opacity:1;transform:none;transition:opacity .7s cubic-bezier(.22, 1, .36, 1),transform .7s cubic-bezier(.22, 1, .36, 1)}.hero.hero-typewriter-pending .hero-deferred{opacity:0;transform:translateY(.5rem)}.hero.hero-typewriter-pending .hero-cta{opacity:0;transform:translateY(.5rem);pointer-events:none}.hero.hero--typed .hero-tagline.hero-deferred{transition-delay:.08s}.hero.hero--typed .hero-cta{opacity:1;transform:none;transition-delay:.06s}.hero.hero--typed .hero-intents__list>li.hero-deferred{opacity:1;transform:none}.hero.hero--typed .hero-intents__list>li.hero-deferred:nth-child(1){transition-delay:.14s}.hero.hero--typed .hero-intents__list>li.hero-deferred:nth-child(2){transition-delay:.198s}.hero.hero--typed .hero-intents__list>li.hero-deferred:nth-child(3){transition-delay:.256s}.hero.hero--typed .hero-intents__list>li.hero-deferred:nth-child(4){transition-delay:.314s}.hero.hero--typed .hero-intents__list>li.hero-deferred:nth-child(5){transition-delay:.372s}.hero .hero-prompt{font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.85rem;color:var(--green)}.hero .hero-prompt .cursor{display:inline-block;width:.55em;height:1.1em;background:var(--green);margin-left:.15em;vertical-align:text-bottom;animation:blink 1s step-end infinite}@keyframes hero-enter{from{opacity:0;transform:translateY(.55rem)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.hero .hero-image-wrap{animation:none}.hero.hero--typed .hero-type-cursor,.hero.hero-typewriter-pending .hero-type-cursor{display:none}.hero .hero-deferred{opacity:1;transform:none;transition:none}.hero .hero-cta{opacity:1;transform:none;transition:none;pointer-events:auto}.hero .hero-intents__list .hero-intent:hover{transform:none}.page-title-typewriter.page-title-typewriter--typed .page-typewriter-cursor,.page-title-typewriter.page-title-typewriter-pending .page-typewriter-cursor{display:none}}.page-title-typewriter{font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:2.2rem;font-weight:800;color:var(--fg);letter-spacing:-.03em;line-height:1.3;min-height:1.2em;}.page-title-typewriter .accent{color:var(--green)}.page-title-typewriter .page-typewriter-stack{display:inline-block;max-width:100%;vertical-align:bottom}.page-title-typewriter .page-typewriter-text{position:relative;color:var(--fg);text-shadow:none;line-height:1.3}.page-title-typewriter .page-typewriter-char--ghost{color:var(--comment);text-shadow:none}.page-title-typewriter .page-typewriter-char--revealed{transition:color .4s ease,text-shadow .4s ease}.page-title-typewriter.page-title-typewriter-pending .page-typewriter-char--revealed{transition:none;color:var(--green);text-shadow:0 0 10px color-mix(in srgb, var(--green) 55%, rgba(0,0,0,0)),0 0 22px color-mix(in srgb, var(--green) 28%, rgba(0,0,0,0))}.page-title-typewriter.page-title-typewriter--typed .page-typewriter-char--revealed{color:var(--fg);text-shadow:none}.page-title-typewriter .page-typewriter-cursor{display:none;width:.7ch;min-width:4px;background:var(--green);border-radius:1px;box-shadow:0 0 6px color-mix(in srgb, var(--green) 85%, rgba(0,0,0,0)),0 0 14px color-mix(in srgb, var(--green) 45%, rgba(0,0,0,0)),0 0 24px color-mix(in srgb, var(--green) 22%, rgba(0,0,0,0));animation:blink .95s step-end infinite;transition:opacity .25s ease,width .25s ease,margin .25s ease,box-shadow .25s ease}.page-title-typewriter .page-typewriter-text .page-typewriter-cursor{position:absolute;margin:0;z-index:1;pointer-events:none}.page-title-typewriter.page-title-typewriter-pending .page-typewriter-text .page-typewriter-cursor,.page-title-typewriter.page-title-typewriter--typed .page-typewriter-text .page-typewriter-cursor{display:block}@keyframes blink{50%{opacity:0}}.content p{margin-bottom:1.4rem}.content ul,.content ol{margin-bottom:1.4rem;padding-left:1.5rem}.content li{margin-bottom:.4rem}.content blockquote{position:relative;margin:1.75rem 0;padding:1.05rem 1.35rem 1.1rem 1.45rem;color:color-mix(in srgb, var(--fg) 84%, var(--comment));font-style:italic;background:linear-gradient(145deg, color-mix(in srgb, var(--bg-darker) 92%, var(--purple) 8%) 0%, color-mix(in srgb, var(--bg-darker) 85%, var(--purple) 15%) 100%);border:1px solid color-mix(in srgb, var(--purple) 45%, var(--current));border-left:4px solid var(--cyan);border-radius:8px;box-shadow:0 0 0 1px color-mix(in srgb, var(--cyan) 12%, rgba(0,0,0,0)),0 12px 32px rgba(0,0,0,.42)}.content blockquote strong{color:var(--orange);font-style:normal;font-weight:700}.content blockquote a{color:var(--cyan);text-decoration-color:color-mix(in srgb, var(--cyan) 55%, rgba(0,0,0,0))}.content blockquote a:hover{color:color-mix(in srgb, var(--cyan) 88%, var(--fg));text-decoration-color:var(--cyan)}.content blockquote code{background:color-mix(in srgb, var(--bg) 65%, var(--current));color:var(--orange)}.content img{max-width:100%;height:auto;border-radius:6px;margin:2rem 0;border:1px solid var(--current)}.content img.image-zoomable{cursor:zoom-in;transition:box-shadow .2s ease,border-color .2s ease}.content img.image-zoomable:hover{border-color:color-mix(in srgb, var(--purple) 55%, var(--current));box-shadow:0 0 0 1px color-mix(in srgb, var(--purple) 35%, rgba(0,0,0,0))}.content img.image-zoomable:focus{outline:2px solid var(--purple);outline-offset:3px}.content img.image-zoomable:focus:not(:focus-visible){outline:none}.content img.image-zoomable:focus-visible{outline:2px solid var(--purple);outline-offset:3px}.content a.github-repo-card{display:flex;gap:1rem;align-items:flex-start;margin:1.5rem 0;padding:1rem 1.15rem;max-width:100%;text-decoration:none;color:inherit;background:var(--bg-darker);border:1px solid color-mix(in srgb, var(--comment) 45%, var(--current));border-radius:8px;transition:border-color .2s ease,box-shadow .2s ease}.content a.github-repo-card:hover{color:inherit;border-color:var(--purple);box-shadow:0 0 0 1px color-mix(in srgb, var(--purple) 35%, rgba(0,0,0,0))}.content .github-repo-card__mark{flex-shrink:0;color:var(--comment);line-height:0;transition:color .2s ease}.content .github-repo-card__mark svg{display:block}.content a.github-repo-card:hover .github-repo-card__mark{color:var(--cyan)}.content .github-repo-card__main{min-width:0;flex:1}.content .github-repo-card__title{font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:1rem;font-weight:700;color:var(--cyan);margin-bottom:.35rem;transition:color .2s ease}.content a.github-repo-card:hover .github-repo-card__title{color:var(--pink)}.content .github-repo-card__desc{margin:0 0 .65rem;font-size:.92rem;line-height:1.45;color:var(--comment)}.content .github-repo-card__foot{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .85rem}.content .github-repo-card__lang{display:inline-flex;align-items:center;gap:.4rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.72rem;color:var(--fg);opacity:.92}.content .github-repo-card__lang-dot{width:.65rem;height:.65rem;border-radius:50%;background:var(--purple);flex-shrink:0}.content .github-repo-card__badges{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.35rem}.content .github-repo-card__badges img{margin:0;border:none;border-radius:4px;height:20px;width:auto;vertical-align:middle}.content .github-repo-card__wiki-meta{font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.72rem;color:var(--comment)}.content a.github-repo-card--wiki:hover .github-repo-card__mark{color:var(--green)}.content .github-repo-card--wiki .github-repo-card__title{color:var(--green)}.content a.github-repo-card--wiki:hover .github-repo-card__title{color:var(--orange)}.content a.github-repo-card.content-link-card:hover .github-repo-card__mark{color:var(--orange)}.content .github-repo-card.content-link-card .github-repo-card__title{color:var(--orange)}.content a.github-repo-card.content-link-card:hover .github-repo-card__title{color:var(--yellow)}.content .media-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill, minmax(min(100%,17.5rem), 1fr));margin:0 0 1.75rem}.content .media-page .media-grid .github-repo-card{margin:0;align-self:stretch}.content a.youtube-card{display:block;margin:1.5rem 0;max-width:100%;text-decoration:none;color:inherit;background:#0d0d12;border:1px solid color-mix(in srgb, var(--comment) 45%, var(--current));border-radius:10px;overflow:hidden;aspect-ratio:16/9;transition:border-color .2s ease,box-shadow .2s ease}.content a.youtube-card:hover{color:inherit;border-color:color-mix(in srgb, var(--red) 55%, var(--purple));box-shadow:0 0 0 1px color-mix(in srgb, var(--red) 22%, rgba(0,0,0,0)),0 6px 24px rgba(0,0,0,.28)}.content .media-page .media-grid .youtube-card{margin:0;align-self:stretch}.content .youtube-card__thumb{display:block;width:100%;height:100%;object-fit:cover;margin:0;border:none;vertical-align:middle}.content .github-contributions{margin:0 0 2rem;padding:0;border:none;background:rgba(0,0,0,0)}.content .github-contributions__link{display:block;text-decoration:none;border-radius:10px;overflow:hidden;border:1px solid color-mix(in srgb, var(--comment) 40%, var(--current));background:var(--bg-darker);box-shadow:0 6px 28px rgba(0,0,0,.22);transition:border-color .2s ease,box-shadow .2s ease}.content .github-contributions__link:hover{border-color:color-mix(in srgb, var(--purple) 55%, var(--current));box-shadow:0 0 0 1px color-mix(in srgb, var(--purple) 28%, rgba(0,0,0,0)),0 8px 32px rgba(0,0,0,.28)}.content .github-contributions__img{display:block;width:100%;max-width:100%;height:auto;margin:0;border:none;border-radius:0;vertical-align:middle}.content .github-contributions__caption{margin:.5rem 0 0;padding:0 .15rem;font-size:.75rem;line-height:1.4;color:var(--comment);text-align:center}.content .github-contributions__caption a{color:color-mix(in srgb, var(--cyan) 82%, var(--comment));text-decoration:none;border-bottom:1px solid color-mix(in srgb, var(--cyan) 30%, rgba(0,0,0,0))}.content .github-contributions__caption a:hover{color:var(--pink);border-bottom-color:color-mix(in srgb, var(--pink) 45%, rgba(0,0,0,0))}.content .media-video{margin:0 0 2.25rem;border-radius:10px;overflow:hidden;border:1px solid color-mix(in srgb, var(--comment) 40%, var(--current));background:var(--bg-darker);box-shadow:0 6px 28px rgba(0,0,0,.22)}.content .media-video__inner{position:relative;width:100%;aspect-ratio:16/9;background:#0d0d12}.content .media-video__iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.content .media-placeholder{margin:0 0 2rem;padding:1.1rem 1.25rem;font-size:.92rem;line-height:1.55;color:var(--comment);background:color-mix(in srgb, var(--bg-darker) 88%, var(--current));border:1px dashed color-mix(in srgb, var(--comment) 45%, var(--current));border-radius:8px}.content .media-placeholder code{font-size:.82em;color:var(--cyan);background:var(--bg);padding:.12em .35em;border-radius:4px}.content .media-page__note{margin-top:2.5rem;padding:1.15rem 1.35rem;border:1px solid color-mix(in srgb, var(--orange) 38%, var(--current));border-radius:8px;font-size:.95rem;color:color-mix(in srgb, var(--fg) 80%, var(--comment));background:linear-gradient(155deg, color-mix(in srgb, var(--bg-darker) 90%, var(--orange) 10%) 0%, color-mix(in srgb, var(--bg-darker) 94%, var(--purple) 6%) 100%);box-shadow:0 0 0 1px color-mix(in srgb, var(--orange) 10%, rgba(0,0,0,0)),0 10px 28px rgba(0,0,0,.38)}.content hr{border:none;border-top:1px solid var(--current);margin:2.5rem 0}.content table{width:100%;border-collapse:collapse;margin:1.75rem 0}.content table th,.content table td{padding:.6rem .85rem;border:1px solid var(--current);text-align:left}.content table th{background:var(--current);color:var(--cyan);font-weight:600;font-size:.9rem}code{font-family:"JetBrains Mono","Fira Code","SF Mono","Cascadia Code",monospace;font-size:.85em;background:var(--current);padding:.2em .45em;border-radius:4px}pre.giallo{position:relative;margin:1.75rem 0;padding:1.25rem 1.5rem;overflow-x:auto;border-radius:8px;border:1px solid var(--current);line-height:1.55;background-color:var(--bg-darker) !important}pre.giallo code{display:block;position:relative;background:none;padding:0;border-radius:0;font-size:.82rem;width:100%}pre.giallo:has(code[data-lang]){padding-top:2.35rem}pre.giallo code[data-lang]::before{content:attr(data-lang);position:absolute;top:-1.85rem;right:0;padding:.2rem .75rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.65rem;color:var(--comment);background:var(--current);border-radius:4px 4px 0 6px;text-transform:uppercase;letter-spacing:.05em;pointer-events:none}.giallo-l{display:inline-block;min-height:1lh;width:100%}.giallo-ln{display:inline-block;user-select:none;margin-right:.75em;padding:0 .65em 0 0;min-width:2.5ch;text-align:right;opacity:.85;color:var(--comment) !important;border-right:1px solid var(--current);font-variant-numeric:tabular-nums}pre.giallo:not(:has(.giallo-ln)) code{counter-reset:giallo-line 0;padding-left:4.5ch}pre.giallo:not(:has(.giallo-ln)) .giallo-l{counter-increment:giallo-line;position:relative}pre.giallo:not(:has(.giallo-ln)) .giallo-l::before{content:counter(giallo-line);position:absolute;left:-4.5ch;width:3.25ch;box-sizing:border-box;padding-right:.65em;margin-right:0;text-align:right;font-family:"JetBrains Mono","Fira Code","SF Mono","Cascadia Code",monospace;font-size:.82rem;font-variant-numeric:tabular-nums;user-select:none;pointer-events:none;color:var(--comment);opacity:.85;border-right:1px solid var(--current)}pre.giallo .code-block-actions{position:absolute;top:.4rem;left:.5rem;z-index:3;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}pre.giallo.giallo--wrap{overflow-x:hidden}pre.giallo.giallo--wrap code{white-space:pre-wrap;overflow-wrap:anywhere}.copy-code-btn,.wrap-code-btn{font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--comment);background:var(--current);border:1px solid color-mix(in srgb, var(--comment) 35%, rgba(0,0,0,0));border-radius:4px;padding:.25rem .55rem;cursor:pointer;transition:color .15s ease,background .15s ease,border-color .15s ease}.copy-code-btn:hover,.wrap-code-btn:hover{color:var(--cyan);border-color:var(--cyan);background:var(--bg)}.copy-code-btn:focus,.wrap-code-btn:focus{outline:2px solid var(--purple);outline-offset:2px}.copy-code-btn:focus:not(:focus-visible),.wrap-code-btn:focus:not(:focus-visible){outline:none}.copy-code-btn:focus-visible,.wrap-code-btn:focus-visible{outline:2px solid var(--purple);outline-offset:2px}.copy-code-btn.copy-code-btn--done{color:var(--green);border-color:var(--green)}.wrap-code-btn[aria-pressed=true]{color:var(--cyan);border-color:var(--cyan);background:var(--bg)}.post-list{list-style:none;padding:0}.post-list .post-item{padding:1.25rem 0;border-bottom:1px solid color-mix(in srgb, var(--current) 50%, rgba(0,0,0,0))}.post-list .post-item:first-child{padding-top:0}.post-list .post-item:last-child{border-bottom:none}.post-list .post-item-header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.3rem}@media (max-width: 500px){.post-list .post-item-header{flex-direction:column;gap:.1rem}}.post-list .post-title{color:var(--fg);font-weight:600;font-size:1.05rem;transition:color .2s ease}.post-list .post-title:hover{color:var(--pink)}.post-list .post-date{font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;color:var(--comment);font-size:.75rem;white-space:nowrap}.post-list .post-description{color:var(--comment);font-size:.88rem;line-height:1.5}.post-list--cards{display:flex;flex-direction:column;gap:1.1rem;}.post-list--cards .post-item{padding:0;border-bottom:none}.post-list--cards .post-card{display:grid;grid-template-columns:1fr;border-radius:10px;border:1px solid color-mix(in srgb, var(--current) 72%, rgba(0,0,0,0));background:color-mix(in srgb, var(--bg-darker) 55%, var(--bg));overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.post-list--cards .post-card:hover{border-color:color-mix(in srgb, var(--purple) 38%, var(--current));box-shadow:0 6px 28px color-mix(in srgb, #000 45%, rgba(0,0,0,0))}.post-list--cards .post-card:hover .post-title{color:var(--pink)}@media (min-width: 560px){.post-list--cards .post-card{grid-template-columns:clamp(200px,32%,280px) minmax(0, 1fr);align-items:stretch}}@media (min-width: 560px){.post-list--cards .post-card--no-media{grid-template-columns:minmax(0, 1fr)}}.post-list--cards .post-card--no-media .post-card__body{border-left:3px solid color-mix(in srgb, var(--purple) 55%, var(--current))}.post-list--cards .post-card__media{display:block;position:relative;width:100%;background:var(--bg-darker);overflow:hidden;line-height:0;font-size:0;aspect-ratio:16/10;border-radius:10px 10px 0 0}@media (min-width: 560px){.post-list--cards .post-card__media{display:flex;flex-direction:column;align-self:stretch;aspect-ratio:unset;min-height:0;min-width:0;border-radius:10px 12px 12px 10px}}.post-list--cards .post-card__media:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}.post-list--cards .post-card__thumb{width:100%;height:100%;object-fit:cover;object-position:var(--post-card-thumb-position, center);display:block}.post-list--cards .post-card__body{padding:1rem 1.1rem 1.05rem;display:flex;flex-direction:column;gap:.45rem;min-width:0}.post-list--cards .post-card__top{display:flex;flex-direction:column;gap:.35rem;min-width:0}.post-list--cards .post-card__top .post-title{margin:0}.post-list--cards .post-card__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .65rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.72rem;color:var(--comment)}.post-list--cards .post-card__read{color:color-mix(in srgb, var(--comment) 88%, var(--cyan));white-space:nowrap}.post-list--cards .post-card__read::before{content:"·";margin-right:.65rem;color:var(--current)}.post-list--cards .post-card__tags{margin-top:.35rem}.post-list--cards .post-title{font-size:1.08rem;line-height:1.35}.content ul.post-list--cards{padding-left:0;margin-left:0}.content .post-list--cards>.post-item{margin-bottom:0}.content .post-list--cards .post-card__thumb{margin:0;border:none;border-radius:inherit;width:100%;height:100%;max-width:none;max-height:none}@media (min-width: 560px){.content .post-list--cards .post-card__thumb{flex:1 1 auto;height:auto;min-height:0}}.content .post-list--cards .post-description{margin-bottom:0}.content .post-list--cards .post-card__tags{margin-bottom:0}.post-year-archive{display:flex;flex-direction:column;gap:.35rem}.post-year-group{border:1px solid color-mix(in srgb, var(--current) 55%, rgba(0,0,0,0));border-radius:10px;background:color-mix(in srgb, var(--bg-darker) 40%, var(--bg));overflow:hidden}.post-year-group__summary{list-style:none;cursor:pointer;padding:.85rem 1rem .9rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.95rem;font-weight:600;color:var(--fg);letter-spacing:.04em;transition:color .2s ease,background .2s ease}.post-year-group__summary::-webkit-details-marker{display:none}.post-year-group__summary::before{content:"";display:inline-block;width:.45em;height:.45em;margin-right:.55rem;border-right:2px solid var(--comment);border-bottom:2px solid var(--comment);transform:rotate(-45deg) translateY(-.08em);transition:transform .2s ease;vertical-align:middle}.post-year-group__summary:hover{color:var(--pink);background:color-mix(in srgb, var(--purple) 12%, rgba(0,0,0,0))}.post-year-group[open] .post-year-group__summary::before{transform:rotate(45deg) translateY(.12em)}.post-year-group__label{vertical-align:middle}.post-year-group__list{padding:0 1rem 1.15rem !important;margin:0 !important;gap:1rem}.content .post-year-archive .post-year-group__list.post-list--cards{padding-left:1rem}@media (prefers-reduced-motion: reduce){.post-year-group__summary,.post-year-group__summary::before{transition:none}}.content .post-banner{display:block;width:100%;max-width:100%;height:min(40vh,400px);min-height:clamp(160px,20vw,240px);margin:0 auto 2.25rem;padding:0;border-radius:8px;overflow:hidden;border:1px solid var(--current);background:var(--bg-darker)}.content .post-banner__img{display:block;width:100%;height:100%;margin:0;border:none;border-radius:0;object-fit:cover;object-position:center top}.content .article-measure--book .post-banner__img{object-position:center}.image-zoom-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);background:color-mix(in srgb, var(--dracula-bg-dark) 92%, #000);backdrop-filter:blur(6px);cursor:zoom-out;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .5s cubic-bezier(.22, 1, .36, 1),visibility 0s linear .5s}.image-zoom-overlay.is-visible{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .5s cubic-bezier(.22, 1, .36, 1),visibility 0s linear 0s}.image-zoom-overlay__dismiss{position:absolute;inset:0;z-index:0;cursor:zoom-out}.image-zoom-overlay__close{position:absolute;top:min(.85rem,3vw);right:min(.85rem,3vw);z-index:3;width:2.5rem;height:2.5rem;padding:0;margin:0;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:1.65rem;font-weight:500;line-height:1;color:var(--fg);background:color-mix(in srgb, var(--bg-darker) 88%, var(--purple));border:1px solid color-mix(in srgb, var(--current) 80%, var(--purple));border-radius:8px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;-webkit-tap-highlight-color:rgba(0,0,0,0)}.image-zoom-overlay__close:hover{color:var(--bg);background:var(--purple);border-color:color-mix(in srgb, var(--purple) 70%, var(--fg))}.image-zoom-overlay__close:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.image-zoom-overlay__frame{position:relative;z-index:1;width:min(96vw,100%);max-width:100%;cursor:default}.image-zoom-overlay__stage{position:relative;width:100%}.image-zoom-overlay__nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:2.25rem;height:2.25rem;padding:0;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:1.35rem;line-height:1;color:var(--fg);background:color-mix(in srgb, var(--bg-darker) 88%, var(--purple));border:1px solid color-mix(in srgb, var(--current) 80%, var(--purple));border-radius:8px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.image-zoom-overlay__nav::before{display:block;transform:translateY(-.04em)}.image-zoom-overlay__nav--prev::before{content:"‹"}.image-zoom-overlay__nav--next::before{content:"›"}.image-zoom-overlay__nav:hover:not(:disabled){color:var(--bg);background:var(--purple);border-color:color-mix(in srgb, var(--purple) 70%, var(--fg))}.image-zoom-overlay__nav:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.image-zoom-overlay__nav:disabled{opacity:.38;cursor:not-allowed}.image-zoom-overlay__nav--prev{left:min(.35rem,2vw)}.image-zoom-overlay__nav--next{right:min(.35rem,2vw)}.image-zoom-overlay__viewport{width:100%;overflow-x:hidden;overflow-y:hidden;max-height:min(92vh,100%);outline:none}.image-zoom-overlay__viewport--gallery{overflow-x:hidden;touch-action:manipulation}.image-zoom-overlay__track{display:flex;align-items:stretch;width:100%;min-height:min(85vh,720px)}.image-zoom-overlay__slide{flex:0 0 100%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:.25rem}.image-zoom-overlay__img{max-width:100%;max-height:min(85vh,720px);width:auto;height:auto;object-fit:contain;margin:0;border-radius:8px;border:1px solid var(--current);box-shadow:0 12px 48px color-mix(in srgb, #000 55%, rgba(0,0,0,0));cursor:zoom-out;pointer-events:auto;opacity:0;transform:scale(.94) translateY(.5rem);transform-origin:center center;transition:opacity .55s cubic-bezier(.22, 1, .36, 1),transform .55s cubic-bezier(.22, 1, .36, 1)}.image-zoom-overlay.is-visible .image-zoom-overlay__img{opacity:1;transform:scale(1) translateY(0)}@media (prefers-reduced-motion: reduce){.image-zoom-overlay,.image-zoom-overlay__img{transition-duration:.01ms !important;transition-delay:0s !important}}html.image-zoom-open{overflow:hidden}.post-header--media{margin-bottom:2rem;padding-bottom:1.75rem}.post-header--media h1{margin-bottom:.85rem}.media-page__lede{margin:0 0 1.75rem;max-width:42rem;padding:.2rem 0 .2rem 1rem;border-left:3px solid color-mix(in srgb, var(--purple) 50%, var(--cyan));border-radius:0 4px 4px 0;font-size:1.125rem;line-height:1.58;font-weight:500;color:color-mix(in srgb, var(--fg) 94%, var(--purple));text-wrap:balance}.media-page__lede p{margin:0}.on-this-page{position:relative;margin:0 0 2rem;padding:.6rem 0 .6rem 1.15rem;max-width:none}.on-this-page::before{content:"";position:absolute;left:0;top:.2rem;bottom:.2rem;width:3px;border-radius:3px;background:linear-gradient(180deg, var(--purple), color-mix(in srgb, var(--purple) 40%, var(--cyan)));opacity:.9}.on-this-page__heading{margin:0 0 .45rem;font-family:inherit;font-size:.8125rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--comment)}.on-this-page__list{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;align-items:baseline;row-gap:.35rem;column-gap:0;font-size:.9375rem;line-height:1.5}.on-this-page__list li{display:inline-flex;align-items:baseline}.on-this-page__list li:not(:last-child)::after{content:"·";margin:0 .5rem;color:var(--comment);font-weight:300;opacity:.75;user-select:none;pointer-events:none}.on-this-page__list a{color:var(--fg);text-decoration:none;border-bottom:1px solid color-mix(in srgb, var(--comment) 55%, rgba(0,0,0,0));transition:color .15s ease,border-color .15s ease}.on-this-page__list a:hover{color:var(--cyan);border-bottom-color:color-mix(in srgb, var(--cyan) 45%, rgba(0,0,0,0))}.on-this-page__list a:focus-visible{outline:2px solid var(--purple);outline-offset:3px;border-radius:2px}.media-page__body>h2{margin-top:2.75rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid color-mix(in srgb, var(--current) 75%, var(--purple));font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.9rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--purple)}.media-page__body>h2:first-of-type{margin-top:0}.post-header{margin-bottom:2.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--current)}.post-header h1{margin-bottom:.75rem;margin-top:0}.post-header .post-meta{font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;color:var(--comment);font-size:.8rem;display:flex;gap:1.25rem;flex-wrap:wrap;margin-bottom:.75rem}.post-header .post-meta span::before{content:"//";color:var(--current);margin-right:.4em}.post-header .post-meta time::before{content:"//";color:var(--current);margin-right:.4em}.not-found .not-found-lede{margin:0;color:var(--comment);font-size:.95rem;line-height:1.5}.not-found .not-found-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem}.not-found .not-found-sep{color:var(--current);user-select:none}.tags{display:flex;gap:.5rem;flex-wrap:wrap;list-style:none;padding:0;margin-top:.5rem}.pagination{display:flex;justify-content:space-between;margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--current);font-size:.85rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace}.section-heading{margin-bottom:1rem;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.85rem;color:var(--comment);text-transform:uppercase;letter-spacing:.12em}.recent-posts-more{margin:1.25rem 0 0;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.88rem}.recent-posts-more a{color:var(--cyan);text-decoration:none;font-weight:600;transition:color .2s ease}.recent-posts-more a:hover{color:var(--pink)}.job-experience{margin-bottom:3rem;padding-bottom:2.5rem;border-bottom:1px solid var(--current)}.job-experience .section-heading{margin-top:0}.job-experience__list{list-style:none;margin:0;padding:0}.job-experience__item{--job-timeline-gap: 1.75rem;--job-node-size: 0.65rem;--job-track: 1.35rem;display:grid;grid-template-columns:var(--job-track) 1fr;column-gap:1rem;align-items:start;position:relative;margin-bottom:var(--job-timeline-gap);}.job-experience__item::after{content:"";position:absolute;left:calc(var(--job-track)*.5 - 1px);top:calc(.42rem + var(--job-node-size) + .2rem);bottom:calc(-1*var(--job-timeline-gap));width:2px;border-radius:1px;background:linear-gradient(180deg, color-mix(in srgb, var(--cyan) 45%, var(--current)), color-mix(in srgb, var(--purple) 35%, var(--current)));opacity:.85;z-index:0;pointer-events:none}.job-experience__item:last-child{margin-bottom:0}.job-experience__item:last-child::after{display:none}.job-experience__node{position:relative;justify-self:center;width:var(--job-node-size);height:var(--job-node-size);margin-top:.42rem;flex-shrink:0;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 3px color-mix(in srgb, var(--cyan) 28%, var(--bg)),0 0 14px color-mix(in srgb, var(--cyan) 35%, rgba(0,0,0,0));z-index:1}.job-experience__item:has(.job-experience__link:hover) .job-experience__node{background:var(--pink);box-shadow:0 0 0 3px color-mix(in srgb, var(--pink) 30%, var(--bg)),0 0 16px color-mix(in srgb, var(--pink) 40%, rgba(0,0,0,0))}.job-experience__item:has(.job-experience__link:focus-visible) .job-experience__node{background:var(--yellow);box-shadow:0 0 0 3px color-mix(in srgb, var(--yellow) 35%, var(--bg)),0 0 0 5px color-mix(in srgb, var(--cyan) 45%, rgba(0,0,0,0))}.job-experience__body{min-width:0}.job-experience__link{display:block;text-decoration:none;color:inherit;border-radius:.25rem;margin:0 -.25rem;padding:.15rem .25rem;transition:background-color .15s ease}.job-experience__link:hover{background:color-mix(in srgb, var(--current) 35%, rgba(0,0,0,0))}.job-experience__link:hover .job-experience__title{color:var(--pink)}.job-experience__link:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.job-experience__title{margin:0 0 .35rem;font-size:1.05rem;font-weight:600;color:var(--green);line-height:1.35}.job-experience__period{margin:0;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.8rem;color:var(--comment);letter-spacing:.02em}footer{margin-top:5rem;padding:2rem 0;border-top:1px solid var(--current);color:var(--comment);font-size:.78rem;text-align:center;line-height:1.8}footer .footer-links{margin-bottom:.5rem}footer .footer-links a{color:var(--comment);margin:0 .75rem;transition:color .2s ease}footer .footer-links a:hover{color:var(--purple)}footer .footer-copy{color:color-mix(in srgb, var(--comment) 60%, rgba(0,0,0,0))}.taxonomy-grid{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.5rem}.article-measure.article-measure--book{max-width:52rem;}.article-measure--book .book-page__subtitle{margin:-.15rem 0 .65rem;max-width:42rem;font-size:clamp(.98rem,1.1vw + .55rem,1.125rem);line-height:1.45;font-weight:500;color:color-mix(in srgb, var(--fg) 78%, var(--comment));letter-spacing:.02em}.article-measure--book .book-hero{--book-hero-cover-w: 20.5rem;--book-hero-gap: clamp(1.5rem, 3vw, 2.25rem);position:relative;margin:0 0 2.25rem}.article-measure--book .book-hero:has(.book-cover-hero){padding-inline-start:calc(var(--book-hero-cover-w) + var(--book-hero-gap))}.article-measure--book .book-hero__copy{min-width:0;max-width:32rem;padding-top:.35rem}.article-measure--book .book-cover-hero{position:absolute;inset-inline-start:0;top:0;bottom:0;width:var(--book-hero-cover-w);margin:0;padding:0;display:flex;flex-direction:column;align-items:stretch;justify-content:center;text-align:center;pointer-events:none}.article-measure--book .book-cover-hero .book-cover-carousel{pointer-events:auto}.article-measure--book .book-cover-carousel{display:flex;flex-direction:column;align-items:stretch;justify-content:center;width:100%;max-height:100%;min-height:0;gap:.65rem}.article-measure--book .book-cover-carousel__viewport{flex:0 0 auto;width:100%;min-width:0;aspect-ratio:2/3;min-height:12.5rem;max-height:min(100%,78vh);overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;border-radius:8px;box-shadow:0 2px 4px color-mix(in srgb, #000 45%, rgba(0,0,0,0)),0 20px 44px color-mix(in srgb, var(--purple) 20%, rgba(0,0,0,0)),0 0 0 1px color-mix(in srgb, var(--current) 75%, rgba(0,0,0,0));scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--purple) 45%, rgba(0,0,0,0)) rgba(0,0,0,0)}.article-measure--book .book-cover-carousel__viewport::-webkit-scrollbar{height:6px}.article-measure--book .book-cover-carousel__viewport::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--purple) 50%, rgba(0,0,0,0));border-radius:3px}.article-measure--book .book-cover-carousel__viewport:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}@media (prefers-reduced-motion: reduce){.article-measure--book .book-cover-carousel__viewport{scroll-behavior:auto}}.article-measure--book .book-cover-carousel__track{display:flex;height:100%;min-height:100%}.article-measure--book .book-cover-carousel__slide{flex:0 0 100%;width:100%;min-width:0;height:100%;margin:0;padding-inline:clamp(.35rem,2vw,.55rem);padding-block:0;scroll-snap-align:start;scroll-snap-stop:always;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.article-measure--book .book-cover-carousel__chrome{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem .75rem}.article-measure--book .book-cover-carousel__btn{flex-shrink:0;width:2.25rem;height:2.25rem;padding:0;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:1.35rem;line-height:1;color:var(--fg);background:color-mix(in srgb, var(--bg-darker) 88%, var(--purple));border:1px solid color-mix(in srgb, var(--current) 80%, var(--purple));border-radius:8px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.article-measure--book .book-cover-carousel__btn::before{display:block;transform:translateY(-.04em)}.article-measure--book .book-cover-carousel__btn--prev::before{content:"‹"}.article-measure--book .book-cover-carousel__btn--next::before{content:"›"}.article-measure--book .book-cover-carousel__btn:hover:not(:disabled){color:var(--bg);background:var(--purple);border-color:color-mix(in srgb, var(--purple) 70%, var(--fg))}.article-measure--book .book-cover-carousel__btn:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.article-measure--book .book-cover-carousel__btn:disabled{opacity:.38;cursor:not-allowed}.article-measure--book .book-cover-carousel__dots{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.4rem;min-height:2.25rem}.article-measure--book .book-cover-carousel__dot{width:.55rem;height:.55rem;padding:0;border-radius:50%;border:1px solid color-mix(in srgb, var(--current) 70%, var(--purple));background:color-mix(in srgb, var(--bg-darker) 70%, rgba(0,0,0,0));cursor:pointer;transition:transform .15s ease,background .15s ease,border-color .15s ease}.article-measure--book .book-cover-carousel__dot:hover{border-color:var(--purple);background:color-mix(in srgb, var(--purple) 35%, var(--bg-darker))}.article-measure--book .book-cover-carousel__dot:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.article-measure--book .book-cover-carousel__dot.is-active{background:var(--green);border-color:color-mix(in srgb, var(--green) 65%, var(--fg));transform:scale(1.15)}.article-measure--book .book-cover-hero__img{display:block;margin:0 auto;width:auto;max-width:100%;height:100%;max-height:100%;object-fit:contain;object-position:center;border-radius:4px;transition:transform .25s ease}.article-measure--book .book-cover-carousel .book-cover-hero__img{box-shadow:none;border:none;margin:0}@media (prefers-reduced-motion: no-preference){.article-measure--book .book-cover-carousel__slide:hover .book-cover-hero__img{transform:translateY(-1px)}}.article-measure .book-lede{font-size:1.05rem;color:color-mix(in srgb, var(--fg) 88%, var(--comment));margin-bottom:1.5rem;padding:1rem 1.25rem;border-left:3px solid var(--purple);background:color-mix(in srgb, var(--bg-darker) 65%, var(--bg))}.article-measure--book .book-lede--hero{margin:0 0 1.25rem;padding:0;border:none;background:none;font-size:.875rem;line-height:1.58;color:color-mix(in srgb, var(--fg) 88%, var(--comment))}.article-measure--book .book-lede--hero>p:first-child{font-size:clamp(.98rem,1.35vw + .55rem,1.1rem);line-height:1.4;letter-spacing:-.012em;color:var(--fg);margin:0 0 1.05rem}.article-measure--book .book-lede--hero>p+p{margin-top:.8rem}.article-measure--book .book-lede--hero p:last-child{margin-bottom:0}.article-measure--book .book-order-now{display:inline-block;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.92rem;font-weight:700;color:var(--bg) !important;background:var(--green);padding:.65rem 1.4rem;border-radius:8px;text-decoration:none !important;border:1px solid color-mix(in srgb, var(--green) 70%, var(--fg));box-shadow:0 2px 12px color-mix(in srgb, var(--green) 22%, rgba(0,0,0,0));transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}.article-measure--book .book-order-now:hover{color:var(--bg) !important;filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 4px 18px color-mix(in srgb, var(--green) 35%, rgba(0,0,0,0))}.article-measure--book .book-order-now:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.article-measure--book .book-page-body{margin-top:.5rem}@media (max-width: 640px){.article-measure--book .book-hero:has(.book-cover-hero){padding-inline-start:0;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.article-measure--book .book-cover-hero{position:static;width:auto;max-width:min(20.5rem,72vw);flex-shrink:0}.article-measure--book .book-hero__copy{width:100%;max-width:28rem;padding-top:0}.article-measure--book .book-cover-hero__img{width:100%;height:auto;max-width:100%;object-fit:unset}.article-measure--book .book-cover-carousel .book-cover-hero__img{width:auto;height:100%;max-width:100%;max-height:100%;object-fit:contain}}.article-measure .book-status{margin:2rem 0;padding:1rem 1.25rem;border:1px solid var(--current);border-radius:8px;background:var(--bg-darker);color:color-mix(in srgb, var(--fg) 92%, var(--comment))}.article-measure .book-status strong{color:var(--orange)}.article-measure .book-cta{margin:2.5rem 0 1rem;padding:1.5rem 1.5rem 1.75rem;border-radius:10px;border:1px solid color-mix(in srgb, var(--purple) 35%, var(--current));background:linear-gradient(145deg, color-mix(in srgb, var(--bg-darker) 92%, var(--purple)) 0%, var(--bg-darker) 55%)}.article-measure .book-cta__title{margin-top:0;color:var(--green);font-size:1.35rem}.article-measure .book-cta__text{margin:.75rem 0 1.25rem;color:color-mix(in srgb, var(--fg) 90%, var(--comment))}.article-measure .book-cta__button{display:inline-block;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.9rem;font-weight:700;color:var(--bg) !important;background:var(--green);padding:.7rem 1.35rem;border-radius:8px;text-decoration:none !important;border:1px solid color-mix(in srgb, var(--green) 70%, var(--fg));box-shadow:0 2px 12px color-mix(in srgb, var(--green) 22%, rgba(0,0,0,0));transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}.article-measure .book-cta__button:hover{color:var(--bg) !important;filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 4px 18px color-mix(in srgb, var(--green) 35%, rgba(0,0,0,0))}.article-measure .book-cta__button:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.article-measure .book-cta__fine{margin:1rem 0 0;font-size:.88rem;color:var(--comment)}.post-toc{box-sizing:border-box;position:fixed;z-index:150;top:clamp(5.25rem,12vh,7rem);max-height:min(72vh,100vh - 6rem);margin:0;padding:.85rem 1rem .95rem .95rem;display:flex;flex-direction:column;font-family:"JetBrains Mono","Fira Code","SF Mono",monospace;font-size:.72rem;line-height:1.38;color:var(--comment);border:2px solid rgba(0,0,0,0);border-radius:10px;background:linear-gradient(165deg, color-mix(in srgb, var(--bg-darker) 92%, var(--purple) 8%) 0%, color-mix(in srgb, var(--bg-darker) 88%, var(--current) 12%) 100%) padding-box,linear-gradient(90deg, var(--purple), var(--pink), var(--cyan)) border-box;background-origin:border-box;background-clip:padding-box,border-box;box-shadow:0 8px 32px color-mix(in srgb, #000 38%, rgba(0,0,0,0));overflow:hidden;opacity:0;visibility:hidden;pointer-events:none;transform:translate3d(-12px, 0, 0);transition:opacity .45s cubic-bezier(.22, 1, .36, 1),visibility .45s cubic-bezier(.22, 1, .36, 1),transform .45s cubic-bezier(.22, 1, .36, 1)}.post-toc.post-toc--visible{opacity:1;visibility:visible;pointer-events:auto;transform:translate3d(0, 0, 0)}.post-toc__scroll{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--current) color-mix(in srgb, var(--bg-darker) 70%, rgba(0,0,0,0));padding-right:.2rem}.post-toc__scroll::-webkit-scrollbar{width:10px}.post-toc__scroll::-webkit-scrollbar-thumb{background:var(--current);border-radius:6px;border:2px solid rgba(0,0,0,0);background-clip:padding-box}.post-toc__scroll::-webkit-scrollbar-track{margin:6px 0;background:rgba(0,0,0,0)}.post-toc__title{padding:0 0 .5rem;margin:0 0 .4rem;font-size:.65rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--purple);border-bottom:1px solid color-mix(in srgb, var(--current) 65%, rgba(0,0,0,0))}.post-toc__list{list-style:none;margin:0;padding:.1rem 0 0}.post-toc__item{margin:0;padding:0}.post-toc__link{display:block;padding:.28rem .35rem .28rem calc(.15rem + var(--post-toc-depth, 0)*.65rem);margin:0;color:var(--comment);text-decoration:none;border-radius:4px;border-left:2px solid rgba(0,0,0,0);margin-left:-2px;transition:color .15s ease,background .15s ease,border-color .15s ease}.post-toc__link:hover{color:var(--cyan);background:color-mix(in srgb, var(--current) 40%, rgba(0,0,0,0))}.post-toc__link:focus{outline:none}.post-toc__link:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.post-toc__link.post-toc__link--active{color:var(--fg);border-left-color:var(--pink);background:color-mix(in srgb, var(--purple) 12%, rgba(0,0,0,0))}html.image-zoom-open .post-toc{opacity:0 !important;visibility:hidden !important;pointer-events:none !important}@media (max-width: 1180px){.post-toc{display:none !important}}@media (prefers-reduced-motion: reduce){.post-toc{transition-duration:.01ms}}@media (max-width: 600px){html{font-size:16px}.container>nav{gap:.65rem;--site-search-collapsed-width: calc(7.6rem + 2px)}.site-search-bar__shell{min-height:2.65rem}.container>nav .nav-primary{flex-direction:column;align-items:flex-start;gap:.75rem}.hero .hero-name{font-size:1.6rem}}