:root{color-scheme:light dark;--bg: #ffffff;--bg-soft: #f5f5f7;--bg-softer: #fbfbfd;--surface: #ffffff;--surface-tint: #f2fbfd;--text: #1d1d1f;--muted: #6e6e73;--muted-strong: #424245;--border: #d2d2d7;--border-soft: rgba(0, 0, 0, .08);--accent: #8f8f94;--accent-strong: #5f6065;--accent-soft: #f0f0f2;--link-internal: #416fae;--link-external: #a77763;--code-accent: #6f8f98;--inline-code-text: #3f626b;--code-soft: #eef4f5;--code-bg: #f6f7f8;--code-text: #24292f;--code-muted: #57606a;--quote-accent: #8b8198;--quote-soft: #f4f1f6;--shadow-soft: 0 18px 50px rgba(0, 0, 0, .08);--shadow-hover: 0 26px 70px rgba(95, 96, 101, .14);--site-edge-space: clamp(14px, 3vw, 32px);--content-gutter: clamp(16px, 4vw, 56px);--site-font-size: 17.5px;--content-width: clamp(980px, 84vw, 1240px);--article-gutter: var(--content-gutter);--article-width: clamp(760px, 65vw, 960px);--radius-lg: 34px;--radius-md: 24px;--radius-sm: 16px;font-family:-apple-system,BlinkMacSystemFont,SF Pro SC,SF Pro Display,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,system-ui,sans-serif}html[data-page=home],html[data-page=blog-index]{--content-width: 960px}@media(prefers-color-scheme:dark){:root{--bg: #111315;--bg-soft: #1a1d20;--bg-softer: #15181b;--surface: #1d1d1f;--surface-tint: #0f252a;--text: #f5f5f7;--muted: #a1a1a6;--muted-strong: #d2d2d7;--border: #3a3a3c;--border-soft: rgba(255, 255, 255, .12);--accent: #b8b8bd;--accent-strong: #e0e0e4;--accent-soft: #303033;--link-internal: #9fc2f2;--link-external: #d4a08d;--code-accent: #a7c2ca;--inline-code-text: #a7c2ca;--code-soft: #1e2d31;--code-bg: #0d1117;--code-text: #e6edf3;--code-muted: #8b949e;--quote-accent: #c3b6d0;--quote-soft: #2a2530;--shadow-soft: 0 20px 60px rgba(0, 0, 0, .36);--shadow-hover: 0 28px 80px rgba(184, 184, 189, .14)}}html[data-theme=light]{color-scheme:light;--bg: #ffffff;--bg-soft: #f5f5f7;--bg-softer: #fbfbfd;--surface: #ffffff;--surface-tint: #f2fbfd;--text: #1d1d1f;--muted: #6e6e73;--muted-strong: #424245;--border: #d2d2d7;--border-soft: rgba(0, 0, 0, .08);--accent: #8f8f94;--accent-strong: #5f6065;--accent-soft: #f0f0f2;--link-internal: #416fae;--link-external: #a77763;--code-accent: #6f8f98;--inline-code-text: #3f626b;--code-soft: #eef4f5;--code-bg: #f6f7f8;--code-text: #24292f;--code-muted: #57606a;--quote-accent: #8b8198;--quote-soft: #f4f1f6;--shadow-soft: 0 18px 50px rgba(0, 0, 0, .08);--shadow-hover: 0 26px 70px rgba(95, 96, 101, .14)}html[data-theme=dark]{color-scheme:dark;--bg: #111315;--bg-soft: #1a1d20;--bg-softer: #15181b;--surface: #1d1d1f;--surface-tint: #0f252a;--text: #f5f5f7;--muted: #a1a1a6;--muted-strong: #d2d2d7;--border: #3a3a3c;--border-soft: rgba(255, 255, 255, .12);--accent: #b8b8bd;--accent-strong: #e0e0e4;--accent-soft: #303033;--link-internal: #9fc2f2;--link-external: #d4a08d;--code-accent: #a7c2ca;--inline-code-text: #a7c2ca;--code-soft: #1e2d31;--code-bg: #0d1117;--code-text: #e6edf3;--code-muted: #8b949e;--quote-accent: #c3b6d0;--quote-soft: #2a2530;--shadow-soft: 0 20px 60px rgba(0, 0, 0, .36);--shadow-hover: 0 28px 80px rgba(184, 184, 189, .14)}html[data-font-size=s]{--site-font-size: 16px}html[data-font-size=m]{--site-font-size: 17.5px}html[data-font-size=l]{--site-font-size: 19px}html[data-content-width=s]{--article-gutter: clamp(24px, 5vw, 68px);--article-width: clamp(620px, 50vw, 760px)}html[data-content-width=m]{--article-gutter: var(--content-gutter);--article-width: clamp(760px, 65vw, 960px)}html[data-content-width=l]{--article-gutter: clamp(10px, 3vw, 44px);--article-width: clamp(900px, 80vw, 1180px)}@media(max-width:560px){html[data-content-width=s]{--article-gutter: 24px}html[data-content-width=m]{--article-gutter: 16px}html[data-content-width=l]{--article-gutter: 10px}}*{box-sizing:border-box}html{background:var(--bg);color:var(--text);scroll-behavior:smooth;scrollbar-gutter:stable}html[data-page=blog-index]{scroll-behavior:auto}body{margin:0;background:var(--bg);color:var(--text);font-size:var(--site-font-size);line-height:1.8;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration-thickness:.08em;text-underline-offset:.2em;transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease}.site-shell{width:min(calc(100% - var(--content-gutter) - var(--content-gutter)),var(--content-width));margin:0 auto}html[data-page=home] .site-shell{width:min(calc(100% - var(--content-gutter) - var(--content-gutter)),var(--content-width))}.empty-page,.page-heading,.not-found{padding:78px 0 54px}h1{margin:0 0 16px;font-size:clamp(2.75rem,8vw,5.4rem);font-weight:760;letter-spacing:0;line-height:1.04}p{margin:0 0 16px}.post-meta{display:flex;flex-wrap:nowrap;align-items:center;gap:.45em .65em;max-width:100%;min-width:0;margin:0;color:var(--muted);font-weight:400;white-space:nowrap}.post-meta>*{flex:0 0 auto;color:inherit;font-weight:inherit;opacity:1}.empty-page p,.page-heading+p,.article-header>p:not(.article-meta),.post-card p{color:var(--muted)}.site-header{position:sticky;top:0;left:50%;z-index:10;width:100vw;margin-left:calc(50% - 50vw);border-bottom:1px solid var(--border-soft);padding:6px 0;background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:saturate(180%) blur(20px)}@supports (width: 100dvw){.site-header{width:100dvw;margin-left:calc(50% - 50dvw)}}.site-header-inner{align-items:center;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:18px;width:100%;padding:0 var(--site-edge-space)}.brand{color:var(--text);font-size:16px;font-weight:700;letter-spacing:0;text-decoration:none;white-space:nowrap}.site-nav{display:flex;gap:8px;justify-content:center;white-space:nowrap}.site-nav a{color:var(--muted);border-radius:999px;padding:4px 12px;font-size:.94rem;font-weight:600;text-decoration:none}.site-nav a:hover,.site-nav a:focus-visible,.site-nav a[aria-current=page]{color:var(--text)}.site-nav a[aria-current=page]{background:var(--bg-soft);font-weight:650}.site-header-actions{justify-self:end;display:inline-flex;align-items:center;gap:8px;min-width:0}.anchor-return-button{display:inline-grid;place-items:center;flex:0 0 31px;width:31px;height:31px;border:1px solid var(--border-soft);border-radius:999px;background:color-mix(in srgb,var(--surface) 88%,var(--bg-soft));color:var(--muted-strong);cursor:pointer;opacity:1;transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease,opacity .18s ease}.anchor-return-button[hidden]{display:none}.anchor-return-button.is-anchor-return-hiding{opacity:0;pointer-events:none}.anchor-return-button:hover,.anchor-return-button:focus-visible{border-color:color-mix(in srgb,var(--link-internal) 42%,var(--border-soft));background:color-mix(in srgb,var(--link-internal) 12%,var(--bg-soft));color:var(--text)}.anchor-return-button:focus-visible{outline:3px solid color-mix(in srgb,var(--link-internal) 22%,transparent);outline-offset:2px}.anchor-return-button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}@media(prefers-reduced-motion:reduce){.anchor-return-button{transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.anchor-return-button.is-anchor-return-hiding{opacity:0}}.settings-button{display:inline-grid;place-items:center;flex:0 0 31px;width:31px;height:31px;border:1px solid var(--border-soft);border-radius:999px;background:var(--bg-soft);color:var(--muted-strong);cursor:pointer;transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.settings-button:hover,.settings-button:focus-visible,.settings-button[aria-expanded=true]{border-color:color-mix(in srgb,var(--accent) 38%,var(--border-soft));color:var(--text)}.settings-button[aria-expanded=true]{background:color-mix(in srgb,var(--accent-soft) 72%,var(--surface))}.settings-button:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px}.settings-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.9}.site-settings-panel{position:fixed;top:calc(max(0px,env(safe-area-inset-top)) + 46px);right:max(var(--site-edge-space),env(safe-area-inset-right));z-index:20;display:grid;gap:14px;width:min(330px,calc(100vw - 28px));border:0;border-radius:18px;background:color-mix(in srgb,var(--surface) 94%,var(--bg-soft));box-shadow:0 22px 70px #0000002e,0 8px 22px #0000001a;padding:12px;color:var(--text);transform-origin:top right;animation:site-settings-panel-in .15s ease;backdrop-filter:saturate(180%) blur(20px)}.site-settings-panel.is-closing{pointer-events:none;animation:site-settings-panel-out .14s ease forwards}.site-settings-panel[hidden]{display:none}.site-settings-panel:focus{outline:none}@keyframes site-settings-panel-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes site-settings-panel-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-4px) scale(.98)}}.site-settings-header{display:flex;align-items:center;justify-content:center;min-width:0;width:100%}.site-settings-title{margin:0;color:var(--text);font-size:1.12rem;font-weight:720;line-height:1.2;text-align:center}.site-settings-list{display:grid;gap:10px}.site-setting-row{display:grid;grid-template-columns:3rem minmax(0,1fr);align-items:center;gap:10px}.site-setting-label{color:var(--muted-strong);font-size:.84rem;font-weight:680;line-height:1.2;padding-inline-start:8px;white-space:nowrap}.segmented-control{--segmented-gap: 3px;--segmented-padding: 3px;--segmented-thumb-bg: var(--surface);--segmented-thumb-border: transparent;--segmented-thumb-shadow: 0 1px 5px color-mix(in srgb, var(--accent) 20%, transparent);--segmented-active-color: var(--text);--segmented-thumb-offset: 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--segmented-gap);min-width:0;border:1px solid var(--border-soft);border-radius:999px;background:var(--bg-soft);overflow:hidden;padding:var(--segmented-padding);position:relative;isolation:isolate}.segmented-control:before{content:"";position:absolute;top:var(--segmented-padding);bottom:var(--segmented-padding);left:var(--segmented-padding);z-index:0;box-sizing:border-box;width:calc((100% - var(--segmented-padding) - var(--segmented-padding) - var(--segmented-gap) - var(--segmented-gap)) / 3);border:1px solid var(--segmented-thumb-border);border-radius:999px;background:var(--segmented-thumb-bg);box-shadow:var(--segmented-thumb-shadow);transform:translate(var(--segmented-thumb-offset));transition:transform .26s cubic-bezier(.22,1,.36,1),background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.segmented-control[data-active-index="1"]{--segmented-thumb-offset: calc(100% + var(--segmented-gap))}.segmented-control[data-active-index="2"]{--segmented-thumb-offset: calc(200% + var(--segmented-gap) + var(--segmented-gap))}.segmented-control button{position:relative;z-index:1;min-width:0;min-height:28px;border:0;border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:.82rem;font-weight:720;line-height:1;padding:4px 10px;cursor:pointer;transition:color .18s ease,background-color .18s ease,box-shadow .18s ease}.segmented-control button:hover,.segmented-control button:focus-visible{color:var(--text)}.segmented-control button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent)}.segmented-control button.is-active{color:var(--segmented-active-color)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .site-settings-panel{box-shadow:0 28px 82px #0000009e,0 10px 28px #0000006b}}html[data-theme=dark] .site-settings-panel{box-shadow:0 28px 82px #0000009e,0 10px 28px #0000006b}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .segmented-control{--segmented-thumb-bg: color-mix(in srgb, var(--accent) 26%, var(--surface));--segmented-thumb-border: color-mix(in srgb, var(--accent) 42%, transparent);--segmented-thumb-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent), 0 8px 18px color-mix(in srgb, #000000 30%, transparent);--segmented-active-color: #ffffff}}html[data-theme=dark] .segmented-control{--segmented-thumb-bg: color-mix(in srgb, var(--accent) 26%, var(--surface));--segmented-thumb-border: color-mix(in srgb, var(--accent) 42%, transparent);--segmented-thumb-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent), 0 8px 18px color-mix(in srgb, #000000 30%, transparent);--segmented-active-color: #ffffff}@media(prefers-reduced-motion:reduce){.site-settings-panel{animation:none}.segmented-control:before{transition:none}}.home-hero{max-width:var(--content-width);margin-inline:auto}.home-section{max-width:760px;margin-inline:auto}.home-hero{padding:clamp(88px,16vw,156px) 0 clamp(70px,10vw,112px)}.home-kicker{margin-bottom:12px;color:var(--muted);font-size:clamp(1.25rem,3vw,1.65rem);font-weight:360;line-height:1.35}.home-logo-title{position:relative;width:min(100%,960px);margin-bottom:18px;line-height:1;white-space:normal}.home-logo-title-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.home-logo-image{display:block;inline-size:100%;block-size:auto;max-inline-size:none;user-select:none;-webkit-user-drag:none}.home-logo-image-dark{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme]) .home-logo-image-light{display:none}:root:not([data-theme]) .home-logo-image-dark{display:block}}html[data-theme=dark] .home-logo-image-light{display:none}html[data-theme=dark] .home-logo-image-dark,html[data-theme=light] .home-logo-image-light{display:block}html[data-theme=light] .home-logo-image-dark{display:none}.home-subtitle{max-width:36rem;color:var(--muted-strong);font-size:clamp(1.16rem,2.5vw,1.45rem);line-height:1.75}.home-section{padding:0 0 clamp(72px,9vw,104px)}.home-recent-posts{--home-post-card-max-width: calc((var(--content-width) - 36px) / 3);max-width:var(--content-width);padding-bottom:clamp(44px,6vw,64px)}.home-section-header{display:flex;align-items:baseline;justify-content:space-between;gap:18px;margin-bottom:18px}.home-section h2{margin:0;color:var(--text);font-size:clamp(1.65rem,3vw,2.1rem);font-weight:720;line-height:1.2}.text-button{color:var(--muted-strong);font-size:1rem;font-weight:660;text-decoration:none;white-space:nowrap}.text-button:hover,.text-button:focus-visible{color:var(--link-internal)}.home-post-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.home-post-card-mobile-only{display:none}.home-post-card-link{display:flex;min-height:100%;flex-direction:column;overflow:hidden;border:1px solid var(--border-soft);border-radius:8px;background:var(--surface);color:var(--text);text-decoration:none}.home-post-card-link:hover,.home-post-card-link:focus-visible{border-color:color-mix(in srgb,var(--link-internal) 42%,var(--border-soft));box-shadow:var(--shadow-hover);transform:translateY(-2px)}.home-post-cover{flex:0 0 auto;position:relative;inline-size:100%;aspect-ratio:2 / 1;overflow:hidden;background:linear-gradient(135deg,color-mix(in srgb,var(--bg-soft) 88%,var(--accent-soft)),var(--surface-tint));border-bottom:1px solid var(--border-soft);contain:paint}.home-post-cover img{display:block;inline-size:100%;block-size:100%;max-inline-size:none;object-fit:cover}.home-post-body{display:flex;flex:1;flex-direction:column;padding:10px 12px}.home-post-body h3{margin:0 0 6px;font-size:clamp(1.18rem,2.2vw,1.42rem);font-weight:720;line-height:1.2}.home-post-body>p:not(.post-meta){margin-bottom:8px;color:var(--muted);font-size:.96rem;line-height:1.52}.home-post-meta{align-self:flex-end;margin-top:auto;color:var(--muted);font-size:.78rem;line-height:1.35;text-align:right;justify-content:flex-end}.home-empty{color:var(--muted)}.home-footer{position:relative;left:50%;width:100vw;margin:clamp(104px,14vw,172px) 0 0 -50vw;padding:clamp(34px,5vw,48px) 0 clamp(28px,4vw,38px);border-top:1px solid rgba(255,255,255,.08);background:linear-gradient(135deg,#101214,#171b1e 58%,#0c0e10);color:#f5f5f7}.home-footer-inner{display:flex;align-items:center;justify-content:space-between;gap:clamp(28px,5vw,56px);width:min(calc(100% - var(--content-gutter) - var(--content-gutter)),var(--content-width));margin-inline:auto}.home-footer-nav{display:grid;flex:0 1 auto;grid-template-columns:repeat(3,max-content);gap:18px clamp(24px,4vw,42px);min-width:0}.home-footer-group{min-width:0}.home-footer-group-title{margin:0 0 8px;color:#f5f5f76b;font-size:.76rem;font-weight:720;line-height:1.2}.home-footer-group-links{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.home-footer-link{appearance:none;display:inline-flex;gap:5px;align-items:center;min-height:32px;max-width:100%;min-width:0;padding:0;border:0;background:transparent;color:#f5f5f7c7;cursor:pointer;font:inherit;text-align:left;text-decoration:none}.home-footer-link:hover,.home-footer-link:focus-visible{color:#fff}.home-footer-link-icon{display:grid;width:22px;height:22px;place-items:center;color:#d0dfdcb8}.home-footer-link:hover .home-footer-link-icon,.home-footer-link:focus-visible .home-footer-link-icon{color:#d0dfdc}.home-footer-link-icon svg{width:20px;height:20px;fill:currentColor}.home-footer-link-label{min-width:0;overflow-wrap:anywhere;color:currentColor;font-size:.92rem;font-weight:660;line-height:1.3}.home-footer-link[data-copy-value] .home-footer-link-label,.home-footer-link[data-copy-path] .home-footer-link-label{display:inline-block;min-width:4.4em}.home-footer-meta{display:flex;flex:0 0 auto;gap:16px;color:#f5f5f76b;font-size:.8rem;line-height:1.4;white-space:nowrap}.home-footer-meta p{margin:0}.post-list{display:grid;gap:0;padding-bottom:72px}.archive-filter{background:var(--bg-soft);margin:-28px calc(50% - 50vw) 18px;padding:18px 0}@supports (width: 100dvw){.archive-filter{margin-inline:calc(50% - 50dvw)}}.archive-filter-inner{display:grid;grid-template-columns:repeat(2,minmax(0,calc(var(--content-width) / 6))) minmax(0,1fr) auto;gap:14px;align-items:center;width:min(calc(100% - var(--content-gutter) - var(--content-gutter)),var(--content-width));margin-inline:auto}.archive-filter-control{position:relative;min-width:0}.archive-filter-control-category{grid-column:1}.archive-filter-button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:48px;border:1px solid var(--border-soft);border-radius:999px;background:var(--surface);color:var(--text);cursor:pointer;font:inherit;font-size:.95rem;font-weight:600;line-height:1;padding:0 17px 0 26px;text-align:left;transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease}.archive-filter-button [data-filter-label]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-filter-arrow{position:relative;width:18px;height:16px;flex:0 0 auto;color:var(--muted-strong);transition:color .18s ease}.archive-filter-arrow-line{position:absolute;top:var(--arrow-line-y-closed);width:10px;height:2px;border-radius:999px;background:currentColor;transform:rotate(var(--arrow-line-rotation-closed));transform-origin:var(--arrow-line-origin);transition:top .18s ease,transform .18s ease}.archive-filter-arrow-line:nth-child(1){--arrow-line-y-closed: 10.5px;--arrow-line-y-open: 3.5px;--arrow-line-rotation-closed: 45deg;--arrow-line-rotation-open: -45deg;--arrow-line-origin: 100% 50%;left:calc(50% - 10px)}.archive-filter-arrow-line:nth-child(2){--arrow-line-y-closed: 10.5px;--arrow-line-y-open: 3.5px;--arrow-line-rotation-closed: -45deg;--arrow-line-rotation-open: 45deg;--arrow-line-origin: 0 50%;left:50%}.archive-filter-button:hover,.archive-filter-button[aria-expanded=true]{border-color:var(--accent)}.archive-filter-button:hover .archive-filter-arrow,.archive-filter-button[aria-expanded=true] .archive-filter-arrow{color:var(--text)}.archive-filter-button[aria-expanded=true] .archive-filter-arrow-line{top:var(--arrow-line-y-open);transform:rotate(var(--arrow-line-rotation-open))}.archive-filter-button:focus-visible{border-color:var(--accent);outline:3px solid var(--accent-soft);outline-offset:2px}.archive-filter-menu{position:absolute;z-index:20;top:calc(100% + 8px);left:0;width:100%;max-height:min(320px,58vh);overflow-y:auto;border:1px solid var(--border-soft);border-radius:22px;background:var(--surface);box-shadow:var(--shadow-soft);padding:6px}.archive-filter-menu[hidden]{display:none}.archive-filter-option{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;border:0;border-radius:999px;background:transparent;color:var(--muted-strong);cursor:pointer;font:inherit;font-size:.92rem;font-weight:600;line-height:1.2;padding:11px 14px 11px 22px;text-align:left}.archive-filter-option:hover,.archive-filter-option:focus-visible,.archive-filter-option[aria-selected=true]{background:var(--bg-soft);color:var(--text)}.archive-filter-option:focus-visible{outline:2px solid var(--accent-soft);outline-offset:2px}.archive-filter-option-count{min-width:1.8em;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-size:.78rem;font-weight:700;line-height:1;padding:4px 7px;text-align:center}.archive-sort{display:flex;align-items:center;justify-content:flex-end;margin-bottom:28px}.archive-sort-button{grid-column:4;justify-self:end;width:108px;height:38px;border:1px solid var(--border-soft);border-radius:999px;background:var(--surface);color:var(--muted-strong);display:flex;align-items:center;justify-content:center;gap:8px;font:inherit;font-size:.9rem;font-weight:650;line-height:1;padding:0;white-space:nowrap;cursor:pointer;transition:border-color .18s ease,color .18s ease,background-color .18s ease}.archive-sort-triangle{position:relative;width:10px;height:10px;flex:0 0 auto;transform:rotate(var(--sort-triangle-rotation, 180deg));transform-origin:50% 50%;transition:transform .22s cubic-bezier(.2,.8,.2,1)}.archive-sort-triangle:before{content:"";position:absolute;top:-.77px;left:0;width:10px;height:8.66px;background:currentColor;clip-path:polygon(50% 0,100% 100%,0 100%)}.archive-sort-button:hover,.archive-sort-button:focus-visible{border-color:var(--accent);color:var(--text)}.archive-sort-button:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px}.filter-empty{color:var(--muted);border-radius:var(--radius-md);background:var(--bg-soft);padding:24px}.post-card-link{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(18px,3vw,28px);align-items:center;border-bottom:1px solid var(--border-soft);padding:26px 0;text-decoration:none}.post-card-link.has-cover{grid-template-columns:minmax(0,1fr) clamp(144px,32vw,280px)}.post-card-cover{position:relative;inline-size:100%;aspect-ratio:2 / 1;overflow:hidden;border:1px solid var(--border-soft);border-radius:8px;background:linear-gradient(135deg,color-mix(in srgb,var(--bg-soft) 88%,var(--accent-soft)),var(--surface-tint));contain:paint}.post-card-cover img{display:block;inline-size:100%;block-size:100%;max-inline-size:none;object-fit:cover}.post-card-meta{max-width:100%;overflow:hidden;font-size:.84rem;line-height:1.3}.post-card-body{min-width:0}.post-card-link:hover,.post-card-link:focus-visible{color:var(--accent-strong)}.post-card h2{margin:0 0 10px;color:var(--text);font-size:clamp(1.35rem,3vw,1.75rem);font-weight:720;line-height:1.22}.post-card p,.post-card .post-meta,.article-header p,.article-header time{color:var(--muted)}.article-reading-shell{margin-inline:calc(50% - 50vw)}@supports (width: 100dvw){.article-reading-shell{margin-inline:calc(50% - 50dvw)}}.article-page{width:min(calc(100% - var(--article-gutter) - var(--article-gutter)),var(--article-width));margin-inline:auto;padding:58px 0 96px}.article-page>:not(.prose),.article-header>*,.prose>*{transition:opacity .32s ease,filter .32s ease,color .18s ease}.article-header h1[data-immersive-outline-source],.prose :where(h2,h3,h4)[data-immersive-outline-source]{cursor:pointer}.article-header h1[data-immersive-outline-source]:hover,.article-header h1[data-immersive-outline-source]:focus-visible,.prose :where(h2,h3,h4)[data-immersive-outline-source]:hover,.prose :where(h2,h3,h4)[data-immersive-outline-source]:focus-visible{color:var(--link-internal)}.article-header h1[data-immersive-outline-source]:focus-visible,.prose :where(h2,h3,h4)[data-immersive-outline-source]:focus-visible{outline:3px solid color-mix(in srgb,var(--link-internal) 24%,transparent);outline-offset:5px}html.is-immersive-outline-scroll-locked,html.is-immersive-outline-scroll-locked body{overflow:hidden;overscroll-behavior:none}html.is-immersive-outline .article-page>:not(.article-header):not(.prose),html.is-immersive-outline .article-header>:not(h1),html.is-immersive-outline .prose>:not(h2):not(h3):not(h4){opacity:0;filter:blur(2px);pointer-events:none}html.is-immersive-outline-restoring .article-page>:not(.article-header):not(.prose),html.is-immersive-outline-restoring .article-header>:not(h1),html.is-immersive-outline-restoring .prose>:not(h2):not(h3):not(h4){opacity:0;filter:blur(2px);pointer-events:none;transition:opacity .62s cubic-bezier(.4,0,.2,1),filter .62s cubic-bezier(.4,0,.2,1)}html.is-immersive-outline-restoring.is-immersive-outline-revealing .article-page>:not(.article-header):not(.prose),html.is-immersive-outline-restoring.is-immersive-outline-revealing .article-header>:not(h1),html.is-immersive-outline-restoring.is-immersive-outline-revealing .prose>:not(h2):not(h3):not(h4){opacity:1;filter:none}html.is-immersive-outline .article-header h1[data-immersive-outline-source],html.is-immersive-outline .prose :where(h2,h3,h4)[data-immersive-outline-source]{opacity:0}html.is-immersive-outline-restoring .article-header h1[data-immersive-outline-source],html.is-immersive-outline-restoring .prose :where(h2,h3,h4)[data-immersive-outline-source]{opacity:0;pointer-events:none;transition:none}html.is-immersive-outline-restoring.is-immersive-outline-handoff .article-header h1[data-immersive-outline-source],html.is-immersive-outline-restoring.is-immersive-outline-handoff .prose :where(h2,h3,h4)[data-immersive-outline-source]{opacity:1}.immersive-outline{position:fixed;inset:0;z-index:30;background:color-mix(in srgb,var(--bg) 92%,transparent);color:var(--text);contain:layout paint style;transition:background-color .22s ease}.immersive-outline-close{position:fixed;z-index:3;top:max(14px,env(safe-area-inset-top));right:max(18px,calc((100vw - 680px)/2 - 58px),env(safe-area-inset-right));display:grid;place-items:center;width:42px;height:42px;appearance:none;-webkit-appearance:none;border:1px solid color-mix(in srgb,var(--border-soft) 78%,transparent);border-radius:999px;background:color-mix(in srgb,var(--bg) 84%,transparent);color:var(--muted-strong);font:inherit;font-size:0;line-height:0;cursor:pointer;opacity:0;pointer-events:none;transform:scale(.96);transition:opacity .16s ease,transform .16s ease,background-color .18s ease,color .18s ease,border-color .18s ease}.immersive-outline-close:before,.immersive-outline-close:after{content:"";position:absolute;width:20px;height:2px;border-radius:999px;background:currentColor;transform-origin:center}.immersive-outline-close:before{transform:rotate(45deg)}.immersive-outline-close:after{transform:rotate(-45deg)}.immersive-outline.is-settled .immersive-outline-close{opacity:1;pointer-events:auto;transform:scale(1)}.immersive-outline-close:hover,.immersive-outline-close:focus-visible{border-color:color-mix(in srgb,var(--link-internal) 48%,transparent);background:color-mix(in srgb,var(--link-internal) 12%,var(--bg));color:var(--link-internal)}.immersive-outline-close:focus-visible{outline:3px solid color-mix(in srgb,var(--link-internal) 24%,transparent);outline-offset:2px}.immersive-outline.is-animating .immersive-outline-entry button{opacity:0;pointer-events:none}.immersive-outline.is-restoring{background:transparent;transition:none}.immersive-outline-scroller{position:relative;z-index:1;height:100vh;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding-block:var(--immersive-outline-padding-start, 48px) var(--immersive-outline-padding-end, 48px);padding-inline:max(18px,calc((100vw - 680px)/2));scroll-behavior:smooth;scrollbar-width:thin}.immersive-outline.is-animating .immersive-outline-scroller,.immersive-outline.is-restoring .immersive-outline-scroller{scroll-behavior:auto}.immersive-outline-motion-layer{position:fixed;inset:0;z-index:2;overflow:hidden;pointer-events:none}.immersive-outline-motion-item{position:fixed;top:0;left:0;z-index:2;appearance:none;-webkit-appearance:none;margin:0;padding:0;border:0;background:transparent;text-align:left;transform-origin:top left;will-change:transform;backface-visibility:hidden;contain:layout paint style}@supports (height: 100dvh){.immersive-outline-scroller{height:100dvh}}.immersive-outline-list{display:grid;gap:6px;width:100%;margin:0;padding:0;list-style:none}.immersive-outline-entry{margin:0}.immersive-outline-entry button{display:block;width:100%;appearance:none;-webkit-appearance:none;border:0;border-radius:8px;background:transparent;color:var(--muted-strong);padding:7px 10px;font:inherit;font-size:clamp(1rem,3vw,1.12rem);font-weight:620;letter-spacing:0;line-height:1.42;text-align:left;text-wrap:balance;cursor:pointer;transition:background-color .18s ease,color .18s ease,opacity .12s ease-out}.immersive-outline.is-handoff .immersive-outline-entry button{opacity:1;transition:none}.immersive-outline-depth-2{margin-top:18px}.immersive-outline-depth-2:first-child{margin-top:0}.immersive-outline-depth-1{margin-bottom:20px}.immersive-outline-depth-1+.immersive-outline-depth-2{margin-top:0}.immersive-outline-depth-1 button{color:var(--text);padding-bottom:12px;font-size:clamp(1.72rem,5vw,2.24rem);font-weight:780;line-height:1.18}.immersive-outline-depth-2 button{color:var(--text);font-size:clamp(1.24rem,4vw,1.58rem);font-weight:740;line-height:1.28}.immersive-outline-depth-3 button{padding-left:clamp(28px,7vw,54px)}.immersive-outline-depth-4 button{padding-left:clamp(48px,12vw,86px);color:var(--muted);font-size:clamp(.96rem,2.6vw,1.05rem);font-weight:560}.immersive-outline-entry button:hover,.immersive-outline-entry button:focus-visible{background:color-mix(in srgb,var(--link-internal) 10%,transparent);color:var(--link-internal)}.immersive-outline-entry button:focus-visible{outline:3px solid color-mix(in srgb,var(--link-internal) 24%,transparent);outline-offset:2px}.immersive-outline.is-restoring{pointer-events:none}@media(prefers-reduced-motion:reduce){.article-page>:not(.prose),.article-header>*,.prose>*{transition:none}.immersive-outline-scroller{scroll-behavior:auto}}.article-header{position:relative;margin-bottom:48px}.article-header.has-article-category{padding-right:7.5rem}.article-cover{position:relative;inline-size:100%;aspect-ratio:2 / 1;margin:-14px 0 52px;overflow:hidden;border:1px solid var(--border-soft);border-radius:8px;background:linear-gradient(135deg,color-mix(in srgb,var(--bg-soft) 88%,var(--accent-soft)),var(--surface-tint));contain:paint}.article-cover img{display:block;inline-size:100%;block-size:100%;max-inline-size:none;object-fit:cover}.article-meta{display:flex;flex-wrap:nowrap;gap:.65em;overflow:hidden;margin-bottom:12px;font-size:.95rem;font-weight:400;white-space:nowrap}.article-header h1{margin-bottom:18px;max-width:100%;font-size:clamp(2rem,4vw,2.75rem);letter-spacing:0;text-wrap:wrap}.article-header .article-meta{color:var(--muted)}.article-header .article-meta>*{color:inherit}.article-header>p:not(.article-meta){max-width:38rem;font-size:1.05rem;line-height:1.8}.article-category{position:absolute;top:0;right:0;display:inline-flex;align-items:center;min-height:32px;border-radius:999px;background:color-mix(in srgb,var(--link-internal) 12%,transparent);color:var(--link-internal);padding:6px 12px;font-size:.92rem;font-weight:650;line-height:1;text-decoration:none;transition:background-color .18s ease,color .18s ease,transform .18s ease}.article-category:hover,.article-category:focus-visible{background:var(--link-internal);color:var(--surface);transform:translateY(-1px)}.article-category:focus-visible{outline:3px solid color-mix(in srgb,var(--link-internal) 28%,transparent);outline-offset:3px}.tag-list{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none}.tag-list li{border-radius:999px;background:var(--bg-soft);color:var(--muted-strong);padding:5px 12px;font-size:.9rem;font-weight:600}.prose :where(h2,h3,h4,h5,h6){margin:max(1.95rem,1em) 0 1.95rem;color:var(--text);font-weight:720;line-height:1.25}.prose h1{margin:max(1.95rem,1em) 0 1.95rem;max-width:100%;color:var(--text);font-size:clamp(2rem,4vw,2.75rem);font-weight:760;letter-spacing:0;line-height:1.04;text-wrap:wrap}.prose h2{font-size:clamp(1.8rem,4vw,2.3rem)}.prose h3{font-size:clamp(1.35rem,3vw,1.65rem)}.prose h4{font-size:clamp(1.18rem,2.4vw,1.3rem)}.prose h5{font-size:clamp(1.08rem,2vw,1.16rem)}.prose h6{font-size:1rem}.prose p{margin-bottom:1.25em;line-height:1.95}.prose [id]{scroll-margin-top:33vh}.prose .is-anchor-highlight{border-radius:6px;animation:anchor-highlight 4s ease}@keyframes anchor-highlight{0%,54%{background:color-mix(in srgb,var(--link-internal) 16%,transparent);box-shadow:0 0 0 6px color-mix(in srgb,var(--link-internal) 12%,transparent)}to{background:transparent;box-shadow:0 0 0 0 transparent}}.prose a{color:var(--link-internal);text-decoration-color:color-mix(in srgb,var(--link-internal) 42%,transparent);text-decoration-thickness:.08em}.prose a[href^="http://"],.prose a[href^="https://"],.prose a[href^="//"],.prose a[href^="mailto:"],.prose a[href^="tel:"]{color:var(--link-external);text-decoration-color:color-mix(in srgb,var(--link-external) 46%,transparent)}.prose a.external-link-with-favicon{text-decoration-skip-ink:auto}.prose .link-boundary-space{display:inline;text-decoration:none}.prose .link-boundary-space:before{content:" ";white-space:pre}.prose .external-link-favicon{display:inline-block;width:1em;height:1em;max-width:none;max-height:none;margin:0 .3em 0 0;border-radius:3px;background:color-mix(in srgb,var(--surface) 82%,transparent);box-shadow:none;line-height:1;object-fit:contain;vertical-align:-.12em}.prose :where(h2,h3,h4,h5,h6) .external-link-favicon{vertical-align:-.1em}.prose a.same-page-anchor-with-indicator{text-decoration-skip-ink:auto}.prose .same-page-anchor-indicator{display:inline-flex;width:1.2em;height:1.2em;margin:0 .16em 0 -.02em;color:color-mix(in srgb,currentColor 92%,var(--text));line-height:1;opacity:.88;text-decoration:none;vertical-align:-.22em}.prose .same-page-anchor-icon{display:block;width:100%;height:100%;fill:currentColor;overflow:visible}.prose .same-page-anchor-turn-arrow{fill:currentColor;stroke:none}.prose :where(h2,h3,h4,h5,h6) .same-page-anchor-indicator{vertical-align:-.16em}.prose a:hover,.prose a:focus-visible{text-decoration-color:currentColor}.prose :where(blockquote,table){border-radius:var(--radius-md)}.prose :where(blockquote,.collapsible-quote-block){--quote-corner-mark-size: 2rem;--quote-corner-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 92'%3E%3Cpath fill='black' d='M36 1C47 3 55 11 57 24C59 38 56 52 50 63C43 75 29 84.5 13.6 91.1C10.9 92.2 9.6 91.7 10.7 90.4C11.6 89.3 13.2 88.3 15.1 87.1C21.1 83.4 27.6 77.8 30.4 73.4C32.4 70.2 32.7 66.9 32 64C31.2 59.6 28.1 57.3 23 55.2C11.5 50.8 3.5 45.2 1.2 35.2C-1.1 25.2 1.4 15.8 8.4 9.4C14.6 3.7 22.6 1 31.5 1C33.2 1 34.6 .8 36 1ZM108 1C119 3 127 11 129 24C131 38 128 52 122 63C115 75 101 84.5 85.6 91.1C82.9 92.2 81.6 91.7 82.7 90.4C83.6 89.3 85.2 88.3 87.1 87.1C93.1 83.4 99.6 77.8 102.4 73.4C104.4 70.2 104.7 66.9 104 64C103.2 59.6 100.1 57.3 95 55.2C83.5 50.8 75.5 45.2 73.2 35.2C70.9 25.2 73.4 15.8 80.4 9.4C86.6 3.7 94.6 1 103.5 1C105.2 1 106.6 .8 108 1Z'/%3E%3C/svg%3E")}.prose blockquote{position:relative;margin:1.35em 0;border:1px solid var(--border-soft);background:var(--quote-soft);padding:17px 18px 12px;color:var(--muted-strong)}.prose blockquote:not(.collapsible-block-content,.callout):before,.prose .collapsible-quote-block:before{position:absolute;top:0;left:30px;z-index:1;width:var(--quote-corner-mark-size);aspect-ratio:130 / 92;background:var(--quote-accent);content:"";pointer-events:none;transform:translateY(-46%);-webkit-mask:var(--quote-corner-mark) center / contain no-repeat;mask:var(--quote-corner-mark) center / contain no-repeat}.prose blockquote.callout-note{border-color:color-mix(in srgb,var(--accent) 34%,var(--border-soft));border-left:4px solid var(--accent);background:color-mix(in srgb,var(--accent-soft) 72%,var(--surface));padding:14px 18px 14px 20px;color:var(--text)}.prose .callout-title{display:flex;align-items:center;gap:8px;margin:0 0 .72em;color:var(--accent-strong);font-weight:720;line-height:1.45}.prose .callout-title:before,.prose blockquote.callout-note.callout-icon-only:before{display:inline-grid;flex:0 0 auto;place-items:center;width:1.3em;height:1.3em;border:1px solid currentColor;border-radius:999px;background:color-mix(in srgb,var(--surface) 54%,transparent);content:"i";font-size:.78em;font-weight:800;line-height:1}.prose blockquote.callout-note.callout-icon-only:before{margin:0 0 .72em;color:var(--accent-strong)}.prose blockquote.callout-note>:last-child{margin-bottom:0}.prose blockquote p:last-child{margin-bottom:0}.prose :where(ul,ol){padding-left:1.4em;margin:0 0 1.35em}.prose ol{list-style-type:decimal}.prose ol ol{margin-top:.45em;margin-bottom:.65em;padding-left:1.25em;color:var(--muted-strong);list-style-type:lower-alpha}.prose ol ol ol{padding-left:1.15em;color:var(--muted);list-style-type:lower-roman}.prose li{margin:.35em 0}.prose table{display:table;width:100%;max-width:100%;table-layout:auto;border:1px solid var(--border-soft);border-spacing:0;background:var(--bg-soft);margin:2em 0}.prose :where(th,td){min-width:8rem;border-bottom:1px solid var(--border-soft);padding:12px 16px;text-align:left;vertical-align:top;overflow-wrap:anywhere;word-break:normal}.prose tr:last-child td{border-bottom:0}.prose hr{border:0;border-top:1px solid var(--border-soft);margin:2.8em 0}.prose img:not(.external-link-favicon){display:block;width:auto;height:auto;max-width:100%;max-height:288px;margin:1.6em auto;box-shadow:var(--shadow-soft);object-fit:contain}.post-image-figure{display:grid;justify-items:center;gap:8px;max-width:100%;margin:1.6em auto 2em}.post-image-figure:has(.post-image-caption){margin-bottom:1.25em}.post-image-zoom{display:block;max-width:100%;margin:1.6em auto;border:0;background:transparent;padding:0;cursor:zoom-in;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.post-image-figure .post-image-zoom,.post-image-zoom img{margin:0 auto}.post-image-caption,.image-carousel-caption{max-width:min(720px,100%);margin:0;color:var(--muted);font-size:.92rem;line-height:1.55;text-align:center}.post-image-caption{margin-top:-2px;padding-inline:8px}.image-carousel{position:relative;display:grid;gap:6px;margin:1.8em 0 1.25em}.image-stack{display:grid;place-items:center;isolation:isolate}.image-stack-item{grid-area:1 / 1;opacity:0;pointer-events:none;transform:translateY(0) rotate(0) scale(.96);transform-origin:center;transition:opacity .18s ease,transform .22s ease;backface-visibility:hidden;will-change:opacity,transform}.image-stack-item.is-active{z-index:3;opacity:1;pointer-events:auto;transform:translateY(0) rotate(0) scale(1)}.image-stack-item.is-stacked-1{z-index:2;opacity:.28;transform:translate(var(--image-stack-next-x, 14px),var(--image-stack-next-y, 10px)) rotate(var(--image-stack-next-rotate, 2deg)) scale(.97)}.image-stack-item.is-stacked-2{z-index:1;opacity:.1;transform:translate(var(--image-stack-back-x, -14px),var(--image-stack-back-y, 18px)) rotate(var(--image-stack-back-rotate, -2.4deg)) scale(.94)}.image-carousel-viewport{position:relative;padding:0 44px}.image-carousel-slide{display:block;border:0;background:transparent;padding:0;cursor:zoom-in;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.image-carousel-slide img{margin:0 auto}.is-lightbox-source-hidden{visibility:hidden}.image-carousel.is-turning-next .image-carousel-slide.is-active{animation:image-carousel-next .24s ease both;transition:none}.image-carousel.is-turning-prev .image-carousel-slide.is-active{animation:image-carousel-prev .24s ease both;transition:none}.image-carousel-nav{position:absolute;top:50%;display:inline-grid;place-items:center;width:38px;height:38px;border:1px solid var(--border-soft);border-radius:999px;background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--text);padding:0;cursor:pointer;box-shadow:var(--shadow-soft);transform:translateY(-50%);-webkit-tap-highlight-color:transparent;touch-action:manipulation}.image-carousel-nav svg,.image-lightbox-button svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.3}.image-carousel-nav:hover,.image-carousel-nav:focus-visible{border-color:color-mix(in srgb,var(--accent) 45%,var(--border-soft));color:var(--accent-strong)}.image-carousel-prev{left:10px}.image-carousel-next{right:10px}.image-carousel-counter{justify-self:center;color:var(--muted);font-size:.88rem;font-weight:650;line-height:1}.image-carousel-caption{justify-self:center;margin-top:-2px;padding-inline:16px}.prose .image-carousel-caption{margin:-2px 0 0}.prose .image-carousel:has(.image-carousel-caption:not([hidden]))+:where(h2,h3,h4){margin-top:.65em}.image-lightbox{position:fixed;inset:0 auto auto 0;z-index:50;--image-lightbox-backdrop-open-duration: .26s;--image-lightbox-backdrop-close-duration: 90ms;--image-lightbox-caption-space: 0px;--image-lightbox-viewport-width: 100vw;--image-lightbox-viewport-height: 100vh;--image-lightbox-max-height: calc(var(--image-lightbox-viewport-height) - 96px - var(--image-lightbox-caption-space));--image-lightbox-max-width: calc(var(--image-lightbox-viewport-width) - 128px);display:grid;grid-template-rows:1fr;width:var(--image-lightbox-viewport-width);height:var(--image-lightbox-viewport-height);background:transparent;opacity:1;overflow:hidden;padding:14px}@supports (height: 100dvh){.image-lightbox{--image-lightbox-viewport-height: 100dvh}}.image-lightbox.has-caption{--image-lightbox-caption-space: 74px}.image-lightbox:before{content:"";position:absolute;inset:0;z-index:0;background:color-mix(in srgb,var(--bg) 90%,rgba(0,0,0,.82));opacity:0;transition:opacity var(--image-lightbox-backdrop-close-duration) ease}.image-lightbox.is-open:before{opacity:1;transition-duration:var(--image-lightbox-backdrop-open-duration);transition-timing-function:cubic-bezier(.22,1,.36,1)}.image-lightbox[hidden]{display:none}.image-lightbox.is-closing{pointer-events:none}.image-lightbox.is-closing:before{opacity:0}.image-lightbox-toolbar{position:absolute;top:12px;right:12px;left:12px;z-index:5;display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:12px;pointer-events:none}.image-lightbox-toolbar>*{pointer-events:auto}.image-lightbox-counter{justify-self:center;border:1px solid color-mix(in srgb,var(--border-soft) 70%,transparent);border-radius:999px;background:color-mix(in srgb,var(--surface) 78%,transparent);padding:8px 12px;color:var(--muted-strong);font-size:.92rem;font-weight:650;line-height:1;text-align:center;opacity:0;transition:opacity var(--image-lightbox-backdrop-close-duration) ease;backdrop-filter:blur(12px)}.image-lightbox.is-open .image-lightbox-counter{opacity:1;transition-duration:var(--image-lightbox-backdrop-open-duration);transition-timing-function:cubic-bezier(.22,1,.36,1)}.image-lightbox-caption{position:absolute;right:50%;bottom:16px;z-index:5;width:max-content;max-width:min(720px,calc(100vw - 48px));margin:0;border:1px solid color-mix(in srgb,var(--border-soft) 70%,transparent);border-radius:999px;background:color-mix(in srgb,var(--surface) 78%,transparent);color:var(--muted-strong);padding:8px 12px;font-size:.92rem;font-weight:650;line-height:1.35;text-align:center;opacity:0;pointer-events:auto;transform:translate(50%,4px);transition:opacity .16s ease,transform .16s ease;backdrop-filter:blur(12px)}.image-lightbox.is-open .image-lightbox-caption:not([hidden]){opacity:1;transform:translate(50%)}.image-carousel-caption[hidden],.image-lightbox-caption[hidden]{display:none}.image-lightbox-stage{position:relative;z-index:1;display:grid;place-items:center;min-height:0}.image-lightbox-stack{--image-stack-next-x: 18px;--image-stack-next-y: 14px;--image-stack-next-rotate: 1.8deg;--image-stack-back-x: -18px;--image-stack-back-y: 26px;--image-stack-back-rotate: -2.2deg;width:100%;padding:0}.image-lightbox-motion,.image-lightbox-motion.is-active,.image-lightbox-motion.is-stacked-1,.image-lightbox-motion.is-stacked-2{display:grid;place-items:center;width:min(var(--image-lightbox-max-width),calc(var(--image-lightbox-max-height) * var(--image-lightbox-aspect-ratio, 1.5)));aspect-ratio:var(--image-lightbox-aspect-ratio, 1.5);max-width:var(--image-lightbox-max-width);max-height:var(--image-lightbox-max-height);transform:none;transition:opacity .18s ease}.image-lightbox-img{position:relative;display:block;width:100%;height:100%;box-shadow:var(--shadow-soft);overflow:hidden;background:color-mix(in srgb,var(--surface) 34%,transparent);transform:translateY(0) rotate(0) scale(.96);transform-origin:center;transition:transform .22s ease;backface-visibility:hidden;will-change:transform}.image-lightbox-motion.is-active .image-lightbox-img{transform:translateY(0) rotate(0) scale(1)}.image-lightbox-motion.is-stacked-1 .image-lightbox-img{transform:translate(var(--image-stack-next-x, 18px),var(--image-stack-next-y, 14px)) rotate(var(--image-stack-next-rotate, 1.8deg)) scale(.97)}.image-lightbox-motion.is-stacked-2 .image-lightbox-img{transform:translate(var(--image-stack-back-x, -18px),var(--image-stack-back-y, 26px)) rotate(var(--image-stack-back-rotate, -2.2deg)) scale(.94)}.image-lightbox-layer{display:block;width:100%;height:100%;max-width:none;max-height:none;object-fit:contain}.image-lightbox-full{position:absolute;inset:0;width:100%;height:100%;max-width:none;max-height:none;opacity:0;transition:opacity .18s ease}.image-lightbox-full.is-loaded{opacity:1}.image-lightbox-button{display:inline-grid;place-items:center;width:44px;height:44px;border:1px solid var(--border-soft);border-radius:999px;background:color-mix(in srgb,var(--surface) 82%,transparent);color:var(--text);padding:0;cursor:pointer;opacity:0;transition:opacity var(--image-lightbox-backdrop-close-duration) ease,border-color .16s ease,color .16s ease;backdrop-filter:blur(12px);-webkit-tap-highlight-color:transparent;touch-action:manipulation;will-change:opacity}.image-carousel-nav[hidden],.image-lightbox-button[hidden]{display:none}.image-lightbox.is-open .image-lightbox-button:not([hidden]){opacity:1;transition-duration:var(--image-lightbox-backdrop-open-duration),.16s,.16s;transition-timing-function:cubic-bezier(.22,1,.36,1),ease,ease}.image-lightbox-close{justify-self:end}.image-lightbox-button:hover,.image-lightbox-button:focus-visible{border-color:color-mix(in srgb,var(--accent) 45%,var(--border-soft));color:var(--accent-strong)}.image-lightbox-prev{position:absolute;top:50%;left:12px;z-index:4;transform:translateY(-50%)}.image-lightbox-next{position:absolute;top:50%;right:12px;z-index:4;transform:translateY(-50%)}.image-lightbox.is-turning-next .image-lightbox-motion.is-active .image-lightbox-img{animation:image-carousel-next .24s ease both;transition:none}.image-lightbox.is-turning-prev .image-lightbox-motion.is-active .image-lightbox-img{animation:image-carousel-prev .24s ease both;transition:none}@keyframes image-carousel-next{0%{transform:var( --image-turn-from-transform, translate(var(--image-stack-next-x, 14px), var(--image-stack-next-y, 10px)) rotate(var(--image-stack-next-rotate, 2deg)) scale(.97) )}to{transform:translate(0) rotate(0) scale(1)}}@keyframes image-carousel-prev{0%{transform:var( --image-turn-from-transform, translate(var(--image-stack-back-x, -14px), var(--image-stack-back-y, 18px)) rotate(var(--image-stack-back-rotate, -2.4deg)) scale(.94) )}to{transform:translate(0) rotate(0) scale(1)}}@media(hover:none)and (pointer:coarse){.image-carousel.is-turning-next .image-carousel-slide.is-active,.image-carousel.is-turning-prev .image-carousel-slide.is-active,.image-lightbox.is-turning-next .image-lightbox-motion.is-active .image-lightbox-img,.image-lightbox.is-turning-prev .image-lightbox-motion.is-active .image-lightbox-img{animation:none}}.download-card{display:grid;grid-template-columns:minmax(52px,auto) minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid var(--border-soft);border-radius:8px;background:var(--bg-soft);color:var(--text);padding:14px;text-decoration:none}.download-card:hover,.download-card:focus-visible{border-color:color-mix(in srgb,var(--accent) 70%,var(--border-soft))}.download-card:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px}.download-card-badge{display:inline-grid;min-width:52px;min-height:44px;place-items:center;border:1px solid color-mix(in srgb,var(--accent) 36%,var(--border-soft));border-radius:8px;background:var(--surface);color:var(--accent-strong);font-size:.78rem;font-weight:760;letter-spacing:.04em;line-height:1;text-transform:uppercase}.download-card-body{min-width:0}.download-card-title,.download-card-meta{display:block;overflow-wrap:anywhere}.download-card-title{color:var(--accent-strong);font-size:1rem;font-weight:720;line-height:1.45}.download-card-meta{margin-top:3px;color:var(--muted);font-size:.88rem;line-height:1.45}.download-card-action{border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);padding:7px 12px;font-size:.9rem;font-weight:700;line-height:1;white-space:nowrap}.prose .download-card{margin:2em 0}@media(max-width:560px){.download-card{gap:12px}.download-card-badge{min-width:46px;min-height:40px}}.prose code{border-radius:8px;background:var(--code-soft);color:var(--inline-code-text);font-family:SF Mono,Menlo,Consolas,monospace;font-size:.92em;padding:.14em .38em}.prose code[data-copy-ready=true]{cursor:copy;transition:color .18s ease,background-color .18s ease,box-shadow .18s ease}.prose code[data-copy-ready=true]:hover,.prose code[data-copy-ready=true]:focus-visible{background:color-mix(in srgb,var(--code-accent) 16%,var(--code-soft));box-shadow:0 0 0 2px color-mix(in srgb,var(--code-accent) 18%,transparent)}.prose code[data-copy-ready=true]:focus-visible{outline:2px solid color-mix(in srgb,var(--code-accent) 42%,transparent);outline-offset:2px}.prose code[data-copy-state=copied]{background:color-mix(in srgb,var(--code-accent) 20%,var(--code-soft));color:var(--code-text)}.prose code[data-copy-state=error]{color:#b42318}.code-block{position:relative;margin:2em 0}.code-block[data-code-language]:before{position:absolute;top:0;left:30px;z-index:2;border:1px solid color-mix(in srgb,var(--code-accent) 20%,var(--border-soft));border-radius:999px;background:var(--code-bg);color:var(--code-accent);content:attr(data-code-language);font-family:SF Mono,Menlo,Consolas,monospace;font-size:.92rem;font-weight:700;line-height:1;padding:.22em .62em;pointer-events:none;text-transform:none;transform:translateY(-50%)}.prose pre{overflow-x:auto;margin:0;border:1px solid color-mix(in srgb,var(--code-accent) 20%,var(--border-soft));border-radius:var(--radius-md);background:var(--code-bg)!important;color:var(--code-text);padding:24px 22px;line-height:1.75;scrollbar-color:color-mix(in srgb,var(--code-muted) 42%,transparent) transparent}.prose pre code{border-radius:0;background:transparent;color:inherit;font-size:.9rem;line-height:inherit;padding:0}.prose pre.astro-code,.prose pre.astro-code span{color:var(--shiki-light)!important}@media(prefers-color-scheme:dark){:root:not([data-theme]) .prose pre.astro-code,:root:not([data-theme]) .prose pre.astro-code span{color:var(--shiki-dark)!important}}html[data-theme=dark] .prose pre.astro-code,html[data-theme=dark] .prose pre.astro-code span{color:var(--shiki-dark)!important}html[data-theme=light] .prose pre.astro-code,html[data-theme=light] .prose pre.astro-code span{color:var(--shiki-light)!important}.code-copy-button{--copy-button-accent: var(--code-accent);--copy-button-soft: var(--code-soft);--copy-button-muted: var(--code-muted);position:absolute;top:12px;right:12px;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid color-mix(in srgb,var(--copy-button-muted) 22%,transparent);border-radius:999px;background:color-mix(in srgb,var(--surface) 74%,transparent);color:var(--muted-strong);padding:0;cursor:pointer;box-shadow:0 8px 20px #0000000f;transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.prose pre>.code-copy-button{position:relative;top:auto;right:auto;float:right;clear:right;margin:0 0 10px 14px}.code-copy-button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.code-copy-button:hover,.code-copy-button:focus-visible{border-color:color-mix(in srgb,var(--copy-button-accent) 56%,var(--border-soft));background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--copy-button-accent)}.code-copy-button:focus-visible{outline:3px solid var(--copy-button-soft);outline-offset:2px}.code-copy-button[data-state=copied]{border-color:color-mix(in srgb,var(--copy-button-accent) 50%,var(--border-soft));background:color-mix(in srgb,var(--copy-button-soft) 82%,transparent);color:var(--copy-button-accent)}.code-copy-button[data-state=error]{color:#b42318}.collapsible-block{position:relative}.collapsible-block-content{overflow:hidden;max-height:var(--collapsible-expanded-height);transition:max-height .26s ease}.collapsible-block.is-collapsed .collapsible-block-content{max-height:var(--collapsible-collapsed-height)}.collapsible-block:after{position:absolute;right:1px;bottom:1px;left:1px;height:148px;border-radius:0 0 var(--radius-md) var(--radius-md);background:linear-gradient(to bottom,transparent,color-mix(in srgb,var(--surface) 60%,transparent) 28%,color-mix(in srgb,var(--surface) 90%,transparent) 78%,var(--surface) 100%);content:"";opacity:0;pointer-events:none;transition:opacity .18s ease}.collapsible-block.is-collapsed:after{opacity:1}.collapsible-block-toggle{--collapsible-button-accent: var(--code-accent);--collapsible-button-soft: var(--code-soft);--collapsible-button-muted: var(--code-muted);position:absolute;top:54px;right:12px;bottom:auto;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid color-mix(in srgb,var(--collapsible-button-muted) 22%,transparent);border-radius:999px;background:color-mix(in srgb,var(--surface) 74%,transparent);color:var(--muted-strong);padding:0;font:inherit;cursor:pointer;box-shadow:0 8px 20px #0000000f;transition:color .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.collapsible-block-toggle span{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.collapsible-block-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2;transition:transform .22s ease}.collapsible-block-toggle:hover,.collapsible-block-toggle:focus-visible{border-color:color-mix(in srgb,var(--collapsible-button-accent) 56%,var(--border-soft));background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--collapsible-button-accent)}.collapsible-block-toggle:focus-visible{outline:3px solid var(--collapsible-button-soft);outline-offset:2px}.collapsible-block:not(.is-collapsed) .collapsible-block-toggle svg{transform:rotate(180deg)}.collapsible-block-reveal{position:absolute;right:1px;bottom:1px;left:1px;z-index:1;display:block;height:148px;border:0;border-radius:0 0 var(--radius-md) var(--radius-md);background:transparent;padding:0;cursor:pointer}.collapsible-block-reveal:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 42%,transparent);outline-offset:-5px}.collapsible-block:not(.is-collapsed) .collapsible-block-reveal{display:none}.collapsible-code-block:after{background:linear-gradient(to bottom,transparent,color-mix(in srgb,var(--code-bg) 60%,transparent) 28%,color-mix(in srgb,var(--code-bg) 90%,transparent) 78%,var(--code-bg) 100%)}.collapsible-code-block>pre>.collapsible-block-toggle{position:relative;top:auto;right:auto;float:right;clear:right;margin:0 0 10px 14px}.collapsible-quote-block{margin:1.35em 0}.collapsible-quote-block>blockquote{margin:0}.collapsible-quote-block .collapsible-block-toggle{--collapsible-button-accent: var(--quote-accent);--collapsible-button-soft: var(--quote-soft);--collapsible-button-muted: var(--muted);position:relative;top:auto;right:auto;float:right;margin:0 0 10px 14px}.collapsible-quote-block:after{background:linear-gradient(to bottom,transparent,color-mix(in srgb,var(--quote-soft) 60%,transparent) 28%,color-mix(in srgb,var(--quote-soft) 90%,transparent) 78%,var(--quote-soft) 100%)}@media(prefers-reduced-motion:reduce){.collapsible-block-content,.collapsible-block:after,.collapsible-block-reveal,.collapsible-block-toggle,.collapsible-block-toggle svg{transition:none}}@media(max-width:820px){.home-section-header{width:min(100%,calc(var(--home-post-card-max-width) * 2 + 18px));margin-inline:auto}.home-post-grid{grid-template-columns:repeat(2,minmax(0,min(calc((100% - 18px)/2),var(--home-post-card-max-width))));justify-content:center}.home-post-card-mobile-only{display:block}.home-post-body>p:not(.post-meta){display:-webkit-box;overflow:hidden;font-size:.88rem;line-height:1.48;-webkit-box-orient:vertical;-webkit-line-clamp:2}.home-footer-inner{flex-direction:column;align-items:flex-start;gap:18px}.home-footer-nav{width:100%;flex-basis:auto}}@media(max-width:560px){:root{--site-edge-space: 14px}.site-shell{width:min(calc(100% - var(--content-gutter) - var(--content-gutter)),var(--content-width))}.site-header{padding:5px 0}.site-header-inner{gap:8px;padding-inline:var(--site-edge-space)}.site-nav{gap:2px}.site-nav a{padding-inline:8px;font-size:.9rem}.site-header-actions{gap:6px}.settings-button{flex-basis:31px}.empty-page,.page-heading,.not-found{padding:58px 0 46px}.home-hero{padding:68px 0 54px}.home-section{padding-bottom:64px}.home-recent-posts{padding-bottom:48px}.home-footer{margin-top:92px;padding:34px 0 30px}.home-footer-inner{gap:18px;width:min(calc(100% - var(--content-gutter) - var(--content-gutter)),var(--content-width))}.home-footer-nav{gap:16px 14px}.home-footer-group-title{margin-bottom:7px;font-size:.72rem}.home-footer-group-links{gap:3px}.home-footer-link{gap:5px;min-height:30px}.home-footer-link-icon{width:22px;height:22px}.home-footer-link-label{font-size:.86rem}.home-footer-meta{flex-wrap:wrap;gap:6px 14px;white-space:normal}.home-section-header{align-items:flex-end;gap:12px}.home-post-grid{grid-template-columns:repeat(2,minmax(0,min(calc((100% - 18px)/2),var(--home-post-card-max-width))))}.home-post-body{padding:9px 10px}.archive-filter{margin-top:-42px;padding:14px 0 16px}.archive-filter-inner{grid-template-columns:minmax(0,1fr) minmax(0,1fr) clamp(84px,24vw,104px);gap:8px}.archive-filter-control-category{grid-column:1}.archive-filter-control-category .archive-filter-menu{width:min(224px,calc(100vw - 32px))}.archive-filter-control-year{grid-column:2}.archive-filter-button{min-height:44px;gap:6px;padding:0 10px 0 12px;font-size:.84rem}.archive-filter-arrow{width:14px}.archive-sort-button{grid-column:3;align-self:center;justify-self:stretch;width:100%;height:34px;gap:6px;font-size:.76rem}.archive-sort{justify-content:flex-start;margin-bottom:24px}.post-card-link{gap:12px;padding:18px 0}.post-card-link.has-cover{grid-template-columns:minmax(0,1fr) clamp(88px,26vw,104px)}.post-card h2{display:-webkit-box;overflow:hidden;margin-bottom:6px;font-size:1.06rem;line-height:1.28;-webkit-box-orient:vertical;-webkit-line-clamp:2}.post-card-body>p:not(.post-meta){display:-webkit-box;overflow:hidden;margin-bottom:6px;font-size:.86rem;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:2}.post-card-meta{font-size:.7rem;line-height:1.2}.article-page{padding-top:40px}.article-header{margin-bottom:34px}.article-header.has-article-category{padding-right:0}.article-header.has-article-category .article-meta{max-width:calc(100% - 5.75rem);min-height:32px}.article-category{position:absolute;top:0;right:0;margin-bottom:0}.article-cover{margin:-8px 0 38px}.article-header h1,.prose h1{font-size:clamp(1.75rem,10vw,2.25rem)}.prose blockquote,.prose pre{border-radius:var(--radius-sm)}.prose blockquote{padding:15px 16px 10px}.prose img:not(.external-link-favicon){max-height:220px}.image-carousel-nav{width:34px;height:34px;font-size:1.45rem}.image-carousel-viewport{padding-inline:34px}.image-carousel-prev{left:4px}.image-carousel-next{right:4px}.image-lightbox{--image-lightbox-max-height: calc(var(--image-lightbox-viewport-height) - 64px - var(--image-lightbox-caption-space));--image-lightbox-max-width: calc(var(--image-lightbox-viewport-width) - 32px);padding:8px}.image-lightbox.has-caption{--image-lightbox-caption-space: 84px}.image-lightbox-caption{bottom:10px;max-width:calc(var(--image-lightbox-viewport-width) - 24px);max-height:4.2em;overflow:auto;padding:8px 12px;font-size:.88rem}.image-lightbox-toolbar{grid-template-columns:38px 1fr 38px;top:8px;right:8px;left:8px}.image-lightbox-button{width:38px;height:38px;font-size:1.45rem}.image-lightbox-stack{padding:0}.image-lightbox-prev{left:8px}.image-lightbox-next{right:8px}.prose pre{padding:18px}}
