/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400&display=swap";@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.container{width:100%}.block{display:block}.flex{display:flex}.inline{display:inline}.table{display:table}.size-full{width:100%;height:100%}.min-h-screen{min-height:100vh}.max-w-none{max-width:none}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.flex-col{flex-direction:column}.border{border-style:var(--tw-border-style);border-width:1px}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}:root,[data-theme=light]{--color-bg:#fbfdfe;--color-surface:#f1f6f9;--color-surface-card:#f8fafb;--color-border:#d9e3e8;--color-text:#272c35;--color-muted:#788591;--color-accent:#3371a3;--color-accent-hover:#27567c;--color-logo-bg:transparent;--color-mermaid-bg:#f7f7f7e6;--font-display:Seravek, "Gill Sans Nova", Ubuntu, Calibri, "DejaVu Sans", source-sans-pro, sans-serif;--font-body:"Iowan Old Style", "Palatino Linotype", "URW Palladio L", P052, serif;--font-mono:"JetBrains Mono", monospace;--gradient-brand-angle:170deg;--gradient-brand-start:#3aaceb;--gradient-brand-end:#b8208c;--gradient-brand:linear-gradient(var(--gradient-brand-angle), var(--gradient-brand-start) 0%, var(--gradient-brand-end) 100%)}[data-theme=dark]{--color-bg:lab(11.2% .11 -.44);--color-surface:lab(16.3% .16 -.66);--color-surface-card:lab(13.2% .13 -.54);--color-border:lab(26.6% .25 -.98);--color-text:lab(91% -.87 2.34);--color-muted:lab(65.5% .32 -.95);--color-accent:lab(73.7% -11.6 -20.1);--color-accent-hover:lab(80.2% -8.8 -13.6);--color-logo-bg:transparent;--color-mermaid-bg:transparent;--font-display:"Lora", Georgia, serif;--font-body:"Source Sans 3", system-ui, sans-serif;--font-mono:"JetBrains Mono", monospace;--gradient-brand-angle:176deg;--gradient-brand-start:#d85fb8;--gradient-brand-end:#6ec4f0;--gradient-brand:linear-gradient(var(--gradient-brand-angle), var(--gradient-brand-start) 0%, var(--gradient-brand-end) 100%)}[data-theme=terminal]{--color-bg:#001400;--color-surface:#001f00;--color-surface-card:#001a00;--color-border:#074007;--color-text:#86ea86;--color-muted:#3d8f3d;--color-accent:#25f425;--color-accent-hover:#6ef76e;--color-logo-bg:transparent;--color-mermaid-bg:transparent;--font-display:"JetBrains Mono", monospace;--font-body:"JetBrains Mono", monospace;--font-mono:"JetBrains Mono", monospace;--gradient-brand-angle:175deg;--gradient-brand-start:#30a644;--gradient-brand-end:#33c1b6;--gradient-brand:linear-gradient(var(--gradient-brand-angle), var(--gradient-brand-start) 0%, var(--gradient-brand-end) 100%)}@layer base{html{background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:17px;line-height:1.65}a{color:var(--color-accent);text-decoration:none;transition:color .15s}a:hover{color:var(--color-accent-hover)}::selection{background-color:var(--color-accent);color:#fff}hr{border-color:var(--color-border)}code{font-family:var(--font-mono);background:var(--color-surface);border-radius:3px;padding:.1em .35em;font-size:.875em}pre code{background:0 0;padding:0}pre{background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;padding:1.25rem 1.5rem;overflow-x:auto}pre:has(code.mermaid){background:var(--color-mermaid-bg);padding:2vh 2vw}blockquote{border-left:3px solid var(--color-accent);color:var(--color-muted);padding-left:1.25rem;font-style:italic}}@layer components{.site-container{max-width:1100px;margin-inline:auto;padding-inline:1.5rem}.site-header{border-bottom:1px solid var(--color-border);font-family:var(--font-display);padding-block:1.25rem}.site-header__inner{justify-content:space-between;align-items:center;display:flex}.site-header__logo{align-items:center;gap:.625rem;text-decoration:none;display:flex}.site-header__logo img,.site-header__logo svg{width:38px;height:38px;display:block}.site-header__nav{align-items:center;gap:1.75rem;display:flex}.site-header__nav a{letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted);transition:color .15s}.site-header__nav a:hover{color:var(--color-accent)}.site-header__nav-dropdown{flex:none;width:max-content;position:relative}.site-header__nav-dropdown-trigger{cursor:pointer;letter-spacing:.04em;text-transform:uppercase;width:max-content;color:var(--color-muted);list-style:none;transition:color .15s;display:block}.site-header__nav-dropdown-trigger::-webkit-details-marker{display:none}.site-header__nav-dropdown-trigger::marker{content:none}.site-header__nav-dropdown:hover .site-header__nav-dropdown-trigger,.site-header__nav-dropdown[open] .site-header__nav-dropdown-trigger{color:var(--color-accent)}.site-header__nav-dropdown-trigger:focus{outline:none}.site-header__nav-dropdown-trigger:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.site-header__nav-dropdown-panel{z-index:50;background:var(--color-surface-card);border:1px solid var(--color-border);border-radius:6px;min-width:max(12rem,100%);max-height:min(70vh,22rem);margin:0;padding:.35rem 0;position:absolute;top:calc(100% + .35rem);left:0;overflow-y:auto;box-shadow:0 8px 28px #0000001f}.site-header__nav-dropdown-list{margin:0;padding:0;list-style:none}.site-header__nav-dropdown-list li{margin:0}.site-header__nav-dropdown-list a{font-family:var(--font-body);letter-spacing:normal;text-transform:none;color:var(--color-text);padding:.4rem .9rem;font-size:.9rem;font-weight:400;text-decoration:none;transition:background .12s,color .12s;display:block}.site-header__nav-dropdown-list a:hover{background:var(--color-surface);color:var(--color-accent)}.site-header__nav-dropdown-list a[aria-current=page]{color:var(--color-accent);font-weight:600}.site-main{padding-block:3.5rem}.post-grid{grid-template-columns:1fr;gap:1.5rem;display:grid}@media (min-width:640px){.post-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.post-grid{grid-template-columns:repeat(3,1fr)}}.post-card{background:var(--color-surface-card);border:1px solid var(--color-border);color:inherit;border-radius:6px;flex-direction:column;gap:0;text-decoration:none;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex;overflow:hidden}.post-card:hover{border-color:var(--color-accent);color:inherit;transform:translateY(-3px);box-shadow:0 8px 24px #00000012}.post-card__image{aspect-ratio:16/9;background:var(--color-surface);flex-shrink:0;justify-content:center;align-items:center;width:100%;display:flex;overflow:hidden}.post-card__image img{object-fit:contain;object-position:center;width:100%;height:100%;transition:transform .4s;display:block}.post-card:hover .post-card__image img{transform:scale(1.04)}.post-card__image--placeholder{background:repeating-linear-gradient(-45deg, transparent, transparent 12px, #4f739212 12px, #4f739212 13px), linear-gradient(135deg, var(--color-surface) 0%, var(--color-accent) 100%)}@supports (color:color-mix(in lab, red, red)){.post-card__image--placeholder{background:repeating-linear-gradient(-45deg, transparent, transparent 12px, #4f739212 12px, #4f739212 13px), linear-gradient(135deg, var(--color-surface) 0%, color-mix(in srgb, var(--color-accent) 15%, var(--color-surface)) 100%)}}.post-card__body{flex-direction:column;flex-grow:1;gap:.625rem;padding:1.375rem 1.5rem 1.5rem;display:flex}.post-card__date{font-size:.78rem;font-family:var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);margin-top:0}.post-card__title{font-family:var(--font-display);margin:0;font-size:1.15rem;font-weight:600;line-height:1.35}.post-card__excerpt{color:var(--color-muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;flex-grow:1;font-size:.9rem;line-height:1.55;display:-webkit-box;overflow:hidden}.post-card__read-more{letter-spacing:.04em;text-transform:uppercase;color:var(--color-accent);align-self:flex-start;margin-top:.25rem;font-size:.82rem;font-weight:500}.page-heading,.post-article__title,.post-card__title,.post-article__body :is(h2,h3){background-image:var(--gradient-brand);color:#0000;-webkit-text-fill-color:transparent;-webkit-box-decoration-break:clone;box-decoration-break:clone;-webkit-background-clip:text;background-clip:text}.page-heading::selection{background-color:var(--gradient-brand-end);color:#fff;-webkit-text-fill-color:#fff}.post-article__title::selection{background-color:var(--gradient-brand-end);color:#fff;-webkit-text-fill-color:#fff}.post-card__title::selection{background-color:var(--gradient-brand-end);color:#fff;-webkit-text-fill-color:#fff}.post-article__body :is(h2,h3)::selection{background-color:var(--gradient-brand-end);color:#fff;-webkit-text-fill-color:#fff}.page-heading{font-family:var(--font-display);margin-bottom:2.25rem;font-size:2rem;font-weight:600}.post-article{max-width:68ch;margin-inline:auto}.post-article__header{border-bottom:1px solid var(--color-border);text-align:center;margin-bottom:2.5rem;padding-bottom:1.5rem}.post-article__title{font-family:var(--font-display);margin:0 0 .75rem;font-size:clamp(1.75rem,4vw,3rem);font-weight:800;line-height:1.2}.post-article__date{letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);font-size:.82rem}.post-taxonomy{margin-bottom:1.25rem}.post-taxonomy--tags{border-top:1px solid var(--color-border);margin-top:2.5rem;margin-bottom:0;padding-top:1.5rem}.post-taxonomy__label{letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);margin-bottom:.5rem;font-size:.75rem;font-weight:600;display:block}.post-taxonomy__list{flex-wrap:wrap;gap:.5rem .65rem;margin:0;padding:0;list-style:none;display:flex}.post-taxonomy__chip{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-accent);border-radius:4px;padding:.2em .65em;font-size:.88rem;text-decoration:none;transition:border-color .15s,background .15s;display:inline-block}.post-taxonomy__chip:hover{border-color:var(--color-accent);background:var(--color-surface-card);color:var(--color-accent-hover)}.taxonomy-index{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.taxonomy-index a{font-size:1.05rem}.post-article__featured{border:1px solid var(--color-border);border-radius:6px;margin:0 0 1.5rem;overflow:hidden}.post-article__featured picture{width:100%;display:block}.post-article__featured img{width:100%;height:auto;display:block}.post-article__body{font-size:1rem;line-height:1.75}.post-article__body h2,.post-article__body h3,.post-article__body h4{font-family:var(--font-display)}.post-article__body h4{color:var(--color-text)}.post-article__body pre{border-radius:0;width:min(100vw,80ch);position:relative;left:50%;transform:translate(-50%)}.post-article__body img{border-radius:4px;max-width:100%;height:auto}.post-article__body p:has(>img:first-child:last-child:not(.inline-image)),.post-article__body p:has(>picture:first-child:last-child){text-align:center}.post-article__body p:has(>picture:first-child:last-child) picture{max-width:100%;display:inline-block}.post-article__body img.inline-image{vertical-align:-.3em;width:auto;height:1.5em;max-height:1.5em}.post-article__body svg{max-width:100%;margin-inline:auto;display:block}.theme-select{appearance:none;background-color:var(--color-surface);border:1px solid var(--color-border);color:var(--color-muted);cursor:pointer;font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2378716C' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;border-radius:4px;padding:.25rem 1.75rem .25rem .65rem;font-size:.95rem;transition:border-color .15s,color .15s;transform:translateY(-1px)}.theme-select:hover{border-color:var(--color-accent);color:var(--color-accent)}.theme-select:focus{outline:2px solid var(--color-accent);outline-offset:2px}.site-footer{border-top:1px solid var(--color-border);text-align:center;color:var(--color-muted);letter-spacing:.03em;padding-block:1.75rem;font-size:.82rem}}.token.deleted{background-color:#ffc2cc78}.token.inserted{background-color:#91ee9159}.token.prefix.unchanged,.token.prefix.inserted,.token.prefix.deleted{-webkit-user-select:none;user-select:none}.token.inserted:not(.prefix),.token.deleted:not(.prefix){display:block}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}