html{font-size:17px;-webkit-font-smoothing:antialiased}:root{--font-size-base: 1em;--font-size-small: .933em;--font-family-mono: monospace;--font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;--font-family-primary: Georgia, serif, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", sans-serif;--spacing-base: 1.6em;--spacing-xs: calc(var(--spacing-base) * .25);--spacing-sm: calc(var(--spacing-base) * .5);--spacing-md: var(--spacing-base);--spacing-lg: calc(var(--spacing-base) * 2);color-scheme:light dark;--color-bg-primary: light-dark(#faf9f5, #262624);--color-bg-secondary: light-dark(hsl(48 25% 92.2% / 1), hsl(60 3% 8% / 1));--color-border: light-dark(#e5decf, #4a4037);--color-text-primary: light-dark(#000, #faf5f9);--color-text-muted: light-dark(#888, #a69885);--color-selection-bg: light-dark(#e5decf, #4a4037);--color-selection-code-bg: light-dark(#e0c9a6, #5d4e3f);--container-width: 56ch;--sidebar-width: 300px;--border-radius: .75rem;--gap-base: 1em;--gap-small: .5em;--code-font-size: 13px;--code-font-size-mobile: 12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media screen and (min-width:1600px){:root{--container-width: 60ch}}.language-switcher{margin-left:auto}.language-switcher .lang-link{color:var(--color-text-muted);text-decoration:none;border-bottom:1px dotted var(--color-text-muted);font-size:var(--font-size-small);transition:color .2s ease,border-bottom-color .2s ease;white-space:nowrap}.language-switcher .lang-link:hover{color:var(--color-text-primary);border-bottom-color:var(--color-text-primary)}.header-wrapper{display:flex;justify-content:space-between;align-items:center;width:100%}.header-nav{flex:1}*{margin:0;padding:0;font:inherit;color:inherit;box-sizing:border-box}hr{border:none;margin:var(--spacing-md) 0;height:1px;background-color:var(--color-border)}::selection{background:var(--color-selection-bg);color:var(--color-text-primary)}body{font:var(--font-size-base) / var(--spacing-base) var(--font-family-primary);background:var(--color-bg-primary);color:var(--color-text-primary);min-height:100vh;transition:background-color .3s ease,color .3s ease;overflow-x:hidden}h2{counter-increment:h2;counter-reset:h3}h3{counter-increment:h3;counter-reset:h4}h4{counter-increment:h4;counter-reset:h5}h5{counter-increment:h5}h2:before{content:counter(h2) ". "}h3:before{content:counter(h2) "." counter(h3) ". "}h4:before{content:counter(h2) "." counter(h3) "." counter(h4) ". "}h5:before{content:counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". "}h2.year-heading{counter-increment:none}h2.year-heading:before{content:none}h1,h2,h3,h4,h5{margin:var(--spacing-base) 0;font-weight:700;color:var(--color-text-primary);scroll-margin-top:var(--spacing-lg)}p,pre{margin:var(--spacing-base) 0}a{text-decoration:none;border-bottom:1px dotted;color:var(--color-text-primary)}strong{font-weight:700}em{font-style:italic;color:var(--color-text-primary)}time{color:var(--color-text-muted);display:block;margin-bottom:var(--spacing-sm);font-size:var(--font-size-small)}.main-content>time:first-child{margin-top:0;margin-bottom:var(--spacing-sm)}ul{list-style-type:disc;margin-left:2rem}ol{list-style-type:decimal;margin-left:2rem}.site-container{display:grid;grid-template-rows:auto 1fr auto;min-height:100vh;max-width:calc(var(--container-width) + 2 * var(--sidebar-width) + 4 * var(--spacing-lg));margin:0 auto;padding:var(--spacing-lg) 0;gap:var(--spacing-lg)}.content-wrapper{display:grid;grid-template-columns:var(--sidebar-width) var(--container-width) var(--sidebar-width);gap:var(--spacing-lg);align-items:start;justify-content:center}.main-content{grid-column:2;min-width:0}.sidebar-right{grid-column:3;position:sticky;top:var(--spacing-lg);height:fit-content}header,footer{justify-self:center;width:100%;max-width:var(--container-width)}pre{background:var(--color-bg-secondary);padding:var(--spacing-sm);border-radius:var(--border-radius);white-space:pre;word-wrap:break-word;overflow-x:auto;max-width:100%;font-size:var(--code-font-size);font-family:var(--font-family-mono);position:relative;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}pre code{color:var(--color-text-primary)}@media(min-width:690px){pre::-webkit-scrollbar{height:8px}pre::-webkit-scrollbar-track{background:transparent;margin-left:8px;margin-right:8px}pre::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:4px;border:2px solid var(--color-bg-secondary)}pre::-webkit-scrollbar-thumb:hover{background-color:var(--color-text-muted)}}pre ::selection,code::selection,code *::selection{background:var(--color-selection-code-bg);color:var(--color-text-primary)}p>code{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius);white-space:pre-wrap;word-wrap:break-word;padding:2px 4px;font-size:var(--code-font-size);font-family:var(--font-family-mono)}.code-wrapper{position:relative;overflow:visible;margin-bottom:1em}.code-wrapper pre{overflow-x:auto;position:static;transition:max-height .3s ease}.code-wrapper-collapsed:after{content:"";position:absolute;bottom:0;left:0;right:15px;height:60px;background:linear-gradient(to bottom,transparent,var(--color-bg-secondary))!important;pointer-events:none;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);z-index:1}.copy-btn{position:absolute;top:8px;right:8px;width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:6px;cursor:pointer;user-select:none;transition:all .2s ease;color:var(--color-text-muted);z-index:2;box-shadow:none}.code-wrapper-single .copy-btn{top:50%;transform:translateY(-50%)}.copy-btn:hover{background:var(--color-bg-secondary);color:var(--color-text-primary);border-color:var(--color-text-muted)}.copy-btn svg{width:14px;height:14px}.code-toggle-btn{position:absolute;top:8px;right:44px;width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:6px;cursor:pointer;user-select:none;transition:all .2s ease;color:var(--color-text-muted);z-index:2;box-shadow:none}.code-toggle-btn:hover{background:var(--color-bg-secondary);color:var(--color-text-primary);border-color:var(--color-text-muted)}.code-toggle-btn svg{width:14px;height:14px}table{width:100%;margin:var(--spacing-base) 0;border-collapse:collapse}th{font-weight:700;text-align:center;border-bottom:2px solid var(--color-border);padding:var(--spacing-sm);color:var(--color-text-primary)}td{padding:var(--spacing-sm);border-bottom:1px solid var(--color-border);color:var(--color-text-primary)}img{display:block;max-width:100%;height:auto;margin:var(--spacing-base) auto;border-radius:var(--border-radius)}figure{margin:var(--spacing-base) 0;text-align:center;display:block!important}figure img{margin:0 auto;display:block}figcaption{color:var(--color-text-muted);font-size:var(--font-size-small);margin-top:calc(var(--spacing-base) / 2);display:block!important;visibility:visible!important;opacity:1!important}.mermaid{background:transparent!important}.mermaid svg{background:transparent!important;background-color:transparent!important}.mermaid svg .background,.mermaid svg rect.background{fill:transparent!important}blockquote{margin:var(--spacing-base) 0;padding:var(--spacing-sm) var(--spacing-base);background:var(--color-bg-secondary);color:var(--color-text-primary);border-radius:var(--border-radius);font-family:sans-serif}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}footer{padding:var(--spacing-lg) 0;text-align:center;color:var(--color-text-muted)}footer p{margin-bottom:0}.no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.no-scrollbar::-webkit-scrollbar{display:none}.list-unstyled{list-style:none;margin-left:0}.text-muted{color:var(--color-text-muted)}.no-underline{text-decoration:none;border-bottom:none}.widget{background:var(--color-bg-secondary);border-radius:var(--border-radius);padding:var(--spacing-md);margin-bottom:var(--spacing-md)}.widget-title{font-weight:700;margin-bottom:var(--spacing-sm);color:var(--color-text-primary);font-size:var(--font-size-small);text-transform:uppercase;letter-spacing:.05em}.widget-list{margin:0;padding-left:1.25em;list-style:disc}.widget-list li{margin-bottom:var(--spacing-xs);line-height:1.4}.widget-list li::marker{color:var(--color-text-muted);opacity:.7}.widget-list a{color:var(--color-text-primary);text-decoration:none;border-bottom:1px dotted var(--color-text-muted);transition:color .2s ease,border-bottom-color .2s ease}.widget-list a:hover{color:var(--color-text-primary);border-bottom-color:var(--color-text-primary)}.toc{background:var(--color-bg-secondary);border-radius:var(--border-radius);padding:var(--spacing-md);margin-bottom:var(--spacing-md)}.toc-title{font-weight:700;margin-bottom:var(--spacing-sm);color:var(--color-text-primary);font-size:var(--font-size-small);text-transform:uppercase;letter-spacing:.05em}.toc-list{list-style:none;margin:0;padding:0}.toc-list li{margin:0;padding:0;line-height:1.4}.toc-list a{display:block;padding:.25em 0;color:var(--color-text-muted);text-decoration:none;border-bottom:none;font-size:var(--font-size-small);transition:color .2s ease}.toc-list a:hover,.toc-list a.active{color:var(--color-text-primary)}.toc-list .toc-h2{padding-left:0}.toc-list .toc-h3{padding-left:1em}.toc-list .toc-h4{padding-left:2em}.toc-list .toc-h5{padding-left:3em}.toc-list .toc-h6{padding-left:4em}.toc-list{counter-reset:toc-h2}.toc-list .toc-h2{counter-increment:toc-h2;counter-reset:toc-h3}.toc-list .toc-h3{counter-increment:toc-h3;counter-reset:toc-h4}.toc-list .toc-h4{counter-increment:toc-h4;counter-reset:toc-h5}.toc-list .toc-h5{counter-increment:toc-h5}.toc-list .toc-h2 a:before{content:counter(toc-h2) ". ";color:var(--color-text-muted)}.toc-list .toc-h3 a:before{content:counter(toc-h2) "." counter(toc-h3) " ";color:var(--color-text-muted)}.toc-list .toc-h4 a:before{content:counter(toc-h2) "." counter(toc-h3) "." counter(toc-h4) " ";color:var(--color-text-muted)}.toc-list .toc-h5 a:before{content:counter(toc-h2) "." counter(toc-h3) "." counter(toc-h4) "." counter(toc-h5) " ";color:var(--color-text-muted)}.time-list ul{list-style:none;margin-left:0}.time-list li{display:grid;grid-template-columns:auto 1fr;gap:var(--gap-base);align-items:start;padding:var(--spacing-sm) 0}.terminal-nav{font-family:var(--font-family-sans);margin-top:var(--spacing-lg);padding-top:var(--spacing-base)}.terminal-nav nav ul{display:flex;list-style:none;justify-content:left;padding:0;margin:0;gap:var(--gap-base)}.terminal-nav nav ul li a,.terminal-nav .back-link{color:var(--color-text-muted);border-bottom:none;text-decoration:none}.terminal-nav .back-link{font-family:var(--font-family-mono)}.terminal-nav nav ul li a:hover,.terminal-nav .back-link:hover{color:var(--color-text-primary)}.time-list div a{color:var(--color-text-primary);text-decoration:none;border-bottom:1px dotted var(--color-text-muted);transition:color .2s ease,border-bottom-color .2s ease}.time-list div a:hover{color:var(--color-text-primary);border-bottom-color:var(--color-text-primary)}.home-feed{margin:0 0 var(--spacing-lg)}.home-waterfall-list{display:flex;flex-direction:column;gap:var(--spacing-xs);position:relative}.home-waterfall-item{padding-bottom:var(--spacing-sm)}.home-waterfall-meta{display:inline-flex;align-items:center;gap:var(--gap-small);font-size:var(--font-size-small);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:0}.home-waterfall-meta time{font-size:1em;margin-bottom:0}.home-waterfall-title:before{content:none}.home-waterfall-title a{border-bottom:1px dotted transparent}.home-waterfall-title a:hover{border-bottom-color:var(--color-text-muted)}.home-waterfall-desc{margin:0;color:var(--color-text-muted);font-size:var(--font-size-small);line-height:1.6}.home-loadmore{margin:calc(var(--spacing-lg) + var(--spacing-sm)) 0;width:100%;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-text-muted);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);font-family:var(--font-family-sans);font-weight:400;cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.home-loadmore:hover{border-color:var(--color-text-muted);background:var(--color-bg-secondary)}@media(min-width:1100px){.home-waterfall-list{column-count:2;column-gap:var(--spacing-lg)}.home-waterfall-item{break-inside:avoid;page-break-inside:avoid;padding-bottom:var(--spacing-sm);margin-bottom:var(--spacing-sm)}}@media(min-width:1501px){body.home .cover-layout{grid-template-columns:33.33vw 1fr}body.home .cover-right .sidebar-right{display:none}body.home .cover-right .main-content{width:var(--container-width);max-width:var(--container-width);margin-left:calc(33.33vw - var(--container-width) / 2)}}.terminal-nav nav ul li a.active{color:var(--color-text-primary);font-weight:700}.terminal-nav .back-nav{margin:calc(var(--spacing-base) * .5) 0}.terms-list{padding-bottom:var(--spacing-base)}.terms-list ul{list-style-type:none;margin-left:0}.terms-list ul li{display:inline-block;margin-right:.75rem;margin-bottom:.5rem}.terms-list ul li:last-child{margin-right:0}.footnotes{margin-top:var(--spacing-lg);padding-top:var(--spacing-md);font-size:var(--font-size-small)}.footnotes-title{font-size:var(--font-size-base);font-weight:700;margin-bottom:var(--spacing-md)}.footnotes ol{padding-left:1.5em;list-style-type:decimal;margin:0 0 var(--spacing-md) 0}.footnotes li{margin-bottom:var(--spacing-sm);line-height:var(--spacing-base)}.footnote-backref{margin-left:var(--spacing-sm);text-decoration:none;color:var(--color-text-muted);font-weight:700}.footnote-ref a{text-decoration:none;color:var(--color-text-primary);font-weight:700;margin:0 var(--spacing-xs)}.footnote-ref a:hover{text-decoration:underline;color:var(--color-text-primary)}sup[id^="fnref:"]{vertical-align:super;font-size:.8em;line-height:1;margin-left:var(--spacing-xs);font-weight:700}@media screen and (max-width:1366px){.content-wrapper{display:flex;flex-direction:column;width:100%;max-width:var(--container-width);gap:0;margin:0 auto}.main-content,.sidebar-left,.sidebar-right{display:block;position:static;width:100%;margin-bottom:0}.main-content{order:1}.sidebar-right{order:2}}@media(max-width:689px){html,body{overflow-x:hidden}table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}.site-container{padding-left:1.5rem;padding-right:1.5rem}.main-content{min-width:0;max-width:100%;overflow-x:hidden}.content-wrapper{max-width:100%;overflow-x:hidden}pre{max-width:100%;overflow-x:auto;overflow-y:hidden;font-size:var(--code-font-size-mobile);line-height:1.4;white-space:pre;word-wrap:break-word;contain:layout;box-sizing:border-box;margin:var(--spacing-base) 0}p>code{font-size:var(--code-font-size-mobile);word-wrap:break-word;overflow-wrap:break-word}.sidebar-right{margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important}header,footer,.terminal-nav,nav{max-width:100%;box-sizing:border-box}p,h1,h2,h3,h4,h5,h6{word-wrap:break-word;overflow-wrap:break-word}}.menu-toggle{display:none;position:fixed;top:60px;right:20px;z-index:2000;width:32px;height:32px;background:transparent;border:none;cursor:pointer;box-sizing:border-box;padding:0;transform:scale(1);transition:transform .2s ease}.menu-toggle span{display:block;position:absolute;height:2px;width:18px;background:var(--color-text-primary);border-radius:1px;left:7px;transition:all .25s ease-in-out}.menu-toggle span:nth-child(1){top:10px}.menu-toggle span:nth-child(2){top:20px}.menu-toggle:hover span{width:18px;left:7px;height:2px;background:var(--color-text-primary);border-radius:1px}.menu-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:99;opacity:0;transition:opacity .3s;pointer-events:none}body.menu-open .menu-overlay{opacity:1;pointer-events:auto}body.menu-open-with-image .menu-toggle span,body.menu-open-with-image .menu-toggle:hover span{background:#fff}.cover-layout{display:grid;grid-template-columns:20vw 1fr;min-height:100vh}.cover-left{position:sticky;top:0;height:100vh;background:var(--color-bg-secondary);display:flex;flex-direction:column}.cover-left>img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;margin:0;border-radius:0;z-index:1}.cover-site-title{position:relative;z-index:4;padding:var(--spacing-lg) var(--spacing-md) var(--spacing-sm)}@media(max-width:689px){.cover-site-title{padding:var(--spacing-lg) var(--spacing-md) var(--spacing-sm)}}.cover-site-title a{font-weight:700;font-size:1rem;text-decoration:none;border-bottom:none}.cover-left:has(>img) .cover-site-title a{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5)}.cover-site-title a:hover{opacity:.8}.cover-lang{position:relative;z-index:4;padding:0 var(--spacing-md) var(--spacing-md)}.cover-left:has(>img) .cover-lang .lang-link{color:#fffc;border-bottom-color:#ffffff80}.cover-left:has(>img) .cover-lang .lang-link:hover{color:#fff}.cover-left:has(>img) .cover-footer .terminal-nav nav ul li a,.cover-left:has(>img) .cover-footer .terminal-nav .back-link{color:#fffc}.cover-left:has(>img) .cover-footer .terminal-nav nav ul li a:hover,.cover-left:has(>img) .cover-footer .terminal-nav .back-link:hover{color:#fff}.cover-footer{position:relative;z-index:4;padding:var(--spacing-md);margin-top:auto}.cover-footer footer{padding:0;text-align:left}.cover-left:has(>img) .cover-footer,.cover-left:has(>img) .cover-footer p,.cover-left:has(>img) .cover-footer div{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5)}.cover-left:has(>img) .cover-footer a{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5)}.cover-left:has(>img) .cover-footer a:hover{opacity:.8}.cover-left>.cover-desc{margin:var(--spacing-md) 0;font-size:var(--font-size-small);color:var(--color-text-muted);line-height:1.5;padding:0 var(--spacing-md)}.article-desc{margin:0 0 var(--spacing-base) 0;font-size:var(--font-size-small);color:var(--color-text-muted);line-height:1.6}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.cover-info .terms-list{padding-bottom:0}.cover-info .terms-list ul{margin:0}.cover-right{position:relative;min-height:100vh;display:flex;align-items:flex-start}.cover-right .main-content{width:var(--container-width);max-width:var(--container-width);padding:var(--spacing-lg) 0;min-width:0;flex-shrink:0;margin-left:calc(30vw - var(--container-width) / 2)}.cover-right .sidebar-right{position:sticky;top:var(--spacing-lg);height:fit-content;width:var(--sidebar-width);flex-shrink:0;margin-left:calc(30vw - var(--container-width) / 2)}.toc-inline{display:none}.toc-desktop{display:block}@media(max-width:1500px){.cover-layout{grid-template-columns:33.33vw 1fr}.cover-left{position:sticky;top:0;height:100vh}.cover-right{display:block;padding-right:0}.toc-desktop{display:none}.toc-inline{display:block}.cover-right .main-content{margin:0 auto;width:var(--container-width);max-width:calc(100vw - 33.33vw - 2 * var(--spacing-md))}.cover-right .sidebar-right{position:static;margin:var(--spacing-lg) auto;width:var(--container-width);max-width:calc(100vw - 33.33vw - 2 * var(--spacing-md));padding:0}}@media(max-width:689px){.menu-toggle{display:flex}.menu-overlay{display:none!important}.cover-layout{display:block}.cover-left{position:fixed;top:0;left:0;width:100vw;width:calc(100vw + env(safe-area-inset-left) + env(safe-area-inset-right));height:100vh;height:calc(100vh + env(safe-area-inset-top) + env(safe-area-inset-bottom));z-index:100;transform:translate(-100%);transition:transform .3s ease}.cover-left:not(:has(img)){background:var(--color-bg-secondary)}.cover-left:not(:has(img))>img{display:none}.cover-left:not(:has(img)) .cover-footer{display:block}.cover-left:has(>img)>img{position:absolute;top:0;left:0;width:100%;height:100vh;height:calc(100vh + env(safe-area-inset-top) + env(safe-area-inset-bottom));object-fit:cover;object-position:center;margin:0;border-radius:0;z-index:1}.cover-left:has(>img) .cover-site-title a,.cover-left:has(>img) .cover-lang .lang-link{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5)}.cover-left:has(>img) .cover-site-title a:hover,.cover-left:has(>img) .cover-lang .lang-link:hover{color:#fffc}.cover-left:has(>img) .cover-footer .terminal-nav nav ul li a,.cover-left:has(>img) .cover-footer .terminal-nav .back-link{color:#fffc}.cover-left:has(>img) .cover-footer .terminal-nav nav ul li a:hover,.cover-left:has(>img) .cover-footer .terminal-nav .back-link:hover{color:#fff}body.menu-open .cover-left{transform:translate(0)}body.menu-open .menu-overlay{opacity:1;pointer-events:auto}body.menu-open .menu-toggle span:nth-child(1){top:15px;width:18px;left:7px;height:2px;background:var(--color-text-primary);transform:rotate(45deg)}body.menu-open .menu-toggle span:nth-child(2){top:15px;width:18px;left:7px;height:2px;background:var(--color-text-primary);transform:rotate(-45deg)}body.menu-open .menu-toggle:hover span{width:18px;left:7px;height:2px;background:var(--color-text-primary);border-radius:1px}body.menu-open-with-image .menu-toggle span:nth-child(1),body.menu-open-with-image .menu-toggle span:nth-child(2){background:#fff;box-shadow:0 0 2px #00000080}body.menu-open-with-image .menu-toggle:hover span:nth-child(1),body.menu-open-with-image .menu-toggle:hover span:nth-child(2){background:#fffc}.toc-desktop{display:none}.cover-right{display:block;width:100vw;max-width:100vw;box-sizing:border-box}.cover-right .main-content{margin:0;padding:var(--spacing-lg) var(--spacing-sm);padding-top:calc(var(--spacing-lg) + 40px);width:100%;max-width:100vw;box-sizing:border-box}.cover-right .sidebar-right{position:static;margin:0;padding:0;width:100%;max-width:100vw;box-sizing:border-box}.cover-right .sidebar-right>*{margin-left:var(--spacing-sm);margin-right:var(--spacing-sm)}.cover-right .sidebar-right .toc,.cover-right .sidebar-right .widget{margin:0 var(--spacing-sm) var(--spacing-md) var(--spacing-sm)}}.stats{color:var(--color-text-muted);font-size:var(--font-size-small)}.build-info{color:var(--color-text-muted);font-size:var(--font-size-small);display:flex;align-items:center;gap:var(--spacing-sm)}.build-info svg{flex-shrink:0}.git-commit{color:var(--color-text-muted);font-size:var(--font-size-small);display:flex;align-items:center;gap:0}.git-commit svg{flex-shrink:0}.podcast-player{position:relative;pointer-events:auto;background:var(--color-bg-secondary);border-top:1px solid var(--color-border);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 -4px 20px #0000001a;transition:all .3s cubic-bezier(.4,0,.2,1);--player-pad-y: 12px;--player-pad-x: 20px;--player-cover-size: 40px}.podcast-player.minimized{position:fixed;bottom:var(--player-pad-y);right:var(--player-pad-x);width:var(--player-cover-size);height:var(--player-cover-size);border-radius:50%;border:none;padding:0;box-shadow:0 2px 12px #00000026!important;display:flex;align-items:center;justify-content:center;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.podcast-player.minimized .podcast-player-mini{padding:0;gap:0}.podcast-player.minimized .player-cover{width:var(--player-cover-size);height:var(--player-cover-size);box-shadow:none!important;transform:none!important}.podcast-player.minimized .player-cover:hover{box-shadow:none!important;transform:none!important}.podcast-player.minimized .play-btn,.podcast-player.minimized .progress-wrapper,.podcast-player.minimized .player-controls{display:none}.podcast-player.minimized .playlist{display:none!important}.podcast-player.minimized .podcast-player-mini:before{display:none}.podcast-player.minimized .podcast-player-mini:after{display:none}.podcast-player.minimized .progress-bar-top{display:none}.player-cover{width:var(--player-cover-size);height:var(--player-cover-size);border-radius:50%;overflow:hidden;flex-shrink:0;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;position:relative;order:999;z-index:3}.player-cover:hover{transform:scale(1.05);box-shadow:0 2px 8px #0003}.player-cover:focus-visible{outline:2px solid var(--color-text-primary);outline-offset:2px}.player-cover img{width:100%;height:100%;object-fit:cover;margin:0;display:block;animation:rotate var(--rotation-duration, 20s) linear infinite;animation-play-state:paused}.player-cover-time{display:inline-flex;position:absolute;inset:0;align-items:center;justify-content:center;font-size:.65rem;line-height:1;font-family:var(--font-family-mono);color:#fff;font-weight:600;text-shadow:0 1px 6px rgba(0,0,0,.55);pointer-events:none}.podcast-player.playing .player-cover img{animation-play-state:running}.podcast-player.buffering .player-cover img{animation-play-state:paused}@keyframes rotate{0%{transform:rotate(var(--cover-rotation, 0deg))}to{transform:rotate(calc(var(--cover-rotation, 0deg) + 360deg))}}.player-cover-wave{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:2px;pointer-events:none;background:var(--color-text-primary);border-radius:50%;opacity:0;transition:opacity .3s ease}.podcast-player.playing .player-cover-wave{opacity:.25}.player-cover-wave span{display:inline-block;width:3px;background:var(--color-bg-primary);border-radius:2px;animation:wave-scale .8s ease-in-out infinite}.player-cover-wave span:nth-child(1){animation-delay:0s;height:6px}.player-cover-wave span:nth-child(2){animation-delay:.1s;height:10px}.player-cover-wave span:nth-child(3){animation-delay:.2s;height:14px}.player-cover-wave span:nth-child(4){animation-delay:.1s;height:10px}.player-cover-wave span:nth-child(5){animation-delay:0s;height:6px}@keyframes wave-scale{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}.podcast-player.minimized.playing .player-cover-wave{opacity:.25}.podcast-player.minimized .player-cover-wave{background:transparent}.podcast-player.expanded .playlist{transform:translateY(0);opacity:1}.podcast-player-mini{display:flex;align-items:center;justify-content:space-between;padding:var(--player-pad-y) var(--player-pad-x);gap:16px;position:relative;z-index:2}.podcast-player-mini:before{content:"";position:absolute;inset:0;width:calc(var(--progress-percent, 0) * 1%);max-width:100%;background:var(--color-border);opacity:.6;pointer-events:none;z-index:0}.progress-wrapper{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;pointer-events:none}.play-btn{position:relative;z-index:3;flex-shrink:0;width:40px;height:40px;border-radius:50%;border:none;background:var(--color-text-primary);color:var(--color-bg-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s ease,opacity .2s ease;pointer-events:auto}.play-btn:hover{transform:scale(1.05);opacity:.9}.play-btn:active{transform:scale(.95)}.track-info{cursor:default;padding:2px 4px;border-radius:var(--border-radius);transition:background-color .2s ease;margin-bottom:2px;display:flex;align-items:baseline;justify-content:space-between;gap:8px}.track-info:hover{background-color:transparent}.track-title{display:block;font-size:var(--font-size-small);font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;flex:1 1 0%;min-width:0}.track-title-text{display:inline-block;padding-right:12px;will-change:transform}@keyframes track-title-marquee{0%,10%{transform:translate(0)}90%,to{transform:translate(calc(-1 * var(--scroll-distance, 0px)))}}.track-time{font-size:.75rem;color:var(--color-text-muted);line-height:1.2;font-family:var(--font-family-mono)}.track-time-prefix{display:none}.track-time-remaining{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.track-time-full,.progress-bar-top{display:none}.player-controls{position:relative;z-index:3;display:flex;align-items:center;gap:8px;flex-shrink:0}.rate-btn{padding:4px 8px;width:64px;min-width:64px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--border-radius);background:transparent;color:var(--color-text-muted);font-size:.75rem;font-family:var(--font-family-mono);font-variant-numeric:tabular-nums;cursor:pointer;transition:all .2s ease}.rate-btn:hover{color:var(--color-text-primary);background:var(--color-border)}.rate-btn:active{transform:scale(.95)}.expand-btn,.close-btn{width:40px;height:40px;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius);transition:all .2s ease}.expand-btn svg,.close-btn svg{width:20px;height:20px}.expand-btn:hover,.close-btn:hover{background:var(--color-border);color:var(--color-text-primary)}.expand-btn:active,.close-btn:active{transform:scale(.95)}.progress-container{position:absolute;inset:0;cursor:pointer;z-index:2}.progress-bar{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;background:transparent;-webkit-appearance:none;appearance:none;border:none;cursor:pointer}.progress-bar::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:0;height:0}.progress-bar::-moz-range-thumb{width:0;height:0;border:none}.progress-bar::-webkit-slider-runnable-track{background:transparent}.progress-bar::-moz-range-track{background:transparent}.podcast-player.scrubbing .player-cover,.podcast-player.scrubbing .player-controls,.podcast-player.scrubbing .track-info,.podcast-player.scrubbing .track-time,.podcast-player.scrubbing .play-btn{visibility:hidden;opacity:0;pointer-events:none}.podcast-player.scrubbing .playlist{display:none!important}.podcast-player.scrubbing .progress-container{inset:0}.podcast-player.scrubbing .progress-bar{height:100%}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.playlist{position:absolute;bottom:100%;left:0;right:0;max-height:320px;overflow-y:auto;padding:16px 20px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-bottom:none;box-shadow:0 -4px 20px #00000026;transform:translateY(100%);opacity:0;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .25s ease;z-index:2}.podcast-player:not(.expanded) .playlist{transform:translateY(100%);opacity:0;pointer-events:none}.playlist::-webkit-scrollbar{width:6px}.playlist::-webkit-scrollbar-track{background:transparent}.playlist::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.playlist::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.playlist-header{padding:12px 0;font-size:var(--font-size-small);font-weight:500;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.playlist-items{list-style:none;margin:0;padding:0}.playlist-item{position:relative;display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--color-border);transition:background-color .2s ease;overflow:hidden;margin-left:-20px;margin-right:-20px}.playlist-item:before{content:"";position:absolute;inset:0 -6px 0 0;width:calc((var(--progress-percent, 0) / 100) * (100% + 6px));background:var(--color-border);opacity:.5;pointer-events:none;z-index:0}.playlist-item:last-child{border-bottom:none}.playlist-item.active{background:var(--color-bg-primary)}.playlist-item .item-play-btn,.playlist-item .item-title,.playlist-item .item-date{position:relative;z-index:1}.item-play-btn{flex-shrink:0;width:28px;height:28px;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s ease}.item-play-btn:hover{background:var(--color-border);color:var(--color-text-primary)}.item-play-btn:active{transform:scale(.9)}.playlist-item.active .item-play-btn{color:var(--color-text-primary)}.item-title{flex:1;font-size:var(--font-size-small);color:var(--color-text-primary);text-decoration:none;border-bottom:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s ease}.item-title:hover{color:var(--color-text-muted)}.item-date{flex-shrink:0;font-size:.75rem;color:var(--color-text-muted);font-family:var(--font-family-mono)}@media(max-width:689px){.podcast-player{--player-pad-y: 12px;--player-pad-x: 18px;--player-cover-size: 36px}.podcast-player-mini{padding:var(--player-pad-y) var(--player-pad-x);gap:8px}.podcast-player:before{height:64px}.play-btn{width:36px;height:36px}.track-title{font-size:.9rem;flex:1 1 auto;min-width:0}.rate-btn{font-size:.7rem;padding:3px 5px;width:58px;min-width:58px}.expand-btn,.close-btn{width:36px;height:36px}.track-info{display:block;gap:0}.track-time-full{display:none}.player-controls{gap:4px}.player-cover-time{align-items:center;justify-content:center}.track-time-prefix{display:none}.podcast-player-mini:after{display:none}.podcast-player-mini:before{top:0;bottom:0;height:auto;background:var(--color-border);opacity:.6;z-index:0}.progress-container{inset:0;height:auto;z-index:2;pointer-events:auto}.progress-bar{height:100%}.progress-bar-top{display:none}.progress-bar::-webkit-slider-runnable-track{background:transparent}.progress-bar::-moz-range-track{background:transparent}.progress-bar::-webkit-slider-thumb{width:0;height:0}.progress-bar::-moz-range-thumb{width:0;height:0}.track-title-text.scrolling{animation:track-title-marquee var(--scroll-duration, 12s) linear infinite}.playlist{max-height:280px;padding:12px 16px}.playlist-item{padding:10px 16px;margin-left:-16px;margin-right:-16px}.playlist-item:before{right:-6px;width:calc(min(100,var(--progress-percent, 0))*.01*(100% + 6px))}}@media(prefers-reduced-motion:reduce){.track-title-text.scrolling{animation:none}}.podcast-play-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text-primary);font-size:var(--font-size-small);text-decoration:none;cursor:pointer;transition:all .2s ease;margin:var(--spacing-base) 0}.podcast-play-button:hover{background:var(--color-border);border-color:var(--color-text-muted)}.podcast-play-button svg{width:16px;height:16px;flex-shrink:0}.podcast-wave{display:inline-flex;align-items:center;gap:2px;margin-left:8px;height:12px}.podcast-wave span{display:inline-block;width:2px;background:var(--color-text-primary);border-radius:1px;animation:wave .8s ease-in-out infinite}.podcast-wave span:nth-child(1){animation-delay:0s}.podcast-wave span:nth-child(2){animation-delay:.1s}.podcast-wave span:nth-child(3){animation-delay:.2s}.podcast-wave span:nth-child(4){animation-delay:.1s}.podcast-wave span:nth-child(5){animation-delay:0s}@keyframes wave{0%,to{height:4px}50%{height:12px}}.player-error{display:flex;align-items:center;gap:12px;padding:12px 20px;background:#ef44441a;border-top:1px solid rgba(239,68,68,.3);animation:slide-down .3s ease}@keyframes slide-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.error-message{flex:1;font-size:var(--font-size-small);color:var(--color-error, #ef4444)}.error-retry-btn,.error-dismiss-btn{flex-shrink:0;padding:6px 12px;border:none;border-radius:var(--border-radius);font-size:var(--font-size-small);cursor:pointer;transition:all .2s ease}.error-retry-btn{background:#ef444433;color:#ef4444}.error-retry-btn:hover{background:#ef44444d}.error-dismiss-btn{background:transparent;color:var(--color-text-muted);width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;font-size:18px;line-height:1}.error-dismiss-btn:hover{background:var(--color-border);color:var(--color-text-primary)}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
