:root{color-scheme:light dark;--bg:light-dark(#fbfaf7,#131211);--surface:light-dark(#fff,#1c1a18);--text:light-dark(#1d1c1a,#ecebe7);--muted:light-dark(#5a5852,#aaa79f);--accent:light-dark(#0b5cad,#86b9ff);--border:light-dark(#e3e0d8,#34312d);--code-bg:light-dark(#f4f2ec,#1c1a18);--focus:light-dark(#0b5cad,#ffd166);--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--measure:42rem;--measure-wide:64rem;--gutter:1rem;--radius:.5rem}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:4.5rem}body{background:var(--bg);min-height:100dvh;color:var(--text);font:1.0625rem/1.7 var(--font-sans);overflow-wrap:break-word;flex-direction:column;margin:0;display:flex}main{flex:1;padding-block:2rem 4rem}main:focus{outline:none}img,svg,video{max-width:100%}img{height:auto}a{color:var(--accent);text-underline-offset:.2em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:2px}h1,h2,h3,h4{letter-spacing:-.01em;text-wrap:balance;line-height:1.2}.skip-link{inset-inline-start:1rem;z-index:100;background:var(--surface);color:var(--text);border:2px solid var(--focus);border-radius:var(--radius);padding:.5rem 1rem;position:absolute;top:-4rem}.skip-link:focus{top:1rem}.container{width:min(100% - 2 * var(--gutter), var(--measure-wide));margin-inline:auto}.site-header{border-bottom:1px solid var(--border);background:var(--bg)}.site-header__inner{width:min(100% - 2 * var(--gutter), var(--measure-wide));flex-wrap:wrap;align-items:center;gap:.25rem 1.5rem;margin-inline:auto;padding-block:.75rem;display:flex}.site-title{letter-spacing:-.01em;color:var(--text);margin-inline-end:auto;font-size:1.25rem;font-weight:700;text-decoration:none}.nav{flex-wrap:wrap;gap:0 1.25rem;margin:0;padding:0;list-style:none;display:flex}.nav a{color:var(--muted);padding-block:.4rem;text-decoration:none;display:inline-block}.nav a:hover,.nav a[aria-current=page]{color:var(--text)}.nav a[aria-current=page]{text-underline-offset:.35em;text-decoration:underline 2px}.theme-toggle{border:1px solid var(--border);width:2.5rem;height:2.5rem;color:var(--text);cursor:pointer;background:0 0;border-radius:50%;place-items:center;padding:0;display:inline-grid}.theme-toggle:hover{background:var(--surface)}.theme-toggle[hidden]{display:none}.theme-toggle .icon-moon{display:block}.theme-toggle .icon-sun,.theme-toggle[aria-pressed=true] .icon-moon{display:none}.theme-toggle[aria-pressed=true] .icon-sun{display:block}.site-footer{border-top:1px solid var(--border);background:var(--surface);padding-block:2rem;font-size:.9375rem}.site-footer__inner{width:min(100% - 2 * var(--gutter), var(--measure-wide));gap:1.25rem;margin-inline:auto;display:grid}.author{align-items:center;gap:1rem;display:flex}.author__photo{object-fit:cover;border-radius:50%;flex:none;width:4.5rem;height:4.5rem}.author__name{margin:0;font-weight:700}.author__bio{max-width:50ch;color:var(--muted);margin:.25rem 0 0}.contacts{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.contacts a{border:1px solid var(--border);width:2.75rem;height:2.75rem;color:var(--text);border-radius:50%;place-items:center;display:inline-grid}.contacts a:hover{background:var(--bg);color:var(--accent)}.copyright{color:var(--muted);margin:0}.page-title{margin:0 0 1.5rem;font-size:clamp(1.875rem,1.4rem + 2.2vw,2.75rem)}.post-header .page-title{margin-bottom:1.5rem}.eyebrow{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .25rem;font-size:.875rem}.meta{color:var(--muted);flex-wrap:wrap;gap:0 .5rem;margin:0 0 .5rem;font-size:.9375rem;display:flex}.meta a{color:inherit}.intro{padding-block:1rem 2rem}.intro__title{letter-spacing:-.02em;margin:0;font-size:clamp(2.25rem,1.5rem + 3.5vw,3.5rem)}.cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr));gap:2rem 1.5rem;display:grid}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-direction:column;display:flex;position:relative;overflow:hidden}.card__cover{aspect-ratio:3/2;object-fit:cover;background:var(--code-bg);width:100%;height:auto;display:block}.card__body{flex-direction:column;flex:1;padding:1rem 1.25rem 1.25rem;display:flex}.card__title{margin:0 0 .5rem;font-size:1.25rem}.card__link{color:var(--text);text-decoration:none}.card__link:after{content:"";position:absolute;inset:0}.card:hover .card__link,.card__link:focus-visible{text-decoration:underline}.card:has(.card__link:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.card__link:focus-visible{outline:none}.card__category{z-index:1;position:relative}.card__description{color:var(--muted);margin:0;font-size:.9375rem;line-height:1.55}.pagination{justify-content:space-between;align-items:center;gap:1rem;margin-top:2.5rem;display:flex}.pagination a{padding:.5rem 0}.pagination__status{color:var(--muted);font-size:.9375rem}.chips{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.chip{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;align-items:center;gap:.5rem;padding:.3rem .85rem;font-size:.9375rem;text-decoration:none;display:inline-flex}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip__count{color:var(--muted);font-size:.8125rem}.post-footer{margin-top:3rem}.prose{--extra:calc((var(--measure-wide) - var(--measure)) / 2);grid-template-columns:[full-start] minmax(var(--gutter), 1fr) [wide-start] minmax(0, var(--extra)) [text-start] min(var(--measure), 100% - 2 * var(--gutter)) [text-end] minmax(0, var(--extra)) [wide-end] minmax(var(--gutter), 1fr) [full-end];display:grid}.prose>*{grid-column:text;min-width:0}.prose>.figure-wide,.prose>.gallery-wide,.prose>pre{grid-column:wide}.prose>.figure-full,.prose>.gallery-full{grid-column:full}.prose>:first-child{margin-top:0}.prose h2{margin:2.5rem 0 .75rem;font-size:1.75rem}.prose h3{margin:2rem 0 .5rem;font-size:1.375rem}.prose p,.prose ul,.prose ol,.prose blockquote,.prose pre{margin-block:0 1.25rem}.prose ul,.prose ol{padding-inline-start:1.5rem}.prose li+li{margin-top:.35rem}.prose blockquote{border-inline-start:4px solid var(--border);color:var(--muted);margin-inline:0;padding-inline-start:1rem}.prose hr{border:0;border-top:1px solid var(--border);width:100%;margin-block:2rem}.prose table{border-collapse:collapse;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);padding:.4rem .75rem}.prose :not(pre)>code{background:var(--code-bg);overflow-wrap:anywhere;border-radius:.3em;padding:.1em .35em;font-size:.875em}code,pre{font-family:var(--font-mono)}.astro-code{border:1px solid var(--border);border-radius:var(--radius);tab-size:2;padding:1rem 1.25rem;font-size:.875rem;line-height:1.6;overflow-x:auto;background:var(--code-bg)!important}.astro-code code{width:max-content;min-width:100%;font-size:inherit;display:block}.astro-code span{color:light-dark(var(--shiki-light),var(--shiki-dark))}.figure{margin:.5rem 0 1.75rem}.prose>.figure-wide,.prose>.figure-full{margin-block:1rem 2rem}.figure img,.gallery img{background:var(--code-bg);width:100%;height:auto;display:block}.figure:not(.figure-wide):not(.figure-full)>img,.figure:not(.figure-wide):not(.figure-full) picture img{object-fit:contain;width:auto;max-width:100%;max-height:85vh;margin-inline:auto}.figure:not(.figure-wide):not(.figure-full) figcaption{text-align:center}.figure>img,.figure picture,.figure picture img{border-radius:var(--radius)}.figure-full>img,.figure-full picture,.figure-full picture img{border-radius:0}figcaption{color:var(--muted);margin-top:.5rem;font-size:.875rem;line-height:1.5}.figure-wide figcaption,.figure-full figcaption,.gallery>figcaption{width:min(100% - 2 * var(--gutter), var(--measure));margin-inline:auto}.gallery{--row-height:220px;margin:1rem 0 2rem}.gallery__grid{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.gallery__item{flex-grow:calc(var(--ratio) * 100);flex-basis:calc(var(--ratio) * var(--row-height));min-width:min(100%, calc(var(--ratio) * 8rem));border-radius:calc(var(--radius) / 2);margin:0;overflow:hidden}.gallery-full .gallery__grid{gap:.25rem}.gallery-full .gallery__item{border-radius:0}.gallery__grid:after{content:"";flex-grow:1000000}.gallery__item a{display:block}.gallery__item a:hover img{filter:brightness(.92)}.lightbox{color:#f2f1ee;background:#000000eb;border:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0}.lightbox::backdrop{background:#000000eb}.lightbox[open]{grid-template-rows:auto 1fr;display:grid}.lightbox__bar{justify-content:flex-end;gap:.5rem;padding:.75rem;display:flex}.lightbox__bar button{width:2.75rem;height:2.75rem;color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px solid #fff6;border-radius:50%;font-size:1.25rem}.lightbox__bar button:hover{background:#ffffff26}.lightbox__bar button:focus-visible{outline-color:#ffd166}.lightbox__figure{grid-template-rows:minmax(0,1fr) auto;justify-items:center;gap:.5rem;min-height:0;margin:0;padding:0 1rem 1rem;display:grid}.lightbox__figure img{object-fit:contain;background:0 0;width:auto;max-width:100%;height:auto;max-height:100%}.lightbox__figure figcaption{color:#d6d4cf;text-align:center}@media (prefers-reduced-motion:no-preference){.gallery__item img,.chip,.theme-toggle{transition:filter .15s,background-color .15s,border-color .15s}html{scroll-behavior:smooth}}@media (width>=48rem){.site-footer__inner{grid-template-columns:1fr auto;align-items:center}.copyright{grid-column:1/-1}}@media (width<=39.99rem){.site-header__inner nav{flex-basis:100%;order:3}.theme-toggle{order:2}}
