@font-face{font-family:LXGW WenKai Wordmark;font-style:normal;font-weight:400;font-display:block;src:url(/fonts/wenkai-wordmark.woff2) format("woff2");unicode-range:U+7121,U+4EBA,U+4E4B,U+5883}.blog-zone{--blog-ink: hsl(var(--foreground));--blog-body: hsl(var(--foreground) / .78);--blog-muted: hsl(var(--foreground) / .58);--blog-faint: hsl(var(--foreground) / .42);--blog-line: hsl(var(--foreground) / .1);--blog-fill: hsl(var(--foreground) / .045);--blog-img-edge: inset 0 0 0 1px rgba(0, 0, 0, .1);--blog-measure: 720px;--blog-display: "LXGW WenKai Wordmark", "Songti SC", "Noto Serif CJK SC", serif;min-height:100svh;color:var(--blog-body);background:hsl(var(--background));font-feature-settings:"cv11","ss01"}.dark .blog-zone{--blog-img-edge: inset 0 0 0 1px rgba(255, 255, 255, .1)}body.blog-zone:before{display:none}.blog-shell{margin-inline:auto;max-width:var(--blog-measure);padding:40px 24px 48px}.blog-zone .footer{padding-bottom:0}.blog-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:72px}.blog-topbar__controls{display:inline-flex;align-items:center;gap:4px}.blog-mark{display:inline-flex;width:40px;height:40px;transition:opacity .15s ease}.blog-mark:hover{opacity:.65}.blog-mark img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.dark .blog-mark img{filter:invert(1)}.blog-theme-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;color:var(--blog-faint);background:transparent;border:none;cursor:pointer;transition:color .15s ease,background .15s ease,scale .12s ease}.blog-theme-toggle:before{content:"";position:absolute;inset:-3px}.blog-theme-toggle:hover{color:var(--blog-ink);background:hsl(var(--foreground) / .05)}.blog-theme-toggle:active{scale:.96}.blog-theme-toggle svg{width:18px;height:18px}.blog-theme-toggle [data-blog-icon]{display:none}html[data-theme-setting=light] .blog-theme-toggle [data-blog-icon=light],html[data-theme-setting=dark] .blog-theme-toggle [data-blog-icon=dark],html[data-theme-setting=system] .blog-theme-toggle [data-blog-icon=system]{display:inline-flex}.blog-masthead{margin-bottom:88px}.blog-masthead__wordmark{font-family:var(--blog-display);font-size:50px;line-height:1.15;font-weight:400;letter-spacing:-.03em;color:var(--blog-ink)}.blog-masthead__tagline{margin-top:20px;font-size:16px;line-height:25px;color:var(--blog-muted)}.blog-year{scroll-margin-top:24px}.blog-year+.blog-year{margin-top:40px}.blog-year__heading{margin-bottom:4px;font-size:13px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--blog-faint)}.blog-list{position:relative;list-style:none;margin:0;padding:0}.blog-indicator{position:absolute;left:0;top:0;z-index:0;border-radius:12px;background:var(--blog-fill);opacity:0;pointer-events:none;will-change:transform;transition:transform .46s cubic-bezier(.25,1.18,.45,1.04),width .4s cubic-bezier(.25,1,.3,1),height .4s cubic-bezier(.25,1,.3,1),opacity .25s ease-out}.blog-row{position:relative;z-index:1;transition:opacity .3s ease}.blog-list.is-hovering .blog-row:not(:hover){opacity:.45}.blog-row__link{display:block;padding:16px 0 0}.blog-row__link:after{content:"";position:absolute;inset:0}.blog-row__title{font-size:19px;line-height:1.45;font-weight:550;letter-spacing:-.012em;text-wrap:balance;color:var(--blog-ink);transition:color .3s ease}.blog-row__excerpt{margin-top:5px;font-size:15px;line-height:1.55;color:var(--blog-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.blog-row__meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;margin-top:9px;padding-bottom:16px}.blog-row__date{font-size:13px;line-height:1.4;color:var(--blog-faint);font-variant-numeric:tabular-nums}.blog-row__tags{display:inline-flex;flex-wrap:wrap;gap:6px}.blog-row__tag{position:relative;z-index:1;font-size:11.5px;line-height:1;padding:4px 9px;border-radius:999px;color:var(--blog-faint);background:hsl(var(--foreground) / .04);transition:color .2s ease,background-color .2s ease}.blog-row:hover .blog-row__tag{color:var(--blog-muted);background:hsl(var(--foreground) / .07)}.blog-row:hover .blog-row__tag:hover,.blog-row__tag:hover{color:var(--blog-accent);background:color-mix(in srgb,var(--blog-accent) 12%,transparent)}.blog-yearrail{display:none;flex-wrap:wrap;align-items:center;gap:4px 2px;margin-bottom:12px;font-size:13px;font-variant-numeric:tabular-nums}.blog-yearrail__year{display:inline-flex;align-items:center;gap:8px;padding:2px 8px;border-radius:6px;color:var(--blog-faint);transition:color .15s ease,background .15s ease}.blog-yearrail__year:first-child{padding-left:0}.blog-yearrail__tick{display:none}.blog-yearrail__year:hover,.blog-yearrail__year.is-active{color:var(--blog-ink)}@media(min-width:1200px){.blog-yearrail{display:flex;position:fixed;top:50%;left:max(20px,calc((100vw - var(--blog-measure)) / 2 - 132px));transform:translateY(-50%);flex-direction:column;align-items:flex-start;gap:0;margin:0;z-index:20}.blog-yearrail__year{gap:12px;padding:7px 0;border-radius:0;color:var(--blog-faint)}.blog-yearrail__tick{display:block;width:18px;height:1px;background:hsl(var(--foreground) / .25);transition:width .2s ease,background .2s ease}.blog-yearrail__label{opacity:.45;transform:translate(-4px);transition:opacity .2s ease,transform .2s ease}.blog-yearrail:hover .blog-yearrail__label{opacity:1;transform:none}.blog-yearrail__year:hover .blog-yearrail__tick,.blog-yearrail__year.is-active .blog-yearrail__tick{width:28px;background:var(--blog-ink)}.blog-yearrail__year.is-active .blog-yearrail__label{opacity:1;color:var(--blog-ink);font-weight:550}.blog-year__heading{display:none}}.blog-preview{position:fixed;top:0;left:0;z-index:40;width:240px;pointer-events:none;will-change:transform}.blog-preview img{display:block;width:100%;aspect-ratio:16 / 10;height:auto;-o-object-fit:cover;object-fit:cover;border-radius:12px;box-shadow:0 18px 50px hsl(var(--foreground) / .14),var(--blog-img-edge);transform-origin:left center;transform:scale(.92);opacity:0;transition:transform .34s cubic-bezier(.22,1.2,.4,1),opacity .22s ease-out}.blog-preview.is-visible img{transform:scale(1);opacity:1}.blog-preview.is-visible{view-transition-name:blog-hero}@media(prefers-reduced-motion:reduce){.blog-preview img{transition:opacity .15s ease;transform:none}.blog-preview.is-visible img{transform:none}}.blog-back{display:inline-flex;align-items:center;gap:6px;margin-bottom:40px;font-size:14px;color:var(--blog-faint);transition:color .15s ease}.blog-back:hover{color:var(--blog-ink)}@media(min-width:1280px){.blog-back{display:none}}.blog-article__header{margin-bottom:44px}.blog-article__title{font-size:clamp(27px,4.4vw,34px);line-height:1.3;font-weight:600;letter-spacing:-.02em;text-wrap:balance;color:var(--blog-ink);margin-bottom:14px}.blog-article__meta{font-size:14px;line-height:20px;color:var(--blog-faint);font-variant-numeric:tabular-nums}.blog-article__meta span+span:before{content:"·";margin:0 8px}.blog-prose{font-size:17.5px;line-height:1.85;letter-spacing:.003em;color:var(--blog-body);text-wrap:wrap}.blog-prose>*+*{margin-top:1.4em}.blog-prose h2{font-size:22px;line-height:1.4;font-weight:600;letter-spacing:-.01em;text-wrap:balance;color:var(--blog-ink);margin-top:2.6em;margin-bottom:-.2em}.blog-prose h3{font-size:19px;line-height:1.45;font-weight:600;text-wrap:balance;color:var(--blog-ink);margin-top:2em;margin-bottom:-.3em}.blog-prose a{color:var(--blog-ink);text-decoration:underline;text-decoration-color:hsl(var(--foreground) / .3);text-underline-offset:3px;transition:text-decoration-color .15s ease}.blog-prose a:hover{text-decoration-color:currentColor}.blog-prose strong{color:var(--blog-ink);font-weight:600}.blog-prose blockquote{padding-left:22px;border-left:2px solid hsl(var(--foreground) / .18);color:var(--blog-muted)}.blog-prose blockquote p{margin-top:.6em}.blog-prose ul{padding-left:24px;list-style:disc}.blog-prose ol{padding-left:24px;list-style:decimal}.blog-prose li::marker{color:var(--blog-faint)}.blog-prose li+li{margin-top:8px}.blog-prose :where(code,kbd,samp){font-family:var(--font-code);font-size:.875em;padding:.15em .4em;border-radius:6px;background:hsl(var(--foreground) / .06)}.blog-prose pre{font-family:var(--font-code);font-size:14px;line-height:1.6;padding:16px 18px;border-radius:12px;background:hsl(var(--foreground) / .05);overflow-x:auto}.blog-prose pre code{padding:0;background:none}.blog-prose>img,.blog-prose p>img{display:block;width:auto;max-width:100%;max-height:70vh;margin-inline:auto;height:auto;border-radius:10px;box-shadow:var(--blog-img-edge)}.blog-end{margin-top:44px;padding-top:28px;border-top:1px solid var(--blog-line)}.blog-end__bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px 24px}@media(max-width:639px){.blog-end__bar{flex-direction:column;align-items:stretch}}.blog-adjacent{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:44px;padding-top:28px;border-top:1px solid var(--blog-line)}.blog-adjacent__item{display:block}.blog-adjacent__item--next{text-align:right}.blog-adjacent__dir{display:block;font-size:12.5px;color:var(--blog-faint)}.blog-adjacent__title{display:block;margin-top:6px;font-size:16px;line-height:22px;font-weight:600;text-wrap:balance;color:var(--blog-muted);transition:color .15s ease}.blog-adjacent__item:hover .blog-adjacent__title{color:var(--blog-ink)}.blog-tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:16px 0 0;padding:0}.blog-tag{display:inline-flex;font-size:12.5px;line-height:1;padding:6px 11px;border-radius:999px;color:var(--blog-muted);background:hsl(var(--foreground) / .05);transition:color .16s ease,background-color .16s ease}.blog-tag:hover{color:var(--blog-ink);background:hsl(var(--foreground) / .09)}.blog-article-wrap{position:relative}.blog-aside{display:none}@media(min-width:1280px){.blog-aside{display:block;position:absolute;top:0;bottom:0;left:-264px;width:210px;z-index:45}.blog-shell:has(.blog-article-wrap){margin-left:auto;margin-right:max(24px,calc(50vw - 400px))}}.blog-aside__sticky{position:sticky;top:96px;padding-left:16px;padding-right:30px}.blog-back-rail{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--blog-faint);transition:color .15s ease}.blog-back-rail:hover{color:var(--blog-ink)}.blog-back-rail+.toc-container:not([hidden]){margin-top:22px}.toc-container{display:none}@media(min-width:1280px){.toc-container:not([hidden]){display:block}}.toc-inner{position:static}.toc-content-wrapper{position:relative}.toc-sliding-pill{position:absolute;top:0;left:0;width:0;height:0;border-radius:8px;background:color-mix(in srgb,var(--blog-accent) 20%,transparent);opacity:0;z-index:0;pointer-events:none;transition:top .48s cubic-bezier(.25,1.22,.45,1.04),height .48s cubic-bezier(.25,1.22,.45,1.04),left .48s cubic-bezier(.25,1.22,.45,1.04),width .48s cubic-bezier(.25,1.22,.45,1.04),opacity .25s ease-out}.toc-progress-timeline{position:absolute;top:0;bottom:0;left:-16px;width:4px;overflow:hidden;opacity:.6;background:linear-gradient(var(--blog-line) 2px,transparent 2px);background-size:100% 8px;z-index:1}.toc-progress-fill{position:absolute;top:0;left:0;width:4px;height:0;background:linear-gradient(var(--blog-accent) 2px,transparent 2px);background-size:100% 8px;transition:height .1s linear}.toc-list{position:relative;display:flex;flex-direction:column;margin:0;padding:0;list-style:none}.toc-item{position:relative;z-index:1}.toc-link{display:inline-block;padding:6px 0;border-radius:8px;font-size:12px;line-height:1.35;color:hsl(var(--foreground) / .62);transition:color .2s cubic-bezier(.4,0,.2,1)}.toc-item.depth-3 .toc-link{padding-left:16px}.toc-text{display:block;padding:0 8px;transition:color .3s cubic-bezier(.4,0,.2,1)}.toc-link:hover,.toc-link.active{color:var(--blog-ink)}@media(prefers-reduced-motion:reduce){.toc-sliding-pill,.toc-progress-fill,.toc-text,.toc-link{transition:none}}.toc-topbar{display:none}@media(max-width:1279px){.toc-topbar:not([hidden]){display:block}}.toc-topbar{position:fixed;top:0;left:0;right:0;z-index:55;padding-bottom:40px;opacity:0;transform:translateY(-100%);pointer-events:none;transition:opacity .25s ease,transform .32s cubic-bezier(.32,.72,0,1)}.toc-topbar.is-visible{opacity:1;transform:translateY(0)}.toc-topbar__fade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(to bottom,hsl(var(--background) / .55),hsl(var(--background) / .28));-webkit-backdrop-filter:blur(22px) saturate(1.7);backdrop-filter:blur(22px) saturate(1.7);-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 44px),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 44px),transparent)}.ua-webkit .toc-topbar__fade{background:linear-gradient(to bottom,hsl(var(--background) / .66),hsl(var(--background) / .36));-webkit-backdrop-filter:blur(12px) saturate(1.5);backdrop-filter:blur(12px) saturate(1.5)}.toc-topbar__bar{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;height:52px;padding:0 16px;pointer-events:none}.toc-topbar__logo,.toc-topbar__title,.toc-topbar__totop{pointer-events:auto}.toc-topbar__logo{display:inline-flex;width:30px;height:30px;flex:none;justify-self:start;transition:opacity .15s ease}.toc-topbar__logo:hover{opacity:.65}.toc-topbar__logo img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.dark .toc-topbar__logo img{filter:invert(1)}.toc-logo-ghost{position:fixed;top:0;left:0;z-index:56;opacity:0;pointer-events:none;transform-origin:top left;will-change:transform}.toc-logo-ghost img{display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.dark .toc-logo-ghost img{filter:invert(1)}.toc-topbar.logo-handoff .toc-topbar__logo img{opacity:0}.toc-title-ghost{position:fixed;top:0;left:0;z-index:56;max-width:92vw;margin:0;opacity:0;color:var(--blog-ink);white-space:nowrap;pointer-events:none;transform-origin:top left;will-change:transform,opacity}@media(prefers-reduced-motion:reduce){.toc-logo-ghost,.toc-title-ghost{display:none}}.toc-topbar__title{display:inline-flex;align-items:center;gap:5px;min-width:0;max-width:min(70vw,360px);margin:0;padding:6px 4px;border:0;background:none;font:inherit;font-size:14px;font-weight:500;color:var(--blog-ink);cursor:pointer;justify-self:center;transition:color .15s ease}.toc-topbar--static .toc-topbar__chevron{display:none}.toc-topbar--static .toc-topbar__title{cursor:default;pointer-events:none}.toc-topbar__title-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toc-topbar__chevron{width:15px;height:15px;flex:none;color:var(--blog-faint);transition:transform .2s ease}.toc-topbar.menu-open .toc-topbar__chevron{transform:rotate(180deg)}.toc-topbar__totop{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;margin:0;padding:0;border:0;border-radius:999px;background:none;color:var(--blog-faint);cursor:pointer;justify-self:end;transition:color .15s ease,scale .12s ease}.toc-topbar__totop:hover{color:var(--blog-ink)}.toc-topbar__totop:active{scale:.92}.toc-topbar__totop svg{width:18px;height:18px}.toc-topbar__menu{position:relative;max-height:0;overflow:hidden;padding:0 8px;pointer-events:auto;opacity:0;transition:max-height .3s cubic-bezier(.32,.72,0,1),padding .3s cubic-bezier(.32,.72,0,1),opacity .2s ease}.toc-topbar.menu-open .toc-topbar__menu{max-height:min(60vh,460px);overflow-y:auto;padding:2px 8px 6px;opacity:1}.toc-topbar__list{list-style:none;display:flex;flex-direction:column;align-items:center;gap:2px;margin:0;padding:0}.toc-topbar__item.depth-3 .toc-topbar__link{font-size:13px;opacity:.8}.toc-topbar__link{display:inline-block;max-width:100%;padding:7px 12px;border-radius:12px;font-size:14px;line-height:1.35;text-align:center;color:var(--blog-faint);transition:color .15s ease,background .15s ease}.toc-topbar__link:hover{color:var(--blog-ink)}.toc-topbar__link.active{color:var(--blog-accent);font-weight:600;background:color-mix(in srgb,var(--blog-accent) 12%,transparent)}@media(max-width:1279px){body:has(.toc-topbar:not([hidden])) .blog-totop{display:none}}@media(prefers-reduced-motion:reduce){.toc-topbar,.toc-topbar__menu,.toc-topbar__chevron,.toc-topbar__totop{transition:none}}.blog-totop{position:fixed;right:24px;bottom:24px;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:999px;border:1px solid var(--blog-line);background:hsl(var(--background));color:var(--blog-faint);cursor:pointer;opacity:0;transform:translateY(8px);box-shadow:0 4px 12px hsl(var(--foreground) / .08),0 1px 3px hsl(var(--foreground) / .06);transition:opacity .2s ease,transform .2s ease,color .15s ease,scale .12s ease}.blog-totop.is-visible{opacity:1;transform:translateY(0)}.blog-totop:hover{color:var(--blog-ink)}.blog-totop:active{scale:.96}@media(prefers-reduced-motion:reduce){.blog-theme-toggle:active,.blog-search-trigger:active,.blog-totop:active{scale:1}}.blog-totop svg{width:18px;height:18px}.blog-lightbox{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:5vmin;background:hsl(var(--background) / .92);opacity:0;pointer-events:none;cursor:zoom-out;transition:opacity .2s ease}.blog-lightbox.is-open{opacity:1;pointer-events:auto}.blog-lightbox img{max-width:100%;max-height:100%;border-radius:12px;-o-object-fit:contain;object-fit:contain;box-shadow:var(--blog-img-edge)}.blog-zone .footer{margin-top:72px}.tags-page-header{margin:8px 0 56px}.tags-page-label{display:inline-block;margin-bottom:14px;font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--blog-faint)}.tags-page-title{margin:0 0 14px;font-family:var(--font-sans);font-size:46px;line-height:1.1;font-weight:600;letter-spacing:-.03em;color:var(--blog-ink)}.tags-page-description{margin:0;max-width:34rem;font-size:16px;line-height:1.55;color:var(--blog-muted)}.tag-index__empty{color:var(--blog-faint)}@media(max-width:767px){.blog-shell:has(.tag-marquee) .blog-topbar{margin-bottom:28px}.tags-page-header{margin:0 0 24px}.tags-page-title{font-size:34px}}.tag-marquee{display:flex;flex-direction:column;gap:16px;margin-top:8px}.tag-marquee__track{display:flex;flex-direction:column;gap:16px}.tag-marquee__track>.tag-card{width:100%;max-width:560px;margin-inline:auto}html.tags-pinned,html.tags-pinned body{height:100%;overflow:hidden}.tags-pinned .blog-shell{display:flex;flex-direction:column;height:100svh;padding-bottom:24px}.tags-pinned .tags-page-header{margin:0 0 20px}.tags-pinned .tag-marquee{flex:1;min-height:0;width:100vw;margin-inline:calc(50% - 50vw);justify-content:center;gap:24px;overflow:hidden}.tags-pinned .tag-marquee__row{flex:1 1 0;min-height:0;max-height:460px;overflow:hidden}.tags-pinned .tag-marquee__track{flex-direction:row;align-items:stretch;gap:24px;height:100%;width:-moz-max-content;width:max-content;will-change:transform}.tags-pinned .tag-marquee__track>.tag-card{flex:0 0 360px;width:360px;height:100%;min-height:0;max-width:none;margin-inline:0}.tags-pinned .tag-card:not(.has-image){display:flex;flex-direction:column}.tags-pinned .tag-card:not(.has-image) .tag-card-posts{margin-top:auto}.tag-card{--tag-accent: var(--blog-accent);--tag-color: var(--tag-accent);--row-h: 46px;--tag-pad-x: 24px;position:relative;border-radius:20px;overflow:hidden;isolation:isolate;background:radial-gradient(280px circle at 50% 0%,color-mix(in oklab,var(--tag-color) 12%,transparent),transparent 68%),hsl(var(--background) / .58);border:1px solid hsl(var(--foreground) / .1);-webkit-backdrop-filter:blur(14px) saturate(135%);backdrop-filter:blur(14px) saturate(135%);box-shadow:inset 0 1px hsl(var(--background) / .72),0 12px 30px -20px hsl(var(--foreground) / .3);transition:border-color .25s ease,box-shadow .25s ease}.tag-card:hover{border-color:var(--tag-color);box-shadow:inset 0 1px hsl(var(--background) / .8),0 14px 38px -18px color-mix(in srgb,var(--tag-color) 28%,transparent)}.dark .tag-card{background:radial-gradient(280px circle at 50% 0%,color-mix(in oklab,var(--tag-color) 16%,transparent),transparent 68%),hsl(var(--background) / .5);border-color:hsl(var(--foreground) / .1)}.dark .tag-card:hover{box-shadow:0 10px 34px #0000004d}.tag-card.has-accent:not(.has-image){border-color:color-mix(in srgb,var(--tag-color) 25%,var(--blog-line))}.tag-card.has-accent:not(.has-image):hover{border-color:var(--tag-color);box-shadow:0 12px 40px color-mix(in srgb,var(--tag-color) 15%,transparent)}.tag-card-link{display:block;padding:var(--tag-pad-x);color:inherit}.tag-card-header{display:flex;align-items:center;gap:16px;margin-bottom:14px}.tag-card-icon{display:flex;align-items:center;justify-content:center;width:52px;height:52px;flex-shrink:0;border-radius:14px;background:linear-gradient(135deg,color-mix(in srgb,var(--tag-color) 15%,hsl(var(--background))),color-mix(in srgb,var(--tag-color) 8%,hsl(var(--background))));border:1px solid color-mix(in srgb,var(--tag-color) 20%,transparent)}.tag-card-icon svg{width:24px;height:24px;color:var(--tag-color)}.tag-card-info{flex:1;min-width:0}.tag-card-name{margin:0 0 2px;font-family:var(--font-sans);font-size:19px;font-weight:650;line-height:1.3;letter-spacing:-.01em;color:var(--blog-ink);transition:color .2s ease}.tag-card:not(.has-image):hover .tag-card-name{color:var(--tag-color)}.tag-card-count{font-size:13px;font-weight:500;color:var(--blog-muted)}.tag-card-description{margin:0;font-size:14px;line-height:1.5;color:var(--blog-muted);text-wrap:pretty;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tag-card-posts{position:relative;border-top:1px solid var(--blog-line)}.tag-card-posts.is-scrollable .tag-posts-scroll{max-height:calc(var(--row-h) * 2.5);overflow-y:auto;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--tag-color) 30%,transparent) transparent;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}.tag-card-posts.is-scrollable .tag-posts-scroll::-webkit-scrollbar{width:4px}.tag-card-posts.is-scrollable .tag-posts-scroll::-webkit-scrollbar-track{background:transparent}.tag-card-posts.is-scrollable .tag-posts-scroll::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--tag-color) 30%,transparent);border-radius:2px}.tag-card-posts.is-scrollable .tag-posts-scroll::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--tag-color) 50%,transparent)}.tag-card:not(.has-image) .tag-card-posts.is-scrollable:after{content:"";position:absolute;bottom:0;left:0;right:0;height:24px;background:linear-gradient(to bottom,transparent,color-mix(in oklab,hsl(var(--foreground)) 4%,hsl(var(--background))));pointer-events:none;z-index:2}.tag-post-preview{display:flex;align-items:center;justify-content:space-between;gap:12px;height:var(--row-h);box-sizing:border-box;padding:0 var(--tag-pad-x);color:inherit;border-bottom:1px solid var(--blog-line);transition:background .15s ease}.tag-post-preview:last-child{border-bottom:none}.tag-post-preview:hover{background:color-mix(in srgb,var(--tag-color) 5%,transparent)}.tag-post-preview:hover .tag-post-title{color:var(--tag-color)}.tag-post-title{flex:1;min-width:0;font-size:14px;font-weight:500;line-height:1.4;color:var(--blog-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s ease}.tag-post-date{flex-shrink:0;font-size:12px;color:var(--blog-faint);font-variant-numeric:tabular-nums}.tag-card.has-image{min-height:360px;--image-color: var(--tag-image-color, hsl(var(--foreground) / .15));border-color:transparent;background:color-mix(in oklab,hsl(var(--foreground)) 8%,hsl(var(--background)))}.dark .tag-card.has-image{background:hsl(var(--foreground) / .06)}.tag-card.has-image:hover{border-color:color-mix(in srgb,var(--image-color) 50%,transparent);box-shadow:0 8px 24px color-mix(in srgb,var(--image-color) 25%,rgb(0 0 0 / .1))}.tag-card-bg{display:block;position:absolute;inset:0;z-index:1;color:inherit}.tag-card-bg>img{position:absolute;inset:0;z-index:1;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:filter .3s ease}.tag-card.has-image:hover .tag-card-bg>img{filter:brightness(1.06) saturate(1.05)}.tag-card-bg.has-lqip:before{content:"";position:absolute;inset:0;z-index:0;background:var(--tag-lqip) center / cover no-repeat;filter:blur(14px);transform:scale(1.1)}.js .tag-card.has-image .tag-card-bg>img{opacity:0;transition:opacity .6s ease}.js .tag-card.has-image .tag-card-bg.is-loaded>img{opacity:1}.js .tag-card.has-image .tag-card-bg.is-loaded.has-lqip:before{opacity:0;transition:opacity .6s ease .1s}.tag-card-bg:after{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(to bottom,#0000001a,#0000008c);pointer-events:none}.tag-card.has-image .tag-card-header{position:absolute;top:var(--tag-pad-x);left:var(--tag-pad-x);z-index:3;margin-bottom:0}.tag-card.has-image .tag-card-name{color:#fff;font-size:22px;font-weight:700;text-shadow:0 1px 3px rgb(0 0 0 / .4)}.tag-card.has-image .tag-card-count{color:#ffffffe6;text-shadow:0 1px 2px rgb(0 0 0 / .3)}.tag-card.has-image .tag-card-posts{position:absolute;inset:auto 0 0;z-index:3;border-top:none;background:#00000026;-webkit-backdrop-filter:blur(24px) saturate(180%) brightness(1.1);backdrop-filter:blur(24px) saturate(180%) brightness(1.1);box-shadow:inset 0 .5px #ffffff4d}.dark .tag-card.has-image .tag-card-posts{background:#00000040;box-shadow:inset 0 .5px #ffffff26}.tag-card.has-image .tag-card-posts.is-scrollable .tag-posts-scroll{scrollbar-color:rgb(255 255 255 / .3) transparent}.tag-card.has-image .tag-card-posts.is-scrollable .tag-posts-scroll::-webkit-scrollbar-thumb{background:#ffffff4d}.tag-card.has-image .tag-post-preview{border-bottom-color:#ffffff26}.tag-card.has-image .tag-post-preview:hover{background:#ffffff1a}.tag-card.has-image .tag-post-title{color:#fffffff2;text-shadow:0 1px 2px rgb(0 0 0 / .3)}.tag-card.has-image .tag-post-preview:hover .tag-post-title{color:#fff}.tag-card.has-image .tag-post-date{color:#ffffffb3;text-shadow:0 1px 2px rgb(0 0 0 / .3)}@media(max-width:767px){.tag-card{--tag-pad-x: 18px}.tag-card.has-image .tag-card-name{font-size:20px}.tag-post-title{font-size:15px}}@media(prefers-reduced-motion:reduce){.tag-card,.tag-card-bg>img{transition:none}.tag-card:hover{transform:none}.tags-pinned .tag-marquee__track{transform:none!important}}.tag-index__back{display:inline-flex;font-size:13px;color:var(--blog-faint);transition:color .16s ease}.tag-index__back:hover{color:var(--blog-ink)}.tag-archive__head{margin-bottom:48px}.tag-archive__title{margin-top:18px;font-family:var(--font-sans);font-size:40px;line-height:1.1;font-weight:600;letter-spacing:-.03em;color:var(--blog-ink)}.tag-archive__hash{color:color-mix(in oklab,var(--tag-accent) 80%,var(--blog-faint))}.tag-archive__desc{margin-top:14px;max-width:60ch;font-size:16px;line-height:25px;color:var(--blog-muted)}.tag-archive__count{margin-top:16px;font-size:13px;font-variant-numeric:tabular-nums;color:var(--blog-faint)}@media(prefers-reduced-motion:reduce){.tag-card,.tag-card__enter,.tag-deck__pill,.tag-deck__pill-active{transition:none}.tag-card:active{transform:none}.tag-deck__track{scroll-snap-type:none}}.blog-search-trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;color:var(--blog-faint);background:transparent;border:none;cursor:pointer;transition:color .15s ease,background .15s ease,scale .12s ease}.blog-search-trigger:before{content:"";position:absolute;inset:-3px}.blog-search-trigger:hover{color:var(--blog-ink);background:hsl(var(--foreground) / .05)}.blog-search-trigger:active{scale:.96}@media(prefers-reduced-motion:reduce){.blog-search-trigger:active{scale:1}}.blog-search-trigger svg{width:18px;height:18px}.blog-search{width:min(640px,calc(100vw - 32px));max-height:min(70vh,560px);margin-top:12vh;margin-inline:auto;padding:0;border:1px solid var(--blog-line);border-radius:16px;background:hsl(var(--background));color:var(--blog-ink);box-shadow:0 24px 64px -20px #00000080;outline:none;overflow:hidden}.blog-search[open]{display:flex;flex-direction:column}.blog-search::backdrop{background:#0000006b;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.blog-search__panel,.blog-search #blog-search-ui,.blog-search .pagefind-ui,.blog-search .pagefind-ui__form{display:flex;flex-direction:column;min-height:0}.blog-search__panel{flex:1}.blog-search__fallback{margin:16px 20px;color:var(--blog-muted);font-size:14px}.blog-search .pagefind-ui__hidden{display:none!important}.blog-search .pagefind-ui__suppressed{opacity:0;pointer-events:none}.blog-search .pagefind-ui__form{position:relative}.blog-search .pagefind-ui__form:before{content:"";position:absolute;top:19px;left:18px;width:18px;height:18px;background:var(--blog-faint);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") center / 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") center / 100% no-repeat;pointer-events:none}.blog-search .pagefind-ui__search-input{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:100%;height:56px;padding:0 72px 0 48px;font-size:16px;font-family:inherit;font-weight:450;color:var(--blog-ink);background:transparent;border:0;border-bottom:1px solid var(--blog-line);border-radius:0;outline:none}.blog-search .pagefind-ui__search-input::-moz-placeholder{color:var(--blog-faint)}.blog-search .pagefind-ui__search-input::placeholder{color:var(--blog-faint)}.blog-search .pagefind-ui__search-clear{position:absolute;top:14px;right:12px;height:28px;padding:0 10px;font-size:12px;font-family:inherit;color:var(--blog-faint);background:transparent;border:0;border-radius:999px;cursor:pointer;transition:color .15s ease,background .15s ease}.blog-search .pagefind-ui__search-clear:hover{color:var(--blog-ink);background:var(--blog-fill)}.blog-search .pagefind-ui__drawer{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:6px 8px 8px}.blog-search .pagefind-ui__message{margin:0;padding:10px 12px 4px;font-size:12.5px;color:var(--blog-faint)}.blog-search .pagefind-ui__results{list-style:none;margin:0;padding:0}.blog-search .pagefind-ui__result{position:relative;border-radius:10px}.blog-search .pagefind-ui__result:hover,.blog-search .pagefind-ui__result:focus-within{background:var(--blog-fill)}.blog-search .pagefind-ui__result-inner{display:flex;flex-direction:column;gap:3px;padding:10px 12px}.blog-search .pagefind-ui__result-title{margin:0;font-size:15px;font-weight:500;line-height:1.4;color:var(--blog-ink)}.blog-search .pagefind-ui__result-link{color:inherit;text-decoration:none;outline:none}.blog-search .pagefind-ui__result-link:after{content:"";position:absolute;inset:0}.blog-search .pagefind-ui__result-excerpt{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin:0;font-size:13.5px;font-weight:400;line-height:1.7;color:var(--blog-muted)}.blog-search .pagefind-ui__loading{color:transparent;background:var(--blog-fill);border-radius:6px;min-height:1em;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blog-search .pagefind-ui__button{display:block;width:100%;margin:6px 0 2px;padding:9px 12px;font-size:13px;font-family:inherit;color:var(--blog-faint);text-align:center;background:transparent;border:0;border-radius:10px;cursor:pointer;transition:color .15s ease,background .15s ease}.blog-search .pagefind-ui__button:hover{color:var(--blog-ink);background:var(--blog-fill)}.blog-search #blog-search-ui mark{background:color-mix(in srgb,var(--blog-ji) 26%,transparent);color:inherit;border-radius:3px}
