@font-face{font-family:Fredoka;font-style:normal;font-weight:300 700;font-stretch:100%;font-display:swap;src:url(../media/b6df7c92285ebcd2-s.193567cf.woff2)format("woff2");unicode-range:U+307-308,U+590-5FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Fredoka;font-style:normal;font-weight:300 700;font-stretch:100%;font-display:swap;src:url(../media/eeba9b1ad34c1404-s.7f2acc0f.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fredoka;font-style:normal;font-weight:300 700;font-stretch:100%;font-display:swap;src:url(../media/5d52bd6c4cb3f315-s.p.610fd2a3.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fredoka Fallback;src:local(Arial);ascent-override:95.64%;descent-override:23.17%;line-gap-override:0.0%;size-adjust:101.84%}.fredoka_5dae6085-module__-KAe2W__className{font-family:Fredoka,Fredoka Fallback;font-style:normal}.fredoka_5dae6085-module__-KAe2W__variable{--font-fredoka:"Fredoka","Fredoka Fallback"}
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.8e0177b5.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.b97b3418.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.853070df.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist","Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.c1fdd6c2.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.799d8ef8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.dbea232f.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
:root{--color-bg:#fafafa;--color-text:#222;--color-accent:#0070f3;--color-border:#eaeaea}html,body{font-family:var(--font-geist-sans),sans-serif;background-color:var(--color-bg);color:var(--color-text);margin:0;padding:0;line-height:1.6}header{border-bottom:1px solid var(--color-border);z-index:10;background-color:#fff;padding:1.2rem 2rem;position:sticky;top:0}audio,video{max-width:100%;margin:1em 0;display:block}.title-link{align-items:center;gap:.6rem;text-decoration:none;display:flex}.title{color:var(--color-accent);font-optical-sizing:auto;font-variation-settings:"wdth" 100;margin:0;font-family:Fredoka,sans-serif;font-size:2rem;font-style:normal;font-weight:500}a{color:var(--color-text);text-decoration:none}p a{border-bottom:1px solid var(--color-accent);color:var(--color-accent)}h1,h2,h3,h4{scroll-margin-top:9rem}.title a{color:var(--color-accent);text-decoration:none}nav{justify-content:space-between;align-items:center;margin-top:.6rem;display:flex}.nav-ul{gap:1.5rem;margin:0;padding:0;list-style:none;display:flex}.nav-li a{color:var(--color-text);border-bottom:2px solid #0000;font-weight:500;text-decoration:none;transition:color .2s,border-color .2s}.nav-li a:hover{color:var(--color-accent);border-color:var(--color-accent)}.rss-link{color:#f26522;text-decoration:none;transition:color .2s}.rss-link:hover{color:#ff8c42}main{border:1px solid var(--color-border);background:#fff;border-radius:8px;max-width:800px;margin:2rem auto;padding:1.5rem 1.5rem 32px;box-shadow:0 2px 8px #0000000a}.code-block-wrapper{position:relative}.code-block-wrapper .copy-btn{color:#fff;cursor:pointer;background:#00000080;border:none;border-radius:4px;padding:4px 8px;font-size:12px;position:absolute;top:8px;right:8px}.code-block-wrapper .copy-btn:hover{background:#000000b3}
.markdown-body{color:#222;font-size:16px;line-height:1.7}.markdown-body img{border-radius:6px;max-width:100%;box-shadow:0 2px 8px #0000000d}.markdown-body hr{color:#8991b2}pre{color:#fff;white-space:pre;background-color:#2d2d2d;border:1px solid #e5e7eb;border-radius:10px;margin:1em 0;padding:1rem 1.2rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Roboto Mono,Noto Mono,Courier New,monospace;font-size:14px;line-height:1.6;overflow-x:auto}code{color:#111827;background-color:#f3f4f6;border-radius:4px;padding:.15em .4em;font-family:inherit;font-size:.95em}pre code{color:inherit;font-size:inherit;background:0 0;padding:0}pre::-webkit-scrollbar{height:8px}pre::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:4px}pre::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}blockquote{color:#374151;background-color:#f9fafb;border-left:4px solid #d1d5db;border-radius:6px;margin:1.2em 0;padding:.8em 1.2em;font-size:1rem;line-height:1.6}blockquote blockquote{background-color:#f3f4f6;border-left-color:#9ca3af}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}@media (prefers-color-scheme:dark){blockquote{color:#e5e7eb;background-color:#1f2937;border-left-color:#4b5563}blockquote blockquote{background-color:#111827;border-left-color:#6b7280}}.cardlink{color:inherit;background-color:#fafafa;border:1px solid #ddd;border-radius:8px;text-decoration:none;transition:box-shadow .2s,transform .1s;display:block;overflow:hidden}.cardlink:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.cardlink-content{align-items:stretch;height:10rem;display:flex}.cardlink-image{object-fit:cover;flex-shrink:0;height:100%}.cardlink-text{flex-direction:column;flex:1;justify-content:space-between;padding:12px;display:flex}.cardlink-title{margin:0 0 .3em;font-size:1rem;font-weight:700}.cardlink-description{color:#555;margin:0 0 .5em;font-size:.9rem;line-height:1.4}.cardlink-meta{color:#777;align-items:center;gap:6px;font-size:.8rem;display:flex}.cardlink-favicon{border-radius:3px;width:16px;height:16px}.markdown-body table{border-collapse:collapse;border:1px solid #d0e3f0;border-radius:6px;width:100%;margin:1.5rem 0;font-size:.95rem;line-height:1.6;overflow:hidden}.markdown-body th,.markdown-body td{text-align:left;border-bottom:1px solid #e4f0fa;padding:.75rem 1rem}.markdown-body th{background-color:#f3f9ff;font-weight:600}.markdown-body tr:nth-child(2n) td{background-color:#fcfcfc}.markdown-body table caption{caption-side:bottom;color:#555;padding-top:.5rem;font-size:.85rem}.embed-youtube-container{width:100%;height:0;padding-bottom:56.25%;position:relative;overflow:hidden}.embed-youtube-container .embed-youtube-video{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.callout-content p{margin:.3em 0}.callout{background-color:#f8f8f8;border-left:4px solid #aaa;border-radius:6px;margin:1.2em 0;padding:.75em 1em}.callout-title{text-transform:capitalize;margin-bottom:.4em;font-weight:700}.callout-content p{margin:.3em 0;line-height:1.6}.callout-note,.callout-abstract,.callout-summary,.callout-tldr,.callout-info,.callout-help,.callout-question,.callout-faq{background-color:#eff6ff;border-color:#3b82f6}.callout-note .callout-title,.callout-abstract .callout-title,.callout-summary .callout-title,.callout-tldr .callout-title,.callout-info .callout-title,.callout-help .callout-title,.callout-question .callout-title,.callout-faq .callout-title{color:#1d4ed8}.callout-tip,.callout-hint,.callout-important,.callout-success,.callout-check,.callout-done,.callout-todo{background-color:#ecfdf5;border-color:#10b981}.callout-tip .callout-title,.callout-hint .callout-title,.callout-important .callout-title,.callout-success .callout-title,.callout-check .callout-title,.callout-done .callout-title,.callout-todo .callout-title{color:#065f46}.callout-warning,.callout-caution,.callout-attention{background-color:#fffbeb;border-color:#f59e0b}.callout-warning .callout-title,.callout-caution .callout-title,.callout-attention .callout-title{color:#92400e}.callout-failure,.callout-fail,.callout-missing,.callout-danger,.callout-error,.callout-bug{background-color:#fef2f2;border-color:#ef4444}.callout-failure .callout-title,.callout-fail .callout-title,.callout-missing .callout-title,.callout-danger .callout-title,.callout-error .callout-title,.callout-bug .callout-title{color:#7f1d1d}.callout-example,.callout-quote,.callout-cite{background-color:#f3f4f6;border-color:#9ca3af}.callout-example .callout-title,.callout-quote .callout-title,.callout-cite .callout-title{color:#374151;font-style:italic}.callout-note .callout-title:before{content:"📝 "}.callout-tip .callout-title:before{content:"💡 "}.callout-warning .callout-title:before{content:"⚠️ "}.callout-danger .callout-title:before{content:"❌ "}.callout-example .callout-title:before{content:"📘 "}
code[class*=language-],pre[class*=language-]{color:#ccc;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;-webkit-hyphens:none;hyphens:none;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;line-height:1.5}pre[class*=language-]{margin:.5em 0;padding:1em;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.3em;padding:.1em}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}
