﻿/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace,monospace;font-size:1em;}a{background-color:rgba(0,0,0,0)}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0;}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px;}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}*,*::before,*::after{box-sizing:border-box}@font-face{font-family:"Geist";src:url("/fonts/Geist-Variable.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:"Geist Mono";src:url("/fonts/GeistMono-Variable.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:"Cascadia Mono Diagram";src:url("/fonts/CascadiaMono-Regular-Diagram.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--color-mode: light;--ctp-rosewater: #dc8a78;--ctp-flamingo: #dd7878;--ctp-pink: #ea76cb;--ctp-mauve: #8839ef;--ctp-red: #d20f39;--ctp-maroon: #e64553;--ctp-peach: #fe640b;--ctp-yellow: #df8e1d;--ctp-green: #40a02b;--ctp-teal: #179299;--ctp-sky: #04a5e5;--ctp-sapphire: #209fb5;--ctp-blue: #1e66f5;--ctp-lavender: #7287fd;--ctp-text: #4c4f69;--ctp-subtext1: #5c5f77;--ctp-subtext0: #6c6f85;--ctp-overlay2: #7c7f93;--ctp-overlay1: #8c8fa1;--ctp-overlay0: #9ca0b0;--ctp-surface2: #acb0be;--ctp-surface1: #bcc0cc;--ctp-surface0: #ccd0da;--ctp-base: #eff1f5;--ctp-mantle: #e6e9ef;--ctp-crust: #dce0e8;--h1-color: var(--ctp-text);--font-color: var(--ctp-text);--heading-color: var(--ctp-text);--background: var(--ctp-base);--dark-font-color: var(--ctp-text);--medium-font-color: var(--ctp-subtext1);--light-font-color: var(--ctp-subtext0);--light-background: var(--ctp-mantle);--light-background-hover: var(--ctp-surface0);--border: var(--ctp-surface0);--link-color: var(--ctp-blue);--link-color-darker: var(--ctp-sapphire);--link-hover-color: var(--ctp-sapphire);--navbar-color: var(--ctp-base);--blockquote: var(--ctp-mantle);--blockquote-left: var(--ctp-surface0);--transparent-text: var(--ctp-overlay2);--transparent-bg: var(--ctp-surface1);--light-transparent-bg: var(--ctp-surface0);--input-color: var(--ctp-text);--accent-primary: var(--ctp-mauve);--accent-secondary: var(--ctp-teal);--accent-tertiary: var(--ctp-peach);--accent-success: var(--ctp-green)}:root{--sys-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--base-font-family: "Geist", var(--sys-font-family);--code-font-family: "Geist Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--article-font-family: var(--base-font-family)}.flex{display:flex;align-items:center}.flex-row{display:flex;flex-direction:column}@media screen and (min-width: 800px){.flex-row{flex-direction:row}}.flex-col{flex:1}.flex-two-thirds{flex:2}.justify-center{justify-content:center}html{font-family:var(--base-font-family);color:var(--font-color);font-weight:400;font-size:1rem;line-height:1.75}body{background:var(--background);margin:0;padding:0}section{margin:2rem 0}section:first-of-type{margin-top:0}section>h2{display:flex;align-items:center;font-size:1.6rem;margin-top:0;margin-bottom:.5rem}@media screen and (min-width: 800px){section>h2{margin-bottom:2rem}}.index h2,section>h2{border-bottom-width:0}@media screen and (min-width: 800px){.index h2,section>h2{border-bottom-width:4px}}a.section-button{font-weight:500;background:var(--light-background);color:var(--dark-font-color);padding:.4rem .6rem;font-size:.8rem;border-radius:.3rem;border-width:0 !important;white-space:nowrap;line-height:1;margin-left:2rem;margin-top:.5rem}a.section-button:hover{background:var(--light-background-hover);color:var(--heading-color)}@media screen and (min-width: 800px){section{margin:3.5rem 0}section>h2{font-size:2rem;margin:0 0 1rem}}.container{max-width:830px;padding:0 1.5rem;margin-left:auto;margin-right:auto}.container.page p{max-width:600px}@media screen and (min-width: 800px){.container{padding:0 2rem}}img{display:inline-block;max-width:100%;height:auto}p,ol,ul,dl,table,blockquote{font-size:1.05rem;margin:0 0 1.5rem 0}blockquote p{margin:0}ul{padding:0 1rem}@media screen and (min-width: 800px){p,ol,ul,dl,table,blockquote{font-size:1.125rem}ul{padding:0 2rem}}ul li p{margin:0}ul li ul{padding-left:1rem;margin:0}ul li ul li{margin:0}ol li ol{margin-bottom:0}.task-list-item [type=checkbox]{margin-right:.5rem}blockquote{margin:2rem 0;padding:1rem;background:var(--blockquote);font-weight:400;border-left:5px solid var(--blockquote-left)}blockquote :not(pre)>code[class*=language-]{background:rgba(0,0,0,.1) !important}@media screen and (min-width: 800px){blockquote{padding:2rem 0 2rem 2rem}}::selection{background:var(--accent-primary);color:var(--background)}h1{color:var(--h1-color)}h3,h4{color:var(--medium-font-color)}h2,h5{color:var(--heading-color)}h1,h2,h3,h4,h5{margin:0 0 1.5rem 0;font-weight:700;line-height:1.2;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1:not(:first-child),h2:not(:first-child),h3:not(:first-child),h4:not(:first-child){margin-top:3rem}h1{font-size:2.5rem;line-height:1.1}h2{font-size:1.75rem;padding-bottom:.5rem;border-bottom:4px solid var(--light-background)}h2 code{font-size:1.75rem !important}h3{font-size:1.5rem;color:var(--font-color);font-weight:600;margin-bottom:1rem}h3 code{font-size:1.4rem !important}h4{font-size:1.3rem;color:var(--font-color);font-weight:500;margin-bottom:1rem;border-bottom:2px solid var(--light-background);padding-bottom:.25rem}h5{font-size:1.2rem;margin-bottom:1rem}@media screen and (min-width: 800px){h1{font-size:3rem}h2{font-size:1.9rem}h2 code{font-size:1.9rem !important}h3{font-size:1.7rem;color:var(--font-color);font-weight:600}h3 code{font-size:1.6rem !important}h4{font-weight:400;font-size:1.4rem}}a.link{display:block;padding:.25rem 0;margin:.25rem 0;border-radius:.35rem;font-weight:600;color:var(--dark-font-color)}a.link:hover{color:var(--link-color)}a.button{display:inline-block;border:2px solid var(--link-color);padding:.3rem .6rem;margin-right:.75rem;font-weight:500;background:var(--link-color);color:#fff;border-radius:.35rem;font-size:.9rem}a.button.large{padding:.8rem 1rem;font-size:1.05rem}a.button.secondary{border:2px solid var(--light-background);background:var(--light-background);color:var(--link-color)}a.button:hover,a.button.secondary:hover{border:2px solid var(--link-color-darker);background:var(--link-color-darker);color:#fff}@media screen and (min-width: 800px){a.button{font-size:.9rem}a.button.large{padding:1rem 1.5rem;font-size:1.1rem}}p.subtitle{color:var(--medium-font-color);font-size:1.3rem;font-weight:300;margin-bottom:0}@media screen and (min-width: 800px){p.subtitle{font-size:1.5rem}}a{color:inherit;text-decoration:none}a.image-link{border-width:0}a code[class*=language-]{color:var(--link-color) !important}a code[class*=language-]:hover{background:var(--link-color) !important;color:#fff !important}main{margin-top:96px}@media screen and (min-width: 800px){main{margin-top:0;}}.emoji{margin:0 .4rem 0 .1rem}.navbar{width:100%;position:fixed;top:0;left:0;background:var(--navbar-color);z-index:10;padding:.75rem .5rem;padding-top:calc(.75rem + env(safe-area-inset-top, 0px));will-change:transform}.navbar .flex{justify-content:space-between;align-items:center}.navbar .nav-links{display:none}.navbar a{border-radius:999px;margin:0;color:var(--font-color);font-weight:500;font-size:.9rem;border:1px solid rgba(0,0,0,0);padding:.5rem .65rem;background:rgba(0,0,0,0);transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.navbar a:first-of-type{margin-left:-.5rem}.navbar a .emoji{display:none}.navbar a.brand{font-weight:500;color:var(--font-color);white-space:nowrap;border:none;display:flex;align-items:center;gap:.5rem;line-height:1;background:rgba(0,0,0,0);padding:.25rem}.navbar a.brand .emoji{display:inline-block !important}.navbar a.brand .brand-logo{height:40px;width:40px;border-radius:50%;object-fit:contain;transform:scaleX(-1)}.navbar a.brand .brand-text{font-size:1.3rem;font-weight:500;letter-spacing:.06em}@media screen and (min-width: 800px){.emoji{margin:0 .5rem 0 .1rem}.navbar{position:sticky;top:0;padding:1.5rem 0;background:rgba(0,0,0,0);box-shadow:none}.navbar.navbar--scrolled{background:var(--navbar-color);box-shadow:0 2px 12px rgba(0,0,0,.06);padding:.75rem 0}.navbar .flex{justify-content:space-between}.navbar .nav-links{display:flex;align-items:center;gap:.35rem}.navbar .nav-links .search-toggle,.navbar .nav-links .theme-toggle{margin-left:.25rem}.navbar a{padding:.6rem 1.3rem;margin:0 .15rem;font-size:1.05rem;font-weight:500;color:var(--font-color);border-radius:999px;border:1px solid rgba(0,0,0,0);transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.navbar a:first-of-type{margin-left:-1.3rem}.navbar a:hover{background:var(--light-background);color:var(--dark-font-color);transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.06)}.navbar a:active{transform:translateY(0) scale(.97);box-shadow:none}.navbar a[aria-current=page]{background:var(--accent-primary);border-color:var(--accent-primary);color:var(--background);font-weight:600}.navbar a.brand{font-size:1.5rem;margin-right:3rem;border:none;background:rgba(0,0,0,0) !important;color:var(--dark-font-color);border-radius:999px}.navbar a.brand:hover{background:var(--light-background) !important;transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.06)}.navbar a.brand:active{transform:translateY(0) scale(.97);box-shadow:none}.navbar a.brand .brand-logo{height:44px;width:44px;border-radius:50%;transform:scaleX(-1)}.navbar a.brand .brand-text{font-size:1.6rem;font-weight:500;letter-spacing:.06em}#dark-mode-button:hover{background:var(--light-background)}}@media print{.navbar{display:none}}.mobile-menu-button{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:none;border-radius:50%;background:var(--light-background);cursor:pointer;transition:all .25s cubic-bezier(.34, 1.56, .64, 1);color:var(--font-color)}.mobile-menu-button:hover{background:var(--light-background-hover);transform:scale(1.05)}.mobile-menu-button:active{transform:scale(.92)}.mobile-menu-button .menu-icon{display:block}.mobile-menu-button .close-icon{display:none}.mobile-menu-button[aria-expanded=true] .menu-icon{display:none}.mobile-menu-button[aria-expanded=true] .close-icon{display:block}@media screen and (min-width: 800px){.mobile-menu-button{display:none}}.mobile-menu-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--background);z-index:9;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:all .3s cubic-bezier(.4, 0, .2, 1)}.mobile-menu-overlay.active{opacity:1;visibility:visible}.mobile-menu-content{display:flex;flex-direction:column;align-items:center;gap:.5rem;transform:translateY(20px);opacity:0;transition:all .3s cubic-bezier(.4, 0, .2, 1);transition-delay:.1s}.mobile-menu-overlay.active .mobile-menu-content{transform:translateY(0);opacity:1}.mobile-menu-content a{font-size:1.5rem;font-weight:500;color:var(--font-color);padding:1rem 2.5rem;border-radius:999px;text-decoration:none;transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.mobile-menu-content a:hover{background:var(--light-background);color:var(--accent-primary);transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.06)}.mobile-menu-content a:active{transform:translateY(0) scale(.97)}.mobile-menu-content a[aria-current=page]{background:var(--accent-primary);color:var(--background);font-weight:600}.mobile-theme-toggle{display:flex;align-items:center;gap:1rem;margin-top:2rem;padding:1rem 1.5rem;border:2px solid var(--border);border-radius:999px;background:var(--light-background);cursor:pointer;transition:all .25s cubic-bezier(.34, 1.56, .64, 1);color:var(--font-color)}.mobile-theme-toggle:hover{border-color:var(--accent-primary);background:var(--light-background-hover);transform:translateY(-1px)}.mobile-theme-toggle .theme-toggle-inner{position:relative;width:24px;height:24px}.mobile-theme-toggle svg{position:absolute;top:0;left:0;width:24px;height:24px;transition:all .4s cubic-bezier(.68, -.55, .27, 1.55)}.mobile-theme-toggle .sun-icon{opacity:1;transform:rotate(0deg) scale(1);color:#fbbf24}.mobile-theme-toggle .moon-icon{opacity:0;transform:rotate(180deg) scale(0);color:#818cf8}.mobile-theme-toggle .theme-label{font-size:1rem;font-weight:500}[data-user-color-scheme=dark] .mobile-theme-toggle .sun-icon{opacity:0;transform:rotate(-180deg) scale(0)}[data-user-color-scheme=dark] .mobile-theme-toggle .moon-icon{opacity:1;transform:rotate(0deg) scale(1)}@media screen and (min-width: 800px){.mobile-menu-overlay{display:none}}.theme-toggle{position:relative;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:none;border-radius:50%;background:rgba(0,0,0,0);cursor:pointer;overflow:hidden;transition:all .3s cubic-bezier(.34, 1.56, .64, 1)}.theme-toggle:hover{background:var(--light-background);transform:scale(1.05)}.theme-toggle:active{transform:scale(.95)}.theme-toggle:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(136,57,239,.3)}.theme-toggle__icons{position:relative;width:20px;height:20px}.theme-toggle__sun,.theme-toggle__moon,.theme-toggle__auto{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transition:all .5s cubic-bezier(.34, 1.56, .64, 1);opacity:0;transform:rotate(-90deg) scale(.5)}.theme-toggle__sun svg,.theme-toggle__moon svg,.theme-toggle__auto svg{width:20px;height:20px;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}.theme-toggle__sun{color:#fbbf24}.theme-toggle__moon{color:#818cf8}.theme-toggle__auto{color:var(--accent-primary)}.theme-toggle__auto{opacity:1;transform:rotate(0deg) scale(1)}[data-theme-setting=light] .theme-toggle .theme-toggle__auto{opacity:0;transform:rotate(-90deg) scale(.5)}[data-theme-setting=light] .theme-toggle .theme-toggle__sun{opacity:1;transform:rotate(0deg) scale(1)}[data-theme-setting=dark] .theme-toggle .theme-toggle__auto{opacity:0;transform:rotate(-90deg) scale(.5)}[data-theme-setting=dark] .theme-toggle .theme-toggle__moon{opacity:1;transform:rotate(0deg) scale(1)}[data-theme-setting=auto] .theme-toggle .theme-toggle__auto{opacity:1;transform:rotate(0deg) scale(1)}@keyframes bounce{0%, 100%{transform:scale(1)}25%{transform:scale(1.15)}50%{transform:scale(.9)}75%{transform:scale(1.05)}}.theme-toggle.animating{animation:bounce .5s cubic-bezier(.34, 1.56, .64, 1)}@media screen and (min-width: 800px){.theme-toggle:not(.mobile-theme-toggle){width:48px;height:48px;border:2px solid var(--border);border-radius:50%;background:var(--light-background)}.theme-toggle:not(.mobile-theme-toggle):hover{border-color:var(--accent-primary);box-shadow:0 0 0 4px rgba(136,57,239,.1)}}.mobile-theme-toggle{display:flex;align-items:center;gap:1rem;margin-top:.5rem;padding:1rem 1.5rem;width:auto;height:auto;border:2px solid var(--border);border-radius:999px;background:var(--light-background)}.mobile-theme-toggle:hover{border-color:var(--accent-primary);background:var(--light-background-hover);transform:translateY(-1px)}.mobile-theme-toggle .theme-toggle__icons{width:24px;height:24px}.mobile-theme-toggle .theme-toggle__sun svg,.mobile-theme-toggle .theme-toggle__moon svg,.mobile-theme-toggle .theme-toggle__auto svg{width:24px;height:24px}.mobile-theme-toggle .theme-label{font-size:1rem;font-weight:500;color:var(--font-color)}@media screen and (min-width: 800px){.mobile-menu-overlay{display:none}}@media (prefers-reduced-motion: reduce){.navbar,.navbar a,.mobile-menu-button,.theme-toggle,.mobile-theme-toggle,.mobile-menu-content a{transition:none}.navbar a:hover,.mobile-menu-button:hover,.mobile-menu-content a:hover{transform:none;box-shadow:none}}.my{padding-top:2rem}.my a{border:none;margin-right:1rem}.my a:hover{border:none}.post-row{display:flex;align-items:center;width:100%}.post-row time{display:block;flex:0 0 100px;font-size:.85rem;color:var(--font-color);opacity:.7;font-variant-numeric:tabular-nums}.post-row h3{flex:1}.post-row .post-row__content h3{flex:none}.posts .post:last-of-type a{border-bottom-width:0}.post a{display:flex;align-items:center;justify-content:stretch;padding:1rem 0;border-bottom:1px solid rgba(0,0,0,.04);transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.post a:hover{transform:translateX(4px)}.post a:active{transform:translateX(2px) scale(.99)}.post h3{margin-top:0;margin-bottom:0;font-size:1.05rem;font-weight:500;color:var(--heading-color)}@media screen and (min-width: 800px){.posts{margin-left:-1rem;margin-right:-1rem}.post a{padding:1.25rem 1rem;border-bottom-color:rgba(0,0,0,.04);border-radius:16px}.post a:hover{background:var(--light-background);border-bottom-color:rgba(0,0,0,0)}.post h3{font-size:1.2rem}.post-row time{flex:0 0 110px;font-size:.9rem}}.new-post,.popular-post{display:inline-block;color:#111;padding:.3rem .4rem;border-radius:.3rem;font-size:.85rem;margin-left:1rem}.new-post{background:var(--accent-success);color:var(--background)}.popular-post{background:var(--accent-primary);color:var(--background)}@media screen and (min-width: 800px){.new-post,.popular-post{margin-bottom:0}}.footer{padding:2rem 0}.footer>.flex{flex-direction:column;align-items:center;justify-content:center}.footer img{height:30px;width:30px}.footer a{border-radius:999px;margin:0 .05rem;font-weight:400;font-size:1rem;border:1px solid rgba(0,0,0,0);padding:.5rem;margin:0 .5rem;color:var(--light-font-color);transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.footer a:hover{color:var(--heading-color);background:var(--light-background);transform:translateY(-1px)}.footer a:active{transform:translateY(0) scale(.95)}.footer a.img{display:flex;align-items:center;padding:.4rem;margin:0 .5rem;background:none;border-radius:50%}.footer a.img:hover{background:var(--light-background);transform:translateY(-2px) scale(1.1)}.footer a.img:active{transform:scale(.92)}.footer-links{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.flex nav{padding:1rem 0}@media screen and (min-width: 800px){.footer>.flex{align-items:flex-start;margin-left:-1.5rem;margin-right:-1.5rem}.footer a{padding:.75rem}.footer a.img{padding:0 .5rem;margin:0 1rem}}@media print{.footer{display:none}}.small{max-width:600px}time,.meta{color:var(--light-font-color);font-size:.85rem;white-space:nowrap;font-weight:400}.meta{color:var(--medium-font-color);font-size:1rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.skip-link{position:absolute;top:-100%;left:50%;transform:translateX(-50%);z-index:9999;padding:.75rem 1.5rem;background:var(--primary-color, #8839ef);color:var(--background, #fff);font-weight:600;font-size:.875rem;border-radius:.5rem;text-decoration:none;transition:top .2s ease}.skip-link:focus{top:1rem;outline:2px solid var(--primary-color, #8839ef);outline-offset:2px}table{border-collapse:separate;border-spacing:0;width:100%;max-width:100%;overflow-x:auto}thead,tbody{white-space:nowrap}th{border-bottom:2px solid var(--border)}tfoot th{border-top:1px solid var(--border)}td{border-bottom:1px solid var(--border)}th,td{text-align:left;padding:.75rem;hyphens:auto}tbody tr:nth-child(even){background-color:var(--light-background)}@media screen and (min-width: 800px){table{display:table;border:1px solid var(--border)}thead,tbody{white-space:normal}}.count{font-weight:700;color:var(--link-color)}.tags{display:flex !important;flex-wrap:wrap;align-items:center;margin-left:-.5rem;margin-right:-.5rem}.tags>a{display:block;font-weight:500;background:var(--light-background);color:var(--font-color);margin:.2rem;padding:.5rem .6rem;font-size:.8rem;border-radius:.3rem;border-bottom:0;white-space:nowrap;line-height:1}.tags>a:hover{background:var(--light-background-hover);color:var(--heading-color)}mark{background:var(--ctp-yellow);color:var(--ctp-base)}.utterances{margin-left:-4px;margin-right:-4px}kbd{background-color:var(--light-background);border:2px solid var(--border);border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2);color:var(--font-color);display:inline-block;font-family:var(--code-font-family);line-height:1.4;margin:0 .1em;padding:.1em .6em;font-size:14px}#comments{margin-top:3rem}#comments h2{margin:0}@media print{.comments,#comments{display:none}}.search-container{position:relative;margin-bottom:3rem}#search-query{padding:1rem 1.25rem;padding-right:140px;background:var(--light-background);color:var(--input-color);border:2px solid rgba(0,0,0,.08);outline:none;width:100%;border-radius:999px;font-size:1rem;transition:all .25s cubic-bezier(.34, 1.56, .64, 1);box-shadow:0 2px 4px rgba(0,0,0,.02)}#search-query:focus{border-color:var(--accent-primary);box-shadow:0 4px 12px rgba(136,57,239,.08);transform:translateY(-1px)}#search-query::placeholder{color:var(--font-color);opacity:.5}.search-shortcuts{position:absolute;right:1rem;top:50%;transform:translateY(-50%);display:flex;gap:.5rem;pointer-events:none}.search-shortcuts kbd{padding:.35rem .6rem;background:var(--background);border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:var(--code-font-family);font-size:.75rem;font-weight:500;color:var(--font-color);opacity:.6;box-shadow:0 1px 2px rgba(0,0,0,.05)}#search-results{display:none}.facets{margin-bottom:2rem}.facet-group{margin-bottom:.5rem;display:flex;align-items:flex-start;gap:.6rem}.facet-label{font-size:.7rem;font-weight:600;color:var(--light-font-color);text-transform:uppercase;letter-spacing:.04em;flex-shrink:0;padding-top:.35rem;min-width:2.5rem}.filter-container{display:flex;justify-content:flex-start;flex-wrap:wrap;gap:.3rem}.filter-item{font-size:.7rem;padding:.3rem .6rem;background:var(--light-background);border:1px solid rgba(0,0,0,0);border-radius:999px;font-weight:500;font-family:var(--code-font-family);cursor:pointer;color:var(--font-color);transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.filter-item:hover{background:var(--light-background-hover);transform:translateY(-1px)}.filter-item:active{transform:translateY(0) scale(.95)}.filter-item.active{background:var(--accent-primary);color:var(--background);border-color:var(--accent-primary)}.filter-item.active:hover{opacity:.9}.active-filters{margin-top:.5rem}.clear-filters{font-size:.7rem;padding:.3rem .6rem;background:none;border:1px solid var(--border);border-radius:999px;color:var(--light-font-color);cursor:pointer;font-weight:500;transition:all .2s ease}.clear-filters:hover{border-color:var(--ctp-red);color:var(--ctp-red)}.search-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;background:rgba(0,0,0,0);border:none;color:var(--font-color);border-radius:50%;cursor:pointer;transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.search-toggle svg{width:20px;height:20px}.search-toggle:hover{background:var(--light-background);color:var(--dark-font-color);transform:scale(1.05)}.search-toggle:active{transform:scale(.92)}@media screen and (min-width: 800px){.search-toggle:not(.mobile-search-toggle){width:48px;height:48px;border:2px solid var(--border);border-radius:50%;background:var(--light-background)}.search-toggle:not(.mobile-search-toggle):hover{border-color:var(--accent-primary);transform:scale(1.08);box-shadow:0 2px 8px rgba(0,0,0,.06)}.search-toggle:not(.mobile-search-toggle):active{transform:scale(.92);box-shadow:none}}.mobile-search-toggle{display:flex;align-items:center;gap:1rem;margin-top:2rem;padding:1rem 1.5rem;width:auto;height:auto;border:2px solid var(--border);border-radius:999px;background:var(--light-background)}.mobile-search-toggle:hover{border-color:var(--accent-primary);background:var(--light-background-hover);transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.06)}.mobile-search-toggle:active{transform:translateY(0) scale(.97);box-shadow:none}.mobile-search-toggle svg{width:24px;height:24px}.mobile-search-toggle .search-label{font-size:1rem;font-weight:500;color:var(--font-color)}.search-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(8px);display:flex;align-items:flex-start;justify-content:center;padding:10vh 1rem 1rem;opacity:0;visibility:hidden;transition:all .3s ease;z-index:1000}.search-overlay.open{opacity:1;visibility:visible}.search{width:100%;max-width:600px;background:var(--background);border:1px solid var(--border);border-radius:20px;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);overflow:hidden;transform:translateY(-20px) scale(.95);transition:transform .3s cubic-bezier(.34, 1.56, .64, 1)}.search-overlay.open .search{transform:translateY(0) scale(1)}.search__input-wrapper{display:flex;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.search__icon{flex-shrink:0;margin-right:.75rem;color:var(--font-color);opacity:.5}.search__icon svg{width:20px;height:20px}.search__input{flex:1;font-size:1rem;background:none;border:none;color:var(--font-color);outline:none}.search__input::placeholder{color:var(--font-color);opacity:.5}.search__shortcut{display:none;padding:.25rem .5rem;font-family:var(--code-font-family);font-size:.75rem;color:var(--font-color);opacity:.5;background:var(--light-background);border:1px solid var(--border);border-radius:4px}@media (min-width: 768px){.search__shortcut{display:block}}.search__close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;margin-left:.5rem;color:var(--font-color);opacity:.5;background:rgba(0,0,0,0);border:none;border-radius:50%;cursor:pointer;transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.search__close svg{width:18px;height:18px}.search__close:hover{background:var(--light-background);opacity:1;transform:scale(1.1)}.search__close:active{transform:scale(.9)}.search__results{max-height:60vh;overflow-y:auto}.search__result{display:block;padding:1rem 1.25rem;color:var(--font-color);text-decoration:none;transition:background .15s ease}.search__result:hover{background:var(--light-background)}.search__result.selected{background:rgba(136,57,239,.1)}.search__result-title{font-weight:600;margin-bottom:.25rem}.search__result-title mark{background:rgba(249,226,175,.4);color:inherit;padding:0 .15em;border-radius:2px}.search__result-path{font-size:.875rem;color:var(--font-color);opacity:.6}.search__result-preview{font-size:.875rem;color:var(--font-color);opacity:.8;margin-top:.5rem;line-height:1.5}.search__result-preview mark{background:rgba(249,226,175,.3);color:inherit;padding:0 .1em;border-radius:2px}.search__no-results{padding:2rem 1.25rem;text-align:center;color:var(--font-color);opacity:.6}.search__footer{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;border-top:1px solid var(--border);font-size:.75rem;color:var(--font-color);opacity:.5}.search__hints{display:flex;gap:1rem}.search__hint{display:flex;align-items:center;gap:.4rem}.search__hint kbd{padding:.15rem .4rem;font-size:.65rem;background:var(--light-background);border:1px solid var(--border);border-radius:3px}.hero{margin:3rem 0;padding-bottom:2.5rem;border-bottom:none}.hero p{font-size:1.25rem;line-height:1.6;margin-bottom:.75rem;color:var(--font-color);max-width:800px;font-weight:400}.hero p:first-of-type{font-weight:600;color:var(--heading-color)}.hero .hero-ctas{display:flex;gap:.75rem;margin-top:1.5rem;flex-wrap:wrap}.hero .cta{display:inline-block;padding:.75rem 1.5rem;font-weight:600;font-size:.95rem;text-decoration:none;border-radius:999px;transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.hero .cta--primary{background:var(--accent-primary);color:var(--background)}.hero .cta--primary:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(136,57,239,.25)}.hero .cta--secondary{background:var(--light-background);color:var(--font-color)}.hero .cta--secondary:hover{transform:translateY(-2px);background:var(--light-background-hover)}.hero .cta:active{transform:translateY(0) scale(.97);box-shadow:none}.hero .hero-meta{margin-top:1.5rem;display:flex;flex-direction:column;gap:1.25rem;align-items:flex-start}.hero .hero-meta .speaking-badge{font-size:.95rem;color:var(--font-color);margin:0;position:relative;display:flex;align-items:center;gap:.75rem}.hero .hero-meta .speaking-badge strong{color:var(--accent-primary);font-weight:600}.hero .hero-meta .acnh-ping{position:relative;display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;animation:acnh-bob 4s ease-in-out infinite}.hero .hero-meta .acnh-ping .acnh-bloom{position:absolute;inset:-4px;width:calc(100% + 8px);height:calc(100% + 8px);color:var(--ctp-yellow)}.hero .hero-meta .acnh-ping__mark{position:relative;z-index:1;color:var(--ctp-base);font-weight:800;font-size:1.4rem;font-family:var(--font-family);line-height:1}@keyframes acnh-bob{0%, 100%{transform:translateY(0)}15%{transform:translateY(-6px)}30%{transform:translateY(0)}42%{transform:translateY(-3px)}55%{transform:translateY(0)}}.hero .hero-meta .bio-social{display:flex;gap:1rem}.hero .hero-meta .bio-social a{color:var(--font-color);transition:all .25s cubic-bezier(.34, 1.56, .64, 1);opacity:.8;padding:.4rem;border-radius:50%}.hero .hero-meta .bio-social a:hover{color:var(--accent-primary);opacity:1;transform:translateY(-2px) scale(1.1);background:var(--light-background)}.hero .hero-meta .bio-social a:active{transform:scale(.92)}.view-all-link{display:inline-block;margin-top:2rem;padding:.75rem 1.5rem;font-weight:500;text-decoration:none;color:var(--accent-primary);background:var(--light-background);border-radius:999px;transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.view-all-link:hover{background:var(--accent-primary);color:var(--background);transform:translateY(-2px);box-shadow:0 4px 12px rgba(136,57,239,.15)}.view-all-link:active{transform:translateY(0) scale(.97);box-shadow:none}.projects-section{margin-top:4rem}.projects-grid{display:grid;grid-template-columns:1fr;gap:1.5rem;margin-top:2rem}.project-card{padding:2rem;border:1px solid rgba(0,0,0,0);border-radius:20px;background:var(--light-background);transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.project-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.08);border-color:var(--border)}.project-card:active{transform:translateY(0) scale(.99);box-shadow:0 2px 8px rgba(0,0,0,.04)}.project-card h3{margin:0 0 .75rem 0;font-size:1.25rem;font-weight:600;color:var(--heading-color)}.project-card p{margin:0 0 1rem 0;font-size:.95rem;color:var(--font-color);line-height:1.7;opacity:.9}.project-card .status{display:inline-block;font-size:.75rem;padding:.35rem .85rem;background:var(--accent-primary);color:var(--background);border-radius:999px;font-weight:500;letter-spacing:.02em}.project-card a{font-size:.875rem;text-decoration:none;color:var(--accent-primary);font-weight:500}.project-card a:hover{text-decoration:underline}.post-tags{display:flex;gap:.5rem;margin-top:.5rem;flex-wrap:wrap}.tag{display:inline-block;padding:.35rem .85rem;font-size:.75rem;font-weight:500;background:var(--light-background);border:none;border-radius:999px;color:var(--font-color);text-decoration:none;transition:all .25s cubic-bezier(.34, 1.56, .64, 1);opacity:.85}.tag:hover{background:var(--accent-primary);color:var(--background);opacity:1;transform:translateY(-2px);box-shadow:0 2px 8px rgba(136,57,239,.12)}.tag:active{transform:translateY(0) scale(.95);box-shadow:none}@media (prefers-reduced-motion: reduce){.acnh-ping{animation:none}}.home-section{margin-top:3.5rem}.home-section h2{display:inline-block;background:var(--accent-secondary);color:var(--background);padding:.5rem 1.25rem;border-radius:12px;font-size:1.4rem;margin-bottom:1.5rem}.start-here-grid{display:grid;grid-template-columns:1fr;gap:1rem}.start-here-card{display:block;padding:1.5rem;background:var(--light-background);border-radius:16px;text-decoration:none;color:var(--font-color);transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.start-here-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.08);text-decoration:none}.start-here-card:active{transform:translateY(0) scale(.99);box-shadow:none}.start-here-card h3{margin:0 0 .5rem 0;font-size:1.05rem;font-weight:600;color:var(--heading-color)}.start-here-card p{margin:0;font-size:.9rem;line-height:1.6;opacity:.85}.post-row__content{flex:1;min-width:0}.post-tags-inline{display:flex;gap:.35rem;margin-top:.25rem;flex-wrap:wrap}.tag-pill{display:inline-block;padding:.15rem .55rem;font-size:.7rem;font-weight:500;background:var(--light-background);border-radius:999px;color:var(--light-font-color);font-family:var(--code-font-family)}.home-projects-grid{display:grid;grid-template-columns:1fr;gap:1rem}.project-card__links{display:flex;gap:1rem;margin-top:.75rem}.project-card__links a{font-size:.85rem;color:var(--accent-primary);text-decoration:none;font-weight:500}.project-card__links a:hover{text-decoration:underline}.home-speaking{margin-top:.5rem}.speaking-card{padding:1.5rem;background:var(--light-background);border-radius:16px;max-width:600px}.speaking-card .speaking-card__event{font-size:.8rem;font-weight:600;color:var(--accent-primary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.speaking-card h3{margin:0 0 .75rem 0;font-size:1.1rem;font-weight:600;color:var(--heading-color)}.speaking-card p{margin:0 0 1rem 0;font-size:.9rem;line-height:1.6;opacity:.85}.speaking-card>a{font-size:.9rem;color:var(--accent-primary);text-decoration:none;font-weight:500}.speaking-card>a:hover{text-decoration:underline}@media screen and (min-width: 800px){.hero{margin:4rem 0 3rem}.hero p{font-size:1.4rem}.hero .hero-meta{flex-direction:column;align-items:flex-start;gap:1.5rem;margin-top:2rem}.hero .hero-meta .speaking-badge{font-size:1rem;margin-left:-38px}.hero .hero-meta .bio-social{gap:1.5rem}.start-here-grid{grid-template-columns:repeat(3, 1fr)}.home-projects-grid{grid-template-columns:repeat(2, 1fr)}}.static-page .page-header{padding-top:2rem;margin-bottom:2rem}.static-page .page-header h1{font-size:2.5rem;font-weight:700;margin:0}.static-page .page-content{max-width:800px}.static-page .page-content h1,.static-page .page-content h2,.static-page .page-content h3,.static-page .page-content h4,.static-page .page-content h5,.static-page .page-content h6{margin-top:2rem;margin-bottom:1rem}.static-page .page-content h1{font-size:2rem}.static-page .page-content h2{display:inline-block;background:var(--accent-secondary);color:var(--background);padding:.5rem 1.25rem;border-radius:12px;font-size:1.4rem}.static-page .page-content h3{font-size:1.25rem}.static-page .page-content .section-spy{padding-left:1.25rem;border-left:3px solid rgba(0,0,0,0);margin-top:2rem;transition:border-color .3s cubic-bezier(.34, 1.56, .64, 1)}.static-page .page-content .section-spy:has(>h2){margin-top:6rem}.static-page .page-content .section-spy:has(>h2)>h2{display:inline-block;background:var(--accent-secondary);color:var(--background);padding:.5rem 1.25rem;border-radius:12px;font-size:1.4rem}.static-page .page-content .section-spy:first-child{margin-top:0}.static-page .page-content .section-spy--active{border-left-color:var(--accent-primary)}.static-page .page-content .section-spy--active>h2,.static-page .page-content .section-spy--active>h3{color:var(--accent-primary)}.static-page .page-content .section-spy>h2,.static-page .page-content .section-spy>h3{margin-top:0;transition:color .3s ease}.static-page .page-content p{margin-bottom:1.5rem;line-height:1.7}.static-page .page-content ul,.static-page .page-content ol{margin-bottom:1.5rem;padding-left:2rem}.static-page .page-content ul li,.static-page .page-content ol li{margin-bottom:.5rem;line-height:1.7}.static-page .page-content strong{font-weight:600}.static-page .page-content a{text-decoration:none}.static-page .page-content a:hover{text-decoration:underline}.static-page .page-content hr{margin:2rem 0;border:none}.static-page .page-content blockquote{border-left:4px solid var(--link-color);padding-left:1.5rem;margin:2rem 0;color:var(--light-font-color);font-style:italic}.project-icon{height:24px;width:auto;max-height:24px;vertical-align:middle;position:relative;top:-2px;margin-right:.4rem;border-radius:4px;display:inline-block;object-fit:contain}.status-badge{display:inline-block;font-size:.7rem;font-weight:600;padding:.2rem .7rem;border-radius:999px;letter-spacing:.02em;vertical-align:middle;position:relative;top:-2px;margin-left:.5rem}.status-badge--live{background:#a6e3a1;color:#1e1e2e}.status-badge--dev{background:var(--accent-primary);color:var(--background)}.status-badge--stable{background:#a6e3a1;color:#1e1e2e}.status-badge--early{background:#f9e2af;color:#1e1e2e}@media screen and (min-width: 800px){.static-page .page-header{padding-top:3rem}.static-page .page-header h1{font-size:3rem}.static-page .page-content h1{font-size:2.25rem}}@media (prefers-reduced-motion: reduce){.section-spy{transition:none}}.session-link a{display:inline-flex;align-items:center;gap:.4rem}.session-link a svg{width:16px;height:16px;flex-shrink:0}.contact-links{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem}.contact-links a{display:inline-flex;align-items:center;gap:.65rem;padding:.85rem 1.5rem;background:var(--accent-primary);color:var(--background) !important;border-radius:16px;font-weight:600;font-size:1rem;text-decoration:none !important;transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.contact-links a:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(136,57,239,.25);text-decoration:none !important}.contact-links a:active{transform:translateY(0) scale(.98);box-shadow:none}.contact-links a svg{width:20px;height:20px;flex-shrink:0}@media screen and (min-width: 800px){.contact-links{max-width:400px}}header{padding:1.5rem 0}header h1{font-size:2rem;display:inline-block;font-weight:600;margin-top:1rem}header u{display:inline-block;text-decoration:none;padding:.4rem 0}.article-header{padding-top:2rem;margin-bottom:.5rem}.article-header .container{padding-left:0;padding-right:0}.article-header .thumb{display:flex;flex-direction:column}.article-header h1{font-weight:700;font-size:1.8rem;margin:0}.article-header .description{font-size:1.2rem;color:var(--light-font-color);font-weight:300;margin-top:2rem;margin-bottom:0}.post-meta{margin-top:1rem;padding:0;color:var(--light-font-color);font-size:.9rem}.post-meta a{color:var(--font-color);border-width:0}.post-meta time{margin-top:.2rem;font-size:.9rem}.post-meta .meta-line{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.post-meta .meta-line .author{font-weight:600}.post-meta .meta-line .separator{opacity:.5}.post-meta .meta-line .reading-time{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;font-size:.85rem}.post-meta .article-taxonomies{margin-top:1rem;display:flex;gap:1rem;flex-wrap:wrap;align-items:center}.post-meta .tags{display:flex;gap:.5rem;flex-wrap:wrap}.post-meta .tags a{text-decoration:none}.post-meta .series-badge{font-size:.85rem;font-weight:600}.post-meta .series-badge a{text-decoration:none;color:var(--link-color)}.post-meta .series-badge a:hover{text-decoration:underline}.article-post{margin-bottom:2rem;font-family:var(--article-font-family)}.article-post img{border-radius:12px;display:block;margin-left:auto;margin-right:auto}.article-post a{box-shadow:0px -2px 0px var(--accent-secondary) inset;transition:all .3s ease}.article-post a:hover{box-shadow:0px -10px 0px var(--accent-secondary) inset}.article-post code{overflow-x:auto}.article-post h1{position:relative}.article-post h1 .anchor{position:absolute;left:-2.5rem;top:50%;transform:translateY(-50%);color:var(--accent-primary);font-weight:600;text-decoration:none;opacity:0;transition:all .2s cubic-bezier(.4, 0, .2, 1);padding:.25rem .5rem;border-radius:999px;font-size:.9em}.article-post h1 .anchor::before{content:"#"}.article-post h1 .anchor:hover{background:var(--light-background);opacity:1 !important}.article-post h1:hover .anchor{opacity:.6}.article-post h2{position:relative}.article-post h2 .anchor{position:absolute;left:-2.5rem;top:50%;transform:translateY(-50%);color:var(--accent-primary);font-weight:600;text-decoration:none;opacity:0;transition:all .2s cubic-bezier(.4, 0, .2, 1);padding:.25rem .5rem;border-radius:999px;font-size:.9em}.article-post h2 .anchor::before{content:"#"}.article-post h2 .anchor:hover{background:var(--light-background);opacity:1 !important}.article-post h2:hover .anchor{opacity:.6}.article-post h3{position:relative}.article-post h3 .anchor{position:absolute;left:-2.5rem;top:50%;transform:translateY(-50%);color:var(--accent-primary);font-weight:600;text-decoration:none;opacity:0;transition:all .2s cubic-bezier(.4, 0, .2, 1);padding:.25rem .5rem;border-radius:999px;font-size:.9em}.article-post h3 .anchor::before{content:"#"}.article-post h3 .anchor:hover{background:var(--light-background);opacity:1 !important}.article-post h3:hover .anchor{opacity:.6}.article-post h4{position:relative}.article-post h4 .anchor{position:absolute;left:-2.5rem;top:50%;transform:translateY(-50%);color:var(--accent-primary);font-weight:600;text-decoration:none;opacity:0;transition:all .2s cubic-bezier(.4, 0, .2, 1);padding:.25rem .5rem;border-radius:999px;font-size:.9em}.article-post h4 .anchor::before{content:"#"}.article-post h4 .anchor:hover{background:var(--light-background);opacity:1 !important}.article-post h4:hover .anchor{opacity:.6}.article-post h5{position:relative}.article-post h5 .anchor{position:absolute;left:-2.5rem;top:50%;transform:translateY(-50%);color:var(--accent-primary);font-weight:600;text-decoration:none;opacity:0;transition:all .2s cubic-bezier(.4, 0, .2, 1);padding:.25rem .5rem;border-radius:999px;font-size:.9em}.article-post h5 .anchor::before{content:"#"}.article-post h5 .anchor:hover{background:var(--light-background);opacity:1 !important}.article-post h5:hover .anchor{opacity:.6}.article-post h6{position:relative}.article-post h6 .anchor{position:absolute;left:-2.5rem;top:50%;transform:translateY(-50%);color:var(--accent-primary);font-weight:600;text-decoration:none;opacity:0;transition:all .2s cubic-bezier(.4, 0, .2, 1);padding:.25rem .5rem;border-radius:999px;font-size:.9em}.article-post h6 .anchor::before{content:"#"}.article-post h6 .anchor:hover{background:var(--light-background);opacity:1 !important}.article-post h6:hover .anchor{opacity:.6}.article-post .highlight{position:relative}@media screen and (min-width: 800px){.article-post{margin-bottom:3rem}.article-post h1,.article-post h2,.article-post h3,.article-post h4,.article-post h5{padding-top:1rem}.post-meta{margin-top:.5rem;padding:.5rem 0}header h1{font-size:3rem;margin-top:2rem}header u{background:linear-gradient(rgba(0,0,0,0) 85%, #bac8ff 0)}.article-header{padding-top:3rem}.article-header h1{padding-top:0;font-size:2.5rem}.article-header .thumb{flex-direction:row}.article-header .description{font-size:1.8rem;line-height:1.5}}@media screen and (min-width: 1100px){.article-header h1{font-size:2.5rem}}.post-thumbnail{display:block !important;width:100%;height:auto;margin:1.5rem 0;border-radius:16px}.toc{margin-bottom:2rem;max-width:800px}.toc details{background:var(--light-background);border-radius:16px;padding:1rem 1.5rem}.toc details[open] summary{margin-bottom:.75rem}.toc summary{cursor:pointer;font-weight:600;font-size:.95rem;color:var(--heading-color);list-style:none;display:flex;align-items:center;gap:.5rem}.toc summary::before{content:"▸";transition:transform .2s ease}.toc summary::-webkit-details-marker{display:none}.toc details[open] summary::before{transform:rotate(90deg)}.toc ul{list-style:none;padding-left:0;margin:0}.toc ul ul{padding-left:1.25rem}.toc li{margin-bottom:.25rem}.toc a{font-size:.9rem;color:var(--font-color);text-decoration:none;opacity:.8;transition:opacity .15s ease}.toc a:hover{opacity:1;color:var(--accent-primary)}.related-articles{margin-top:3.5rem}.related-articles h2{display:inline-block;background:var(--accent-secondary);color:var(--background);padding:.5rem 1.25rem;border-radius:12px;font-size:1.4rem;margin-bottom:1rem}.related-articles__grid{display:grid;grid-template-columns:1fr;gap:1rem}.related-articles__card{display:block;padding:1.25rem;background:var(--light-background);border-radius:16px;text-decoration:none;color:var(--font-color);transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.related-articles__card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.08);text-decoration:none}.related-articles__card:active{transform:translateY(0) scale(.99);box-shadow:none}.related-articles__card h3{margin:0 0 .5rem 0;font-size:1rem;font-weight:600;color:var(--heading-color)}.related-articles__card p{margin:0;font-size:.85rem;line-height:1.6;opacity:.8}@media screen and (min-width: 800px){.related-articles__grid{grid-template-columns:repeat(3, 1fr)}}.disqus-container{padding-top:2rem}#cusdis_thread{padding-top:2rem}.giscus{padding-top:2rem}code,pre{font-size:.875rem;font-family:var(--code-font-family);background:#1e1e2e}:not(pre)>code{color:var(--dark-font-color);background:var(--light-background);padding:.2em .4em;border-radius:3px;font-size:.85em}code{padding:3px 5px;border-radius:4px;color:#f8f8f2}pre>code{display:block}pre[class*=language-],pre.giallo,.highlight>.chroma{margin:2.5rem 0 3rem;border-radius:20px;overflow:visible;box-shadow:0 10px 15px -3px rgba(0,0,0,.3),0 4px 6px -2px rgba(0,0,0,.2);position:relative;background:linear-gradient(135deg, #1e1e2e 0%, #181825 100%);border:none;}pre[class*=language-]::before,pre.giallo::before,.highlight>.chroma::before{display:none}pre[class*=language-] code,pre.giallo code,.highlight>.chroma code{padding:32px 24px 24px;overflow-x:auto;display:block;line-height:1.7;border-radius:20px}pre[class*=language-] code[data-lang]::before,pre.giallo code[data-lang]::before,.highlight>.chroma code[data-lang]::before{display:none}pre[class*=language-] .code-lang-label,pre.giallo .code-lang-label,.highlight>.chroma .code-lang-label{position:absolute;top:-12px;left:16px;padding:5px 14px;font-size:.75rem;line-height:1;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:#1e1e2e;background:var(--accent-secondary);border:3px solid #1e1e2e;font-family:var(--font-family);border-radius:999px;display:inline-flex;align-items:center;gap:5px;height:22px;z-index:10}pre[class*=language-] .code-lang-label svg,pre.giallo .code-lang-label svg,.highlight>.chroma .code-lang-label svg{width:12px;height:12px;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}pre[class*=language-].diagram code,pre.giallo.diagram code,.highlight>.chroma.diagram code{font-family:"Cascadia Mono Diagram",var(--code-font-family);line-height:1.2;letter-spacing:.02em;font-size:.95rem}pre[class*=language-] table,pre.giallo table,.highlight>.chroma table{position:relative;border:none}pre[class*=language-] table code,pre.giallo table code,.highlight>.chroma table code{padding:0}pre[class*=language-] .lntd:first-child,pre.giallo .lntd:first-child,.highlight>.chroma .lntd:first-child{width:10px}pre[class*=language-] .lntd:first-child pre,pre.giallo .lntd:first-child pre,.highlight>.chroma .lntd:first-child pre{margin:0;padding:40px 7px 10px}pre[class*=language-] .lntd:last-child,pre.giallo .lntd:last-child,.highlight>.chroma .lntd:last-child{vertical-align:top}pre[class*=language-] .lntd:last-child pre,pre.giallo .lntd:last-child pre,.highlight>.chroma .lntd:last-child pre{margin:0;padding:40px 10px 10px}pre[class*=language-] table,pre[class*=language-] tr,pre[class*=language-] td,pre.giallo table,pre.giallo tr,pre.giallo td,.highlight>.chroma table,.highlight>.chroma tr,.highlight>.chroma td{margin:0;padding:0;width:100%;border-collapse:collapse;border:none}pre[class*=language-] .hl,pre.giallo .hl,.highlight>.chroma .hl{display:block;width:100%;background-color:#000}pre[class*=language-] .lnt,pre.giallo .lnt,.highlight>.chroma .lnt{color:#7f7f7f}pre[class*=language-] .ln,pre.giallo .ln,.highlight>.chroma .ln{padding:0 .4em 0 .4em;color:#7f7f7f}pre[class*=language-] .err,pre.giallo .err,.highlight>.chroma .err{color:#960050}pre[class*=language-] .c,pre.giallo .c,.highlight>.chroma .c{color:#999}pre[class*=language-] .err,pre.giallo .err,.highlight>.chroma .err{color:#f2777a}pre[class*=language-] .k,pre.giallo .k,.highlight>.chroma .k{color:#c9c}pre[class*=language-] .l,pre.giallo .l,.highlight>.chroma .l{color:#f99157}pre[class*=language-] .n,pre.giallo .n,.highlight>.chroma .n{color:#ccc}pre[class*=language-] .o,pre.giallo .o,.highlight>.chroma .o{color:#6cc}pre[class*=language-] .p,pre.giallo .p,.highlight>.chroma .p{color:#ccc}pre[class*=language-] .cm,pre.giallo .cm,.highlight>.chroma .cm{color:#999}pre[class*=language-] .cp,pre.giallo .cp,.highlight>.chroma .cp{color:#999}pre[class*=language-] .c1,pre.giallo .c1,.highlight>.chroma .c1{color:#999}pre[class*=language-] .cs,pre.giallo .cs,.highlight>.chroma .cs{color:#999}pre[class*=language-] .gd,pre.giallo .gd,.highlight>.chroma .gd{color:#f2777a}pre[class*=language-] .ge,pre.giallo .ge,.highlight>.chroma .ge{font-style:italic}pre[class*=language-] .gh,pre.giallo .gh,.highlight>.chroma .gh{color:#ccc;font-weight:bold}pre[class*=language-] .gi,pre.giallo .gi,.highlight>.chroma .gi{color:#9c9}pre[class*=language-] .gp,pre.giallo .gp,.highlight>.chroma .gp{color:#999;font-weight:bold}pre[class*=language-] .gs,pre.giallo .gs,.highlight>.chroma .gs{font-weight:bold}pre[class*=language-] .gu,pre.giallo .gu,.highlight>.chroma .gu{color:#6cc;font-weight:bold}pre[class*=language-] .kc,pre.giallo .kc,.highlight>.chroma .kc{color:#c9c}pre[class*=language-] .kd,pre.giallo .kd,.highlight>.chroma .kd{color:#c9c}pre[class*=language-] .kn,pre.giallo .kn,.highlight>.chroma .kn{color:#6cc}pre[class*=language-] .kp,pre.giallo .kp,.highlight>.chroma .kp{color:#c9c}pre[class*=language-] .kr,pre.giallo .kr,.highlight>.chroma .kr{color:#c9c}pre[class*=language-] .kt,pre.giallo .kt,.highlight>.chroma .kt{color:#fc6}pre[class*=language-] .ld,pre.giallo .ld,.highlight>.chroma .ld{color:#9c9}pre[class*=language-] .m,pre.giallo .m,.highlight>.chroma .m{color:#f99157}pre[class*=language-] .s,pre.giallo .s,.highlight>.chroma .s{color:#9c9}pre[class*=language-] .na,pre.giallo .na,.highlight>.chroma .na{color:#69c}pre[class*=language-] .nb,pre.giallo .nb,.highlight>.chroma .nb{color:#ccc}pre[class*=language-] .nc,pre.giallo .nc,.highlight>.chroma .nc{color:#fc6}pre[class*=language-] .no,pre.giallo .no,.highlight>.chroma .no{color:#f2777a}pre[class*=language-] .nd,pre.giallo .nd,.highlight>.chroma .nd{color:#6cc}pre[class*=language-] .ni,pre.giallo .ni,.highlight>.chroma .ni{color:#ccc}pre[class*=language-] .ne,pre.giallo .ne,.highlight>.chroma .ne{color:#f2777a}pre[class*=language-] .nf,pre.giallo .nf,.highlight>.chroma .nf{color:#69c}pre[class*=language-] .nl,pre.giallo .nl,.highlight>.chroma .nl{color:#ccc}pre[class*=language-] .nn,pre.giallo .nn,.highlight>.chroma .nn{color:#fc6}pre[class*=language-] .nx,pre.giallo .nx,.highlight>.chroma .nx{color:#69c}pre[class*=language-] .py,pre.giallo .py,.highlight>.chroma .py{color:#ccc}pre[class*=language-] .nt,pre.giallo .nt,.highlight>.chroma .nt{color:#6cc}pre[class*=language-] .nv,pre.giallo .nv,.highlight>.chroma .nv{color:#f2777a}pre[class*=language-] .ow,pre.giallo .ow,.highlight>.chroma .ow{color:#6cc}pre[class*=language-] .w,pre.giallo .w,.highlight>.chroma .w{color:#ccc}pre[class*=language-] .mf,pre.giallo .mf,.highlight>.chroma .mf{color:#f99157}pre[class*=language-] .mh,pre.giallo .mh,.highlight>.chroma .mh{color:#f99157}pre[class*=language-] .mi,pre.giallo .mi,.highlight>.chroma .mi{color:#f99157}pre[class*=language-] .mo,pre.giallo .mo,.highlight>.chroma .mo{color:#f99157}pre[class*=language-] .sb,pre.giallo .sb,.highlight>.chroma .sb{color:#9c9}pre[class*=language-] .sc,pre.giallo .sc,.highlight>.chroma .sc{color:#ccc}pre[class*=language-] .sd,pre.giallo .sd,.highlight>.chroma .sd{color:#999}pre[class*=language-] .s2,pre.giallo .s2,.highlight>.chroma .s2{color:#9c9}pre[class*=language-] .se,pre.giallo .se,.highlight>.chroma .se{color:#f99157}pre[class*=language-] .sh,pre.giallo .sh,.highlight>.chroma .sh{color:#9c9}pre[class*=language-] .si,pre.giallo .si,.highlight>.chroma .si{color:#f99157}pre[class*=language-] .sx,pre.giallo .sx,.highlight>.chroma .sx{color:#9c9}pre[class*=language-] .sr,pre.giallo .sr,.highlight>.chroma .sr{color:#9c9}pre[class*=language-] .s1,pre.giallo .s1,.highlight>.chroma .s1{color:#9c9}pre[class*=language-] .ss,pre.giallo .ss,.highlight>.chroma .ss{color:#9c9}pre[class*=language-] .bp,pre.giallo .bp,.highlight>.chroma .bp{color:#ccc}pre[class*=language-] .vc,pre.giallo .vc,.highlight>.chroma .vc{color:#f2777a}pre[class*=language-] .vg,pre.giallo .vg,.highlight>.chroma .vg{color:#f2777a}pre[class*=language-] .vi,pre.giallo .vi,.highlight>.chroma .vi{color:#f2777a}pre[class*=language-] .il,pre.giallo .il,.highlight>.chroma .il{color:#f99157}.copy-code-button{position:absolute;top:-12px;right:16px;background:var(--accent-secondary);border:3px solid #1e1e2e;border-radius:999px;padding:5px 14px;color:#1e1e2e;cursor:pointer;font-size:.75rem;font-weight:600;font-family:var(--font-family);opacity:1;transition:all .25s cubic-bezier(.34, 1.56, .64, 1);backdrop-filter:blur(8px);display:flex;align-items:center;gap:5px;z-index:10;text-transform:uppercase;letter-spacing:.05em;height:22px}.copy-code-button:hover{background:var(--accent-primary);color:#1e1e2e;transform:translateY(-1px);box-shadow:0 4px 8px rgba(0,0,0,.2)}.copy-code-button:active{transform:translateY(0) scale(.98)}.copy-code-button.copied{background:#a6e3a1;color:#1e1e2e}.copy-code-button.copied svg{animation:checkmark .3s ease-in-out}.copy-code-button svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2}@keyframes checkmark{0%, 100%{transform:scale(1)}50%{transform:scale(1.2)}}.side{width:200px;margin:0 auto}.side p{margin:0}.side-right{float:right;clear:right;margin-right:calc(-200px - 2em);background-color:var(--light-background);padding:1rem;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.06)}.side-right p{font-size:.9rem;line-height:1.6}.footnotes{margin-top:4rem;padding-top:2rem;border-top:1px solid var(--light-background)}.footnotes::before{content:"Notes";display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--accent-primary);margin-bottom:1.5rem;font-family:monospace}.footnotes ol{padding-left:0;counter-reset:footnote-counter;list-style:none}.footnotes ol li{position:relative;padding-left:2.5rem;margin-bottom:1.25rem;line-height:1.7}.footnotes ol li::before{content:counter(footnote-counter);counter-increment:footnote-counter;position:absolute;left:0;top:.1rem;display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;height:1.5rem;background:var(--light-background);color:var(--accent-primary);font-size:.75rem;font-weight:600;font-family:monospace;border-radius:4px;padding:0 .25rem}.footnotes ol li p{margin:0;font-size:.9rem;color:var(--font-color);opacity:.85;font-style:italic}.footnotes ol li::marker{display:none}.footnotes hr{display:none}.footnote-ref{display:inline-block;padding:.15rem .5rem;margin:0 .15rem;background:var(--accent-primary);color:var(--background);font-size:.75rem;font-weight:600;border-radius:6px;text-decoration:none;vertical-align:super;line-height:1;transition:all .2s cubic-bezier(.4, 0, .2, 1);box-shadow:none !important}.footnote-ref:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(136,57,239,.3) !important}.footnote-backref{display:inline-block;margin-left:.5rem;padding:.25rem .5rem;background:var(--light-background);color:var(--accent-primary);border-radius:6px;text-decoration:none;font-size:.85rem;transition:all .2s cubic-bezier(.4, 0, .2, 1);box-shadow:none !important}.footnote-backref:hover{background:var(--accent-primary);color:var(--background);transform:translateX(-2px)}.note-ref{cursor:pointer;border:none;box-shadow:none !important}.note-ref:hover{box-shadow:none;border:none}.bg-number{display:inline-block;background:var(--light-background);font-size:.85rem;color:var(--font-color);text-decoration:none;padding:.25rem .6rem;border-radius:8px;font-weight:500;transition:all .2s cubic-bezier(.4, 0, .2, 1)}.bg-number:hover{background:var(--accent-primary);color:var(--background);transform:translateY(-1px)}@media (max-width: 1280px){.side{width:100%;padding:0 2em}.side-right{float:none;clear:both;margin:1em auto;background:none}}@media (min-width: 1280px){.note-ref:hover~.side{display:inline-block;position:absolute;margin-left:1rem;padding:1rem;box-sizing:content-box;background:var(--light-background);border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.1);animation:fadeInUp .2s cubic-bezier(.4, 0, .2, 1)}@keyframes fadeInUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}}.suggested{flex-direction:column;align-items:stretch;margin-left:-1rem;margin-right:-1rem;padding:0;margin-top:3rem}.suggested span{font-weight:500;display:block;font-size:.85rem;color:var(--background);opacity:.8;margin-bottom:.5rem}.suggested strong{display:block;margin-top:.25rem;color:var(--background);font-weight:600}.suggested a{background:var(--accent-primary);margin:.5rem 1rem;border-bottom:none;transition:all .25s cubic-bezier(.34, 1.56, .64, 1);padding:1.5rem;border-radius:16px;border:none;color:var(--background);text-decoration:none}.suggested a:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(136,57,239,.25)}.suggested a:hover strong{color:var(--background)}.suggested a:active{transform:translateY(0) scale(.98);box-shadow:none}@media screen and (min-width: 800px){.suggested{flex-direction:row}.suggested a{flex:0 0 calc(50% - 2rem)}.suggested a:first-of-type{text-align:right}}.projects .project:last-of-type{border-bottom-width:0}.project{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;border-bottom:2px solid var(--light-background)}.project .icon{font-size:1.5rem;width:40px}.project a{display:flex;align-items:center;margin-bottom:.25rem;border-width:0}.project a:hover h3{text-decoration:underline}.project a.button{margin-left:1.5rem;border-width:2px}.project h3{font-size:1.2rem;margin:0}.project .description{font-size:1.1rem;color:var(--light-font-color)}@media screen and (min-width: 800px){.project{border-bottom-width:0}.project h3{font-size:1.3rem}.project .description{font-size:1rem}}.project-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.project-links a{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;font-size:.85rem;font-weight:500;background:var(--light-background);border-radius:999px;color:var(--font-color);text-decoration:none;transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.project-links a:hover{background:var(--accent-primary);color:var(--background);transform:translateY(-2px);text-decoration:none}.project-links a:active{transform:translateY(0) scale(.95)}.project-links a svg{width:15px;height:15px;flex-shrink:0}.terms a{padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color);border-radius:.35rem}.terms a:hover{background:var(--light-background);color:var(--dark-font-color)}.pagination{display:flex}.pagination .prev-page,.pagination .next-page{flex-grow:1;flex-shrink:1;display:flex}.pagination .next-page{justify-content:flex-end}.pagination a{border-radius:999px;padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color);transition:all .25s cubic-bezier(.34, 1.56, .64, 1)}.pagination a:hover{background:var(--light-background);color:var(--dark-font-color);transform:translateY(-1px)}.pagination a:active{transform:translateY(0) scale(.95)}.pagination a[aria-current=page]{background:var(--light-background);color:var(--dark-font-color)}#scroll-to-top{position:fixed;bottom:2rem;right:2rem;width:48px;height:48px;background:var(--accent-primary);color:var(--background);border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transform:translateY(20px);transition:all .25s cubic-bezier(.34, 1.56, .64, 1);box-shadow:0 4px 12px rgba(136,57,239,.3);z-index:100}#scroll-to-top svg{width:24px;height:24px}#scroll-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}#scroll-to-top:hover{transform:translateY(-4px) scale(1.05);box-shadow:0 8px 20px rgba(136,57,239,.4)}#scroll-to-top:active{transform:translateY(-2px) scale(.92)}@media screen and (max-width: 800px){#scroll-to-top{bottom:1.5rem;right:1.5rem;width:44px;height:44px}#scroll-to-top svg{width:20px;height:20px}}.external-link::after{content:"↗";font-size:.6em;opacity:.4;margin-left:.15em;vertical-align:super;line-height:1;transition:opacity .15s ease}.external-link:hover::after{opacity:.7}.link-preview a.link-preview__visit{box-shadow:none !important}.link-preview a.link-preview__visit:hover{box-shadow:none !important}.link-preview-overlay{position:fixed;inset:0;background:rgba(0,0,0,0);z-index:9998;opacity:0;transition:opacity .25s ease,background .25s ease;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}.link-preview-overlay.active{opacity:1;background:rgba(0,0,0,.35);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.link-preview{position:absolute;z-index:9999;max-width:360px;width:max-content;min-width:260px;background:var(--background);border:1px solid var(--border);border-radius:16px;box-shadow:0 4px 16px rgba(0,0,0,.08),0 8px 32px rgba(0,0,0,.06);overflow:hidden;opacity:0;transform:translateY(8px);transition:opacity .2s ease,transform .25s cubic-bezier(.34, 1.56, .64, 1);pointer-events:auto}.link-preview.active{opacity:1;transform:translateY(0)}.link-preview.link-preview--above{transform:translateY(-8px)}.link-preview.link-preview--above.active{transform:translateY(0)}.link-preview__image{width:100%;max-height:160px;overflow:hidden;background:var(--light-background)}.link-preview__image img{width:100%;height:100%;display:block;object-fit:cover}.link-preview__body{padding:.9rem 1.1rem}.link-preview__domain{font-family:var(--code-font-family);font-size:.72rem;font-weight:500;color:var(--accent-secondary);margin-bottom:.3rem;text-transform:lowercase;letter-spacing:.01em}.link-preview__title{font-weight:600;font-size:.9rem;color:var(--font-color);line-height:1.35;margin-bottom:.25rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.link-preview__desc{font-size:.8rem;color:var(--light-font-color);line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.link-preview__visit{display:flex;align-items:center;justify-content:center;gap:.35rem;padding:.65rem 1.1rem;font-size:.82rem;font-weight:600;color:var(--link-color) !important;border-top:1px solid var(--border);text-decoration:none !important;transition:all .25s cubic-bezier(.34, 1.56, .64, 1);cursor:pointer}.link-preview__visit:hover{background:var(--light-background);transform:scale(1.02)}.link-preview__visit:active{transform:scale(.98)}.link-preview__visit::after{display:none !important}.link-preview__arrow{font-size:1.05em;line-height:1}.link-preview__close{position:absolute;top:.65rem;right:.65rem;width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:var(--light-background);color:var(--font-color);font-size:1.15rem;display:none;align-items:center;justify-content:center;cursor:pointer;transition:all .25s cubic-bezier(.34, 1.56, .64, 1);z-index:1;line-height:1;padding:0}.link-preview__close:hover{background:var(--light-background-hover);transform:scale(1.1)}.link-preview__close:active{transform:scale(.9)}.link-preview--mobile .link-preview__close{display:flex}.link-preview--mobile{position:fixed;bottom:0;left:0;right:0;max-width:100%;width:100%;min-width:unset;border-radius:20px 20px 0 0;border-bottom:none;transform:translateY(100%);transition:transform .3s cubic-bezier(.4, 0, .2, 1),opacity .2s ease;max-height:75vh;overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:0 -4px 24px rgba(0,0,0,.12),0 -2px 8px rgba(0,0,0,.06)}.link-preview--mobile.active{transform:translateY(0)}.link-preview--mobile::before{content:"";display:block;width:36px;height:4px;border-radius:2px;background:var(--border);margin:.75rem auto 0}.link-preview--mobile .link-preview__image{max-height:200px;margin-top:.5rem}.link-preview--mobile .link-preview__body{padding:1rem 1.25rem;padding-right:3.25rem}.link-preview--mobile .link-preview__title{font-size:1.05rem}.link-preview--mobile .link-preview__desc{font-size:.85rem;-webkit-line-clamp:5}.link-preview--mobile .link-preview__visit{padding:.9rem 1.25rem;font-size:.95rem;padding-bottom:calc(.9rem + env(safe-area-inset-bottom, 0px))}.steam-banner{margin:1.5rem 0}.steam-banner-link{text-decoration:none;color:inherit;display:block}.steam-banner-card{display:flex;gap:1rem;background:linear-gradient(135deg, #1b2838 0%, #2a475e 100%);border-radius:8px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease;box-shadow:0 2px 8px rgba(0,0,0,.3)}.steam-banner-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.5)}.steam-banner-capsule{width:184px;min-height:100%;object-fit:cover;flex-shrink:0}.steam-banner-info{padding:.75rem .75rem .75rem 0;display:flex;flex-direction:column;justify-content:center;flex:1;min-width:0}.steam-banner-title{margin:0 0 .5rem 0;font-size:1.1rem;font-weight:600;color:#fff;line-height:1.3}.dark .steam-banner-title{color:#fff}.steam-banner-price{display:inline-block;margin-bottom:.5rem;font-size:.9rem;font-weight:600;color:#acdbf5}.steam-banner-tags{display:flex;flex-wrap:wrap;gap:.4rem}.steam-banner-tag{display:inline-block;padding:.2rem .5rem;font-size:.75rem;color:#8f98a0;background:rgba(255,255,255,.1);border-radius:4px}@media (max-width: 600px){.steam-banner-card{flex-direction:column}.steam-banner-capsule{width:100%;height:auto}.steam-banner-info{padding:.75rem}}@media (prefers-color-scheme: dark){:root{--color-mode: dark}:root:not([data-user-color-scheme]){--ctp-rosewater: #f5e0dc;--ctp-flamingo: #f2cdcd;--ctp-pink: #f5c2e7;--ctp-mauve: #cba6f7;--ctp-red: #f38ba8;--ctp-maroon: #eba0ac;--ctp-peach: #fab387;--ctp-yellow: #f9e2af;--ctp-green: #a6e3a1;--ctp-teal: #94e2d5;--ctp-sky: #89dceb;--ctp-sapphire: #74c7ec;--ctp-blue: #89b4fa;--ctp-lavender: #b4befe;--ctp-text: #cdd6f4;--ctp-subtext1: #bac2de;--ctp-subtext0: #a6adc8;--ctp-overlay2: #9399b2;--ctp-overlay1: #7f849c;--ctp-overlay0: #6c7086;--ctp-surface2: #585b70;--ctp-surface1: #45475a;--ctp-surface0: #313244;--ctp-base: #1e1e2e;--ctp-mantle: #181825;--ctp-crust: #11111b;--h1-color: var(--ctp-text);--font-color: var(--ctp-text);--heading-color: var(--ctp-lavender);--dark-font-color: var(--ctp-text);--background: var(--ctp-base);--medium-font-color: var(--ctp-subtext1);--light-font-color: var(--ctp-subtext0);--light-background: var(--ctp-mantle);--light-background-hover: var(--ctp-surface0);--code-background-color: var(--ctp-mantle);--border: var(--ctp-surface0);--link-color: var(--ctp-sapphire);--link-color-darker: var(--ctp-blue);--link-hover-color: var(--ctp-mauve);--navbar-color: var(--ctp-base);--blockquote: var(--ctp-mantle);--blockquote-left: var(--ctp-mauve);--transparent-text: var(--ctp-overlay1);--transparent-bg: var(--ctp-surface0);--light-transparent-bg: var(--ctp-surface1);--input-color: var(--ctp-text);--accent-primary: var(--ctp-mauve);--accent-secondary: var(--ctp-teal);--accent-tertiary: var(--ctp-peach);--accent-success: var(--ctp-green)}}[data-user-color-scheme=dark]{--ctp-rosewater: #f5e0dc;--ctp-flamingo: #f2cdcd;--ctp-pink: #f5c2e7;--ctp-mauve: #cba6f7;--ctp-red: #f38ba8;--ctp-maroon: #eba0ac;--ctp-peach: #fab387;--ctp-yellow: #f9e2af;--ctp-green: #a6e3a1;--ctp-teal: #94e2d5;--ctp-sky: #89dceb;--ctp-sapphire: #74c7ec;--ctp-blue: #89b4fa;--ctp-lavender: #b4befe;--ctp-text: #cdd6f4;--ctp-subtext1: #bac2de;--ctp-subtext0: #a6adc8;--ctp-overlay2: #9399b2;--ctp-overlay1: #7f849c;--ctp-overlay0: #6c7086;--ctp-surface2: #585b70;--ctp-surface1: #45475a;--ctp-surface0: #313244;--ctp-base: #1e1e2e;--ctp-mantle: #181825;--ctp-crust: #11111b;--h1-color: var(--ctp-text);--font-color: var(--ctp-text);--heading-color: var(--ctp-lavender);--dark-font-color: var(--ctp-text);--background: var(--ctp-base);--medium-font-color: var(--ctp-subtext1);--light-font-color: var(--ctp-subtext0);--light-background: var(--ctp-mantle);--light-background-hover: var(--ctp-surface0);--code-background-color: var(--ctp-mantle);--border: var(--ctp-surface0);--link-color: var(--ctp-sapphire);--link-color-darker: var(--ctp-blue);--link-hover-color: var(--ctp-mauve);--navbar-color: var(--ctp-base);--blockquote: var(--ctp-mantle);--blockquote-left: var(--ctp-mauve);--transparent-text: var(--ctp-overlay1);--transparent-bg: var(--ctp-surface0);--light-transparent-bg: var(--ctp-surface1);--input-color: var(--ctp-text);--accent-primary: var(--ctp-mauve);--accent-secondary: var(--ctp-teal);--accent-tertiary: var(--ctp-peach);--accent-success: var(--ctp-green)}@media print{*{background:rgba(0,0,0,0) !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}body{font-size:12pt;line-height:1.5;margin:0;padding:0}.container{max-width:100%;padding:0}.navbar,.footer,.search-overlay,.mobile-menu-overlay,.scroll-to-top,.suggested,.related-articles,.toc,.bio-social,.hero-meta,.home-section,.view-all-link,.speaking-badge,.skip-link{display:none !important}h1{font-size:24pt}h2{font-size:18pt;padding:0 !important}h3{font-size:14pt}h1,h2,h3,h4{page-break-after:avoid;orphans:3;widows:3}p,li{orphans:3;widows:3}.article-post a[href]::after{content:" (" attr(href) ")";font-size:.8em;font-weight:normal;word-break:break-all}.article-post a[href^="#"]::after,.article-post a[href^=javascript]::after{content:""}img{max-width:100% !important;page-break-inside:avoid}pre{border:1px solid #ccc;page-break-inside:avoid;white-space:pre-wrap;word-wrap:break-word}code{font-size:10pt}blockquote{border-left:3px solid #000;margin-left:0;padding-left:1rem}table{border-collapse:collapse}th,td{border:1px solid #ccc;padding:.5rem}article{page-break-before:avoid}main{margin-top:0 !important}}