@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:block;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.I4S5GZfc.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:block;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.BmXc_FBt.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:block;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.GZpp1pK2.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:block;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.D8KDMBhC.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:block;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.DrnZ1wKl.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:block;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.B_7UjwxQ.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Black;font-style:normal;font-display:block;font-weight:400;src:url(/_astro/archivo-black-latin-ext-400-normal.DQAASfvW.woff2)format("woff2"),url(/_astro/archivo-black-latin-ext-400-normal.-j5WRK12.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Black;font-style:normal;font-display:block;font-weight:400;src:url(/_astro/archivo-black-latin-400-normal.BTVu2TQR.woff2)format("woff2"),url(/_astro/archivo-black-latin-400-normal.HW9MwEcM.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--color-bg:#eee5cc;--color-fg:#1f1f1f;--color-accent:#2d9b7a;--color-muted:#e0d4b8;--color-border:#5c5c5c;--color-surface:#e4d9bc;--color-code-bg:#1e0f45;--color-code-fg:#f0edf7;--background:var(--color-bg);--foreground:var(--color-fg);--accent:var(--color-accent);--muted:var(--color-muted);--border:var(--color-border);--font-sans:system-ui, -apple-system, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, sfmono-regular, menlo, monaco, consolas, monospace;--font-display:"Archivo Black", "Arial Black", var(--font-sans);--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--leading-tight:1.2;--leading-normal:1.6;--leading-loose:1.8;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-pill:999px;--shadow-sm:0 2px 8px #1e0f451a;--shadow-md:0 8px 24px #1e0f4529;--z-header:50;--z-progress:60;--container-pad:50px;--container-pad-narrow:20px;--content-max:62rem;--layout-max:72rem;--sidebar-width:18rem;--bp-sm:30rem;--bp-md:48rem;--bp-lg:64rem;--grid-line-width:1px;--color-grid-line:#5ca8916b;--color-heading-primary:var(--color-accent);--color-nav-primary:#3d4a42;--color-avatar-ring:var(--color-heading-primary);--color-image-frame:#5ce0b8;--width-image-frame:2px;--radius-image-frame:var(--radius-lg);--color-title-hover:#1a7a5a;--color-link-hover:var(--color-accent);--color-repo-link:color-mix(in srgb, var(--color-fg) 62%, transparent);--color-repo-link-hover:#1a7a5a;--color-read-more:#000;--color-read-more-hover:#1a7a5a}@media (width<64rem){:root{--container-pad:var(--container-pad-narrow)}}html[data-theme=dark],.dark{color-scheme:dark;--color-bg:#000;--color-fg:#fff;--color-accent:#fff;--color-muted:#1a1a1abf;--color-border:#fff;--color-surface:#111;--color-code-bg:#0a0a0a;--color-code-fg:#fff;--grid-line-width:1px;--color-grid-line:#ffffff2e;--color-heading-primary:#5ce0b8;--color-nav-primary:#fff;--color-avatar-ring:#fff;--color-image-frame:#fff;--color-title-hover:#5ce0b8;--color-link-hover:#5ce0b8;--color-repo-link:#fff;--color-repo-link-hover:#b8b8b8;--color-read-more:#fff;--color-read-more-hover:var(--color-accent);--shadow-sm:0 2px 8px #00000080;--shadow-md:0 8px 24px #0009}html[data-theme=midnight]{color-scheme:dark;--color-bg:#1e0f45;--color-fg:#f0edf7;--color-accent:#5ce0b8;--color-muted:#2a1860bf;--color-border:var(--color-accent);--color-surface:#2a1860;--color-code-bg:#150b33;--color-code-fg:#f0edf7;--grid-line-width:1px;--color-grid-line:color-mix(in srgb, var(--color-accent) 50%, transparent);--color-heading-primary:var(--color-accent);--color-nav-primary:#fff;--color-avatar-ring:var(--color-heading-primary);--color-image-frame:var(--color-accent);--color-title-hover:var(--color-accent);--color-repo-link:var(--color-accent);--color-repo-link-hover:#fff;--color-read-more:#fff;--color-read-more-hover:var(--color-accent);--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 8px 24px #0006}html[data-style=poster]{color-scheme:light;--color-bg:#e8e4d8;--color-fg:#1c1c1a;--color-accent:#e0502e;--color-muted:#ddd8c8bf;--color-border:#1c1c1a;--color-surface:#ded9c9;--color-code-bg:#1c1c1a;--color-code-fg:#e8e4d8;--grid-line-width:1px;--color-grid-line:#1c1c1a38;--color-heading-primary:#1c1c1a;--color-nav-primary:#1c1c1a;--color-avatar-ring:var(--color-accent);--color-image-frame:#1c1c1a;--color-title-hover:var(--color-accent);--color-link-hover:var(--color-accent);--color-repo-link:#1c1c1a9e;--color-repo-link-hover:var(--color-accent);--color-read-more:#1c1c1a;--color-read-more-hover:var(--color-accent);--shadow-sm:0 2px 8px #1c1c1a24;--shadow-md:0 8px 24px #1c1c1a33}html[data-style=poster][data-theme=dark]{color-scheme:dark;--color-bg:#1c1c1a;--color-fg:#e8e4d8;--color-muted:#262623bf;--color-border:#e8e4d8;--color-surface:#262623;--color-code-bg:#141412;--color-grid-line:#e8e4d838;--color-heading-primary:#e8e4d8;--color-nav-primary:#e8e4d8;--color-image-frame:#e8e4d8;--color-repo-link:#e8e4d89e;--color-read-more:#e8e4d8;--shadow-sm:0 2px 8px #00000080;--shadow-md:0 8px 24px #0009}*{box-sizing:border-box;border-color:var(--color-border);outline-color:color-mix(in srgb, var(--color-accent) 75%, transparent);scrollbar-width:auto;scrollbar-color:var(--color-muted) transparent;transition:background-color .3s,color .3s,border-color .3s}.no-theme-transition,.no-theme-transition *{transition:none}html,body{width:100%;margin:0;padding:0}html{scrollbar-gutter:stable;scroll-behavior:smooth;scroll-padding-top:100px;font-size:112.5%;overflow-y:scroll}body{background:var(--color-bg);color:var(--color-fg);font-family:var(--font-mono);transition:background-color .3s,color .3s}::selection{background-color:var(--color-accent);color:var(--color-bg)}a,button{outline-offset:1px;outline-color:var(--color-accent)}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px dashed var(--color-accent);outline-offset:1px;text-decoration:none}.layout-container{width:min(var(--layout-max), calc(100% - 4rem));margin-inline:auto}.site-header,.site-footer{width:100%}.site-main{padding-block:1.5rem}.row-between{justify-content:space-between;align-items:center;gap:1rem;display:flex}.title-lg{letter-spacing:-.02em;font-size:clamp(2rem,3vw + 1rem,3rem);line-height:1.1}@media (width<=720px){.site-main{padding-block:.75rem}}.meta-text{color:color-mix(in srgb, var(--color-fg) 60%, transparent);font-size:.875rem;font-style:italic}.site-header{--bracket-image:linear-gradient(var(--color-accent), var(--color-accent)), linear-gradient(var(--color-accent), var(--color-accent)), linear-gradient(var(--color-accent), var(--color-accent)), linear-gradient(var(--color-accent), var(--color-accent)), linear-gradient(var(--color-accent), var(--color-accent)), linear-gradient(var(--color-accent), var(--color-accent)), linear-gradient(var(--color-accent), var(--color-accent)), linear-gradient(var(--color-accent), var(--color-accent));--bracket-size:8px 2px, 2px 8px, 8px 2px, 2px 8px, 8px 2px, 2px 8px, 8px 2px, 2px 8px;--bracket-position:left top, left top, right top, right top, left bottom, left bottom, right bottom, right bottom;background:color-mix(in srgb, var(--color-bg) 70%, transparent);-webkit-backdrop-filter:blur(12px)saturate(140%);z-index:var(--z-header);view-transition-name:site-header;border-bottom:var(--grid-line-width) solid var(--color-grid-line);align-items:stretch;margin:0;padding:0;display:flex;position:fixed;top:0;left:0;right:0;overflow:hidden;box-shadow:inset 0 1px #ffffff14}::view-transition-group(site-header){animation:none}::view-transition-old(site-header){animation:none;display:none}::view-transition-new(site-header){animation:none}.nav-gutter-left,.nav-gutter-right{display:none}.nav-grid{max-width:var(--content-max);flex:1;grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr) 3.75rem;align-items:stretch;column-gap:0;width:100%;margin-inline:auto;padding-inline:0;display:grid;position:relative}.site-brand{white-space:nowrap;letter-spacing:-.03em;margin:0;font-size:1.95rem;font-weight:600;line-height:1}.brand-link{width:100%;color:var(--color-nav-primary);flex:1;justify-content:center;align-items:center;padding:1.15rem 1rem;text-decoration:none;transition:color .2s;display:flex}.brand-link:hover{color:var(--color-link-hover)}.nav-brand-cell{flex-direction:column;flex:auto;grid-column:1;align-items:stretch;min-width:0;display:flex}.nav-links-cell,.nav-utils-cell{display:none}.nav-link-a{color:var(--color-nav-primary);white-space:nowrap;justify-content:center;align-items:center;padding:.75rem 2rem;font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .2s,background-color .2s;display:flex}.nav-link-a:hover{color:var(--color-link-hover);background:color-mix(in srgb, var(--color-link-hover) 5%, transparent)}.nav-link-a.active-nav,.header-icon-link.active-nav,.brand-link.active-nav{color:var(--color-accent);background-color:color-mix(in srgb, var(--color-accent) 5%, transparent)}.nav-link-a.active-nav,.header-icon-link.active-nav,.nav-brand-cell:has(.brand-link.active-nav){background-image:var(--bracket-image);background-size:var(--bracket-size);background-position:var(--bracket-position);background-repeat:no-repeat}.brand-link.active-nav{background:0 0}.nav-brand-cell:has(.brand-link.active-nav){color:var(--color-accent);background-color:color-mix(in srgb, var(--color-accent) 5%, transparent)}@media (width<64rem){.nav-brand-cell{background-color:color-mix(in srgb, var(--color-accent) 5%, transparent);background-image:var(--bracket-image);background-size:var(--bracket-size);background-position:var(--bracket-position);background-repeat:no-repeat}.brand-link,.brand-link.active-nav{background:0 0}.site-brand{font-size:clamp(1.2rem,6vw,1.6rem)}}#menu-btn{aspect-ratio:1;border:0;border-left:var(--grid-line-width) solid var(--color-grid-line);width:3.75rem;height:3.75rem;color:var(--color-fg);cursor:pointer;background:0 0;flex:none;grid-column:2;justify-content:center;align-self:stretch;align-items:center;margin-left:0;padding:0;line-height:0;display:flex}#menu-btn svg{width:1.5rem;height:1.5rem}.mobile-nav-menu{opacity:1;grid-column:1/-1;width:100%;max-height:500px;margin:0;padding:.5rem 0 .75rem;list-style:none;transition:max-height .3s,opacity .3s;overflow:hidden}.mobile-nav-menu.hidden{opacity:0;pointer-events:none;max-height:0;padding:0}.mobile-nav-menu li{text-align:center;border-bottom:.5px solid var(--color-grid-line);width:100%}.mobile-nav-menu li:first-child{border-top:.5px solid var(--color-grid-line)}.mobile-nav-menu li a{text-align:center;color:color-mix(in srgb, var(--color-fg) 65%, transparent);padding:.625rem 1rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:color .2s,background-color .2s;display:block}.mobile-nav-menu li a:hover{color:var(--color-link-hover);background:color-mix(in srgb, var(--color-link-hover) 5%, transparent)}.mobile-nav-menu li a.active-nav{color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 5%, transparent)}.mobile-nav-menu li.mobile-nav-utils{border-bottom:none}.mobile-nav-utils{justify-content:center;gap:0;display:flex}.mobile-util-btn{border:0;border-bottom:.5px solid var(--color-grid-line);color:color-mix(in srgb, var(--color-fg) 65%, transparent);font:inherit;cursor:pointer;background:0 0;flex:1;justify-content:center;align-items:center;gap:.375rem;padding:.75rem 1rem;font-size:.875rem;font-weight:500;transition:color .2s,background .2s;display:flex}.mobile-util-btn+.mobile-util-btn{border-left:.5px solid var(--color-grid-line)}.mobile-util-btn:hover{color:var(--color-link-hover);background:color-mix(in srgb, var(--color-link-hover) 5%, transparent)}html[data-theme=midnight] #menu-btn,html[data-theme=midnight] .mobile-nav-menu li a,html[data-theme=midnight] .mobile-util-btn,html[data-theme=midnight] .header-icon-link,html[data-theme=midnight] #theme-btn{color:#fff}.mobile-util-btn svg{flex-shrink:0;width:1.125rem;height:1.125rem}#theme-btn-mobile .icon-sun,#theme-btn-mobile .icon-star,html[data-theme=dark] #theme-btn-mobile .icon-moon,html[data-theme=midnight] #theme-btn-mobile .icon-moon{display:none}html[data-theme=midnight] #theme-btn-mobile .icon-sun,html[data-theme=dark] #theme-btn-mobile .icon-star{display:block}.header-icon-link,#theme-btn{color:var(--color-nav-primary);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;padding:.5rem;line-height:0;transition:color .2s,background-color .2s;display:inline-flex;position:relative}.header-icon-link:hover,#theme-btn:hover{color:var(--color-link-hover);background:color-mix(in srgb, var(--color-link-hover) 5%, transparent)}.header-icon-link:hover svg,#theme-btn:hover svg{stroke:var(--color-link-hover)}.header-icon-link svg,#theme-btn svg{width:1.25rem;height:1.25rem;transition:stroke .2s,transform .2s}#theme-btn .icon-moon{transition:all .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#theme-btn .icon-sun,#theme-btn .icon-star{transition:all .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(90deg)scale(0)}html[data-theme=dark] #theme-btn .icon-moon{transform:translate(-50%,-50%)rotate(-90deg)scale(0)}html[data-theme=midnight] #theme-btn .icon-sun{transform:translate(-50%,-50%)rotate(0)scale(1)}html[data-theme=midnight] #theme-btn .icon-moon{transform:translate(-50%,-50%)rotate(-90deg)scale(0)}html[data-theme=dark] #theme-btn .icon-sun{transform:translate(-50%,-50%)rotate(90deg)scale(0)}html[data-theme=dark] #theme-btn .icon-star{transform:translate(-50%,-50%)rotate(0)scale(1)}@media (width>=64rem){.site-header{min-height:3.85rem}.nav-gutter-left,.nav-gutter-right{flex:1;display:block}.nav-gutter-left{border-right:.5px solid var(--color-grid-line);flex:1}.nav-gutter-right{border-left:.5px solid var(--color-grid-line)}.nav-grid{--nav-h:3.85rem;flex-wrap:nowrap;flex:0 0 var(--content-max);width:var(--content-max);align-items:stretch;gap:0;max-width:100%;margin-inline:0;padding-inline:0;display:flex}.nav-brand-cell{border-right:.5px solid var(--color-grid-line);flex:0 auto;justify-content:center;align-items:stretch;display:flex}.nav-brand-cell .brand-link{justify-content:center;width:100%;padding:.9rem 1.5rem}.nav-links-cell{flex:1 0 0;align-items:stretch;display:flex}.nav-links-cell .nav-link-a{border-right:.5px solid var(--color-grid-line);text-align:center;flex:auto;min-width:0;padding:1.15rem .75rem}.nav-links-cell .nav-link-a:last-child{border-right:.5px solid var(--color-grid-line)}.nav-utils-cell{flex:none;align-items:center;gap:0;display:flex}.nav-utils-cell>.header-icon-link,.nav-utils-cell>#theme-btn{border-right:.5px solid var(--color-grid-line)}.nav-utils-cell>:last-child{border-right:none}#menu-btn,.mobile-nav-menu,.mobile-nav-menu.hidden{display:none}.header-icon-link,#theme-btn{flex-shrink:0;justify-content:center;align-items:center;width:3.85rem;height:3.85rem;padding:0;display:flex}#theme-btn{min-width:unset}}.home-hero{text-align:center;flex-direction:column;align-items:center;gap:1.5rem;padding-top:2.5rem;padding-bottom:2.5rem;display:flex}.home-avatar{flex-shrink:0;margin:0}.hero-photo-col{flex-shrink:0;justify-content:center;align-items:center;width:min(340px,100%);display:flex}.avatar-link{aspect-ratio:1;width:min(340px,100%);height:auto;box-shadow:0 0 0 5px var(--color-avatar-ring);border-radius:50%;text-decoration:none;display:block;position:relative;overflow:hidden}html[data-theme=dark] .avatar-link{box-shadow:0 0 0 5px var(--color-avatar-ring)}.avatar-link:after{content:"";opacity:0;pointer-events:none;mix-blend-mode:color;z-index:1;background:#5ce0b880;border-radius:50%;transition:opacity .3s;position:absolute;inset:0}.avatar-link:hover:after,.avatar-link:focus-visible:after{opacity:1}.home-info{flex:1;min-width:0}.avatar-img{object-fit:cover;border:none;border-radius:50%;width:100%;height:100%;margin:0;display:block}.home-title{letter-spacing:-.04em;text-align:center;color:var(--color-heading-primary);margin-block:.5rem;font-size:clamp(1.6rem,2.4vw + .35rem,2.15rem);font-weight:700;line-height:1.2;transition:color .2s;display:block}.home-title,.home-title *{color:var(--color-heading-primary);transition:color .2s}html[data-theme=dark] .home-title,html[data-theme=dark] .home-title *{color:#fff}html[data-theme=dark] .post-link-thumb-wrapper,html[data-theme=midnight] .post-link-thumb-wrapper{border-color:var(--color-image-frame)}html[data-theme=dark] .post-link-thumb-wrapper{border-color:#fff}.home-rss-link{vertical-align:middle;color:var(--color-accent);align-items:center;margin-left:.35rem;line-height:0;display:inline-flex}.home-rss-link svg{width:1.125rem;height:1.125rem;stroke:var(--color-accent);stroke-width:3px}.home-lead{color:color-mix(in srgb, var(--color-accent) 30%, #1f1f1f 70%);margin-inline:auto;font-size:.9375rem;line-height:1.6}.home-cta{text-align:center;margin-top:2rem}.home-cta a{color:var(--color-fg);text-decoration:none}.home-cta a:hover{color:var(--color-link-hover)}.post-link{color:var(--color-fg);align-items:center;text-decoration:none;transition:color .2s;display:flex}.post-card{gap:var(--container-pad);align-items:center;width:100%;display:flex}.post-link-media{flex-direction:column;flex-shrink:0;align-items:center;gap:.65rem;display:flex}.post-thumb-link{line-height:0;text-decoration:none;display:block}.post-link-thumb-wrapper{border-radius:var(--radius-image-frame);border:var(--width-image-frame,1px) solid var(--color-image-frame);contain:paint;background:0 0;flex-shrink:0;width:260px;height:162px;position:relative;overflow:hidden}.post-repo-link{letter-spacing:.04em;text-transform:uppercase;color:var(--color-repo-link);justify-content:center;align-items:center;gap:.45rem;padding:.15rem 0;font-size:.72rem;text-decoration:none;transition:color .2s;display:inline-flex}.post-repo-link svg{flex-shrink:0;width:.9rem;height:.9rem;transition:none;animation:none;display:block;transform:none}.post-repo-link:hover,.post-repo-link:focus-visible{color:var(--color-repo-link-hover)}.post-repo-link:hover svg,.post-repo-link:focus-visible svg{animation:none;transform:none}.post-link-thumb{object-fit:cover;border-radius:inherit;border:none;width:100%;height:100%;margin:0;padding:0;transition:opacity .3s;display:block;position:absolute;inset:0}.post-link-tech-overlay{opacity:0;border-radius:inherit;background:#00000080;flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;padding:.75rem;transition:opacity .3s;display:flex;position:absolute;inset:0}.post-link-tech-icon{border:none;outline:none;width:1.5rem;height:1.5rem;transition:transform .2s}.post-link-tech-icon:hover{transform:scale(1.15)}.post-link-body{flex-direction:column;flex:1;justify-content:center;min-width:0;display:flex}@media (width<=600px){.post-card,.post-link{flex-direction:column;align-items:stretch;gap:.75rem}.post-link-media,.post-thumb-link{width:100%}.post-link-thumb-wrapper{aspect-ratio:16/10;width:100%;height:auto}.post-link-body{padding-left:0}}.post-link h3{color:var(--color-heading-primary);letter-spacing:-.03em;font-weight:600;transition:color .2s}.post-link:hover{color:var(--color-link-hover)}.post-card:hover .post-link h3,.post-card:focus-within .post-link h3,.post-link:hover h3,.post-link:focus-visible h3{color:var(--color-title-hover)}.post-card:hover .post-link-thumb,.post-card:focus-within .post-link-thumb,.post-thumb-link:hover .post-link-thumb,.post-thumb-link:focus-visible .post-link-thumb{opacity:.6}.post-card:hover .post-link-tech-overlay,.post-card:focus-within .post-link-tech-overlay,.post-thumb-link:hover .post-link-tech-overlay,.post-thumb-link:focus-visible .post-link-tech-overlay{opacity:1}.page-container{max-width:var(--content-max);padding-inline:var(--container-pad);margin-inline:auto;position:relative}.section-divider{border:none;margin:0;padding:0;position:relative}.section-divider:after{content:"";top:0;left:calc(-1 * var(--container-pad));right:calc(-1 * var(--container-pad));height:var(--grid-line-width);background:var(--color-grid-line);box-shadow:-9999px 0 0 0 var(--color-grid-line), 9999px 0 0 0 var(--color-grid-line);pointer-events:none;position:absolute}.page-title{color:var(--color-heading-primary);margin-top:2.5rem;margin-bottom:0;font-size:1.5rem;font-weight:600}html[data-theme=dark] .page-subtitle,html[data-theme=midnight] .page-subtitle,html[data-theme=dark] .home-lead,html[data-theme=midnight] .home-lead,html[data-theme=dark] .post-title-block p,html[data-theme=midnight] .post-title-block p,html[data-theme=dark] .recent-post-desc,html[data-theme=midnight] .recent-post-desc{color:#ffffffad}.page-subtitle{color:color-mix(in srgb, var(--color-accent) 30%, #1f1f1f 70%);margin-top:.5rem;margin-bottom:1.5rem;font-style:italic}.page-list{margin:0;padding:0;list-style:none}.page-list-item{padding:1.5rem var(--container-pad);margin-inline:calc(-1 * var(--container-pad));position:relative}.page-list-item:last-child{border-bottom:none}.page-list-item:before,.page-list-item:after{content:"";height:var(--grid-line-width);background:var(--color-grid-line);box-shadow:-9999px 0 0 0 var(--color-grid-line), 9999px 0 0 0 var(--color-grid-line);pointer-events:none;display:block;position:absolute;left:0;right:0}.page-list-item:before{top:0}.page-list-item:after{display:none}.page-list-item:last-child:after{display:block;bottom:0}.page-list-title{margin:0;font-size:1.125rem;font-style:normal;font-weight:600}.page-list-desc{color:color-mix(in srgb, var(--color-fg) 65%, transparent);margin:.25rem 0 0;font-size:.875rem}.search-input{border:1px solid var(--color-border);background:var(--color-bg);width:100%;color:var(--color-fg);font:inherit;outline-offset:2px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem}.page-container>.social-bar-line,.page-container>.social-bar{margin-inline:calc(-1 * var(--container-pad));width:calc(100% + 2 * var(--container-pad))}.social-bar-line{border:none;border-top:var(--grid-line-width) solid var(--color-grid-line);width:100%;margin-inline:0;padding:0;transition:border-color .2s}.social-bar-line:hover{animation:1.4s linear infinite iridescent-border}.social-bar{width:100%;max-width:none;margin-inline:0;padding-inline:0;position:relative}.social-bar-inner{max-width:var(--content-max);justify-content:center;align-items:stretch;margin-inline:auto;display:flex;position:relative}.social-bar-link{color:color-mix(in srgb, var(--color-fg) 65%, transparent);border-left:var(--grid-line-width) solid var(--color-grid-line);justify-content:center;align-items:center;padding:1.25rem 2rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:color .2s,background .2s;display:flex}.social-bar-link:last-child{border-right:var(--grid-line-width) solid var(--color-grid-line)}.social-bar-link:hover{color:var(--color-link-hover);background:color-mix(in srgb, var(--color-link-hover) 5%, transparent)}@media (width<=639px){.social-bar-inner{flex-wrap:wrap}.social-bar-link{flex:auto;min-width:0;padding:1rem .75rem}}.site-footer{z-index:3;width:100%;max-width:none;margin-top:4rem;padding-inline:0;position:relative}.footer-teeth{width:100%;height:5rem;color:var(--color-accent);margin-bottom:-1px;line-height:0;overflow:hidden}.footer-teeth svg{width:100%;height:100%;display:block}.footer-body{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='70'%3E%3Cpath d='M 70 0 L 70 70 L 0 70' fill='none' stroke='rgba(255%2C255%2C255%2C0.18)' stroke-width='0.5' stroke-dasharray='4 4'/%3E%3C/svg%3E"), var(--color-accent);color:var(--color-bg);width:100%;padding-block:2.5rem 2rem}.footer-body-inner{max-width:var(--layout-max);padding-inline:var(--container-pad);grid-template-columns:1fr;gap:1.5rem;margin-inline:auto;display:grid}.footer-brand{max-width:38ch}.footer-brand-name{letter-spacing:-.02em;color:var(--color-bg);white-space:nowrap;margin:0 0 .75rem;font-size:clamp(1.5rem,3vw,2.25rem);font-weight:700;line-height:1.1}.footer-brand-desc{color:color-mix(in srgb, var(--color-bg) 65%, transparent);margin:0 0 .75rem;font-size:.875rem;line-height:1.6}.footer-brand-meta{text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb, var(--color-bg) 50%, transparent);margin:0;font-size:.75rem}.footer-col-heading{text-transform:uppercase;letter-spacing:.1em;color:var(--color-bg);margin:0 0 1rem;font-size:1.125rem;font-weight:600}.footer-col-list{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.footer-col-link{color:color-mix(in srgb, var(--color-bg) 70%, transparent);padding-block:.3rem;font-size:.9375rem;text-decoration:none;transition:color .2s;display:block}.footer-col-link:hover{color:var(--color-bg)}button.style-toggle-btn{width:auto;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;margin:0;padding-inline:0}.footer-bar{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='70'%3E%3Cpath d='M 70 0 L 70 70 L 0 70' fill='none' stroke='rgba(255%2C255%2C255%2C0.18)' stroke-width='0.5' stroke-dasharray='4 4'/%3E%3C/svg%3E"), var(--color-accent);border-top:.5px solid color-mix(in srgb, var(--color-bg) 20%, transparent);width:100%}.footer-bar-inner{max-width:var(--layout-max);padding-inline:var(--container-pad);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-inline:auto;padding-block:1rem;font-size:.75rem;display:flex}.footer-bar-copy,.footer-bar-links{color:color-mix(in srgb, var(--color-bg) 55%, transparent)}.footer-bar-inner a{color:color-mix(in srgb, var(--color-bg) 55%, transparent);text-decoration:none;transition:color .2s}.footer-bar-inner a:hover{color:var(--color-bg)}.footer-bar-links{align-items:center;gap:.5rem;display:flex}@media (width>=640px){.footer-body-inner{grid-template-columns:2.5fr 1fr 1fr;align-items:start;gap:3rem}.footer-brand{max-width:38ch}}html[data-theme=dark] .footer-teeth{color:#61656d}html[data-theme=dark] .footer-body{color:#fff;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='70'%3E%3Cpath d='M 70 0 L 70 70 L 0 70' fill='none' stroke='rgba(255%2C255%2C255%2C0.14)' stroke-width='0.5' stroke-dasharray='4 4'/%3E%3C/svg%3E"),#61656d}html[data-theme=dark] .footer-bar{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='70'%3E%3Cpath d='M 70 0 L 70 70 L 0 70' fill='none' stroke='rgba(255%2C255%2C255%2C0.14)' stroke-width='0.5' stroke-dasharray='4 4'/%3E%3C/svg%3E"),#61656d;border-top:.5px solid #ffffff24}html[data-theme=dark] .footer-brand-name,html[data-theme=dark] .footer-col-heading,html[data-theme=dark] .footer-body :is(strong),html[data-theme=dark] .footer-brand-desc,html[data-theme=dark] .footer-brand-meta,html[data-theme=dark] .footer-col-link,html[data-theme=dark] .footer-bar-copy,html[data-theme=dark] .footer-bar-links,html[data-theme=dark] .footer-bar-inner a{color:#fff}html[data-theme=dark] .footer-col-link:hover,html[data-theme=dark] .footer-bar-inner a:hover{color:var(--color-link-hover)}html[data-theme=midnight] .footer-body,html[data-theme=midnight] .footer-bar{background:#5ce0b8}html[data-theme=midnight] .footer-teeth{color:#5ce0b8}html[data-theme=midnight] .footer-body *,html[data-theme=midnight] .footer-bar *{color:#000}.post-layout-article{width:100%;padding:0 0 2rem;position:relative}.hero-image{width:min(100%,1120px);margin:1.5rem auto 2.5rem}.hero-image img{border-radius:var(--radius-image-frame);border:var(--width-image-frame) solid var(--color-image-frame);width:100%;height:auto;box-shadow:var(--shadow-md);margin:0;display:block}.post-prose{width:100%;color:var(--color-fg);margin:auto;padding:.75rem 0 1rem}.prose h1,.prose h2,.prose h3{color:var(--color-accent)}.post-title-block{text-align:center;width:100%;margin:.5rem auto 1.5rem;padding:0;line-height:1.1}.post-title-block h1{text-wrap:balance;color:var(--color-accent);margin:0 0 .75rem;margin-inline:auto;font-size:clamp(2rem,3.5vw,3.4rem);line-height:1.15}html[data-theme=dark] .post-title-block h1,.dark .post-title-block h1{color:var(--color-title-hover)}.post-title-block p{color:color-mix(in srgb, var(--color-accent) 18%, #1f1f1f 82%);margin:0 auto;font-size:1rem;line-height:1.7}.post-title-block .post-meta-row{justify-content:center;margin-top:.85rem}.post-title-block .post-tags{justify-content:space-evenly}.post-date{color:color-mix(in srgb, var(--color-fg) 60%, transparent);margin-bottom:.5rem}.blog-list-grid{flex-wrap:wrap;gap:2rem;margin:0;padding:0;list-style:none;display:flex}.blog-list-item{width:calc(50% - 1rem)}.blog-list-item:first-child{text-align:center;width:100%;margin-bottom:1rem}.post-card-link{text-decoration:none;transition:all .2s;display:block}.post-card-link *{text-decoration:none;transition:all .2s}.blog-list-item img{border-radius:var(--radius-image-frame);border:var(--width-image-frame) solid var(--color-image-frame);margin-bottom:.5rem}.blog-list-item:first-child img{width:100%}.post-card-title{color:var(--color-fg);margin:0;line-height:1}.blog-list-item:first-child .post-card-title{font-size:2.369rem}.post-card-date{color:color-mix(in srgb, var(--color-fg) 65%, transparent);margin:0}html[data-theme=midnight] .post-card-date,html[data-theme=midnight] .post-date,html[data-theme=midnight] .recent-post-date,html[data-theme=midnight] .meta-text,html[data-theme=midnight] .post-title-block .post-meta-row{color:#fff}.post-card-link:hover .post-card-title,.post-card-link:hover .post-card-date{color:var(--color-link-hover)}.post-card-link:hover img{box-shadow:var(--shadow-md)}.tag{border:1px solid var(--color-border);color:inherit;background:linear-gradient(120deg, transparent 0%, color-mix(in srgb, var(--color-accent) 8%, transparent) 38%, color-mix(in srgb, var(--color-accent) 24%, transparent) 50%, color-mix(in srgb, var(--color-accent) 8%, transparent) 62%, transparent 100%), color-mix(in srgb, var(--color-accent) 10%, transparent);box-shadow:0 0 0 0 color-mix(in srgb, var(--color-accent) 0%, transparent);background-position:130%,0 0;background-size:240% 100%,100% 100%;border-radius:999px;align-items:center;padding:.4rem .85rem;font-size:.875rem;text-decoration:none;transition:transform .26s cubic-bezier(.22,1,.36,1),border-color .22s,box-shadow .26s,background-position .42s cubic-bezier(.22,1,.36,1),background-color .22s,color .18s;display:inline-flex;position:relative}.tag:hover,.tag:focus-visible{border-color:color-mix(in srgb, var(--color-accent) 58%, var(--color-border));box-shadow:0 8px 20px -18px color-mix(in srgb, var(--color-accent) 65%, transparent);background-position:18%,0 0;transform:translateY(-1px)}.tag:focus-visible{outline:none}.tag-list,.tag-results-list{margin:0;padding:0;list-style:none}.tag-list li,.tag-results-list li{list-style:none;display:flex;overflow:visible}.pagination{justify-content:space-between;gap:1rem;margin-top:2rem;display:flex}.pagination-link{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.4rem .7rem;text-decoration:none}.pagination-empty{visibility:hidden}.breadcrumb-list{gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.breadcrumb-item+.breadcrumb-item:before{content:"/";color:color-mix(in srgb, var(--color-fg) 55%, transparent);margin-right:.5rem}.back-button{align-items:center;gap:.35rem;margin-bottom:.4rem;text-decoration:none;display:inline-flex}.breadcrumb-list{justify-content:center;margin-bottom:.25rem}.post-meta-row,.post-tags,.post-nav,.archive-list,.tag-list{flex-wrap:wrap;gap:.65rem .85rem;display:flex}.post-tags{margin-top:.75rem}.post-nav{border-top:1px solid var(--color-border);justify-content:space-between;margin-top:2rem;padding-top:1.25rem;font-size:.9375rem}.post-nav a{max-width:45%}.reading-progress{background:color-mix(in srgb, var(--color-accent) 18%, transparent);height:3px;z-index:var(--z-progress);position:fixed;inset:0 0 auto}.reading-progress-bar{background:var(--color-accent);width:0;height:100%;transition:width .12s linear}.back-to-top{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);box-shadow:var(--shadow-sm);padding:.5rem .75rem;text-decoration:none;position:fixed;bottom:1rem;right:1rem}@media (width>=640px){.home-hero{text-align:center;flex-direction:row;justify-content:flex-start;align-items:center;gap:2rem}.home-avatar{flex:1 1 0;min-width:0}.hero-photo-col{flex:0 0 340px;width:340px;min-width:0;transform:translate(-.35rem)}.home-info{flex:1.618 1 0;min-width:0;margin-top:-.5rem}.home-title{text-align:center;margin-block:1rem;font-size:clamp(1.6rem,2.4vw + .35rem,2.15rem)}.home-lead{margin-inline:0}}@media (width<=639px){.blog-list-grid{gap:.5rem}.blog-list-item{text-align:center;width:100%}.blog-list-item:first-child{margin-bottom:0}.blog-list-item:first-child .post-card-title{font-size:1.25rem}}body{position:relative}.v-grid-line{pointer-events:auto;z-index:2;background:0 0;width:17px;position:fixed;top:0;bottom:0;transform:translate(-50%)}.v-grid-line:before{content:"";width:var(--grid-line-width);background:var(--color-grid-line);transition:background .3s;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.v-grid-line:hover:before{animation:1.2s linear infinite iridescent}.v-grid-line--left{left:calc(50% - var(--content-max) / 2)}.v-grid-line--right{left:calc(50% + var(--content-max) / 2)}@media (width>=64rem){.v-grid-line{top:3.85rem}}@media (width<=64rem){.v-grid-line{display:none}}.recent-posts-list{margin:0;padding:0;list-style:none}.recent-post-item:first-child:before{content:"";height:var(--grid-line-width);background:var(--color-grid-line);box-shadow:-9999px 0 0 0 var(--color-grid-line), 9999px 0 0 0 var(--color-grid-line);pointer-events:none;position:absolute;top:0;left:0;right:0}.recent-post-item{padding:1.5rem var(--container-pad);margin-inline:calc(-1 * var(--container-pad));transition:background-color .2s;position:relative}.recent-post-item:after{content:"";height:var(--grid-line-width);background:var(--color-grid-line);box-shadow:-9999px 0 0 0 var(--color-grid-line), 9999px 0 0 0 var(--color-grid-line);pointer-events:none;position:absolute;bottom:0;left:0;right:0}.recent-post-item:last-child:after{display:block}.recent-post-item:hover{background:color-mix(in srgb, var(--color-accent) 5%, transparent)}.recent-post-title{letter-spacing:-.03em;color:var(--color-heading-primary);margin:0;font-size:1.5rem;font-style:normal;font-weight:600;transition:color .2s}.recent-post-item:hover .recent-post-title{color:var(--color-title-hover)}html[data-theme=dark] .recent-post-title,html[data-theme=midnight] .recent-post-title{color:#fff}html[data-theme=dark] .recent-post-item:hover .recent-post-title,html[data-theme=midnight] .recent-post-item:hover .recent-post-title{color:var(--color-title-hover)}.recent-post-desc{color:color-mix(in srgb, var(--color-accent) 14%, #1f1f1f 86%);margin:.25rem 0 0;font-size:.8125rem}.recent-post-date{text-transform:uppercase;letter-spacing:.1em;color:color-mix(in srgb, var(--color-accent) 75%, transparent);margin-bottom:.375rem;font-size:.8125rem;display:block}.read-more-link{color:var(--color-read-more);margin-top:.5rem;font-size:.8125rem;transition:color .2s,opacity .2s;display:inline-block}.post-link:hover .read-more-link,.post-link:focus-visible .read-more-link{color:var(--color-read-more-hover);opacity:.95}.all-posts-link{color:color-mix(in srgb, var(--color-fg) 70%, transparent);align-items:center;gap:.25rem;margin-top:2rem;font-size:.875rem;text-decoration:none;transition:color .2s;display:inline-flex}.all-posts-link svg{width:1em;height:1em}.all-posts-link:hover{color:var(--color-link-hover)}.all-posts-cta{text-align:center;margin:2rem 0}.frame-marks{pointer-events:none;z-index:1;color:var(--color-grid-line);position:absolute;inset:0}html[data-theme=dark] .frame-marks,html[data-theme=midnight] .frame-marks{color:color-mix(in srgb, var(--color-fg) 25%, transparent)}.frame-cross{pointer-events:auto;cursor:crosshair;width:.95rem;height:.95rem;line-height:0;transition:color .3s,transform .2s;display:block;position:absolute}.frame-cross:hover{animation:1.2s linear infinite iridescent-color;transform:scale(1.4)}.frame-cross svg{width:100%;height:100%}@keyframes iridescent{0%{background:#3eeab0}14%{background:#4c9ef0}28%{background:#a65eed}42%{background:#f04c9e}57%{background:#f0904c}71%{background:#bfea3e}85%{background:#3eea3e}to{background:#3eeab0}}@keyframes iridescent-color{0%{color:#3eeab0}14%{color:#4c9ef0}28%{color:#a65eed}42%{color:#f04c9e}57%{color:#f0904c}71%{color:#bfea3e}85%{color:#3eea3e}to{color:#3eeab0}}.frame-tl{top:0;left:0;transform:translate(-50%,-50%)}.frame-tr{top:0;right:0;transform:translate(50%,-50%)}.frame-bl{bottom:0;left:0;transform:translate(-50%,50%)}.frame-br{bottom:0;right:0;transform:translate(50%,50%)}@media (width<=64rem){.frame-marks{display:none}}.post-gallery{width:100%;margin-top:2rem;margin-bottom:3rem}.post-carousel{isolation:isolate;align-items:center;display:flex;position:relative;overflow:clip}.carousel-track-wrapper{contain:paint;border-radius:.75rem;flex:1;overflow:clip}.carousel-track{will-change:transform;backface-visibility:hidden;transition:transform .5s cubic-bezier(.16,1,.3,1);display:flex;transform:translateZ(0)}.carousel-slide{background:0 0;flex:0 0 100%;width:100%;min-width:100%;overflow:hidden}.carousel-slide a{line-height:0;display:block}html .carousel-slide img{object-fit:contain;border:none;border-radius:0;width:100%;height:auto;margin:0;display:block}html[data-theme-switching=true] .carousel-slide{visibility:hidden}html[data-theme-switching=true] .carousel-slide.is-active{visibility:visible}.carousel-btn{z-index:2;border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-bg) 75%, transparent);width:2.5rem;height:2.5rem;color:var(--color-fg);cursor:pointer;backdrop-filter:blur(8px);border-radius:50%;justify-content:center;align-items:center;transition:background .2s,border-color .2s,transform .2s,color .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.carousel-btn--prev{left:.75rem}.carousel-btn--next{right:.75rem}.carousel-btn:hover{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg);transform:translateY(-50%)scale(1.1)}.carousel-footer{justify-content:center;align-items:center;gap:1.25rem;margin-top:1rem;display:flex}.carousel-counter{font-variant-numeric:tabular-nums;letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb, var(--color-fg) 55%, transparent);font-size:.7rem;font-weight:700}.carousel-sep{opacity:.4}.carousel-dots{align-items:center;gap:.3rem;display:flex}.carousel-dot{background:var(--color-border);cursor:pointer;border:none;border-radius:50%;width:.4rem;height:.4rem;padding:0;transition:background .2s,transform .2s}.carousel-dot.is-active{background:var(--color-accent);transform:scale(1.5)}@media (prefers-reduced-motion:reduce){.carousel-track{transition:none}.carousel-btn:hover{transform:translateY(-50%)}}.flow-figure{border:1px solid var(--color-border);background:var(--color-surface);border-radius:.75rem;margin:2rem 0;overflow:hidden}.flow-canvas{cursor:grab;width:100%;position:relative}.flow-canvas:active{cursor:grabbing}.flow-caption{color:var(--color-fg);opacity:.6;text-align:center;background:var(--color-surface);border-top:1px solid var(--color-border);padding:.6rem 1.25rem;font-family:Geist Mono Variable,ui-monospace,monospace;font-size:.75rem}.fn-node{text-align:left;background:var(--fn-node-bg);border:1px solid var(--fn-node-border);border-left:3px solid var(--fn-accent);min-width:130px;box-shadow:var(--fn-node-shadow);border-radius:8px;padding:10px 16px 10px 14px;transition:box-shadow .15s}.fn-node__label{color:var(--fn-node-color);font-size:.8rem;font-weight:700;font-family:var(--font-sans);letter-spacing:-.01em;line-height:1.3;display:block}.fn-node__sublabel{color:var(--fn-sublabel-color);margin-top:4px;font-family:Geist Mono Variable,ui-monospace,monospace;font-size:.66rem;line-height:1.4;display:block}.flow-canvas .react-flow__handle.fn-handle{background:var(--fn-accent);border:2px solid var(--fn-handle-border);border-radius:50%;width:8px;height:8px}.flow-canvas .react-flow__handle.fn-handle--tb{opacity:0;pointer-events:none}.flow-canvas .react-flow__edge-text{fill:var(--fn-sublabel-color);font-family:Geist Mono Variable,ui-monospace,monospace;font-size:.62rem}.flow-canvas .react-flow__edge-textbg{fill:var(--xy-background-color)}.flow-canvas--light{--xy-background-color:#ede6d8;--xy-background-pattern-color:#c4b897;--xy-node-background-color:#fffdf6;--xy-node-border:1px solid #c4b090;--xy-node-border-radius:8px;--xy-node-color:#1a1a1a;--xy-node-box-shadow:0 2px 8px #0000001a;--xy-edge-stroke:#7a6e5a;--xy-edge-stroke-width:2;--xy-handle-background-color:#2d9b7a;--xy-handle-border-color:#ede6d8;--fn-node-bg:#fffdf6;--fn-node-border:#c4b090;--fn-node-shadow:0 2px 10px #0000001a, 0 0 0 0 transparent;--fn-node-color:#1a1a1a;--fn-sublabel-color:#5a5040;--fn-accent:#2d9b7a;--fn-handle-border:#ede6d8}.flow-canvas--dark{--xy-background-color:#0d0d0d;--xy-background-pattern-color:#292929;--xy-node-background-color:#1a1a1a;--xy-node-border:1px solid #333;--xy-node-border-radius:8px;--xy-node-color:#e2e2e2;--xy-node-box-shadow:0 2px 12px #0009;--xy-edge-stroke:#505050;--xy-edge-stroke-width:2;--xy-handle-background-color:#4a90e2;--xy-handle-border-color:#0d0d0d;--fn-node-bg:#1a1a1a;--fn-node-border:#333;--fn-node-shadow:0 2px 12px #0009;--fn-node-color:#e2e2e2;--fn-sublabel-color:#909090;--fn-accent:#4a90e2;--fn-handle-border:#0d0d0d}.flow-canvas--midnight{--xy-background-color:#120a30;--xy-background-pattern-color:#251655;--xy-node-background-color:#1e1248;--xy-node-border:1px solid #5ce0b850;--xy-node-border-radius:8px;--xy-node-color:#e8e4f5;--xy-node-box-shadow:0 2px 16px #5ce0b826;--xy-edge-stroke:#5ce0b890;--xy-edge-stroke-width:2;--xy-handle-background-color:#5ce0b8;--xy-handle-border-color:#120a30;--fn-node-bg:#1e1248;--fn-node-border:#5ce0b850;--fn-node-shadow:0 2px 16px #5ce0b826;--fn-node-color:#e8e4f5;--fn-sublabel-color:#9de8d0;--fn-accent:#5ce0b8;--fn-handle-border:#120a30}html[data-style=poster] .home-title,html[data-style=poster] .page-title,html[data-style=poster] .title-lg,html[data-style=poster] .recent-post-title,html[data-style=poster] .prose h1,html[data-style=poster] .prose h2{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.01em;font-weight:400;line-height:1.08}html[data-style=poster] .site-brand{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.01em;font-size:clamp(1rem,5vw,1.35rem);font-weight:400}html[data-style=poster] .home-title{font-size:clamp(1.9rem,3.2vw + .4rem,2.9rem)}html[data-style=poster] .page-title{font-size:clamp(1.7rem,2.5vw,2.2rem)}html[data-style=poster] .page-subtitle,html[data-style=poster] .home-lead,html[data-style=poster] .post-title-block p,html[data-style=poster] .recent-post-desc{color:color-mix(in srgb, var(--color-fg) 68%, transparent)}html[data-style=poster][data-theme=dark] #theme-btn .icon-star{transform:translate(-50%,-50%)rotate(90deg)scale(0)}html[data-style=poster][data-theme=dark] #theme-btn .icon-sun{transform:translate(-50%,-50%)rotate(0)scale(1)}html[data-style=poster][data-theme=dark] #theme-btn-mobile .icon-star{display:none}html[data-style=poster][data-theme=dark] #theme-btn-mobile .icon-sun{display:block}html[data-style=poster] .terminal-home,html:not([data-style=poster]) .poster-home{display:none}html[data-style=poster] .poster-home{max-width:var(--content-max);padding-inline:var(--container-pad);margin-inline:auto}html[data-style=poster] .poster-home h1,html[data-style=poster] .poster-home h2,html[data-style=poster] .poster-home h3{font-family:var(--font-display);letter-spacing:.01em;text-transform:uppercase;font-weight:400}html[data-style=poster] .poster-grid-band{background-image:repeating-linear-gradient(0deg, color-mix(in srgb, var(--color-fg) 12%, transparent) 0 1px, transparent 1px 8px), repeating-linear-gradient(90deg, color-mix(in srgb, var(--color-fg) 12%, transparent) 0 1px, transparent 1px 8px)}html[data-style=poster] .poster-eyebrow{font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;margin:0;font-weight:700}html[data-style=poster] .poster-hero{margin-inline:calc(-1 * var(--container-pad));padding:clamp(2.5rem, 6vw, 4.5rem) var(--container-pad);border-bottom:1px solid color-mix(in srgb, var(--color-fg) 35%, transparent);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:clamp(1.5rem,4vw,3.5rem);display:grid;position:relative}html[data-style=poster] .poster-hero-photo{line-height:0;display:block}html[data-style=poster] .poster-hero-photo img{border:2px solid var(--color-fg);object-fit:cover;border-radius:50%;width:clamp(10rem,22vw,17.5rem);height:clamp(10rem,22vw,17.5rem);margin:0}html[data-style=poster] .poster-hero h1{color:var(--color-fg);margin:.6rem 0 0;font-size:clamp(1.9rem,4.4vw,3.8rem);line-height:.95}html[data-style=poster] .poster-hero-lead{max-width:46ch;font-family:var(--font-sans);color:color-mix(in srgb, var(--color-fg) 66%, transparent);margin:1.1rem 0 0;font-size:.9375rem;line-height:1.55}html[data-style=poster] .poster-marquee{margin-inline:calc(-1 * var(--container-pad));border-bottom:1px solid color-mix(in srgb, var(--color-fg) 35%, transparent);background:var(--color-bg);color:var(--color-fg);display:flex;overflow:hidden}html[data-style=poster] .poster-marquee-track{width:max-content;font-family:var(--font-display);letter-spacing:.04em;white-space:nowrap;align-items:center;gap:1.4rem;padding-block:.65rem;font-size:.85rem;animation:26s linear infinite poster-marquee;display:flex}html[data-style=poster] .poster-marquee-track b{color:color-mix(in srgb, var(--color-fg) 85%, transparent);font-weight:400}html[data-style=poster] .poster-section-heading{margin-inline:calc(-1 * var(--container-pad));padding:clamp(1rem, 2vw, 1.75rem) var(--container-pad);border-block:1px solid color-mix(in srgb, var(--color-fg) 35%, transparent)}html[data-style=poster] .poster-section-heading h2{color:var(--color-fg);margin:.4rem 0 0;font-size:clamp(1.5rem,2.6vw,2.3rem);line-height:1}html[data-style=poster] .poster-service-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;display:grid}html[data-style=poster] .poster-about-strip{font-family:var(--font-sans);grid-template-columns:repeat(2,minmax(0,1fr));gap:1.75rem clamp(1.5rem,3vw,3rem);padding-block:clamp(1.75rem,3.5vw,3rem);display:grid}html[data-style=poster] .poster-about-strip article{flex-direction:column;display:flex}html[data-style=poster] .poster-about-strip p{color:color-mix(in srgb, var(--color-fg) 64%, transparent);flex:1;margin:0 0 1.6rem;font-size:.8125rem;line-height:1.5}html[data-style=poster] .poster-about-strip strong{color:var(--color-fg);font-size:.8125rem;font-weight:700}html[data-style=poster] .poster-about-strip span{color:color-mix(in srgb, var(--color-fg) 55%, transparent);font-size:.8125rem}@media (width>=64rem){html[data-style=poster] .poster-service-grid,html[data-style=poster] .poster-about-strip{grid-template-columns:repeat(4,minmax(0,1fr))}}html[data-style=poster] .poster-carousel{margin-inline:calc(-1 * var(--container-pad));padding-block:1rem;position:relative}html[data-style=poster] .poster-carousel-track{scrollbar-width:none;grid-template-rows:repeat(3,minmax(0,1fr));grid-auto-flow:column dense;gap:.4rem;height:clamp(24rem,44vw,32rem);padding-block:1rem;display:grid;overflow-x:auto}html[data-style=poster] .poster-carousel-track::-webkit-scrollbar{display:none}html[data-style=poster] .poster-carousel-item{width:clamp(8.5rem,16vw,12.5rem);text-decoration:none;display:block;position:relative;overflow:hidden}html[data-style=poster] .poster-carousel-item:nth-child(4n+1){grid-row:span 2;width:clamp(11rem,22vw,17rem)}html[data-style=poster] .poster-carousel-item:nth-child(3n+2){width:clamp(10rem,19vw,14.5rem)}html[data-style=poster] .poster-carousel-item{transform:scale(calc(1 + var(--pop,0)));will-change:transform}html[data-style=poster] .poster-carousel-item.is-center{z-index:2;box-shadow:0 12px 32px #00000073}html[data-style=poster] .poster-carousel-item img{object-fit:cover;filter:grayscale(.45)saturate(.75)brightness(.9)contrast(1.05);border:0;border-radius:0;width:100%;height:100%;margin:0;transition:filter .25s,transform .25s;display:block}html[data-style=poster] .poster-carousel-item:hover,html[data-style=poster] .poster-carousel-item:focus-visible{z-index:3}html[data-style=poster] .poster-carousel-item:hover img,html[data-style=poster] .poster-carousel-item:focus-visible img{filter:grayscale(0)saturate(1.1)brightness()contrast();transform:scale(1.04)}html[data-style=poster] .poster-carousel-item span{inset-inline:0;background:var(--color-accent);color:#1c1c1a;font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:.45rem .7rem;font-weight:700;transition:transform .25s;display:flex;position:absolute;bottom:0;transform:translateY(101%)}html[data-style=poster] .poster-carousel-item:hover span,html[data-style=poster] .poster-carousel-item:focus-visible span{transform:translateY(0)}html[data-style=poster] .poster-service-grid{gap:1.75rem clamp(1.5rem,3vw,3rem);margin-block:clamp(1.75rem,3.5vw,3rem) clamp(3rem,6vw,5rem)}html[data-style=poster] .poster-service-grid h3{color:var(--color-fg);margin:0 0 .7rem;font-size:1.05rem;line-height:1.25}html[data-style=poster] .poster-service-grid p{font-family:var(--font-sans);color:color-mix(in srgb, var(--color-fg) 64%, transparent);margin:0;font-size:.8125rem;line-height:1.5}html[data-style=poster] .poster-cta{text-align:center;margin-bottom:clamp(3rem,6vw,6rem)}html[data-style=poster] .poster-cta h2{max-width:54rem;color:var(--color-fg);margin:1rem auto 2rem;font-size:clamp(2.5rem,5.8vw,6rem);line-height:.94}html[data-style=poster] .poster-contact{background:var(--color-accent);border-radius:999px;justify-content:center;align-items:center;min-height:clamp(7rem,15vw,13rem);transition:background .25s;display:flex;position:relative;overflow:hidden}html[data-style=poster] .poster-contact-label{color:var(--color-fg);font-family:var(--font-display);text-transform:uppercase;align-items:center;gap:.4rem;font-size:clamp(2rem,5vw,5rem);line-height:1;transition:opacity .25s,transform .25s;display:flex}html[data-style=poster] .poster-contact-label b{font-weight:400}html[data-style=poster] .poster-contact-links{opacity:0;pointer-events:none;justify-content:center;align-items:center;gap:clamp(2rem,7vw,6rem);transition:opacity .25s,transform .25s;display:flex;position:absolute;inset:0;transform:translateY(14px)}html[data-style=poster] .poster-contact-links a{color:var(--color-bg);font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;flex-direction:column;align-items:center;gap:.6rem;font-size:clamp(.85rem,1.6vw,1.15rem);line-height:1;text-decoration:none;transition:color .2s,transform .2s;display:flex}html[data-style=poster] .poster-contact-links svg{width:clamp(1.6rem,3vw,2.4rem);height:clamp(1.6rem,3vw,2.4rem)}html[data-style=poster] .poster-contact:hover,html[data-style=poster] .poster-contact:focus-within{background:var(--color-fg)}html[data-style=poster] .poster-contact:hover .poster-contact-label,html[data-style=poster] .poster-contact:focus-within .poster-contact-label{opacity:0;transform:translateY(-14px)}html[data-style=poster] .poster-contact:hover .poster-contact-links,html[data-style=poster] .poster-contact:focus-within .poster-contact-links{opacity:1;pointer-events:auto;transform:translateY(0)}html[data-style=poster] .poster-contact-links a:hover,html[data-style=poster] .poster-contact-links a:focus-visible{color:var(--color-accent);transform:scale(1.06)}@media (hover:none){html[data-style=poster] .poster-contact{background:var(--color-fg)}html[data-style=poster] .poster-contact-label{display:none}html[data-style=poster] .poster-contact-links{opacity:1;pointer-events:auto;position:static;transform:none}}@keyframes poster-marquee{to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){html[data-style=poster] .poster-marquee-track{animation:none}}@media (width<64rem){html[data-style=poster] .poster-hero{min-height:auto}}@media (width<42rem){html[data-style=poster] .poster-hero{text-align:center;grid-template-columns:1fr;gap:1.5rem}html[data-style=poster] .poster-hero-photo{justify-self:center}html[data-style=poster] .poster-hero-lead{margin-inline:auto}html[data-style=poster] .poster-service-grid,html[data-style=poster] .poster-about-strip{grid-template-columns:1fr}html[data-style=poster] .poster-contact{min-height:6.5rem}}html[data-style=poster] .frame-cross,html[data-style=poster] .frame-marks{display:none}html[data-style=poster] .footer-teeth{color:var(--color-accent)}html[data-style=poster] .footer-body,html[data-style=poster] .footer-bar{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='70'%3E%3Cpath d='M 70 0 L 70 70 L 0 70' fill='none' stroke='rgba(0%2C0%2C0%2C0.16)' stroke-width='0.5' stroke-dasharray='4 4'/%3E%3C/svg%3E"), var(--color-accent);border-top-color:#1c1c1a40}html[data-style=poster] .footer-brand-name,html[data-style=poster] .footer-col-heading,html[data-style=poster] .footer-body :is(strong),html[data-style=poster] .footer-brand-desc,html[data-style=poster] .footer-brand-meta,html[data-style=poster] .footer-col-link,html[data-style=poster] .footer-bar-copy,html[data-style=poster] .footer-bar-links,html[data-style=poster] .footer-bar-inner a{color:#1c1c1a}html[data-style=poster] .footer-col-link:hover,html[data-style=poster] .footer-bar-inner a:hover{color:#e8e4d8}html[data-style=poster] .site-footer{font-family:var(--font-sans)}html[data-style=poster] .footer-brand-name,html[data-style=poster] .footer-col-heading{font-family:var(--font-display);letter-spacing:.02em;text-transform:uppercase;font-weight:400}html[data-style=poster] .footer-brand-desc,html[data-style=poster] .footer-brand-meta,html[data-style=poster] .footer-col-link,html[data-style=poster] .footer-bar-copy,html[data-style=poster] .footer-bar-links,html[data-style=poster] .footer-bar-inner a{font-family:var(--font-sans)}.prose{line-height:var(--leading-loose)}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--color-heading-primary);margin-top:1.6em;margin-bottom:.6em;line-height:1.25}.prose a{text-underline-offset:.2em}.prose p,.prose ul,.prose ol,.prose table,.prose blockquote,.prose pre,.prose figure,.prose details{margin-bottom:1.25rem}.prose strong{font-weight:700}.prose em{font-style:italic}.prose blockquote{background:color-mix(in srgb, var(--color-muted) 75%, transparent);border-radius:.5rem;padding:.75rem 1rem;font-size:1rem}.prose ul,.prose ol{padding-left:1.25rem}.prose pre{background:var(--color-code-bg);color:var(--color-code-fg);border-radius:var(--radius-lg);padding:1rem;overflow-x:auto}html[data-theme=midnight] .prose pre,html[data-style=poster] .prose pre{background:var(--color-code-bg)}.prose code{font-size:.9em}.prose table{border-collapse:collapse;max-width:100%;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--color-border);padding:.5rem}.prose img{border-radius:var(--radius-lg);margin-block:1.5rem}.prose figcaption{font-size:var(--text-sm);opacity:.8;text-align:center;margin-top:.5rem}.prose hr{border:none;margin-block:2.5rem;padding-block:1rem;position:relative;overflow:visible}.prose hr:after{content:"";top:50%;left:calc(-1 * var(--container-pad));right:calc(-1 * var(--container-pad));height:var(--grid-line-width);background:var(--color-grid-line);box-shadow:-9999px 0 0 0 var(--color-grid-line), 9999px 0 0 0 var(--color-grid-line);pointer-events:none;position:absolute;transform:translateY(-50%)}.prose details{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:.75rem 1rem}.prose summary{cursor:pointer;font-weight:600}.mermaid-diagram{background:var(--color-surface);border:1px solid var(--color-grid-line,var(--color-border));border-radius:var(--radius-lg);margin-inline:auto;max-width:42rem;min-height:80px;box-shadow:var(--shadow-sm);margin-bottom:1.25rem;padding:2.5rem 2rem;overflow-x:auto}.mermaid-diagram svg{max-width:100%;height:auto;font-family:var(--font-mono);margin-inline:auto;display:block}.mermaid-diagram:not(:has(svg)){opacity:.4}.u-container{width:min(var(--layout-max), calc(100% - var(--space-8)));margin-inline:auto}.u-card{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}.u-flow>*+*{margin-top:var(--space-4)}body{font-family:var(--font-mono);text-align:left;word-wrap:break-word;overflow-wrap:break-word;color:var(--color-fg);background:var(--color-bg);padding:0;flex-direction:column;min-height:100svh;margin:0;padding-top:3.75rem;font-size:1rem;font-weight:400;line-height:1.75;display:flex}main{flex:1 0 auto;width:100%;min-height:80svh}h1,h2,h3,h4,h5,h6{color:var(--color-heading-primary);letter-spacing:-.03em;margin:0 0 .75rem;line-height:1.2;transition:color .3s}h1{font-size:2.25rem;font-weight:700}h2{font-size:1.5rem;font-weight:700}h3{font-size:1.25rem;font-weight:600}h4{font-size:1.125rem;font-weight:600}h5{font-size:1rem}strong,b{font-weight:700}a{color:var(--color-fg);text-decoration:none;transition:color .2s}a:hover{color:var(--color-link-hover)}p{color:var(--color-fg);margin-bottom:1em;transition:color .3s}.prose p{margin-bottom:1.25em}textarea{width:100%;font-size:16px}input{font-size:16px}table{width:100%;color:var(--color-fg)}img{border:1px solid var(--color-border);border-radius:var(--radius-lg);max-width:100%;height:auto;margin-block:.5rem;transition:border-color .3s}code{background-color:color-mix(in srgb, var(--color-muted) 75%, transparent);color:var(--color-fg);overflow-wrap:break-word;border-radius:.25rem;padding:.25rem;font-size:.9em}code:before,code:after{content:none}pre{border:1px solid var(--color-border);border-radius:.375rem;padding:1rem}pre>code{all:unset;white-space:pre}blockquote{border-left:4px solid color-mix(in srgb, var(--color-accent) 50%, transparent);opacity:.8;margin:0;padding:0 0 0 1rem}hr{border:none;border-top:1px solid var(--color-border)}button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}html[data-theme=midnight] pre:has(code),html[data-theme=midnight] pre:has(code) span,html[data-style=poster] pre:has(code),html[data-style=poster] pre:has(code) span{color:var(--shiki-dark);background-color:var(--shiki-dark-bg)}@media (width>=640px){h1{font-size:2.5rem}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.active-nav{color:var(--color-accent)}@keyframes section-reveal{0%{opacity:0;filter:blur(14px);transform:translateY(52px)scale(.97)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}[data-reveal].is-pending{opacity:0}[data-reveal].is-revealing{animation:.95s cubic-bezier(.16,1,.3,1) both section-reveal}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes tag-glide-in{0%{opacity:0;transform:translateY(10px)scale(.88)}60%{opacity:1}to{opacity:1;transform:translateY(0)scale(1)}}.recent-post-inner,.page-list-inner,.u-card{animation:.38s both fade-up;animation-delay:calc(var(--stagger-i,0) * 55ms)}::view-transition-old(tag-list),::view-transition-new(tag-list){mix-blend-mode:normal;animation:none}.tag-list li.is-pending,.tag-list li{opacity:0}.tag-list li.is-revealing{animation:.5s cubic-bezier(.34,1.56,.64,1) both tag-glide-in;animation-delay:calc(var(--stagger-i,0) * 30ms)}.tag-results-list .tag{opacity:0;animation:.5s cubic-bezier(.34,1.56,.64,1) both tag-glide-in}@media (prefers-reduced-motion:reduce){.tag-list li,.tag-results-list .tag{opacity:1;transition:none;animation:none;transform:none}.tag:hover,.tag:focus-visible{box-shadow:none}}.decode-char{transition:color .2s}.decode-locked{color:currentColor}.decode-unlocked{color:color-mix(in srgb, var(--color-fg) 35%, transparent)}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}#skip-to-content[data-astro-cid-nen7h5rs]{z-index:50;background:var(--color-bg);color:var(--color-accent);padding:.5rem .75rem;transition:top .2s;position:absolute;top:-100%;left:4rem}#skip-to-content[data-astro-cid-nen7h5rs]:focus{top:1rem}
