:root{--color-bg:#fff;--color-text:#111;--color-text-secondary:#3d3d3d;--color-text-muted:#6b6b6b;--color-text-faint:#9a9a9a;--color-rule:#e6e6e6;--color-border:#d4d4d4;--color-border-strong:#111;--color-surface:#f6f6f6;--color-surface-strong:#ececec;--color-focus:#111;--highlight-gray:#9b9a97;--highlight-gray-bg:#ebeced;--highlight-brown:#64473a;--highlight-brown-bg:#e9e5e3;--highlight-red:#e03e3e;--highlight-red-bg:#fbe4e4;--highlight-orange:#d9730d;--highlight-orange-bg:#f6e9d9;--highlight-yellow:#dfab01;--highlight-yellow-bg:#fbf3db;--highlight-green:#4d6461;--highlight-green-bg:#ddedea;--highlight-blue:#0b6e99;--highlight-blue-bg:#ddebf1;--highlight-purple:#6940a5;--highlight-purple-bg:#eae4f2;--highlight-pink:#ad1a72;--highlight-pink-bg:#f4dfeb;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;--font-mono:ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, "Liberation Mono", monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.9375rem;--text-body-sm:1rem;--text-md:1.0625rem;--text-lg:1.1875rem;--text-xl:1.375rem;--text-2xl:1.625rem;--text-3xl:2rem;--text-4xl:3.5rem;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--leading-tight:1.25;--leading-heading:1.4;--leading-snug:1.45;--leading-normal:1.65;--leading-code:1.7;--leading-relaxed:1.85;--leading-none:1;--leading-badge:1.6;--tracking-mono:.1em;--tracking-caps:.06em;--tracking-tight:-.015em;--tracking-snug:-.01em;--tracking-slight:-.005em;--tracking-prose:.02em;--tracking-label:.08em;--underline-thick:2px;--underline-offset:.2em;--underline-offset-nav:.35em;--badge-shift:.15em;--code-size:.875em;--code-inline-padding:.15em .4em;--code-block-size:.875rem;--list-indent:1.625em;--prose-size:var(--text-md);--prose-gap:1.15em;--prose-item-gap:.4em;--prose-h2-size:1.5em;--prose-h3-size:1.25em;--prose-h4-size:1.0625em;--prose-h2-above:1.75em;--prose-h3-above:1.5em;--prose-h4-above:1.4em;--prose-heading-below:.6em;--prose-figure-gap:1.75em;--quote-bar-width:3px;--checkbox-size:1em;--checkbox-tick-width:.3em;--checkbox-tick-height:.55em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--width-page:72rem;--width-prose:43.75rem;--gutter:var(--space-4);--nav-link-max:12em;--nav-min:12rem;--icon-link-size:1.125rem;--icon-link-hit:2.5rem;--icon-stroke-width:1.75;--tooltip-max:16rem;--popover-max:18rem;--popover-shadow:0 4px 16px #00000014;--list-tag-max-phone:60%;--logo-size:4.25rem;--logo-border:2px;--logo-ring:0 0 0 1px #00000014;--logo-gap:var(--space-3);--logo-pop-duration:.56s;--logo-pop-from:.6;--logo-pop-easing:cubic-bezier(.34, 1.56, .64, 1);--logo-fade-duration:.32s;--logo-float-distance:4px;--logo-float-duration:5s;--logo-tilt-perspective:360px;--logo-glare-alpha:.45;--logo-shade-alpha:.06;--logo-press-scale:.94;--logo-press-duration:var(--duration);--logo-shadow-contact:0 1px 2px #0000000f;--logo-shadow-y:6px;--logo-shadow-blur:16px;--logo-shadow-spread:-4px;--logo-shadow-alpha:.14;--logo-shadow-lift-alpha:.04;--logo-shadow-lift-blur:6px;--logo-shadow-tilt-offset:.25px;--header-rule-width:var(--space-8);--outline-width:13rem;--outline-gap:var(--space-5);--back-fixed-top:var(--space-5);--back-fixed-height:2.25rem;--outline-top:calc(var(--back-fixed-top) + var(--back-fixed-height) + var(--space-5));--outline-indent:var(--space-3);--outline-marker:2px;--pager-min-height:5.5rem;--radius-sm:2px;--radius:4px;--radius-pill:999px;--rule-width:1px;--focus-ring-width:2px;--focus-ring:var(--focus-ring-width) solid var(--color-focus);--focus-offset:3px;--duration:.12s;--control-height:2.5rem;--skeleton-fade:.2s;--skeleton-delay:.25s;--skeleton-pulse:1.4s;--skeleton-line:.875rem;--skeleton-year-width:4rem;--skeleton-year-height:1.5rem;--skeleton-date-width:6.5rem;--skeleton-date-height:.75rem;--skeleton-title-height:1.125rem;--skeleton-h1-width:70%;--skeleton-h1-height:2rem}@media (width<=639.98px){:root{--prose-size:var(--text-body-sm)}}@media (width>=640px){:root{--logo-size:5.5rem;--logo-gap:var(--space-4);--logo-float-distance:5px;--gutter:var(--space-5);--list-year-col:5.5rem;--list-date-col:9rem}}@media (width>=1024px){:root{--gutter:var(--space-6);--list-year-col:10rem;--list-date-col:10.5rem}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--color-bg);min-height:100vh;color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0}h1,h2,h3,h4,p,ol,ul,blockquote,pre,figure{margin:0}img,svg,video{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset);border-radius:var(--radius-sm)}::selection{background:var(--color-text);color:var(--color-bg)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.prose{font-size:var(--prose-size);line-height:var(--leading-relaxed);letter-spacing:var(--tracking-prose);color:var(--color-text);overflow-wrap:break-word;text-autospace:normal}.prose :is(p,li,blockquote,figcaption){text-wrap:pretty}.prose>*+*{margin-top:var(--prose-gap)}.prose p:empty{min-height:1em}.prose h2,.prose h3,.prose h4{font-weight:var(--weight-bold);line-height:var(--leading-heading);letter-spacing:var(--tracking-snug);text-wrap:balance}.prose h2{font-size:var(--prose-h2-size)}.prose h3{font-size:var(--prose-h3-size)}.prose h4{font-size:var(--prose-h4-size)}.prose>h2{margin-top:var(--prose-h2-above)}.prose>h3{margin-top:var(--prose-h3-above)}.prose>h4{margin-top:var(--prose-h4-above)}.prose>:is(h2,h3,h4)+*{margin-top:var(--prose-heading-below)}.prose>:first-child{margin-top:0}.prose strong{font-weight:var(--weight-semibold)}.prose s{color:var(--color-text-muted)}.prose a{text-decoration:underline;text-decoration-thickness:var(--rule-width);-webkit-text-decoration-color:var(--color-text-faint);text-decoration-color:var(--color-text-faint);text-underline-offset:var(--underline-offset);transition:text-decoration-color var(--duration)}.prose a:hover{text-decoration-color:currentColor;text-decoration-thickness:var(--underline-thick)}.prose ul,.prose ol{padding-left:var(--list-indent)}.prose ul{list-style:outside}.prose ul ul{list-style:circle}.prose li{padding-left:var(--space-1)}.prose li+li,.prose li>:is(ul,ol),.prose li>p+p{margin-top:var(--prose-item-gap)}.prose li::marker{color:var(--color-text-muted)}.prose ol>li::marker{font-variant-numeric:tabular-nums}.prose blockquote{padding-left:var(--space-5);border-left:var(--quote-bar-width) solid var(--color-text);color:var(--color-text-secondary)}.prose blockquote>*+*{margin-top:var(--prose-item-gap)}.prose code{font-family:var(--font-mono);font-size:var(--code-size);letter-spacing:normal;text-autospace:no-autospace}.prose :not(pre)>code{padding:var(--code-inline-padding);border-radius:var(--radius);background:var(--color-surface);overflow-wrap:anywhere}.prose pre{padding:var(--space-4) var(--space-5);border-radius:var(--radius);background:var(--color-surface);border:var(--rule-width) solid var(--color-rule);font-size:var(--code-block-size);line-height:var(--leading-code);letter-spacing:normal;tab-size:2;overflow-x:auto}.prose pre code{font-size:inherit;white-space:pre;overflow-wrap:normal}.prose hr{width:var(--space-8);height:0;margin:var(--space-7) auto;border:0;border-top:var(--rule-width) solid var(--color-border)}.prose>hr+*{margin-top:0}.prose>:is(figure,img,table,pre),.prose>:is(figure,img,table,pre)+*{margin-top:var(--prose-figure-gap)}.prose img{border-radius:var(--radius);max-width:100%;height:auto}.prose p>img{vertical-align:middle;display:inline-block}.prose figcaption{margin-top:var(--space-3);color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--leading-normal);letter-spacing:normal}.prose :is(img,figure)[data-text-alignment=center],.prose figure[data-text-alignment=center] img{margin-inline:auto}.prose :is(img,figure)[data-text-alignment=right],.prose figure[data-text-alignment=right] img{margin-left:auto}.prose figure[data-text-alignment=center]{text-align:center}.prose figure[data-text-alignment=right]{text-align:right}.prose figure:is([data-text-alignment=center],[data-text-alignment=right]){width:fit-content;max-width:100%}.prose u{text-decoration:underline;text-decoration-thickness:var(--rule-width);text-underline-offset:var(--underline-offset)}.prose [data-text-alignment=center]{text-align:center}.prose [data-text-alignment=right]{text-align:right}.prose [data-text-alignment=justify]{text-align:justify}.prose [data-nesting-level]{margin-left:calc(var(--list-indent) * 4)}.prose [data-nesting-level="1"]{margin-left:var(--list-indent)}.prose [data-nesting-level="2"]{margin-left:calc(var(--list-indent) * 2)}.prose [data-nesting-level="3"]{margin-left:calc(var(--list-indent) * 3)}.prose ul:has(>li>input[type=checkbox]){padding-left:0;list-style:none}.prose li:has(>input[type=checkbox]){align-items:baseline;gap:var(--space-2);padding-left:0;display:flex}.prose li>input[type=checkbox]{appearance:none;width:var(--checkbox-size);height:var(--checkbox-size);border:var(--rule-width) solid var(--color-text);border-radius:var(--radius-sm);background:var(--color-bg);transform:translateY(var(--badge-shift));flex:none;place-content:center;margin:0;display:grid}.prose li>input[type=checkbox]:checked{background:var(--color-text)}.prose li>input[type=checkbox]:checked:before{content:"";width:var(--checkbox-tick-width);height:var(--checkbox-tick-height);border:solid var(--color-bg);border-width:0 var(--underline-thick) var(--underline-thick) 0;transform:translateY(calc(-1 * var(--rule-width))) rotate(45deg)}.prose li:has(>input[type=checkbox]:checked)>p{color:var(--color-text-muted);text-decoration:line-through}.prose table{border-collapse:collapse;max-width:100%;font-size:var(--text-base);line-height:var(--leading-normal);letter-spacing:normal;display:block;overflow-x:auto}.prose :is(th,td){min-width:4em;padding:var(--space-2) var(--space-4);border:var(--rule-width) solid var(--color-border);vertical-align:top;text-align:left}.prose th{background:var(--color-surface);font-weight:var(--weight-semibold)}.prose :is(th,td)>p+p{margin-top:var(--space-2)}.prose :is(p,h2,h3,h4,blockquote,li)[data-background-color]{padding:var(--space-1) var(--space-2);border-radius:var(--radius)}.prose [data-style-type=backgroundColor]{padding-block:var(--space-1);border-radius:var(--radius-sm);-webkit-box-decoration-break:clone;box-decoration-break:clone}.prose [data-text-color=gray],.prose [data-style-type=textColor][data-value=gray]{color:var(--highlight-gray)}.prose [data-background-color=gray],.prose [data-style-type=backgroundColor][data-value=gray]{background-color:var(--highlight-gray-bg)}.prose [data-text-color=brown],.prose [data-style-type=textColor][data-value=brown]{color:var(--highlight-brown)}.prose [data-background-color=brown],.prose [data-style-type=backgroundColor][data-value=brown]{background-color:var(--highlight-brown-bg)}.prose [data-text-color=red],.prose [data-style-type=textColor][data-value=red]{color:var(--highlight-red)}.prose [data-background-color=red],.prose [data-style-type=backgroundColor][data-value=red]{background-color:var(--highlight-red-bg)}.prose [data-text-color=orange],.prose [data-style-type=textColor][data-value=orange]{color:var(--highlight-orange)}.prose [data-background-color=orange],.prose [data-style-type=backgroundColor][data-value=orange]{background-color:var(--highlight-orange-bg)}.prose [data-text-color=yellow],.prose [data-style-type=textColor][data-value=yellow]{color:var(--highlight-yellow)}.prose [data-background-color=yellow],.prose [data-style-type=backgroundColor][data-value=yellow]{background-color:var(--highlight-yellow-bg)}.prose [data-text-color=green],.prose [data-style-type=textColor][data-value=green]{color:var(--highlight-green)}.prose [data-background-color=green],.prose [data-style-type=backgroundColor][data-value=green]{background-color:var(--highlight-green-bg)}.prose [data-text-color=blue],.prose [data-style-type=textColor][data-value=blue]{color:var(--highlight-blue)}.prose [data-background-color=blue],.prose [data-style-type=backgroundColor][data-value=blue]{background-color:var(--highlight-blue-bg)}.prose [data-text-color=purple],.prose [data-style-type=textColor][data-value=purple]{color:var(--highlight-purple)}.prose [data-background-color=purple],.prose [data-style-type=backgroundColor][data-value=purple]{background-color:var(--highlight-purple-bg)}.prose [data-text-color=pink],.prose [data-style-type=textColor][data-value=pink]{color:var(--highlight-pink)}.prose [data-background-color=pink],.prose [data-style-type=backgroundColor][data-value=pink]{background-color:var(--highlight-pink-bg)}.page-width,.prose-width{width:100%;padding-inline:var(--gutter);margin-inline:auto}.page-width{max-width:calc(var(--width-page) + 2 * var(--gutter))}.prose-width{max-width:calc(var(--width-prose) + 2 * var(--gutter))}.site-main{padding-block:var(--space-7) var(--space-9)}@media (width<=639.98px){.site-main{padding-top:var(--space-6)}}.site-main:focus{outline:none}.skip-link{top:var(--space-2);left:var(--space-2);z-index:10;padding:var(--space-2) var(--space-3);background:var(--color-text);color:var(--color-bg);font-size:var(--text-sm);position:absolute;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.site-header__inner{align-items:center;gap:var(--space-4);padding-top:var(--space-7);text-align:center;flex-direction:column;display:flex}.site-header__inner:after{content:"";width:var(--header-rule-width);margin-top:var(--space-2);border-top:var(--rule-width) solid var(--color-border)}.site-header__brand{align-items:center;gap:var(--logo-gap);max-width:100%;font-size:var(--text-lg);flex-direction:column;display:flex}.site-header__name{max-width:100%;font-weight:var(--weight-bold);line-height:var(--leading-heading);letter-spacing:var(--tracking-snug);overflow-wrap:anywhere;text-wrap:balance;text-decoration-thickness:var(--underline-thick);text-underline-offset:var(--underline-offset)}.site-header__brand:hover .site-header__name{text-decoration-line:underline}.site-header__brand:focus-visible{border-radius:var(--radius)}.site-logo{box-sizing:border-box;width:var(--logo-size);height:var(--logo-size);border:var(--logo-border) solid var(--color-bg);background:var(--color-surface);box-shadow:var(--logo-ring);border-radius:50%;flex:none;display:block;overflow:hidden}.site-logo__img{object-fit:cover;width:100%;height:100%;display:block}.site-nav{width:100%;min-width:0}.site-nav__row{align-items:center;gap:var(--space-2) var(--space-4);display:flex}.site-nav__list{gap:var(--space-2) var(--space-5);margin:0;padding:0;list-style:none;display:flex}.site-nav__item{flex-shrink:0;min-width:0;max-width:100%}.site-nav__link{max-width:var(--nav-link-max);text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-muted);font-size:var(--text-base);line-height:var(--leading-snug);text-decoration-thickness:var(--underline-thick);text-underline-offset:var(--underline-offset-nav);transition:color var(--duration);display:block;overflow:hidden}.site-nav__link:hover{color:var(--color-text);text-decoration-line:underline}.site-nav__link[aria-current=page]{color:var(--color-text);font-weight:var(--weight-medium);text-decoration-line:underline}.icon-links{flex:none}.icon-links__list{align-items:center;margin:0;padding:0;list-style:none;display:flex}.site-nav__pages+.icon-links .icon-links__list:before{content:"";width:var(--rule-width);height:var(--icon-link-size);margin-right:var(--space-2);background:var(--color-border)}.icon-links__item{display:flex}.icon-link{width:var(--icon-link-hit);height:var(--icon-link-hit);border-radius:var(--radius);color:var(--color-text-muted);font-size:var(--text-base);line-height:var(--leading-snug);transition:color var(--duration), background-color var(--duration);justify-content:center;align-items:center;display:flex;position:relative}.icon-link:hover,.icon-link:focus-visible{color:var(--color-text);background:var(--color-surface)}.icon-link:focus-visible{outline-offset:calc(-1 * var(--focus-ring-width));border-radius:var(--radius)}.icon-link__glyph{width:var(--icon-link-size);height:var(--icon-link-size);flex:none}.icon-link__glyph--stroke{stroke-width:var(--icon-stroke-width)}.icon-link__tip{display:none}@media (hover:hover) and (width>=640px){.icon-link__tip{top:calc(100% + var(--space-1));z-index:10;width:max-content;max-width:var(--tooltip-max);padding:var(--space-1) var(--space-2);border-radius:var(--radius);background:var(--color-text);color:var(--color-bg);font-size:var(--text-xs);line-height:var(--leading-snug);overflow-wrap:anywhere;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--duration), visibility var(--duration);display:block;position:absolute;left:50%;transform:translate(-50%)}.icon-link:hover .icon-link__tip,.icon-link:focus-visible .icon-link__tip{opacity:1;visibility:visible}}@media (width<=639.98px){.site-header__inner{padding-top:var(--space-6)}.site-nav__row{margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);scroll-padding-inline:var(--gutter);scrollbar-width:none;-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--gutter), #000 calc(100% - var(--gutter)), transparent);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--gutter), #000 calc(100% - var(--gutter)), transparent);mask-image:linear-gradient(to right, transparent, #000 var(--gutter), #000 calc(100% - var(--gutter)), transparent);overflow-x:auto}.site-nav__row::-webkit-scrollbar{display:none}.site-nav__row>:first-child{margin-left:auto}.site-nav__row>:last-child{margin-right:auto}.site-nav__pages{flex:none}.site-nav__link:focus-visible{outline-offset:calc(-1 * var(--focus-ring-width))}}@media (width>=640px){.site-nav__row,.site-nav__list{justify-content:center}.site-nav__pages{flex:0 auto;min-width:0}.site-nav__list{flex-wrap:wrap}}.mono-date{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-mono);color:var(--color-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.button{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--control-height);padding:var(--space-2) var(--space-5);border:var(--rule-width) solid var(--color-border-strong);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text);font-size:var(--text-base);font-weight:var(--weight-medium);line-height:var(--leading-tight);cursor:pointer;transition:background-color var(--duration), color var(--duration);display:inline-flex}.button:hover{background:var(--color-text);color:var(--color-bg)}.tag-badges{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.tag-badges>li{min-width:0;display:flex}.tag-badge{min-width:0;padding:0 var(--space-2);border:var(--rule-width) solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:var(--leading-badge);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--color-text-muted);overflow-wrap:anywhere;transition:border-color var(--duration), color var(--duration);display:block}a.tag-badge:hover,a.tag-badge[aria-current=page]{border-color:var(--color-border-strong);color:var(--color-text)}.list-tags{position:relative}.list-tags>li>.tag-badge{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.list-tags__more{flex:none}.tag-badge--more{border-color:var(--color-rule);color:var(--color-text-faint);cursor:pointer;font-variant-numeric:tabular-nums;background:0 0}.tag-badge--more:hover,.tag-badge--more[aria-expanded=true]{border-color:var(--color-border-strong);color:var(--color-text)}.list-tags__popover{top:calc(100% + var(--space-2));z-index:10;width:max-content;max-width:min(var(--popover-max), calc(100vw - 2 * var(--gutter)));padding:var(--space-3);border:var(--rule-width) solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);box-shadow:var(--popover-shadow);position:absolute;left:0}.list-tags__popover[hidden]{display:none}.list-tags__popover:before{content:"";inset-inline:0;height:calc(var(--space-2) + var(--rule-width));position:absolute;bottom:100%}.post-list__items{margin:0;padding:0;list-style:none}.post-list__item{padding-block:var(--space-5);border-top:var(--rule-width) solid var(--color-rule)}.post-list__group:last-child .post-list__item:last-child{border-bottom:var(--rule-width) solid var(--color-rule)}.post-list__year{font-size:var(--text-2xl);font-weight:var(--weight-bold);line-height:var(--leading-tight);font-variant-numeric:tabular-nums}.post-list__meta{min-width:0}.post-list__date{text-transform:uppercase;display:block}.post-list__tags{margin-top:var(--space-2)}.post-list__body{min-width:0}.post-list__title{font-size:var(--text-lg);font-weight:var(--weight-bold);line-height:var(--leading-snug);letter-spacing:var(--tracking-slight);overflow-wrap:anywhere}.post-list__title a{text-decoration-thickness:var(--underline-thick);text-underline-offset:var(--underline-offset)}.post-list__title a:hover{text-decoration-line:underline}.post-list__excerpt{-webkit-line-clamp:2;line-clamp:2;margin-top:var(--space-2);color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-normal);overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}@media (width<=639.98px){.post-list__group+.post-list__group{margin-top:var(--space-6)}.post-list__year{margin-bottom:var(--space-3)}.post-list__meta{margin-bottom:var(--space-1)}.post-list__tags{margin-bottom:var(--space-2);flex-wrap:nowrap}.post-list__tags>li:not(.list-tags__more){max-width:var(--list-tag-max-phone)}}@media (width>=640px){.post-list{grid-template-columns:var(--list-year-col) var(--list-date-col) minmax(0, 1fr);display:grid}.post-list__group,.post-list__items,.post-list__item{grid-template-columns:subgrid;grid-column:1/-1;align-items:baseline;display:grid}.post-list__year{grid-column:1}.post-list__items{grid-column:2/-1}.post-list__meta{padding-right:var(--space-4)}.post-list__tags{align-items:flex-start;gap:var(--space-1);margin-top:var(--space-2);flex-direction:column}.post-list__tags>li{max-width:100%}}.tag-page__header{margin-bottom:var(--space-6)}.tag-page__label{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--color-text-muted)}.tag-page__name{margin-top:var(--space-2);font-size:var(--text-3xl);font-weight:var(--weight-bold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);overflow-wrap:anywhere}.tag-page__count{margin-top:var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm)}.tag-page__footer{margin-top:var(--space-7);justify-content:center;display:flex}@media (width<=639.98px){.tag-page__name{font-size:var(--text-2xl)}}.article__back-link{top:var(--back-fixed-top);left:var(--gutter);z-index:10;align-items:center;gap:var(--space-2);height:var(--back-fixed-height);padding:0 var(--space-4);background:var(--color-bg);box-shadow:var(--popover-shadow);border:var(--rule-width) solid var(--color-border-strong);border-radius:var(--radius-pill);color:var(--color-text);font-size:var(--text-base);font-weight:var(--weight-medium);line-height:var(--leading-none);transition:background-color var(--duration), color var(--duration);display:inline-flex;position:fixed}.article__back-link:hover{background:var(--color-text);color:var(--color-bg)}.article__back-link:focus-visible{border-radius:var(--radius-pill)}.article__back-icon{width:var(--icon-link-size);height:var(--icon-link-size);stroke-width:var(--icon-stroke-width);transition:transform var(--duration)}.article__back-link:hover .article__back-icon{transform:translateX(calc(-1 * var(--space-1)))}.article__header{margin-bottom:var(--space-5)}.article__title{font-size:var(--text-3xl);font-weight:var(--weight-bold);line-height:var(--leading-heading);letter-spacing:var(--tracking-tight);overflow-wrap:anywhere;text-wrap:balance}.article__meta{align-items:baseline;gap:var(--space-1) var(--space-3);margin-top:var(--space-4);color:var(--color-text-muted);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.article__updated{align-items:baseline;gap:var(--space-3);display:inline-flex}.article__updated:before{content:"·";color:var(--color-text-faint)}.article__tags{margin-top:var(--space-4)}.article__footer{margin-top:var(--space-8);padding-top:var(--space-6);border-top:var(--rule-width) solid var(--color-rule)}.pager{gap:var(--space-3);display:grid}.pager__link{justify-content:center;gap:var(--space-1);min-width:0;min-height:var(--pager-min-height);padding:var(--space-4) var(--space-5);border:var(--rule-width) solid var(--color-rule);border-radius:var(--radius);transition:border-color var(--duration), background-color var(--duration);flex-direction:column;display:flex}.pager__link:hover{border-color:var(--color-border-strong)}.pager__link:focus-visible{border-radius:var(--radius)}.pager__link--next{text-align:right}.pager__label{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label)}.pager__title{-webkit-line-clamp:2;line-clamp:2;font-size:var(--text-base);font-weight:var(--weight-bold);line-height:var(--leading-snug);overflow-wrap:anywhere;text-decoration-thickness:var(--rule-width);text-underline-offset:var(--underline-offset);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.pager__link:hover .pager__title{text-decoration-line:underline}.button__icon{width:var(--icon-link-size);height:var(--icon-link-size);stroke-width:var(--icon-stroke-width)}@media (width<=639.98px){.article__title{font-size:var(--text-2xl)}}.article .prose :is(h2,h3,h4){scroll-margin-top:var(--outline-top)}.outline__list{border-left:var(--rule-width) solid var(--color-rule);margin:0;padding:0;list-style:none}.outline__link{margin-left:calc(-1 * var(--rule-width));padding:var(--space-1) 0 var(--space-1) var(--space-3);border-left:var(--outline-marker) solid transparent;color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--leading-snug);overflow-wrap:anywhere;transition:color var(--duration), border-color var(--duration);display:block}.outline__item--h3 .outline__link{padding-left:calc(var(--space-3) + var(--outline-indent))}.outline__item--h4 .outline__link{padding-left:calc(var(--space-3) + 2 * var(--outline-indent))}.outline__link:hover{color:var(--color-text)}.outline__link[aria-current=location]{border-left-color:var(--color-text);color:var(--color-text);font-weight:var(--weight-medium)}.outline__link:focus-visible{outline-offset:calc(-1 * var(--focus-ring-width))}.outline__label{margin-bottom:var(--space-3);color:var(--color-text-faint);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label)}.outline--side{display:none}.outline--inline{margin-bottom:var(--space-6);border:var(--rule-width) solid var(--color-rule);border-radius:var(--radius)}.outline__summary{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);color:var(--color-text-muted);font-size:var(--text-sm);cursor:pointer;transition:color var(--duration);list-style:none;display:flex}.outline__summary::-webkit-details-marker{display:none}.outline__summary:before{content:"";width:var(--space-2);height:var(--space-2);border:solid;border-width:0 var(--rule-width) var(--rule-width) 0;transition:transform var(--duration);transform:rotate(-45deg)}.outline--inline[open]>.outline__summary:before{transform:rotate(45deg)}.outline__summary:hover{color:var(--color-text)}.outline__summary:focus-visible{outline-offset:calc(-1 * var(--focus-ring-width))}.outline--inline>nav{padding:0 var(--space-4) var(--space-4)}@media (width>=1100px){.article-layout{grid-template-columns:1fr minmax(0, calc(var(--width-prose) + 2 * var(--gutter))) 1fr;display:grid}.article-layout__main{grid-area:1/2}.outline--side{top:var(--outline-top);width:100%;max-width:calc(var(--outline-width) + var(--outline-gap) + var(--gutter));max-height:calc(100vh - 2 * var(--outline-top));padding-left:var(--gutter);padding-right:var(--outline-gap);overscroll-behavior:contain;scrollbar-width:thin;grid-area:1/1;place-self:start end;display:block;position:sticky;overflow-y:auto}.outline--inline{display:none}}@media (width>=640px){.pager{gap:var(--space-4);grid-template-columns:1fr 1fr}.pager__link--next{grid-column:2}}.notice{padding-block:var(--space-8);border-block:var(--rule-width) solid var(--color-rule);text-align:center}.notice__title{font-size:var(--text-lg);font-weight:var(--weight-bold);line-height:var(--leading-tight)}.notice__text{margin-top:var(--space-2);color:var(--color-text-muted)}.notice__action{margin-top:var(--space-5)}.not-found{max-width:calc(var(--width-prose) + 2 * var(--gutter));padding:var(--space-8) var(--gutter);text-align:center;margin-inline:auto}.not-found__code{font-size:var(--text-4xl);font-weight:var(--weight-bold);line-height:var(--leading-none);color:var(--color-text);letter-spacing:var(--tracking-mono);display:block}.not-found__title{margin-top:var(--space-5);font-size:var(--text-xl);line-height:var(--leading-tight)}.not-found__text{margin:var(--space-2) 0 var(--space-6);color:var(--color-text-muted)}@keyframes skeleton-in{0%{opacity:0}to{opacity:1}}@keyframes skeleton-pulse{50%{background:var(--color-surface-strong)}}.skeleton{animation:skeleton-in var(--skeleton-fade) ease-out var(--skeleton-delay) both}.skeleton__bar{height:var(--skeleton-line);border-radius:var(--radius-sm);background:var(--color-surface);animation:skeleton-pulse var(--skeleton-pulse) ease-in-out infinite;display:block}.skeleton__bar--year{width:var(--skeleton-year-width);height:var(--skeleton-year-height)}.skeleton__bar--date{width:var(--skeleton-date-width);height:var(--skeleton-date-height)}.skeleton__bar--title{height:var(--skeleton-title-height)}.skeleton__bar--line{margin-top:var(--space-3)}.skeleton__bar--h1{width:var(--skeleton-h1-width);height:var(--skeleton-h1-height);margin-bottom:var(--space-4)}.skeleton-list__row{padding-block:var(--space-5);border-top:var(--rule-width) solid var(--color-rule)}.skeleton-list__row .skeleton__bar--date,.skeleton-list__year{margin-bottom:var(--space-3)}.skeleton-article__body{margin-top:var(--space-7)}@media (width>=640px){.skeleton-list{grid-template-columns:var(--list-year-col) minmax(0, 1fr);display:grid}.skeleton-list__year{padding-top:var(--space-5)}.skeleton-list__row{grid-template-columns:var(--list-date-col) minmax(0, 1fr);align-items:start;display:grid}.skeleton-list__row .skeleton__bar--date{margin-top:var(--space-1)}}@property --logo-lift{syntax:"<number>";inherits:true;initial-value:0}@property --logo-tilt-x{syntax:"<number>";inherits:true;initial-value:0}@property --logo-tilt-y{syntax:"<number>";inherits:true;initial-value:0}@property --logo-hover{syntax:"<number>";inherits:true;initial-value:0}@property --logo-glare-x{syntax:"<number>";inherits:true;initial-value:50}@property --logo-glare-y{syntax:"<number>";inherits:true;initial-value:50}.logo-motion,.logo-motion__pop,.logo-motion__press,.logo-motion__float{display:block}.logo-motion{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;width:fit-content}.logo-motion__pop{animation:logo-pop var(--logo-pop-duration) var(--logo-pop-easing) both, logo-fade var(--logo-fade-duration) ease-out both}.logo-motion__press{transition:scale var(--logo-press-duration) ease-out}.logo-motion__press[data-pressed]{scale:var(--logo-press-scale)}.logo-motion__float{translate:0 calc(var(--logo-lift) * var(--logo-float-distance) * -1);animation:logo-float var(--logo-float-duration) ease-in-out var(--logo-pop-duration) infinite}.logo-motion__tilt{transform:perspective(var(--logo-tilt-perspective)) rotateX(calc(var(--logo-tilt-x) * 1deg)) rotateY(calc(var(--logo-tilt-y) * 1deg));box-shadow:var(--logo-shadow-contact), calc(var(--logo-tilt-y) * var(--logo-shadow-tilt-offset) * -1) calc(var(--logo-shadow-y) + var(--logo-lift) * var(--logo-float-distance) + var(--logo-tilt-x) * var(--logo-shadow-tilt-offset)) calc(var(--logo-shadow-blur) + var(--logo-lift) * var(--logo-shadow-lift-blur) + var(--logo-hover) * var(--logo-shadow-lift-blur)) var(--logo-shadow-spread) rgb(0 0 0/calc(var(--logo-shadow-alpha) - var(--logo-lift) * var(--logo-shadow-lift-alpha) + var(--logo-hover) * var(--logo-shadow-lift-alpha)));border-radius:50%;display:block;position:relative}.logo-motion__glare{border-radius:inherit;pointer-events:none;background:radial-gradient(circle at calc(var(--logo-glare-x) * 1%) calc(var(--logo-glare-y) * 1%), rgb(255 255 255/var(--logo-glare-alpha)), transparent 60%), radial-gradient(circle at calc(100% - var(--logo-glare-x) * 1%) calc(100% - var(--logo-glare-y) * 1%), rgb(0 0 0/var(--logo-shade-alpha)), transparent 70%);opacity:var(--logo-hover);position:absolute;inset:0}@keyframes logo-pop{0%{scale:var(--logo-pop-from)}to{scale:1}}@keyframes logo-fade{0%{opacity:0}to{opacity:1}}@keyframes logo-float{0%,to{--logo-lift:0}50%{--logo-lift:1}}@media (prefers-reduced-motion:reduce){.logo-motion__pop{animation:logo-fade var(--logo-fade-duration) ease-out both;animation-duration:var(--logo-fade-duration)!important}.logo-motion__float{animation:none}.logo-motion__press[data-pressed]{scale:none}}
