:root{--paper:#ffffff;--paper-2:#f6f7f9;--ink:#0d1117;--ink-soft:#4a5361;--ink-faint:#79818f;--line:#e4e7ec;--line-strong:#cfd4dc;--accent:#1d4ed8;--accent-soft:#2563eb;--accent-wash:#eff4ff;--code-bg:#f6f7f9;--card:#ffffff;--shadow:0 1px 2px rgba(16,24,40,.04), 0 8px 24px -12px rgba(16,24,40,.12);--shadow-lift:0 2px 4px rgba(16,24,40,.05), 0 18px 40px -16px rgba(16,24,40,.20);--font-display:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--wrap:72rem;--wrap-narrow:42rem;--radius:12px;--radius-sm:8px;--step:clamp(1rem, 0.6rem + 1.4vw, 1.35rem)}:root[data-theme=dark]{--paper:#0b0d11;--paper-2:#14171d;--ink:#e8eaed;--ink-soft:#a8b1bd;--ink-faint:#737d8c;--line:#232830;--line-strong:#333a45;--accent:#7aa2f7;--accent-soft:#9db8fa;--accent-wash:#141b2e;--code-bg:#12151b;--card:#111419;--shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px -14px rgba(0,0,0,.7);--shadow-lift:0 2px 4px rgba(0,0,0,.45), 0 20px 44px -16px rgba(0,0,0,.8)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:clamp(1rem,.97rem + .15vw,1.06rem);line-height:1.65;font-optical-sizing:auto;font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;display:flex;flex-direction:column;min-height:100vh;transition:background .35s ease,color .35s ease}.site-main{flex:1 0 auto}.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:1.5rem}.wrap-narrow{width:100%;max-width:var(--wrap-narrow);margin-inline:auto;padding-inline:1.5rem}img{max-width:100%;height:auto;display:block}a{color:var(--accent);text-decoration:none;text-underline-offset:3px}a:hover{text-decoration:underline}::selection{background:color-mix(in srgb,var(--accent) 22%,transparent);color:inherit}h1,h2,h3,h4{font-family:var(--font-display);font-weight:650;line-height:1.2;color:var(--ink);letter-spacing:-.02em}.skip-link{position:absolute;left:-999px;top:0;background:var(--accent);color:#fff;padding:.6rem 1rem;z-index:100;border-radius:0 0 var(--radius-sm)0}.skip-link:focus{left:0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:saturate(140%)blur(10px);border-bottom:1px solid var(--line)}.header-inner{display:flex;align-items:center;gap:1.25rem;min-height:4.25rem}.brand{display:inline-flex;align-items:center;gap:.6rem;color:var(--ink);font-family:var(--font-display);font-size:1.02rem;font-weight:650;letter-spacing:-.02em}.brand:hover{text-decoration:none;color:var(--accent)}.brand-mark{display:inline-grid;place-items:center;width:1.75rem;height:1.75rem;flex:none;background:var(--accent);color:#fff;border-radius:7px;font-size:.78rem;font-weight:700;letter-spacing:.02em}:root[data-theme=dark] .brand-mark{color:#0b0d11}.site-nav{margin-left:auto}.site-nav ul{list-style:none;display:flex;gap:.3rem;margin:0;padding:0}.site-nav a{display:inline-block;color:var(--ink-soft);font-family:var(--font-display);font-size:.9rem;font-weight:500;padding:.45rem .75rem;border-radius:var(--radius-sm);transition:color .15s,background .15s}.site-nav a:hover{color:var(--ink);background:var(--paper-2);text-decoration:none}.site-nav a.is-active{color:var(--ink);font-weight:600;background:var(--paper-2)}.theme-toggle{display:inline-grid;place-items:center;width:2.2rem;height:2.2rem;padding:0;flex:none;border:1px solid var(--line);border-radius:var(--radius-sm);background:0 0;color:var(--ink-soft);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.theme-toggle:hover{color:var(--ink);border-color:var(--line-strong);background:var(--paper-2)}.theme-toggle .icon-moon{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-moon{display:block}.hero{padding:clamp(3.5rem,8vw,6rem)0 clamp(2.5rem,5vw,3.5rem)}.hero-kicker{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-display);font-size:.8rem;font-weight:550;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);background:var(--accent-wash);border:1px solid color-mix(in srgb,var(--accent) 18%,transparent);padding:.3rem .7rem;border-radius:999px;margin:0 0 1.4rem}.hero-title{font-size:clamp(2.1rem,1.4rem + 3.4vw,3.5rem);font-weight:700;line-height:1.1;margin:0;max-width:22ch;letter-spacing:-.035em}.hero-lead{color:var(--ink-soft);font-size:clamp(1.05rem,1rem + .3vw,1.2rem);max-width:46ch;margin:1.2rem 0 0;line-height:1.6}.hero-actions{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:2rem}.btn{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--font-display);font-size:.94rem;font-weight:550;padding:.6rem 1.15rem;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:background .15s,color .15s,border-color .15s,box-shadow .15s}.btn:hover{text-decoration:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-soft);color:#fff;box-shadow:var(--shadow)}:root[data-theme=dark] .btn-primary{color:#0b0d11}.btn-ghost{border-color:var(--line-strong);color:var(--ink);background:var(--paper)}.btn-ghost:hover{border-color:var(--ink-faint);background:var(--paper-2)}.btn-sm{padding:.45rem .9rem;font-size:.88rem}.rule-ornament{border:0;height:1px;background:var(--line);margin:1rem 0}.home-section{padding:clamp(2.5rem,5vw,4rem)0}.home-section--alt{background:var(--paper-2);border-block:1px solid var(--line)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}.section-title{font-size:clamp(1.4rem,1.2rem + .9vw,1.75rem);font-weight:650;margin:0;letter-spacing:-.025em}.section-link{font-family:var(--font-display);font-size:.9rem;font-weight:500;color:var(--ink-soft);white-space:nowrap}.section-link:hover{color:var(--accent);text-decoration:none}.feature{display:grid;grid-template-columns:1.05fr 1fr;gap:2.5rem;align-items:center;margin-bottom:3rem}.feature--noimg{grid-template-columns:1fr}.feature--noimg .feature-excerpt,.feature--noimg .feature-title{max-width:60ch}.feature-media{border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.feature-media img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .5s ease}.feature-media:hover img{transform:scale(1.03)}.feature-badge{display:inline-block;font-family:var(--font-display);font-size:.72rem;font-weight:550;text-transform:uppercase;letter-spacing:.09em;color:var(--accent);background:var(--accent-wash);padding:.25rem .6rem;border-radius:999px;margin-bottom:.9rem}.feature-title{font-size:clamp(1.5rem,1.2rem + 1.5vw,2.1rem);font-weight:650;margin:.4rem 0 .7rem;letter-spacing:-.03em}.feature-title a{color:var(--ink)}.feature-title a:hover{color:var(--accent);text-decoration:none}.feature-excerpt{color:var(--ink-soft);margin:0 0 1.1rem}.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;font-family:var(--font-display);font-size:.84rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}.post-meta .dot{color:var(--line-strong)}.card-more{font-family:var(--font-display);font-weight:550;font-size:.88rem;color:var(--accent)}.card-more span{transition:transform .2s;display:inline-block}.card-more:hover{text-decoration:none}.card-more:hover span{transform:translateX(4px)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(15.5rem,100%),1fr));gap:1.75rem}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--line-strong)}.card-media{display:block;overflow:hidden}.card-media img{width:100%;aspect-ratio:16/10;object-fit:cover;transition:transform .5s}.card:hover .card-media img{transform:scale(1.04)}.card-body{padding:1.25rem 1.3rem 1.4rem;display:flex;flex-direction:column;gap:.5rem;flex:1}.card-title{font-size:1.1rem;font-weight:600;margin:.1rem 0;line-height:1.35;letter-spacing:-.02em}.card-title a{color:var(--ink)}.card-title a:hover{color:var(--accent);text-decoration:none}.card-excerpt{color:var(--ink-soft);font-size:.92rem;margin:0;flex:1;line-height:1.6}.card-more{margin-top:.3rem}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(16rem,100%),1fr));gap:1.5rem}.project-grid--wide{grid-template-columns:repeat(auto-fill,minmax(min(20rem,100%),1fr))}.project-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem 1.7rem;display:flex;flex-direction:column;gap:.85rem;position:relative;transition:transform .25s,box-shadow .25s,border-color .25s}.project-card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent);border-radius:var(--radius)0 0 var(--radius);opacity:0;transition:opacity .2s}.project-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--line-strong)}.project-card:hover::before{opacity:1}.project-card--lg{padding:2rem 2rem 1.8rem}.project-top{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.project-title{font-size:1.15rem;font-weight:650;margin:0;letter-spacing:-.02em}.project-title a{color:var(--ink)}.project-title a:hover{color:var(--accent);text-decoration:none}.project-year{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-faint);white-space:nowrap;font-variant-numeric:tabular-nums}.project-desc{color:var(--ink-soft);font-size:.92rem;margin:0;line-height:1.6}.project-tags{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0}.project-tags li{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--line);padding:.18rem .5rem;border-radius:5px}.project-tags--header{margin-top:1.2rem;justify-content:center}.project-links{display:flex;gap:1rem;margin-top:.3rem;font-family:var(--font-display);font-size:.88rem;font-weight:500}.project-links--header{justify-content:center;margin-top:1.4rem}.project-open{color:var(--accent);font-weight:550}.page-head{padding:clamp(3rem,6vw,4.5rem)0 2.5rem}.page-title{font-size:clamp(2rem,1.5rem + 2.2vw,2.9rem);font-weight:700;margin:0;letter-spacing:-.035em}.page-lead{color:var(--ink-soft);font-size:1.08rem;max-width:48ch;margin:.9rem 0 0;line-height:1.6}.page-lead p{margin:.5rem 0}.list-stream{max-width:48rem;margin:0 auto;padding-bottom:3rem}.list-item{display:grid;grid-template-columns:7rem 1fr;gap:1.75rem;padding:1.75rem 0;border-top:1px solid var(--line)}.list-item:first-child{border-top:0}.list-item-meta{font-family:var(--font-display);font-size:.84rem;color:var(--ink-faint);padding-top:.3rem;font-variant-numeric:tabular-nums}.list-item-title{font-size:1.25rem;font-weight:650;margin:0 0 .4rem;line-height:1.35;letter-spacing:-.025em}.list-item-title a{color:var(--ink)}.list-item-title a:hover{color:var(--accent);text-decoration:none}.list-item-excerpt{color:var(--ink-soft);margin:0 0 .75rem;font-size:.95rem;line-height:1.65}.list-item-foot{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem;font-family:var(--font-display);font-size:.82rem;color:var(--ink-faint)}.tag-row{display:inline-flex;flex-wrap:wrap;gap:.4rem}.tag{font-family:var(--font-mono);font-size:.74rem;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--line);padding:.15rem .45rem;border-radius:5px}.tag:hover{text-decoration:none;color:var(--accent);border-color:var(--accent);background:var(--accent-wash)}.empty-note{text-align:center;color:var(--ink-faint);padding:3rem 0}.pagination{display:flex;align-items:center;justify-content:center;gap:1.5rem;padding:2rem 0 3rem;font-family:var(--font-display);font-size:.9rem}.pagination a{color:var(--ink);font-weight:500}.pagination a:hover{color:var(--accent);text-decoration:none}.page-count{color:var(--ink-faint);font-size:.85rem;font-variant-numeric:tabular-nums}.post{padding-bottom:4rem}.post-header{padding:clamp(2.5rem,5vw,3.5rem)1.5rem 2rem}.post-eyebrow{display:inline-block;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.09em;font-size:.72rem;font-weight:600;color:var(--accent);background:var(--accent-wash);padding:.25rem .6rem;border-radius:999px}.post-eyebrow:hover{text-decoration:none}.post-title{font-size:clamp(1.9rem,1.4rem + 2.6vw,3rem);font-weight:700;margin:.9rem 0 .7rem;letter-spacing:-.035em;line-height:1.12}.post-subtitle{font-size:1.12rem;color:var(--ink-soft);margin:0;max-width:52ch;line-height:1.6}.post-byline{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-family:var(--font-display);font-size:.85rem;color:var(--ink-faint);margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}.post-byline .dot{color:var(--line-strong)}.byline-author{color:var(--ink-soft);font-weight:500}.post-hero{margin:1.5rem auto 2.5rem;max-width:60rem;padding-inline:1.5rem}.post-hero img{width:100%;border-radius:var(--radius);border:1px solid var(--line)}.post-content{font-size:1.05rem;line-height:1.75}.post-content>*{margin:0}.post-content>*+*{margin-top:1.3em}.post-content li>p{margin:0}.post-content h2{font-size:1.5rem;font-weight:650;margin-top:2.2em;margin-bottom:.1em;letter-spacing:-.025em;scroll-margin-top:5.5rem}.post-content h3{font-size:1.2rem;font-weight:600;margin-top:1.8em;letter-spacing:-.02em;scroll-margin-top:5.5rem}.post-content h4{font-size:1.02rem;font-weight:600}.post-content a{color:var(--accent);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 35%,transparent);text-underline-offset:2px}.post-content a:hover{text-decoration-color:var(--accent)}.post-content ul,.post-content ol{padding-left:1.3em}.post-content li{margin-top:.35em}.post-content li::marker{color:var(--ink-faint)}.post-content blockquote{margin:1.6em 0;padding:1rem 1.25rem;border-left:3px solid var(--accent);border-radius:0 var(--radius-sm)var(--radius-sm)0;background:var(--paper-2);color:var(--ink-soft);font-size:1rem}.post-content blockquote p{margin:0}.post-content blockquote>*+*{margin-top:.7em}.post-content img{border-radius:var(--radius-sm);border:1px solid var(--line);margin-inline:auto}.post-content figure{margin:0}.post-content figure figcaption{text-align:center;font-family:var(--font-display);font-size:.84rem;color:var(--ink-faint);margin-top:.7rem}.post-content hr{border:0;border-top:1px solid var(--line);margin:2.5em 0}.post-content :not(pre)>code{font-family:var(--font-mono);font-size:.86em;background:var(--paper-2);color:var(--ink);border:1px solid var(--line);padding:.1em .35em;border-radius:5px;overflow-wrap:break-word}.code-block{margin:1.6em 0;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--code-bg);overflow:hidden}.code-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.45rem .5rem .45rem .9rem;border-bottom:1px solid var(--line);background:var(--paper-2)}.code-lang{font-family:var(--font-mono);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}.code-copy{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-display);font-size:.74rem;font-weight:500;color:var(--ink-soft);background:0 0;border:1px solid var(--line);border-radius:5px;padding:.25rem .5rem;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.code-copy:hover{color:var(--ink);border-color:var(--line-strong);background:var(--paper)}.code-copy.is-done{color:#0d9488;border-color:#0d9488}:root[data-theme=dark] .code-copy.is-done{color:#4ade80;border-color:#4ade80}.code-block .highlight{margin:0}.code-block pre{margin:0;background:0 0 !important;padding:1rem 1.1rem;overflow-x:auto;font-size:.86rem;line-height:1.65}.code-block pre code{background:0 0;border:0;padding:0;font-size:inherit}.code-block .lnt{color:var(--ink-faint);user-select:none}.post-content table{width:100%;border-collapse:collapse;font-size:.92rem;display:block;overflow-x:auto}.post-content th,.post-content td{padding:.55rem .85rem;border:1px solid var(--line);text-align:left}.post-content th{background:var(--paper-2);font-weight:600;white-space:nowrap}.video-figure{margin:0}.video-embed{margin:1.6em 0;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--line);background:#000}.video-embed iframe{display:block;width:100%;aspect-ratio:16/9;height:auto;border:0}.video-caption{text-align:center;font-family:var(--font-display);font-size:.84rem;color:var(--ink-faint);margin-top:.7rem}.post-layout.has-toc{display:grid;grid-template-columns:minmax(0,1fr);gap:2rem}@media(min-width:64rem){.post-layout.has-toc{grid-template-columns:15rem minmax(0,var(--wrap-narrow));justify-content:center;align-items:start}.post-toc{position:sticky;top:6rem}.post--toc .post-header,.post--toc .post-footer{max-width:calc(15rem + 2rem + var(--wrap-narrow));padding-left:calc(15rem + 2rem + 1.5rem);padding-right:1.5rem}}.post-toc{font-size:.84rem;border-left:1px solid var(--line);padding-left:1rem;line-height:1.5}.toc-title{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.09em;font-size:.7rem;font-weight:600;color:var(--ink-faint);margin:0 0 .6rem}.post-toc ul{list-style:none;margin:0;padding-left:0}.post-toc ul ul{padding-left:.9rem}.post-toc li{margin:.35rem 0}.post-toc a{color:var(--ink-soft)}.post-toc a:hover{color:var(--accent);text-decoration:none}.post-tags{margin-top:2.5rem;display:flex;flex-wrap:wrap;gap:.5rem}.post-footer{margin-top:3rem}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding:1.75rem 0;border-block:1px solid var(--line)}.post-nav-link{display:flex;flex-direction:column;gap:.25rem;color:var(--ink)}.post-nav-link.next{text-align:right}.post-nav-link:hover{text-decoration:none}.post-nav-link:hover .pn-title{color:var(--accent)}.pn-label{font-family:var(--font-display);font-size:.78rem;color:var(--ink-faint)}.pn-title{font-family:var(--font-display);font-size:.95rem;font-weight:550;transition:color .15s}.back-link{display:inline-block;margin-top:1.75rem;font-family:var(--font-display);font-size:.9rem;font-weight:500}.about{padding-bottom:4rem}.about-head{text-align:center;padding:clamp(3rem,6vw,5rem)1.5rem 1.5rem}.about-eyebrow{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.09em;font-size:.72rem;font-weight:600;color:var(--accent);margin:0 0 .8rem}.about-title{font-size:clamp(2rem,1.5rem + 2.2vw,2.9rem);font-weight:700;margin:0;letter-spacing:-.035em}.about-lead{font-size:1.12rem;color:var(--ink-soft);max-width:52ch;margin:1.1rem auto 0;line-height:1.6}.about-portrait{max-width:9rem;margin:2rem auto;padding:0}.about-portrait img{border-radius:50%;border:1px solid var(--line);aspect-ratio:1;object-fit:cover}.about-contact{margin-top:3rem;text-align:center;padding-top:2rem;border-top:1px solid var(--line)}.about-contact-title{font-family:var(--font-display);font-size:.85rem;color:var(--ink-faint);margin:0 0 .9rem}.about-contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:1.25rem;font-family:var(--font-display);font-size:.9rem;font-weight:500}.site-footer{background:var(--paper-2);border-top:1px solid var(--line);margin-top:2rem}.footer-inner{display:grid;grid-template-columns:1fr auto auto;gap:2rem;align-items:center;padding-block:2.5rem}.footer-brand{display:flex;align-items:center;gap:.8rem}.footer-tagline{font-family:var(--font-display);font-size:.9rem;color:var(--ink-soft);margin:0;max-width:24rem;line-height:1.55}.footer-nav,.footer-social{display:flex;gap:1.2rem;font-family:var(--font-display);font-size:.88rem;font-weight:500}.footer-nav a,.footer-social a{color:var(--ink-soft)}.footer-nav a:hover,.footer-social a:hover{color:var(--accent);text-decoration:none}.footer-legal{padding-bottom:2rem}.footer-legal p{font-size:.8rem;color:var(--ink-faint);margin:0}@media(max-width:52rem){.feature{grid-template-columns:1fr;gap:1.5rem}.feature-media{order:-1}.list-item{grid-template-columns:1fr;gap:.5rem}.list-item-meta{padding-top:0}.footer-inner{grid-template-columns:1fr;gap:1.5rem;text-align:left}.post-nav{grid-template-columns:1fr}.post-nav-link.next{text-align:left}}@media(max-width:34rem){.site-nav a{padding:.45rem;font-size:.85rem}.brand-text{display:none}.code-head{padding-left:.7rem}.header-inner{gap:.5rem}.wrap{padding-inline:1rem}.site-nav{min-width:0;overflow-x:auto;scrollbar-width:none}.site-nav::-webkit-scrollbar{display:none}.site-nav ul{flex-wrap:nowrap}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms !important;transition-duration:.01ms !important;scroll-behavior:auto !important}}.chroma{background:0 0}:root[data-theme=light] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}:root[data-theme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}:root[data-theme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}:root[data-theme=light] .chroma .hl{background-color:#e5e5e5}:root[data-theme=light] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}:root[data-theme=light] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}:root[data-theme=light] .chroma .line{display:flex}:root[data-theme=light] .chroma .k{color:#cf222e}:root[data-theme=light] .chroma .kc{color:#cf222e}:root[data-theme=light] .chroma .kd{color:#cf222e}:root[data-theme=light] .chroma .kn{color:#cf222e}:root[data-theme=light] .chroma .kp{color:#cf222e}:root[data-theme=light] .chroma .kr{color:#cf222e}:root[data-theme=light] .chroma .kt{color:#cf222e}:root[data-theme=light] .chroma .na{color:#1f2328}:root[data-theme=light] .chroma .nc{color:#1f2328}:root[data-theme=light] .chroma .no{color:#0550ae}:root[data-theme=light] .chroma .nd{color:#0550ae}:root[data-theme=light] .chroma .ni{color:#6639ba}:root[data-theme=light] .chroma .nl{color:#900;font-weight:700}:root[data-theme=light] .chroma .nn{color:#24292e}:root[data-theme=light] .chroma .nx{color:#1f2328}:root[data-theme=light] .chroma .nt{color:#0550ae}:root[data-theme=light] .chroma .nb{color:#6639ba}:root[data-theme=light] .chroma .bp{color:#6a737d}:root[data-theme=light] .chroma .nv{color:#953800}:root[data-theme=light] .chroma .vc{color:#953800}:root[data-theme=light] .chroma .vg{color:#953800}:root[data-theme=light] .chroma .vi{color:#953800}:root[data-theme=light] .chroma .vm{color:#953800}:root[data-theme=light] .chroma .nf{color:#6639ba}:root[data-theme=light] .chroma .fm{color:#6639ba}:root[data-theme=light] .chroma .s{color:#0a3069}:root[data-theme=light] .chroma .sa{color:#0a3069}:root[data-theme=light] .chroma .sb{color:#0a3069}:root[data-theme=light] .chroma .sc{color:#0a3069}:root[data-theme=light] .chroma .dl{color:#0a3069}:root[data-theme=light] .chroma .sd{color:#0a3069}:root[data-theme=light] .chroma .s2{color:#0a3069}:root[data-theme=light] .chroma .se{color:#0a3069}:root[data-theme=light] .chroma .sh{color:#0a3069}:root[data-theme=light] .chroma .si{color:#0a3069}:root[data-theme=light] .chroma .sx{color:#0a3069}:root[data-theme=light] .chroma .sr{color:#0a3069}:root[data-theme=light] .chroma .s1{color:#0a3069}:root[data-theme=light] .chroma .ss{color:#032f62}:root[data-theme=light] .chroma .m{color:#0550ae}:root[data-theme=light] .chroma .mb{color:#0550ae}:root[data-theme=light] .chroma .mf{color:#0550ae}:root[data-theme=light] .chroma .mh{color:#0550ae}:root[data-theme=light] .chroma .mi{color:#0550ae}:root[data-theme=light] .chroma .il{color:#0550ae}:root[data-theme=light] .chroma .mo{color:#0550ae}:root[data-theme=light] .chroma .o{color:#0550ae}:root[data-theme=light] .chroma .ow{color:#0550ae}:root[data-theme=light] .chroma .p{color:#1f2328}:root[data-theme=light] .chroma .c{color:#57606a}:root[data-theme=light] .chroma .ch{color:#57606a}:root[data-theme=light] .chroma .cm{color:#57606a}:root[data-theme=light] .chroma .c1{color:#57606a}:root[data-theme=light] .chroma .cs{color:#57606a}:root[data-theme=light] .chroma .cp{color:#57606a}:root[data-theme=light] .chroma .cpf{color:#57606a}:root[data-theme=light] .chroma .gd{color:#82071e;background-color:#ffebe9}:root[data-theme=light] .chroma .ge{color:#1f2328}:root[data-theme=light] .chroma .gi{color:#116329;background-color:#dafbe1}:root[data-theme=light] .chroma .go{color:#1f2328}:root[data-theme=light] .chroma .gl{text-decoration:underline}:root[data-theme=light] .chroma .w{color:#fff}:root[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}:root[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}:root[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}:root[data-theme=dark] .chroma .hl{background-color:#6e7681}:root[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}:root[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}:root[data-theme=dark] .chroma .line{display:flex}:root[data-theme=dark] .chroma .k{color:#ff7b72}:root[data-theme=dark] .chroma .kc{color:#79c0ff}:root[data-theme=dark] .chroma .kd{color:#ff7b72}:root[data-theme=dark] .chroma .kn{color:#ff7b72}:root[data-theme=dark] .chroma .kp{color:#79c0ff}:root[data-theme=dark] .chroma .kr{color:#ff7b72}:root[data-theme=dark] .chroma .kt{color:#ff7b72}:root[data-theme=dark] .chroma .nc{color:#f0883e;font-weight:700}:root[data-theme=dark] .chroma .no{color:#79c0ff;font-weight:700}:root[data-theme=dark] .chroma .nd{color:#d2a8ff;font-weight:700}:root[data-theme=dark] .chroma .ni{color:#ffa657}:root[data-theme=dark] .chroma .ne{color:#f0883e;font-weight:700}:root[data-theme=dark] .chroma .nl{color:#79c0ff;font-weight:700}:root[data-theme=dark] .chroma .nn{color:#ff7b72}:root[data-theme=dark] .chroma .py{color:#79c0ff}:root[data-theme=dark] .chroma .nt{color:#7ee787}:root[data-theme=dark] .chroma .nv{color:#79c0ff}:root[data-theme=dark] .chroma .vc{color:#79c0ff}:root[data-theme=dark] .chroma .vg{color:#79c0ff}:root[data-theme=dark] .chroma .vi{color:#79c0ff}:root[data-theme=dark] .chroma .vm{color:#79c0ff}:root[data-theme=dark] .chroma .nf{color:#d2a8ff;font-weight:700}:root[data-theme=dark] .chroma .fm{color:#d2a8ff;font-weight:700}:root[data-theme=dark] .chroma .l{color:#a5d6ff}:root[data-theme=dark] .chroma .ld{color:#79c0ff}:root[data-theme=dark] .chroma .s{color:#a5d6ff}:root[data-theme=dark] .chroma .sa{color:#79c0ff}:root[data-theme=dark] .chroma .sb{color:#a5d6ff}:root[data-theme=dark] .chroma .sc{color:#a5d6ff}:root[data-theme=dark] .chroma .dl{color:#79c0ff}:root[data-theme=dark] .chroma .sd{color:#a5d6ff}:root[data-theme=dark] .chroma .s2{color:#a5d6ff}:root[data-theme=dark] .chroma .se{color:#79c0ff}:root[data-theme=dark] .chroma .sh{color:#79c0ff}:root[data-theme=dark] .chroma .si{color:#a5d6ff}:root[data-theme=dark] .chroma .sx{color:#a5d6ff}:root[data-theme=dark] .chroma .sr{color:#79c0ff}:root[data-theme=dark] .chroma .s1{color:#a5d6ff}:root[data-theme=dark] .chroma .ss{color:#a5d6ff}:root[data-theme=dark] .chroma .m{color:#a5d6ff}:root[data-theme=dark] .chroma .mb{color:#a5d6ff}:root[data-theme=dark] .chroma .mf{color:#a5d6ff}:root[data-theme=dark] .chroma .mh{color:#a5d6ff}:root[data-theme=dark] .chroma .mi{color:#a5d6ff}:root[data-theme=dark] .chroma .il{color:#a5d6ff}:root[data-theme=dark] .chroma .mo{color:#a5d6ff}:root[data-theme=dark] .chroma .o{color:#ff7b72;font-weight:700}:root[data-theme=dark] .chroma .ow{color:#ff7b72;font-weight:700}:root[data-theme=dark] .chroma .c{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .ch{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .cm{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .c1{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}:root[data-theme=dark] .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}:root[data-theme=dark] .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}:root[data-theme=dark] .chroma .gd{color:#ffa198;background-color:#490202}:root[data-theme=dark] .chroma .ge{font-style:italic}:root[data-theme=dark] .chroma .gr{color:#ffa198}:root[data-theme=dark] .chroma .gh{color:#79c0ff;font-weight:700}:root[data-theme=dark] .chroma .gi{color:#56d364;background-color:#0f5323}:root[data-theme=dark] .chroma .go{color:#8b949e}:root[data-theme=dark] .chroma .gp{color:#8b949e}:root[data-theme=dark] .chroma .gs{font-weight:700}:root[data-theme=dark] .chroma .gu{color:#79c0ff}:root[data-theme=dark] .chroma .gt{color:#ff7b72}:root[data-theme=dark] .chroma .gl{text-decoration:underline}:root[data-theme=dark] .chroma .w{color:#6e7681}