@property --dock-ride{syntax: "<number>"; inherits: true; initial-value: 0;}@property --dock-fold{syntax: "<number>"; inherits: true; initial-value: 0;}@property --lift-ride{syntax: "<number>"; inherits: true; initial-value: 0;}@property --lift-fold{syntax: "<number>"; inherits: true; initial-value: 0;}@keyframes sd-dock-ride{0%{--dock-ride: 0}to{--dock-ride: 1}}@keyframes sd-dock-fold{0%,45%{--dock-fold: 0;animation-timing-function:cubic-bezier(.65,0,.35,1)}to{--dock-fold: 1}}@keyframes sd-lift-ride{0%{--lift-ride: 0}to{--lift-ride: 1}}@keyframes sd-lift-fold{0%,45%{--lift-fold: 0;animation-timing-function:cubic-bezier(.65,0,.35,1)}to{--lift-fold: 1}}.not-by-ai[data-astro-cid-hed3ndzy]{min-width:0}@media(width>=640px){.not-by-ai[data-astro-cid-hed3ndzy]{flex:320px}}.not-by-ai__line[data-astro-cid-hed3ndzy]{margin:0;max-width:56ch;font-size:14px;line-height:1.6;color:var(--blog-muted);text-wrap:pretty}.not-by-ai__em[data-astro-cid-hed3ndzy]{font-weight:600;color:var(--blog-ink)}.blog-colophon[data-astro-cid-dzi7mmzv]{margin-top:44px;padding-top:28px;border-top:1px solid var(--blog-line)}.blog-colophon__actions[data-astro-cid-dzi7mmzv]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px 24px}.ai-credit+.blog-colophon__actions[data-astro-cid-dzi7mmzv],.not-by-ai+.blog-colophon__actions[data-astro-cid-dzi7mmzv]{margin-top:24px}.share[data-astro-cid-kienlwm4]{display:inline-flex;align-items:center;gap:6px}.share-btn[data-astro-cid-kienlwm4]{position:relative;display:grid;place-items:center;width:34px;height:34px;padding:0;color:var(--blog-muted, hsl(var(--muted-foreground)));background:none;border:0;border-radius:999px;cursor:pointer;transition:color .15s,background .15s,scale .12s}.share-btn[data-astro-cid-kienlwm4]:before{content:"";position:absolute;inset:-2px}.share-btn[data-astro-cid-kienlwm4][hidden]{display:none}.share-btn[data-astro-cid-kienlwm4]:hover{color:var(--blog-ink, hsl(var(--foreground)));background:hsl(var(--foreground) / .07)}.share-btn[data-astro-cid-kienlwm4]:active{scale:.96}.share-btn[data-astro-cid-kienlwm4]:focus-visible{outline:2px solid var(--blog-accent, hsl(var(--foreground)));outline-offset:2px}.share-btn__ico[data-astro-cid-kienlwm4]{width:16px;height:16px}.share-btn__icons[data-astro-cid-kienlwm4]{position:relative;width:16px;height:16px}.share-btn__icons[data-astro-cid-kienlwm4] .share-btn__ico[data-astro-cid-kienlwm4]{position:absolute;inset:0;transition:opacity .2s,transform .32s cubic-bezier(.34,1.56,.64,1)}.share-btn__ico--check[data-astro-cid-kienlwm4]{opacity:0;transform:scale(.4) rotate(-14deg);color:var(--blog-accent, hsl(var(--foreground)))}.share-btn[data-astro-cid-kienlwm4].is-copied{color:var(--blog-accent, hsl(var(--foreground)))}.share-btn[data-astro-cid-kienlwm4].is-copied .share-btn__ico--link[data-astro-cid-kienlwm4]{opacity:0;transform:scale(.4) rotate(14deg)}.share-btn[data-astro-cid-kienlwm4].is-copied .share-btn__ico--check[data-astro-cid-kienlwm4]{opacity:1;transform:none}.share-btn[data-astro-cid-kienlwm4]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%,3px);padding:4px 8px;font-size:11px;font-weight:500;line-height:1;white-space:nowrap;color:hsl(var(--background));background:hsl(var(--foreground) / .92);border-radius:6px;opacity:0;pointer-events:none;transition:opacity .14s,transform .14s}.share-btn[data-astro-cid-kienlwm4]:hover:after,.share-btn[data-astro-cid-kienlwm4]:focus-visible:after{opacity:1;transform:translate(-50%)}@media(hover:none)and (pointer:coarse){.share-btn[data-astro-cid-kienlwm4]:after{display:none}}@media(prefers-reduced-motion:reduce){.share-btn[data-astro-cid-kienlwm4],.share-btn__icons[data-astro-cid-kienlwm4] .share-btn__ico[data-astro-cid-kienlwm4],.share-btn[data-astro-cid-kienlwm4]:after{transition:opacity .12s}.share-btn[data-astro-cid-kienlwm4]:hover{transform:none}.share-btn[data-astro-cid-kienlwm4]:active{scale:1}.share-btn__ico--check[data-astro-cid-kienlwm4],.share-btn[data-astro-cid-kienlwm4].is-copied .share-btn__ico--link[data-astro-cid-kienlwm4]{transform:none}}.blog-zone{--blog-xia: #b84a6e;--blog-danger: #b4232b;--blog-good: #2f8f4e;--blog-field-edge: hsl(var(--foreground) / .18);--blog-field-line: hsl(var(--foreground) / .12);--blog-field-fill: hsl(var(--foreground) / .04);--blog-field-hint: hsl(var(--foreground) / .56);--blog-r-box: 14px;--blog-r-inner: 8px;--blog-r-pill: 999px;--avatar-lift: -4px;--avatar-dur: .32s;--avatar-scale: 1.05;--avatar-falloff: .45;--avatar-ease-in: cubic-bezier(.22, 1, .36, 1);--avatar-ease-out: cubic-bezier(.34, 3.85, .64, 1)}.dark .blog-zone{--blog-xia: #ee7fa8;--blog-danger: #f1707a;--blog-good: #6cc98a}.blog-avatar-seed{background:oklch(.93 .035 var(--seed-hue, 0));color:oklch(.46 .085 var(--seed-hue, 0))}.dark .blog-avatar-seed{background:oklch(.32 .035 var(--seed-hue, 0));color:oklch(.84 .06 var(--seed-hue, 0))}.blog-avatar-initials{display:flex;align-items:center;justify-content:center;font-weight:600;line-height:1;text-transform:uppercase;text-box:trim-both cap alphabetic}.blog-react{display:flex;flex-direction:column;align-items:flex-start}.blog-react__row{display:flex;align-items:center;gap:18px;flex-wrap:wrap;min-height:36px}.blog-react__pull{position:relative;display:flex;justify-content:flex-start;perspective:900px;transition:transform .14s cubic-bezier(.33,1,.68,1)}.blog-react__card{display:grid;padding:0;border:0;background:none;border-radius:var(--blog-r-pill);cursor:pointer;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.6,.04,.2,1)}.blog-react__card.is-flipped{transform:rotateY(180deg)}.blog-react__card:active{scale:.96}.blog-react__card:focus-visible{outline:2px solid var(--blog-accent);outline-offset:3px}.blog-react__pill{grid-area:1 / 1;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 15px 0 13px;border-radius:var(--blog-r-pill);white-space:nowrap;border:1px solid hsl(var(--foreground) / .16);background:hsl(var(--foreground) / .03);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--blog-muted);transition:background-color .25s ease,border-color .25s ease,color .25s ease}.blog-react__pill--liked{transform:rotateY(180deg);border-color:var(--blog-xia);background:color-mix(in oklab,var(--blog-xia) 14%,transparent);color:var(--blog-xia)}.blog-react__card:hover .blog-react__pill:not(.blog-react__pill--liked){border-color:color-mix(in oklab,var(--blog-xia) 45%,transparent);background:color-mix(in oklab,var(--blog-xia) 6%,transparent);color:var(--blog-xia)}.blog-react__card:hover .blog-react__pill--liked{background:color-mix(in oklab,var(--blog-xia) 22%,transparent)}.blog-react__glyph{width:17px;height:17px;transition:transform .2s var(--ease-bounce, cubic-bezier(.34, 1.36, .64, 1))}.blog-react__card:hover .blog-react__glyph{transform:scale(1.12)}.blog-react__count{min-width:2ch;font-size:14px;font-weight:500;font-variant-numeric:tabular-nums;text-align:center}.blog-react__sparks{position:absolute;inset:0;overflow:visible;pointer-events:none}.blog-react__spark{position:absolute;left:18px;top:10px;width:13px;height:13px;color:var(--blog-xia);opacity:0;animation:blog-react-float .95s cubic-bezier(.25,1,.5,1) forwards}@keyframes blog-react-float{0%{transform:translate(0) scale(.6) rotate(0);opacity:0}15%{opacity:1}80%{opacity:.85}to{transform:translate(var(--spark-x),-74px) scale(1.35) rotate(var(--spark-rot));opacity:0}}.blog-react__stack{display:flex;align-items:center}.blog-react__avatar{box-shadow:0 0 0 2px hsl(var(--background)),0 1px 3px hsl(var(--foreground) / .12);transform-origin:center;transform:translateY(var(--shift, 0px)) scale(var(--scale-active, 1));transition:transform var(--avatar-dur) var(--avatar-ease-in);will-change:transform;animation:blog-react-enter .5s var(--ease-smooth-out, cubic-bezier(.22, 1, .36, 1)) backwards;animation-delay:var(--entry-delay, 0ms)}.blog-react__avatar .blog-avatar-initials{font-size:12px}.blog-react__more{width:32px;height:32px;background:color-mix(in oklab,hsl(var(--foreground)) 7%,hsl(var(--background)));color:var(--blog-muted);font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums}.blog-react__error{margin:0;color:var(--blog-danger);font-size:12px}@keyframes blog-react-enter{0%{opacity:0;transform:translateY(6px) scale(.85)}to{opacity:1;transform:none}}.blog-react__name{position:absolute;top:calc(100% + 8px);left:50%;z-index:1;padding:4px 10px;border-radius:var(--blog-r-pill);background:hsl(var(--foreground));color:hsl(var(--background));font-size:12.5px;font-weight:500;line-height:1.3;white-space:nowrap;pointer-events:none;opacity:0;transform:translate(-50%,-3px) scale(.98);transition-property:opacity,transform;transition-duration:0s}.blog-react__avatar:hover .blog-react__name{opacity:1;transform:translate(-50%) scale(1);transition-duration:.15s;transition-timing-function:ease-out;transition-delay:80ms}@media(prefers-reduced-motion:reduce){.blog-react__pull,.blog-react__card,.blog-react__glyph,.blog-react__avatar,.blog-react__name{transition:none!important;animation:none!important;transform:none!important}.blog-react__spark{display:none}}.blog-comments{--comment-body: 16px;--comment-note: 14px;--comment-meta: 13px;--comment-lead: 1.75;margin-top:40px;padding-top:28px;border-top:1px solid var(--blog-line)}.blog-comments__head{display:flex;align-items:center;gap:9px;margin-bottom:18px}.blog-comments__title{margin:0;font-size:19px;font-weight:600;line-height:1.3;letter-spacing:-.01em;color:var(--blog-ink)}.blog-comments__tally{padding:1px 8px;border-radius:var(--blog-r-pill);background:var(--blog-fill);font-size:var(--comment-meta);font-variant-numeric:tabular-nums;color:var(--blog-faint)}.blog-compose{display:flex;flex-direction:column;gap:10px;margin-bottom:30px}.blog-compose:not([data-phase=anonymous]) .blog-compose__identity{display:none}.blog-compose__box{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--blog-field-edge);border-radius:var(--blog-r-box);background:var(--blog-field-fill);transition:border-color .2s ease,background-color .2s ease}.blog-compose__box:focus-within{border-color:hsl(var(--foreground) / .34)}.blog-compose__identity{border-bottom:1px solid var(--blog-field-line)}.blog-compose__fields{display:flex}.blog-compose__recommend{display:flex;align-items:center;gap:8px;margin:0 14px 12px;padding:10px 12px;border-radius:10px;background:color-mix(in oklab,var(--blog-good) 13%,transparent);color:var(--blog-good);font-size:var(--comment-note);font-weight:500;line-height:1.4;animation:blog-alert-in .2s cubic-bezier(.2,0,0,1)}.blog-compose__recommend svg{flex:0 0 auto;width:16px;height:16px}.blog-compose__input{min-width:0;flex:0 1 61.8%;padding:11px 14px;border:0;background:none;color:var(--blog-body);font:inherit;font-size:var(--comment-body)}@media(min-width:640px){.blog-compose__input{font-size:var(--comment-note)}}.blog-compose__input--name{flex:0 1 38.2%;border-right:1px solid var(--blog-field-line)}.blog-compose__input::-moz-placeholder{color:var(--blog-field-hint)}.blog-compose__input::placeholder{color:var(--blog-field-hint)}.blog-compose__input:focus{outline:none;background:hsl(var(--foreground) / .05)}.blog-compose__input[aria-invalid=true]{background:color-mix(in oklab,var(--blog-danger) 11%,transparent)}.blog-compose__box:has([aria-invalid=true]){border-color:var(--blog-danger);box-shadow:0 0 0 3px color-mix(in oklab,var(--blog-danger) 16%,transparent);animation:blog-compose-nudge .4s cubic-bezier(.2,0,0,1)}@keyframes blog-compose-nudge{0%,to{translate:0}22%{translate:-4px}55%{translate:3px}80%{translate:-1px}}.blog-compose__alert{display:flex;align-items:center;gap:8px;margin:0;padding:10px 12px;border-radius:10px;background:color-mix(in oklab,var(--blog-danger) 13%,transparent);color:var(--blog-danger);font-size:var(--comment-note);font-weight:500;line-height:1.4;animation:blog-alert-in .2s cubic-bezier(.2,0,0,1)}.blog-compose__alert svg{flex:0 0 auto;width:16px;height:16px}.blog-compose__code{flex:0 0 auto;margin-left:auto;align-self:center;padding:1px 6px;border:1px solid color-mix(in oklab,currentColor 28%,transparent);border-radius:5px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:11px;font-weight:500;letter-spacing:.03em;white-space:nowrap}.blog-compose__code:has(a){border-color:color-mix(in oklab,currentColor 42%,transparent)}.blog-compose__code a{color:inherit;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:2px;transition-property:text-decoration-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.2,0,0,1)}.blog-compose__code a:hover,.blog-compose__code a:focus-visible{text-decoration-color:currentColor}@keyframes blog-alert-in{0%{opacity:0;translate:0 -4px}}.blog-compose__field{display:block;width:100%;padding:14px 14px 0;border:0;background:none;resize:none;color:var(--blog-body);font:inherit;font-size:var(--comment-body);line-height:var(--comment-lead);field-sizing:content;min-height:4.1em}.blog-compose__field::-moz-placeholder{color:var(--blog-field-hint)}.blog-compose__field::placeholder{color:var(--blog-field-hint)}.blog-compose__field:focus{outline:none}.blog-compose__bar{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-height:30px;padding:8px 12px 12px 14px}.blog-compose__hint{display:inline-flex;align-items:center;gap:5px;margin-right:auto;font-size:var(--comment-meta);line-height:1;color:var(--blog-faint)}.blog-compose__hint svg{width:15px;height:15px}.blog-compose__count{font-size:var(--comment-meta);font-variant-numeric:tabular-nums;line-height:1;color:var(--blog-faint);transition:color .2s ease}.blog-compose__count[data-over]{color:var(--blog-danger)}.blog-compose__count[data-nudge]{animation:blog-count-nudge .32s cubic-bezier(.2,0,0,1)}@keyframes blog-count-nudge{0%,to{translate:0}22%{translate:-3px}55%{translate:2px}80%{translate:-1px}}@media(prefers-reduced-motion:reduce){.blog-compose__count[data-nudge]{animation:none}}.blog-compose__signed{display:none;align-items:center;gap:8px;margin:0;padding:9px 14px;border-bottom:1px solid var(--blog-field-line)}.blog-compose[data-phase=ready] .blog-compose__signed,.blog-compose[data-phase=claimed] .blog-compose__signed{display:flex}.blog-compose[data-phase=anonymous] .blog-compose__signout,.blog-compose__who,.blog-compose__claim{display:none}.blog-compose[data-phase=ready] .blog-compose__who,.blog-compose[data-phase=claimed] .blog-compose__claim{display:inline-flex}.blog-compose__who{align-items:center;gap:8px;min-width:0;font-size:var(--comment-note);color:var(--blog-muted)}.blog-compose__whoface{flex:0 0 auto;width:28px;height:28px;border-radius:50%;font-size:11.5px;-o-object-fit:cover;object-fit:cover}.blog-compose__claim{align-items:center;gap:8px;min-width:0;font-size:var(--comment-note);color:var(--blog-muted)}.blog-compose__whoname{overflow:hidden;color:var(--blog-ink);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.blog-compose__signout{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:flex-start;min-width:28px;height:28px;margin-left:auto;margin-right:-4px;border:0;border-radius:8px;background:none;padding:0;color:var(--blog-faint);cursor:pointer;transition-property:color,background-color,padding-right;transition-duration:.15s;transition-timing-function:cubic-bezier(.2,0,0,1)}.blog-compose__signout:hover{background:var(--blog-field-fill);color:var(--blog-ink)}.blog-compose__signout-icons{position:relative;flex:0 0 auto;display:grid;place-items:center;width:28px;height:28px}.blog-compose__signout-icon{position:absolute;display:inline-flex;transition-property:opacity,scale,filter;transition-duration:.22s;transition-timing-function:cubic-bezier(.2,0,0,1)}.blog-compose__signout-label{max-width:0;overflow:hidden;white-space:nowrap;font-size:var(--comment-meta);font-weight:500;opacity:0;transition-property:max-width,opacity;transition-duration:.22s;transition-timing-function:cubic-bezier(.2,0,0,1)}.blog-compose__signout--confirm{padding-right:9px}.blog-compose__signout--confirm .blog-compose__signout-label{max-width:12rem;opacity:1}.blog-compose__signout-icon svg{width:16px;height:16px}.blog-compose__signout-icon[data-icon=armed],.blog-compose__signout--confirm .blog-compose__signout-icon[data-icon=idle]{opacity:0;scale:.25;filter:blur(4px)}.blog-compose__signout--confirm .blog-compose__signout-icon[data-icon=armed]{opacity:1;scale:1;filter:blur(0)}.blog-compose__signout--confirm,.blog-compose__signout--confirm:hover{background:color-mix(in oklab,var(--blog-danger) 12%,transparent);color:var(--blog-danger)}@media(prefers-reduced-motion:reduce){.blog-compose__signout-icon,.blog-compose__signout-label{transition-duration:1ms}}.blog-compose__signout:focus-visible{outline:2px solid var(--blog-accent);outline-offset:2px}.blog-compose__go{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:30px;height:30px;padding:0;border:0;border-radius:var(--blog-r-pill);background:hsl(var(--foreground) / .12);color:hsl(var(--foreground) / .72);cursor:pointer;transition:background-color .15s ease,color .15s ease,opacity .15s ease,scale .15s ease}.blog-compose__go svg{width:16px;height:16px;transition:translate .26s cubic-bezier(.4,0,.2,1),opacity .18s ease}.blog-compose__box:focus-within .blog-compose__go,.blog-compose__go:hover{background:hsl(var(--foreground));color:hsl(var(--background))}.blog-compose__go:active{scale:.96}.blog-compose__go:focus-visible{outline:2px solid var(--blog-accent);outline-offset:2px}.blog-compose__field[readonly]{opacity:.6}.blog-compose__go[disabled]{cursor:default;opacity:.6}.blog-compose[data-receipt=submitting] .blog-compose__go{opacity:1;background:hsl(var(--foreground));color:hsl(var(--background))}.blog-compose[data-receipt=submitting] .blog-compose__go svg{translate:0 -20px;opacity:0}.blog-compose__go:after{content:"";position:absolute;inset:8px;border-radius:50%;border:1.5px solid currentColor;border-top-color:transparent;opacity:0;transition:opacity .18s ease .1s;pointer-events:none}.blog-compose[data-receipt=submitting] .blog-compose__go:after{opacity:1;animation:blog-compose-spin .7s linear infinite}@keyframes blog-compose-spin{to{rotate:360deg}}.blog-compose__go[data-sent] svg{animation:blog-compose-send .5s var(--ease-smooth-out, cubic-bezier(.22, 1, .36, 1))}@keyframes blog-compose-send{0%{translate:0 0;opacity:1}38%{translate:0 -18px;opacity:0}46%{translate:0 14px;opacity:0}to{translate:0 0;opacity:1}}@keyframes blog-compose-reload{0%{translate:0 14px;opacity:0}}.blog-compose__receipt{margin-top:10px;padding:0 2px}.blog-comment__edit-error{margin-top:8px}.blog-compose__turnstile{display:grid;grid-template-rows:minmax(0,0fr);transition:grid-template-rows .28s cubic-bezier(.2,0,0,1),margin-top .28s}.blog-compose__turnstile>*{overflow:hidden;min-height:0}.blog-compose__turnstile[data-turnstile-interactive]{grid-template-rows:1fr;margin-top:10px}.blog-compose__nudge{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin-top:8px;padding-top:9px;border-top:1px dashed var(--blog-line)}.blog-compose__nudge-mark{flex:0 0 auto;width:15px;height:15px;color:var(--blog-faint)}.blog-compose__nudge-text{margin:0;flex:0 1 auto;font-size:var(--comment-meta);color:var(--blog-muted)}.blog-compose__nudge-sub{flex:0 0 auto;padding:0;border:0;background:none;font:inherit;font-size:var(--comment-meta);color:var(--blog-ink);text-decoration:underline;text-decoration-color:color-mix(in oklab,currentColor 35%,transparent);text-underline-offset:3px;cursor:pointer;transition:text-decoration-color .15s ease}.blog-compose__nudge-sub:hover{text-decoration-color:currentColor}.blog-compose__nudge-sub:focus-visible{outline:2px solid var(--blog-accent);outline-offset:3px;border-radius:3px}.blog-compose__nudge-dismiss{flex:0 0 auto;margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;border-radius:50%;background:none;color:var(--blog-faint);cursor:pointer;transition:background-color .15s ease,color .15s ease}.blog-compose__nudge-dismiss:hover{background:var(--blog-fill);color:var(--blog-ink)}.blog-compose__nudge-dismiss:focus-visible{outline:2px solid var(--blog-accent);outline-offset:2px}.blog-compose__nudge-dismiss svg{width:12px;height:12px}@media(max-width:560px){.blog-compose__fields{flex-direction:column}}.blog-comments__list{display:flex;flex-direction:column;gap:20px}.blog-comment+.blog-comment:not(.blog-comment--reply){margin-top:12px}.blog-comment{display:flex;align-items:flex-start;gap:12px}.blog-comment--reply{margin-left:40px}.blog-comment__avatar{flex:0 0 auto;width:28px;height:28px;margin-top:-4px;border-radius:50%;font-size:11.5px;transition:translate .18s cubic-bezier(.2,0,0,1)}.blog-comment__avatar--photo{-o-object-fit:cover;object-fit:cover;background:var(--blog-field-fill)}.blog-comment__body{min-width:0;flex:1}.blog-comment__meta{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;line-height:1.45;margin-bottom:3px}.blog-comment__author{font-size:var(--comment-note);font-weight:600;color:var(--blog-ink)}.blog-comment__date{font-size:var(--comment-meta);font-variant-numeric:tabular-nums;color:var(--blog-faint)}.blog-comment__badge{padding:1px 7px;border:1px solid var(--blog-line);border-radius:var(--blog-r-pill);font-size:var(--comment-meta);font-weight:500;color:var(--blog-faint)}.blog-comment__edited{display:inline-flex;align-items:baseline;font-size:var(--comment-meta);color:var(--blog-faint);white-space:nowrap}.blog-comment__edited:before{content:"·";margin-inline-end:7px;opacity:.6}.blog-comment__text{font-size:var(--comment-body);line-height:var(--comment-lead);color:var(--blog-body);overflow-wrap:anywhere}.blog-comment__text>:first-child{margin-top:0}.blog-comment__text>:last-child{margin-bottom:0}.blog-comment__text p{margin:.65em 0 0}.blog-comment__text strong{font-weight:600;color:var(--blog-ink)}.blog-comment__text em{font-style:italic}.blog-comment__text a{color:inherit;text-decoration:underline;text-decoration-color:color-mix(in oklab,currentColor 35%,transparent);text-underline-offset:3px;transition:text-decoration-color .15s ease}.blog-comment__text a:hover{text-decoration-color:currentColor}.blog-comment__text code{padding:.1em .36em;border-radius:4px;background:var(--blog-field-fill);font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:.9em}.blog-comment__text pre{margin:.7em 0 0;padding:10px 12px;border-radius:var(--blog-r-inner);background:var(--blog-field-fill);overflow-x:auto}.blog-comment__text pre code{padding:0;background:none;font-size:13px;line-height:1.6;white-space:pre}.blog-comment__text blockquote{margin:.7em 0 0;padding-inline-start:12px;border-inline-start:2px solid var(--blog-line);color:var(--blog-faint)}.blog-comment__text ul,.blog-comment__text ol{margin:.65em 0 0;padding-inline-start:1.35em}.blog-comment__text ul{list-style:disc}.blog-comment__text ol{list-style:decimal}.blog-comment__text li{margin-top:.2em}.blog-compose__preview{margin:4px 14px 12px;padding:10px 0 0;box-shadow:inset 0 1px var(--blog-field-line)}.blog-compose__preview-tag{display:block;margin-bottom:7px;color:var(--blog-faint);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.blog-compose__preview-body{color:var(--blog-body);font-size:var(--comment-body);line-height:var(--comment-lead)}.blog-comment[data-sending] .blog-comment__text{color:color-mix(in oklab,var(--blog-body) 62%,transparent);transition:color .2s ease}.blog-comment--held{padding-left:12px;border-left:2px solid color-mix(in oklab,var(--blog-accent) 45%,transparent)}.blog-comment--held .blog-comment__author{color:var(--blog-muted)}.blog-comment--held .blog-comment__text{color:var(--blog-faint)}.blog-comment__note{margin-top:5px;font-size:var(--comment-note);line-height:1.55;color:var(--blog-faint)}@media(prefers-reduced-motion:no-preference){.blog-comment--new{animation:blog-comment-enter .3s cubic-bezier(.22,1,.36,1)}}@keyframes blog-comment-enter{0%{opacity:0;transform:translateY(-6px)}}.blog-comment--new .blog-comment__body{border-radius:var(--blog-r-inner);animation:blog-comment-highlight 1.5s ease-out}@keyframes blog-comment-highlight{0%{background:color-mix(in oklab,var(--blog-accent) 12%,transparent)}to{background:transparent}}.blog-comment__note--posted,.blog-comment__note--verify{color:var(--blog-good)}.blog-comment__note[data-transient]{transition-property:opacity,translate;transition-duration:.32s;transition-timing-function:cubic-bezier(.2,0,0,1)}.blog-comment__note[data-transient=out]{opacity:0;translate:0 -2px}@media(prefers-reduced-motion:reduce){.blog-comment__note[data-transient]{transition-duration:1ms}}.blog-comment[data-pending] .blog-comment__text{color:var(--blog-body)}.blog-comment[data-pending] .blog-comment__note{display:inline-flex;align-items:center;gap:6px;animation:blog-pending-breathe 1.8s ease-in-out infinite}.blog-comment[data-pending] .blog-comment__note:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}@keyframes blog-pending-breathe{50%{opacity:.45}}.blog-comment__edit-field{display:block;width:100%;margin:0 0 6px;padding:10px 14px;border:0;border-radius:var(--blog-r-inner);background:hsl(var(--foreground) / .045);resize:none;color:var(--blog-body);font:inherit;font-size:var(--comment-body);line-height:var(--comment-lead);field-sizing:content;min-height:1.75em;transition:background-color .2s ease,box-shadow .2s ease}.blog-comment__edit-field:focus{outline:none;background:transparent;box-shadow:inset 0 0 0 1px hsl(var(--foreground) / .18)}.blog-comment[data-editing] .blog-comment__meta{display:none}.blog-comment[data-editing] .blog-comment__avatar{translate:0 13.5px}.blog-comment__avatar--ghost{display:flex;align-items:center;justify-content:center;background:hsl(var(--foreground) / .05);color:var(--blog-faint)}.blog-comment__avatar--ghost svg{width:13px;height:13px}.blog-comment__text--tombstone{font-style:italic;color:var(--blog-faint)}.blog-comment__actions{display:flex;align-items:center;gap:2px;margin:5px 0 0 -8px}.blog-comment__acts{display:inline-flex;align-items:center;gap:2px}.blog-comment__acts--editing{padding-top:6px}.blog-comment__acts--editing .blog-compose__count{padding-left:6px}.blog-comment__act{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 8px;border:0;border-radius:var(--blog-r-pill);background:none;color:var(--blog-faint);font:inherit;font-size:var(--comment-meta);font-weight:500;cursor:pointer;transition:color .15s ease,background-color .15s ease}.blog-comment__act:hover{background:var(--blog-fill);color:var(--blog-ink)}.blog-comment__act:focus-visible{outline:2px solid var(--blog-accent);outline-offset:1px}.blog-comment__act svg{width:15px;height:15px}.blog-comment__act-count{font-variant-numeric:tabular-nums}.blog-comment__act-time{font-variant-numeric:tabular-nums;color:var(--blog-faint)}.blog-comment__act-time:before{content:" · "}.blog-comment__act-time--left{padding-left:6px;font-size:var(--comment-meta)}.blog-comment__act-time--left:before{content:none}.blog-comment__act--danger:hover,.blog-comment__act--danger:focus-visible{color:var(--blog-danger);background:color-mix(in oklab,var(--blog-danger) 8%,transparent)}.blog-comment__act--confirm,.blog-comment__act--confirm:hover{color:var(--blog-danger);background:color-mix(in oklab,var(--blog-danger) 12%,transparent)}.blog-comment__act--go{padding:0 10px;color:var(--blog-ink);font-weight:600}.blog-comment__act--go:hover{background:var(--blog-fill);color:var(--blog-ink)}.blog-comment__act--go:active{scale:.96}.blog-comment__act--like[aria-pressed=true]{color:var(--blog-xia)}.blog-comment__act--like[aria-pressed=true] svg{fill:currentColor;animation:blog-like-pop .32s var(--ease-bounce, cubic-bezier(.34, 1.36, .64, 1))}.blog-comment__act--like:hover{color:var(--blog-xia)}@keyframes blog-like-pop{0%{transform:scale(.7)}60%{transform:scale(1.18)}to{transform:scale(1)}}.blog-comment__act--like{position:relative}.blog-comment__heart{position:absolute;left:50%;top:2px;width:11px;height:11px;margin-left:-5.5px;color:var(--blog-xia);opacity:0;pointer-events:none;animation:blog-comment-heart .9s cubic-bezier(.25,1,.5,1) forwards}@keyframes blog-comment-heart{0%{transform:translate(0) scale(.5) rotate(0);opacity:0}18%{opacity:1}to{transform:translate(var(--heart-x, 0),-40px) scale(1.15) rotate(var(--heart-rot, 0deg));opacity:0}}.blog-reply{margin:12px 0 2px;padding-left:13px;border-left:2px solid var(--blog-line)}.blog-comment__act[aria-expanded=true]{background:var(--blog-fill);color:var(--blog-ink)}.blog-reply__field{min-height:2.6em;padding-top:12px}@media(prefers-reduced-motion:reduce){.blog-comment__act,.blog-comment__act--like[aria-pressed=true] svg,.blog-comment__heart,.blog-comment[data-pending] .blog-comment__note,.blog-comment[data-enter],.blog-comment[data-sending] .blog-comment__text,.blog-comment__avatar,.blog-compose__go[data-sent] svg,.blog-compose__alert,.blog-compose__recommend,.blog-compose__turnstile,.blog-compose__input[aria-invalid=true],.blog-compose__box:has([aria-invalid=true]){transition:none!important;animation:none!important}}.blog-comments__more{display:flex;justify-content:center;margin-top:4px}.blog-comments__more-error,.blog-comment__action-error{margin:8px 0 0;color:var(--blog-danger);font-size:var(--comment-note)}.blog-comments__notice{display:flex;flex-direction:column;align-items:center;gap:10px;padding:26px 0 30px;font-size:var(--comment-note);color:var(--blog-faint);text-align:center}.blog-comments__notice p{margin:0}.blog-comments__mark{width:30px;height:30px;opacity:.45}.blog-comments__more-btn{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 16px;border:1px solid var(--blog-line);border-radius:var(--blog-r-pill);background:none;color:var(--blog-muted);font:inherit;font-size:var(--comment-note);font-weight:500;cursor:pointer;transition:border-color .15s ease,color .15s ease,background-color .15s ease}.blog-comments__more-btn:hover{border-color:hsl(var(--foreground) / .24);color:var(--blog-ink);background:var(--blog-fill)}.blog-comments__more-btn:focus-visible{outline:2px solid var(--blog-accent);outline-offset:2px}.blog-comments__more-btn[disabled]{cursor:default;opacity:.7}.blog-comments__more-dots{display:inline-flex;align-items:center;gap:3px}.blog-comments__more-dots span{width:4px;height:4px;border-radius:50%;background:currentColor;animation:blog-dot-pulse 1.1s ease-in-out infinite}.blog-comments__more-dots span:nth-child(2){animation-delay:.15s}.blog-comments__more-dots span:nth-child(3){animation-delay:.3s}@keyframes blog-dot-pulse{0%,80%,to{opacity:.25}40%{opacity:1}}@media(prefers-reduced-motion:reduce){.blog-comments__more-dots span{animation:none;opacity:.7}}.blog-comments[data-state=closed] .blog-comment__actions,.blog-comments[data-state=closed] .blog-reply{display:none}.blog-comments__empty{font-size:var(--comment-note);color:var(--blog-faint)}.blog-comments__skeleton{display:flex;flex-direction:column;gap:22px}.blog-skel{border-radius:var(--blog-r-pill);background:hsl(var(--foreground) / .07);animation:blog-skel-pulse 1.4s var(--ease-linear, linear) infinite;animation-delay:var(--skel-delay, 0s)}.blog-skel--avatar{border-radius:50%}.blog-skel--line{height:9px;width:var(--skel-width, 100px)}@keyframes blog-skel-pulse{0%,to{opacity:1}50%{opacity:.45}}@media(prefers-reduced-motion:reduce){.blog-skel{animation:none}}.reader-confirm{display:flex;justify-content:center;padding:64px 0 40px}.reader-confirm__card{width:min(100%,396px);padding:34px 30px 30px;border:1px solid var(--blog-line);border-radius:var(--blog-r-box);background:hsl(var(--foreground) / .02);text-align:center;animation:reader-confirm-in .42s cubic-bezier(.22,1,.36,1) both}@keyframes reader-confirm-in{0%{opacity:0;translate:0 8px}}.reader-confirm__glyph{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;margin:0 0 16px;border-radius:var(--blog-r-pill);background:var(--blog-fill);color:var(--blog-faint)}.reader-confirm__glyph svg{width:21px;height:21px}.reader-confirm__card[data-state=confirmed] .reader-confirm__glyph,.reader-confirm__card[data-state=already] .reader-confirm__glyph{background:color-mix(in oklab,var(--blog-accent) 13%,transparent);color:var(--blog-accent)}.reader-confirm__title{margin:0 0 8px;font-size:20px;font-weight:600;letter-spacing:-.01em;color:var(--blog-ink)}.reader-confirm__body{margin:0 0 22px;font-size:14.5px;line-height:1.65;color:var(--blog-muted);text-wrap:pretty}.reader-confirm__go{display:block;width:100%;padding:12px 20px;border:0;border-radius:var(--blog-r-pill);background:var(--blog-ink);color:hsl(var(--background));font:inherit;font-size:15px;font-weight:500;line-height:1.2;cursor:pointer;transition:opacity .15s ease,scale .15s ease}.reader-confirm__go:hover{opacity:.86}.reader-confirm__go:active{scale:.985}.reader-confirm__go:focus-visible{outline:2px solid var(--blog-accent);outline-offset:3px}.reader-confirm__go--quiet{border:1px solid var(--blog-line);background:transparent;color:var(--blog-ink);font-size:14px}.reader-confirm__go--quiet:hover{opacity:1;background:var(--blog-field-fill)}.reader-confirm__form{display:flex;flex-direction:column;gap:10px}.reader-confirm__input{width:100%;padding:11px 16px;border:1px solid var(--blog-line);border-radius:var(--blog-r-pill);background:var(--blog-fill);font:inherit;font-size:16px;color:var(--blog-ink);text-align:center;transition:border-color .15s ease,background-color .15s ease}@media(min-width:640px){.reader-confirm__input{font-size:14.5px}}.reader-confirm__input::-moz-placeholder{color:var(--blog-faint)}.reader-confirm__input::placeholder{color:var(--blog-faint)}.reader-confirm__input:focus{outline:none;border-color:hsl(var(--foreground) / .28);background:transparent}.reader-confirm__input:focus-visible{outline:2px solid var(--blog-accent);outline-offset:2px}.reader-confirm__working{margin:0;font-size:14.5px;color:var(--blog-faint)}.reader-confirm__card:not([data-auto=working]) .reader-confirm__working{display:none}.reader-confirm__card[data-auto=working] [data-auto-verify]{display:none}.reader-confirm__prefs{display:grid;margin:0 0 20px;padding:4px 0 0;border-top:1px solid var(--blog-line);text-align:start}.reader-confirm__switch{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;border-top:1px solid var(--blog-line);font-size:13.5px;line-height:1.5;color:var(--blog-ink);cursor:pointer}.reader-confirm__prefs>.reader-confirm__switch:first-child{border-top:none}.reader-confirm__switch input{position:relative;flex:none;width:40px;height:24px;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:999px;background:var(--blog-line);cursor:pointer;transition-property:background-color,opacity;transition-duration:.2s;transition-timing-function:cubic-bezier(.2,0,0,1)}.reader-confirm__switch input:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:999px;background:#fff;box-shadow:0 1px 2px #0003,0 0 0 .5px #0000000a;transition-property:translate,width;transition-duration:.2s;transition-timing-function:cubic-bezier(.2,0,0,1)}.reader-confirm__switch input:checked{background:var(--blog-accent)}.reader-confirm__switch input:checked:after{translate:16px 0}.reader-confirm__switch input:active:not(:disabled):after{width:22px}.reader-confirm__switch input:checked:active:not(:disabled):after{translate:12px 0}.reader-confirm__switch input:focus-visible{outline:2px solid var(--blog-accent);outline-offset:3px}.reader-confirm__switch input:disabled{cursor:not-allowed;opacity:.45}.reader-confirm__switch:has(input:disabled){color:var(--blog-faint);cursor:not-allowed}@media(prefers-reduced-motion:reduce){.reader-confirm__switch input,.reader-confirm__switch input:after{transition-duration:1ms}}.reader-confirm__prefs-note{margin:0;padding:13px 0 0;border-top:1px solid var(--blog-line);font-size:12.5px;color:var(--blog-faint)}.reader-confirm__prefs-note[data-bad=true]{color:var(--blog-danger)}.reader-confirm__back{display:inline-block;font-size:13.5px;color:var(--blog-faint);transition:color .15s ease}.reader-confirm__form+.reader-confirm__back{margin-top:16px}.reader-confirm__back:hover{color:var(--blog-ink)}@media(prefers-reduced-motion:reduce){.reader-confirm__card{animation:none}.reader-confirm__go,.reader-confirm__input{transition:none}}
