.section-title-wrapper{display:flex;align-items:baseline;gap:.5rem;margin:0;padding:0}.section-square{width:.5rem;height:.5rem;background-color:var(--primary-color);flex-shrink:0;align-self:baseline}.section-link{font-size:.875rem;color:var(--link-color);text-decoration:none}.section-link:hover{text-decoration:underline}.social-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem}.social-link{display:inline-flex;align-items:center;gap:1ch;padding:var(--btn-padding);background-color:var(--bg-color);border:1px solid var(--border-color);color:var(--text-color);text-decoration:none;font-size:.85rem;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.social-link:visited{color:var(--text-color)}.social-link-text{font-family:var(--font-family-mono);font-size:.9rem;font-weight:400}.social-link .social-icon{width:.9rem;height:.9rem}.social-link:hover{background-color:color-mix(in srgb,var(--primary-color) 8%,transparent);border-color:var(--primary-color);color:var(--primary-color);text-decoration:none}.collapsible-stats-header{display:flex;align-items:baseline;justify-content:space-between;width:100%;padding:.5rem 0;background:0 0;border:none;cursor:pointer;font-family:var(--font-family);font-size:1rem;font-weight:var(--font-weight-bold);color:var(--text-color);text-align:left;transition:color .2s ease}.collapsible-stats-header:hover{color:var(--primary-color)}.collapsible-stats-header span{margin-right:.5rem}.post-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.post-list li{width:100%;border:1px solid var(--border-color);background-color:transparent;transition:background-color .2s ease,border-color .2s ease;cursor:pointer}.post-list li:hover{background-color:color-mix(in srgb,var(--primary-color) 8%,transparent);border-color:var(--primary-color)}.post-list li a{display:flex;align-items:baseline;gap:clamp(2rem,4vw,2.5rem);padding:.75rem 1rem;text-decoration:none;color:inherit;height:100%}@media (max-width:768px){.post-list li a{flex-direction:column;align-items:stretch;gap:clamp(.25rem,1vw,.5rem);height:auto}.post-list-date{white-space:normal}}.post-list-date{font-family:var(--font-family-mono);font-size:var(--font-mono-sm);color:var(--text-color);opacity:.7;white-space:nowrap;flex-shrink:0;font-weight:400}.post-list a span:last-child{font-weight:var(--font-weight-normal);line-height:1.5;color:var(--text-color);flex:1;min-width:0}.post-list-year{font-weight:var(--font-weight-bold);color:var(--header-color);margin:0 0 .5em 0}.post-list-gap{font-size:.9rem;color:var(--text-color);margin:.5em 0 1.5em 0;text-align:right}.tag-directory{margin-bottom:1.25rem}.tag-letter{font-weight:var(--font-weight-bold);color:var(--header-color);margin:1em 0 .25em 0}.tag-letter-list{list-style:none;padding:0;margin:0}.tag-letter-list li{margin-bottom:.25rem;font-size:.9rem}.tag-letter-list a{color:var(--link-color);text-decoration:none}.tag-letter-list a:hover{text-decoration:underline}.see-all-posts{text-align:right;margin-top:.5em;margin-left:2rem;margin-right:2rem}.see-all-posts a{text-decoration:none}.see-all-posts a:hover{text-decoration:underline}.post ul li::marker{color:var(--bullet-color)}.post p{text-align:justify}@media (max-width:768px){.post p{text-align:left}}.post h1{margin-bottom:.25em}.post-byline{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:.25em;font-size:.9rem;font-family:var(--font-family-mono);color:var(--text-color);opacity:.6;font-weight:var(--font-weight-normal);transition:opacity .2s ease}.post-byline:hover{opacity:.9}.post-byline-info{display:flex;flex-wrap:wrap;gap:.25em;align-items:baseline}.post-byline-info>*{white-space:nowrap}.post-sep{font-size:1em;vertical-align:center;alignment-baseline:baseline;baseline-shift:center;baseline-source:auto;padding:0 .4em;color:var(--bullet-color)}.post-tags{margin:.5em 0 .25em;font-size:.8rem;font-family:var(--font-family-mono);display:flex;flex-wrap:wrap;gap:1ch}.post-tag{color:var(--primary-color);text-decoration:none}.post-tag:visited{color:var(--primary-color)}.post-tag:hover{text-decoration:underline}.post-footer{margin-top:0;padding:.25em 0 3em 0;font-size:.95rem;color:var(--text-color)}.post-footer p{margin:0 0 .5em}.reply-link{display:inline-block;padding:var(--btn-padding);color:var(--text-color);text-decoration:none;border:1px solid var(--border-color);font-family:var(--font-family-mono);font-size:var(--font-mono-sm);line-height:1;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.reply-link svg{vertical-align:middle;margin-right:.375rem}.reply-link:hover{background-color:color-mix(in srgb,var(--primary-color) 8%,transparent);border-color:var(--primary-color);color:var(--primary-color);text-decoration:none}.reply-text{font-family:var(--font-family-mono);font-size:var(--font-mono-sm);letter-spacing:.02em;font-weight:400}.post-back-link{font-size:.85rem;margin:1em 0 .75em 0}.post-back-link a{color:var(--link-color);text-decoration:none}.post-back-link a:hover{text-decoration:underline}.post-likes{position:relative;display:flex;justify-content:center;text-align:center}.post-footer .likes-button{display:inline-block;padding:var(--btn-padding);background:0 0;border:1px solid var(--border-color);color:var(--text-color);cursor:pointer;font-family:var(--font-family-mono);font-size:var(--font-mono-sm);font-weight:400;letter-spacing:.02em;line-height:1;opacity:1;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.post-footer .likes-button:hover{background-color:color-mix(in srgb,var(--primary-color) 8%,transparent);border-color:var(--primary-color);color:var(--primary-color)}.post-footer .likes-button:disabled{opacity:1;cursor:not-allowed}.post-footer .likes-icon{width:.9375rem;height:.9375rem;margin-right:.375rem;vertical-align:middle;transition:fill .15s ease-in,color .15s ease-in;color:var(--text-color)}.post-footer .likes-icon:active{color:var(--primary-color);fill:var(--primary-color)}.post-footer .likes-label{font-family:var(--font-family-mono);font-size:var(--font-mono-sm);font-weight:400;letter-spacing:.02em}.likes-button{background:0 0;border:none;color:var(--text-color);cursor:pointer;opacity:.8;transition:transform .2s ease;font-family:inherit;font-size:.9rem}.likes-button:hover{opacity:1}.likes-button:disabled{opacity:1;cursor:not-allowed}.likes-icon{width:.9375rem;height:.9375rem;margin-right:.25rem;vertical-align:middle;transition:fill .15s ease-in,color .15s ease-in;color:var(--text-color)}.likes-icon:active{color:var(--primary-color);fill:var(--primary-color)}.likes-icon.liked{fill:var(--text-color)}.likes-button.max-liked .likes-icon{color:var(--primary-color);fill:var(--primary-color)}.likes-button.max-liked .likes-count{color:var(--primary-color)}.likes-count{font-family:var(--font-family-mono);font-size:var(--font-mono-sm);font-weight:400;min-width:3ch;text-align:center}.particles-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}.likes-particle{position:absolute;pointer-events:none;color:var(--primary-color);animation:particle-float .8s forwards;will-change:transform,opacity}.likes-particle svg{width:100%;height:100%}.confetti{position:absolute;pointer-events:none;animation:confetti-fall .8s forwards;will-change:transform,opacity;border-radius:2px}.heading-anchor{color:inherit;font-weight:inherit;text-decoration:none;position:relative}.heading-anchor:visited{color:inherit}.heading-anchor:hover{text-decoration:none}.heading-anchor::before{content:"#";position:absolute;right:100%;padding-right:.25em;opacity:0;transition:opacity .15s ease;color:var(--header-color)}h1:hover .heading-anchor::before,h2:hover .heading-anchor::before,h3:hover .heading-anchor::before,h4:hover .heading-anchor::before,h5:hover .heading-anchor::before,h6:hover .heading-anchor::before{opacity:1}.post img{max-width:100%;height:auto;display:block;margin:2em 0;background-color:var(--code-bg);content-visibility:auto}.post img[loading=lazy]{background:linear-gradient(90deg,var(--code-bg) 25%,transparent 25%,transparent 50%,var(--code-bg) 50%,var(--code-bg) 75%,transparent 75%,transparent);background-size:20px 20px;background-color:var(--code-bg)}.post picture{display:block}.post picture img{margin:2em 0}.post figure{margin:2em 0}.post figure img{margin:0}.post figcaption{text-align:center;font-size:.85rem;color:var(--text-color);opacity:.7;margin-top:.5em;line-height:1.4}code,pre{font-family:var(--font-family-mono);font-weight:400}pre{font-size:var(--font-mono-base);background-color:var(--code-bg);padding:.8rem 1rem;overflow-x:auto;line-height:1.4;margin:0 0 1em}code{font-size:var(--font-mono-base);background-color:var(--code-bg);padding:.04em .3em}pre code{background-color:transparent;padding:0}.pagination{display:flex;justify-content:center;align-items:center;margin:1.5rem 0;gap:1.5rem;flex-wrap:wrap}.pagination a{font-weight:var(--font-weight-normal);color:var(--text-color);transition:background-color .2s ease,color .2s ease,border-color .2s ease;background:0 0;border:1px solid var(--border-color);padding:.35rem clamp(.875rem,2vw,1rem);cursor:pointer;display:inline-block;font-family:var(--font-family);font-size:.875rem;text-decoration:none}.pagination a:hover{background-color:color-mix(in srgb,var(--primary-color) 8%,transparent);border-color:var(--primary-color);color:var(--primary-color)}.pagination a:active{opacity:.9}.pagination a[disabled]{opacity:.4;cursor:not-allowed;pointer-events:none}.pagination span{font-weight:var(--font-weight-normal);font-size:.9rem;opacity:.7}blockquote{border-left:.25rem solid var(--primary-color);margin:0 0 1em;padding:0 0 0 1.5em;color:var(--text-color);opacity:.85;font-style:italic}details{margin:0 0 1em}details summary{cursor:pointer;margin-bottom:0;color:var(--text-color);opacity:.7;font-weight:var(--font-weight-normal);transition:opacity .15s ease}details[open] summary{margin-bottom:.75em}details summary:hover{opacity:1}.alert{margin:0;padding:1em 1.5em;border:1px solid;border-left:.25rem solid;border-bottom:.25rem solid;font-style:normal}.alert-legend{font-weight:var(--font-weight-bold);margin-bottom:.5em;font-size:.95rem;text-transform:uppercase}.alert-icon{vertical-align:text-bottom;margin-right:.25rem}.alert-content{font-style:normal}.alert-content p{margin:.5em 0}.alert-content p:first-child{margin-top:0}.alert-content p:last-child{margin-bottom:0}.alert-tldr{background-color:color-mix(in srgb,var(--alert-tldr) 12%,transparent);border-color:var(--alert-tldr);color:var(--text-color)}.alert-tldr .alert-legend{color:var(--alert-tldr)}.alert-tldr code{background-color:color-mix(in srgb,var(--alert-tldr) 15%,transparent)}.alert-note{background-color:color-mix(in srgb,var(--alert-note) 12%,transparent);border-color:var(--alert-note);color:var(--text-color)}.alert-note .alert-legend{color:var(--alert-note)}.alert-note code{background-color:color-mix(in srgb,var(--alert-note) 15%,transparent)}.alert-primary{background-color:color-mix(in srgb,var(--primary-color) 12%,transparent);border-color:var(--primary-color);color:var(--text-color)}.alert-primary .alert-legend{color:var(--primary-color)}.alert-primary code{background-color:color-mix(in srgb,var(--primary-color) 15%,transparent)}table{border-collapse:collapse;width:100%;margin:0 0 1em;font-size:.95rem}td,th{border:1px solid var(--border-color);padding:.75rem;text-align:left}th{background-color:var(--code-bg);font-weight:var(--font-weight-bold)}b,strong{font-weight:var(--font-weight-bold)}em{font-style:italic}.page-title{font-family:var(--font-family);font-size:2rem;font-weight:var(--font-weight-bold);color:var(--header-color);text-align:center;margin:0;max-width:90rem}.links-search-container{margin:1.5em auto 2em auto;display:flex;justify-content:center}.links-search-input{width:100%;max-width:90rem;padding:.75rem 1rem;font-family:var(--font-family-mono);font-size:var(--font-mono-base);font-weight:400;border:1px solid var(--border-color);background-color:var(--bg-color);color:var(--text-color);transition:background-color .2s ease,border-color .2s ease,color .2s ease}.links-search-input:focus{outline:0;border-color:var(--primary-color);background-color:color-mix(in srgb,var(--primary-color) 3%,transparent)}.links-search-input::placeholder{color:var(--text-color);opacity:.5}.links-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;list-style:none;padding:0;margin:1.25rem auto;max-width:90rem;width:100%}.links-grid li{margin-bottom:0;width:100%;border:1px solid var(--border-color);background-color:transparent;transition:background-color .2s ease,border-color .2s ease;cursor:pointer;display:flex;align-items:center;justify-content:center;min-height:4rem}.links-grid li:hover{background-color:color-mix(in srgb,var(--primary-color) 8%,transparent);border-color:var(--primary-color)}@keyframes blink-animation{0%,49%{border-color:var(--border-color);background-color:transparent}100%,50%{border-color:var(--primary-color);background-color:color-mix(in srgb,var(--primary-color) 8%,transparent)}}.links-grid li.blinking,.post-list li.blinking{animation:blink-animation .2s step-start infinite}@media (max-width:1024px){.links-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.links-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.links-grid{grid-template-columns:repeat(1,1fr)}}.links-grid-item{display:flex;align-items:center;justify-content:center;padding:.75rem 1rem;text-decoration:none;color:inherit;width:100%;height:100%;font-family:var(--font-family-mono);font-size:var(--font-mono-base);font-weight:400}.links-grid-item:active,.links-grid-item:focus,.links-grid-item:hover{text-decoration:none}.links-path{font-weight:400;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;white-space:normal;max-width:100%;font-family:var(--font-family-mono);font-size:var(--font-mono-base)}.links-path code{background-color:transparent;padding:0}.keybinds-filters{display:flex;justify-content:center;align-items:center;gap:.5rem;margin:.15em auto 1em auto;max-width:90rem;flex-wrap:wrap}.filter-label{font-family:var(--font-family-mono);font-size:var(--font-mono-sm);font-weight:400;color:var(--text-color);opacity:.7;margin-right:.25rem}.filter-btn{font-family:var(--font-family);font-size:.92rem;font-weight:var(--font-weight-normal);background-color:transparent;border:1px solid var(--border-color);color:var(--text-color);cursor:pointer;padding:var(--btn-padding);transition:background-color .2s ease,border-color .2s ease,color .2s ease}.filter-btn:hover{background-color:color-mix(in srgb,var(--primary-color) 5%,transparent);border-color:var(--primary-color)}.filter-btn.active{background-color:var(--primary-color);color:#fff;border-color:var(--primary-color)}.filter-btn.active:hover{background-color:color-mix(in srgb,var(--primary-color) 90%,#000)}.blog-filters{display:flex;justify-content:flex-start;align-items:center;margin:1em 0;gap:.5rem;flex-wrap:wrap}.blog-rss-link{display:inline-flex;align-items:center;justify-content:center;padding:.4rem;color:var(--text-color);text-decoration:none;border:1px solid var(--border-color);transition:color .15s ease,border-color .15s ease}.blog-rss-link:hover{color:var(--primary-color);border-color:var(--primary-color)}.filter-tabs{display:flex;gap:.5rem;flex-wrap:wrap}.blog-filter-header{display:flex;justify-content:flex-end;margin:.25em auto .75em auto;max-width:var(--content-max-width)}.blog-filter-title{font-family:var(--font-family);font-weight:var(--font-weight-bold);margin:0;color:var(--header-color)}.blog-filter-subtitle{font-family:var(--font-family);font-size:.9rem;font-weight:var(--font-weight-normal);margin:0;color:var(--text-color);opacity:.8}.keybinds-section{margin:1.25rem auto;max-width:90rem}.keybinds-app-title{font-family:var(--font-family);font-size:1.5rem;font-weight:var(--font-weight-bold);margin:0 0 .75rem 0;color:var(--header-color);border-bottom:2px solid var(--primary-color);padding-bottom:.25rem}.keybinds-keybinds{display:grid;gap:1rem}.keybinds-item{display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:center;padding:1rem;border:1px solid var(--border-color);background-color:transparent;transition:background-color .2s ease,border-color .2s ease}.keybinds-item:hover{background-color:color-mix(in srgb,var(--primary-color) 5%,transparent);border-color:var(--primary-color)}.keybind-action{font-family:var(--font-family);font-size:.95rem;font-weight:var(--font-weight-normal);color:var(--text-color);text-transform:capitalize}.keybind-keys{font-family:var(--font-family-mono);font-size:var(--font-mono-base);font-weight:400;text-align:right;white-space:nowrap;display:flex;align-items:center;gap:.25rem}.keybind-description{grid-column:1/-1;font-family:var(--font-family);font-size:.85rem;font-weight:var(--font-weight-normal);color:var(--text-color);margin-top:.25rem}.key{display:inline-block;padding:.2em .5em;margin:0;font-family:var(--font-family-mono);font-size:var(--font-mono-lg);font-weight:400;line-height:1.2;color:var(--text-color);background-color:var(--code-bg);border:1px solid var(--border-color);box-shadow:0 1px 0 var(--border-color);vertical-align:middle}.key-separator{display:inline-block;margin:0 .1em;color:var(--text-color);font-weight:var(--font-weight-normal)}.key-alt-separator{display:inline-block;margin:0 .3em;color:var(--text-color);font-weight:var(--font-weight-normal);opacity:.6}.key-sequence-separator{display:inline-block;margin:0 .4em;color:var(--text-color);font-weight:var(--font-weight-bold);font-size:1.1rem}.no-results{text-align:center;padding:3rem 2rem;max-width:90rem;margin:0 auto}.no-results p{font-family:var(--font-family);font-size:1.1rem;font-weight:var(--font-weight-normal);color:var(--text-color);opacity:.7;margin-bottom:1rem}.google-search-link{font-family:var(--font-family);font-size:.9rem;font-weight:var(--font-weight-normal);color:var(--link-color);text-decoration:none;padding:.5rem 1rem;border:1px solid var(--border-color);display:inline-block;transition:background-color .2s ease,border-color .2s ease}.google-search-link:hover{background-color:color-mix(in srgb,var(--primary-color) 5%,transparent);border-color:var(--primary-color);text-decoration:none}.projects-page-title{text-align:left}.projects-section{margin:.75rem auto;max-width:90rem}.projects-section-title{font-family:var(--font-family);font-size:1.5rem;font-weight:var(--font-weight-bold);margin:0 0 .75rem 0;color:var(--header-color);border-bottom:2px solid var(--primary-color);padding-bottom:.25rem;text-align:left}.projects-section-archived .projects-section-title{opacity:.6;transition:opacity .2s ease}.projects-section-archived:hover .projects-section-title{opacity:1}.projects-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:1rem}.project-item{padding:1.5rem;border:1px solid var(--border-color);background-color:transparent;display:flex;flex-direction:column}.project-item-archived{opacity:.6;transition:opacity .2s ease}.project-item-archived:hover{opacity:1}.project-content{display:flex;flex-direction:column;gap:.75rem;flex:1}.project-title{font-family:var(--font-family);font-size:1.25rem;font-weight:var(--font-weight-bold);margin:0;color:var(--header-color)}.project-description{font-family:var(--font-family);font-size:.95rem;font-weight:var(--font-weight-normal);color:var(--text-color);margin:0;line-height:1.6;opacity:.9}.project-last-active{font-family:var(--font-family);font-size:.85rem;color:var(--text-color);opacity:.5;margin:.5rem 0 0 0}.project-links{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end;margin-top:.75rem}.project-link{font-family:var(--font-family);font-size:.85rem;font-weight:var(--font-weight-normal);padding:var(--btn-padding);background-color:var(--code-bg);border:1px solid var(--border-color);color:var(--text-color);text-decoration:none;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.project-link:visited{color:var(--text-color)}.project-link:hover{background-color:var(--primary-color);background-color:color-mix(in srgb,var(--primary-color) 15%,transparent);border-color:var(--primary-color);color:var(--primary-color);text-decoration:none}.no-projects{padding:2rem;text-align:center;color:var(--text-color);opacity:.6;font-style:italic;border:none}@media (max-width:768px){.keybinds-item{grid-template-columns:1fr;gap:.5rem}.keybind-keys{text-align:left;justify-content:flex-start}.keybinds-filters{gap:.4rem}.filter-btn{padding:var(--btn-padding)}.blog-filters{display:flex;justify-content:flex-start;align-items:flex-start;gap:.5rem;margin:1em 0;flex-wrap:wrap}.project-item{padding:1rem}.project-links{justify-content:flex-start}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.section-toggle{display:flex;align-items:baseline;justify-content:space-between;width:100%;max-width:100%;padding:0;background:0 0;border:none;cursor:pointer;font-family:inherit;font-size:1rem;font-weight:var(--font-weight-bold);color:var(--text-color);text-align:left;transition:color .2s ease;box-sizing:border-box}.section-toggle:hover{color:var(--primary-color)}.section-toggle:hover .section-title-wrapper h1{color:var(--primary-color)}.section-toggle:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.section-toggle .chevron{transition:transform .2s ease;flex-shrink:0}.section-toggle .chevron{transform:rotate(180deg)}.section-more-link{text-align:right;margin-top:1rem}.section-content[style*="display: none"]~.section-more-link{margin-top:0}.section-more-link a{color:var(--link-color);text-decoration:none;font-size:.875rem;opacity:.8;transition:opacity .2s ease}.section-more-link a:hover{opacity:1;text-decoration:underline}.section-content{display:block}.lightbox{position:fixed;inset:0;z-index:2000;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.lightbox.open{opacity:1;visibility:visible}.lightbox-content{display:flex;align-items:center;justify-content:center;max-width:90vw;max-height:90vh}.lightbox-content img{max-width:100%;max-height:90vh;object-fit:contain;box-shadow:0 8px 32px rgba(0,0,0,.3)}.lightbox-close{position:fixed;top:.75rem;right:.75rem;z-index:2001;background:0 0;border:none;color:#fff;padding:.5rem;cursor:pointer;opacity:.7;transition:opacity .15s ease}.lightbox-close:hover{opacity:1}.lightbox-close svg{width:1.5rem;height:1.5rem;display:block}@media (max-width:768px){.lightbox-content{max-width:95vw;max-height:85vh}}