.article-export[data-astro-cid-3m2zktit]{align-items:center;gap:.4rem;display:flex}.article-export__btn[data-astro-cid-3m2zktit],.article-export__item[data-astro-cid-3m2zktit]{color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);cursor:pointer;border-radius:.5rem;align-items:center;gap:.4rem;padding:.4rem .7rem;font-family:inherit;font-size:.82rem;font-weight:600;text-decoration:none;transition:color .15s,background .15s,border-color .15s;display:inline-flex}.article-export__btn[data-astro-cid-3m2zktit]:hover,.article-export__item[data-astro-cid-3m2zktit]:hover,.article-export__btn[data-astro-cid-3m2zktit]:focus-visible,.article-export__item[data-astro-cid-3m2zktit]:focus-visible{color:var(--color-accent);background:var(--color-accent-soft);border-color:var(--color-accent)}.article-export__btn[data-astro-cid-3m2zktit] svg[data-astro-cid-3m2zktit]{flex-shrink:0;width:.95rem;height:.95rem}.article-export__chevron[data-astro-cid-3m2zktit]{transition:transform .2s}.article-export__toggle[data-astro-cid-3m2zktit][aria-expanded=true] .article-export__chevron[data-astro-cid-3m2zktit]{transform:rotate(180deg)}.article-export__menu-wrap[data-astro-cid-3m2zktit]{position:relative}.article-export__menu[data-astro-cid-3m2zktit]{z-index:30;background:var(--color-surface);border:1px solid var(--color-border);min-width:11rem;box-shadow:var(--shadow-soft);border-radius:.7rem;flex-direction:column;gap:.2rem;margin:0;padding:.35rem;list-style:none;display:flex;position:absolute;top:calc(100% + .4rem);right:0}.article-export__menu[data-astro-cid-3m2zktit][hidden]{display:none}.article-export__menu[data-astro-cid-3m2zktit] .article-export__item[data-astro-cid-3m2zktit]{background:0 0;border:0;border-radius:.45rem;justify-content:flex-start;width:100%;font-weight:500}.article-export__menu[data-astro-cid-3m2zktit] .article-export__item[data-astro-cid-3m2zktit]:hover,.article-export__menu[data-astro-cid-3m2zktit] .article-export__item[data-astro-cid-3m2zktit]:focus-visible{background:var(--color-accent-soft);color:var(--color-accent);border-color:#0000}.related-projects[data-astro-cid-i3ipi722]{border-top:1px solid var(--color-border);margin-top:3.5rem;padding-top:2rem}.related-projects[data-astro-cid-i3ipi722] h2[data-astro-cid-i3ipi722]{letter-spacing:-.03em;margin:0 0 1.25rem;font-size:1.25rem}.related-projects__list[data-astro-cid-i3ipi722]{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.related-projects__link[data-astro-cid-i3ipi722]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:.75rem;flex-direction:column;gap:.25rem;padding:1rem 1.25rem;text-decoration:none;transition:border-color .15s;display:flex}.related-projects__link[data-astro-cid-i3ipi722]:hover{border-color:var(--color-accent)}.related-projects__title[data-astro-cid-i3ipi722]{color:var(--color-text);font-size:.95rem;font-weight:600}.related-projects__description[data-astro-cid-i3ipi722]{color:var(--color-text-muted);font-size:.88rem;line-height:1.5}.article-detail[data-astro-cid-sgg5joot]{width:100%;max-width:720px;margin-inline:auto}.article-detail__header[data-astro-cid-sgg5joot]{margin-bottom:2.25rem}.article-detail__header[data-astro-cid-sgg5joot] h2[data-astro-cid-sgg5joot]{letter-spacing:-.035em;margin:0;font-size:clamp(2rem,5vw,2.8rem);line-height:1.2}.article-detail__dates[data-astro-cid-sgg5joot]{color:var(--color-text-muted);flex-wrap:wrap;gap:.6rem 1rem;font-size:.9rem;display:flex}.article-detail__meta[data-astro-cid-sgg5joot]{justify-content:space-between;align-items:flex-start;gap:1rem;margin-top:1rem;display:flex}.article-detail__meta-left[data-astro-cid-sgg5joot]{flex-direction:column;gap:.45rem;min-width:0;display:flex}.tag-list[data-astro-cid-sgg5joot]{flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.tag-list[data-astro-cid-sgg5joot] li[data-astro-cid-sgg5joot]{border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:999px;padding:.25rem .56rem;font-size:.82rem}.article-detail__share[data-astro-cid-sgg5joot]{flex-shrink:0}.article-detail__export[data-astro-cid-sgg5joot]{justify-content:flex-end;margin-top:1rem;display:flex}.share-link[data-astro-cid-sgg5joot]{color:var(--color-text-muted);align-items:center;transition:color .2s;display:flex}.share-link[data-astro-cid-sgg5joot]:hover{color:var(--color-accent)}.share-icon[data-astro-cid-sgg5joot]{width:1.15rem;height:1.15rem}.toc-header[data-astro-cid-sgg5joot]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:.75rem;margin-top:1.5rem;overflow:hidden}.toc-header__summary[data-astro-cid-sgg5joot]{cursor:pointer;color:var(--color-text);user-select:none;align-items:center;gap:.5rem;padding:.7rem 1rem;font-size:.875rem;font-weight:600;list-style:none;transition:background .15s;display:flex}.toc-header__summary[data-astro-cid-sgg5joot]::-webkit-details-marker{display:none}.toc-header__summary[data-astro-cid-sgg5joot]:hover{background:var(--color-accent-soft);color:var(--color-accent)}.toc-icon[data-astro-cid-sgg5joot]{color:#f97316;flex-shrink:0;width:1rem;height:1rem}.toc-chevron[data-astro-cid-sgg5joot]{width:1rem;height:1rem;color:var(--color-text-muted);flex-shrink:0;margin-left:auto;transition:transform .2s}.toc-header[data-astro-cid-sgg5joot][open] .toc-chevron[data-astro-cid-sgg5joot]{transform:rotate(180deg)}.toc-header__body[data-astro-cid-sgg5joot]{border-top:1px solid var(--color-border);padding:.5rem 1rem .75rem}.toc-list[data-astro-cid-sgg5joot]{counter-reset:toc-h2 toc-h3;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.toc-item--2[data-astro-cid-sgg5joot]{counter-increment:toc-h2;counter-reset:toc-h3}.toc-item--3[data-astro-cid-sgg5joot]{counter-increment:toc-h3}.toc-link[data-astro-cid-sgg5joot]{color:var(--color-text-muted);border-left:2px solid #0000;border-radius:0 .35rem .35rem 0;padding:.3rem .5rem .3rem .75rem;font-size:.875rem;line-height:1.5;text-decoration:none;transition:color .15s,border-color .15s,background .15s;display:block}.toc-link[data-astro-cid-sgg5joot]:before{font-variant-numeric:tabular-nums}.toc-item--2[data-astro-cid-sgg5joot] .toc-link[data-astro-cid-sgg5joot]:before{content:counter(toc-h2) ".";color:#f97316;margin-right:.4rem;font-size:.8em;font-weight:700}.toc-item--3[data-astro-cid-sgg5joot] .toc-link[data-astro-cid-sgg5joot]:before{content:counter(toc-h2) "-" counter(toc-h3);color:var(--color-text-muted);margin-right:.4rem;font-size:.72em;font-weight:600}.toc-link[data-astro-cid-sgg5joot]:hover{color:var(--color-accent);background:var(--color-accent-soft);border-left-color:var(--color-accent)}.toc-link--active[data-astro-cid-sgg5joot]{color:var(--color-text);background:#f9731614;border-left-color:#f97316;font-weight:600}.toc-item--2[data-astro-cid-sgg5joot] .toc-link[data-astro-cid-sgg5joot]{font-size:.875rem;font-weight:500}.toc-item--3[data-astro-cid-sgg5joot] .toc-link[data-astro-cid-sgg5joot]{border-left-color:var(--color-border);margin-left:.9rem;padding-left:.7rem;font-size:.825rem}.toc-item--3[data-astro-cid-sgg5joot] .toc-link--active[data-astro-cid-sgg5joot]{border-left-color:#f97316}.toc-item--3[data-astro-cid-sgg5joot] .toc-link--active[data-astro-cid-sgg5joot]:before{color:#f97316}.toc-list--dialog[data-astro-cid-sgg5joot] .toc-item--2[data-astro-cid-sgg5joot] .toc-link[data-astro-cid-sgg5joot]{padding:.4rem .6rem .4rem .9rem;font-size:.9rem}.toc-list--dialog[data-astro-cid-sgg5joot] .toc-item--3[data-astro-cid-sgg5joot] .toc-link[data-astro-cid-sgg5joot]{margin-left:1rem;padding:.35rem .6rem .35rem .8rem;font-size:.85rem}.toc-fab[data-astro-cid-sgg5joot]{z-index:40;background:var(--color-surface);color:var(--color-text);cursor:pointer;opacity:0;pointer-events:none;white-space:nowrap;border:2px solid #f97316;border-radius:9999px;align-items:center;gap:.5rem;padding:.7rem 1.3rem;font-family:inherit;font-size:.92rem;font-weight:600;transition:opacity .25s,transform .22s,box-shadow .2s,border-color .2s,background .2s;display:flex;position:fixed;bottom:2rem;right:1.75rem;transform:translateY(.75rem);box-shadow:0 4px 24px #00000038,0 2px 6px #f973162e}.toc-fab[data-astro-cid-sgg5joot] svg[data-astro-cid-sgg5joot]{color:#f97316;flex-shrink:0;width:1.2rem;height:1.2rem}.toc-fab--visible[data-astro-cid-sgg5joot]{opacity:1;pointer-events:auto;transform:translateY(0)}.toc-fab[data-astro-cid-sgg5joot]:hover{background:color-mix(in srgb, var(--color-surface) 86%, #f97316 14%);border-color:#fb923c;transform:translateY(-1px);box-shadow:0 4px 24px #0000004d,0 0 18px #f9731666,0 0 36px #f973162e}.toc-fab--visible[data-astro-cid-sgg5joot]:hover{transform:translateY(-1px)}@keyframes sheet-up{0%{opacity:0;transform:translate(-50%)translateY(calc(100% + 1.5rem))}to{opacity:1;transform:translate(-50%)translateY(0)}}.toc-dialog[data-astro-cid-sgg5joot]{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);overscroll-behavior:contain;border-radius:1.5rem;width:min(100vw - 2rem,600px);max-height:70vh;margin:0;padding:0;position:fixed;top:auto;bottom:1.25rem;left:50%;overflow-y:auto;transform:translate(-50%);box-shadow:0 8px 40px #00000038,0 2px 8px #0000001a}.toc-dialog[data-astro-cid-sgg5joot][open]{animation:.28s cubic-bezier(.16,1,.3,1) both sheet-up}.toc-dialog[data-astro-cid-sgg5joot]::backdrop{-webkit-backdrop-filter:blur(4px);background:#0006}.toc-dialog__handle[data-astro-cid-sgg5joot]{background:var(--color-surface);justify-content:center;padding-top:.75rem;display:flex}.toc-dialog__handle[data-astro-cid-sgg5joot]:before{content:"";background:#f97316;border-radius:9999px;width:2.5rem;height:4px}.toc-dialog__header[data-astro-cid-sgg5joot]{background:var(--color-surface);z-index:1;border-bottom:1px solid #f97316;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex;position:sticky;top:0}.toc-dialog__title[data-astro-cid-sgg5joot]{color:#f97316;align-items:center;gap:.4rem;font-size:.9rem;font-weight:700;display:flex}.toc-dialog__title[data-astro-cid-sgg5joot] svg[data-astro-cid-sgg5joot]{color:#f97316;flex-shrink:0;width:1rem;height:1rem}.toc-dialog__close[data-astro-cid-sgg5joot]{border:1px solid var(--color-border);width:1.75rem;height:1.75rem;color:var(--color-text-muted);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background .15s,color .15s;display:flex}.toc-dialog__close[data-astro-cid-sgg5joot] svg[data-astro-cid-sgg5joot]{width:.9rem;height:.9rem}.toc-dialog__close[data-astro-cid-sgg5joot]:hover{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.toc-dialog__body[data-astro-cid-sgg5joot]{padding:.5rem 1rem .75rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0px))}.article-content[data-astro-cid-sgg5joot]{color:var(--color-text);font-size:1.04rem;line-height:1.95}.article-content[data-astro-cid-sgg5joot]>*+*{margin-top:1.25rem}.article-content[data-astro-cid-sgg5joot] h2,.article-content[data-astro-cid-sgg5joot] h3,.article-content[data-astro-cid-sgg5joot] h4{letter-spacing:-.035em;margin-top:2.5rem;line-height:1.35}.article-content[data-astro-cid-sgg5joot] h2{font-size:1.65rem}.article-content[data-astro-cid-sgg5joot] h3{font-size:1.32rem}.article-content[data-astro-cid-sgg5joot] p,.article-content[data-astro-cid-sgg5joot] li{color:color-mix(in srgb, var(--color-text) 88%, var(--color-text-muted))}.article-content[data-astro-cid-sgg5joot] a{color:var(--color-link);text-underline-offset:4px;text-decoration:underline;transition:opacity .2s}.article-content[data-astro-cid-sgg5joot] a:hover{color:var(--color-accent)}.article-content[data-astro-cid-sgg5joot] .external-link:after{content:"";vertical-align:middle;background-color:currentColor;width:.85em;height:.85em;margin-left:.25rem;display:inline-block;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E");mask-size:contain;mask-repeat:no-repeat}.article-content[data-astro-cid-sgg5joot] .table-wrapper{border:1px solid var(--color-border);background:var(--color-surface);border-radius:.75rem;width:100%;margin-block:2.5rem;overflow-x:auto}.article-content[data-astro-cid-sgg5joot] .md-table{border-collapse:collapse;text-align:left;width:100%;font-size:.95rem}.article-content[data-astro-cid-sgg5joot] .md-table th,.article-content[data-astro-cid-sgg5joot] .md-table td{border-bottom:1px solid var(--color-border);padding:.85rem 1rem}.article-content[data-astro-cid-sgg5joot] .md-table th{background:var(--color-surface-muted);color:var(--color-text);font-weight:600}.article-content[data-astro-cid-sgg5joot] .md-table tr:last-child td{border-bottom:0}.article-content[data-astro-cid-sgg5joot] .md-table tr:nth-child(2n){background:color-mix(in srgb, var(--color-surface-muted) 40%, transparent)}.article-content[data-astro-cid-sgg5joot] ul{margin-block:1.5rem;padding-left:1.5rem;list-style-type:disc}.article-content[data-astro-cid-sgg5joot] ol{margin-block:1.5rem;padding-left:1.5rem;list-style-type:decimal}.article-content[data-astro-cid-sgg5joot] .md-li{margin-bottom:.65rem;line-height:1.6}.article-content[data-astro-cid-sgg5joot] .md-li::marker{color:var(--color-text-muted)}.article-content[data-astro-cid-sgg5joot] .link-card{border:1px solid var(--color-border);background:var(--color-surface);border-radius:.75rem;margin-block:2rem;transition:border-color .2s,transform .2s;display:flex;overflow:hidden;color:inherit!important;text-decoration:none!important}.article-content[data-astro-cid-sgg5joot] .link-card:hover{border-color:var(--color-accent);transform:translateY(-2px);opacity:1!important}.article-content[data-astro-cid-sgg5joot] .link-card__body{flex-direction:column;flex:1;min-width:0;padding:1.25rem;display:flex}.article-content[data-astro-cid-sgg5joot] .link-card__title{-webkit-line-clamp:2;color:var(--color-text);-webkit-box-orient:vertical;margin-bottom:.5rem;font-size:1.05rem;font-weight:700;line-height:1.4;display:-webkit-box;overflow:hidden}.article-content[data-astro-cid-sgg5joot] .link-card__description{-webkit-line-clamp:2;color:var(--color-text-muted);-webkit-box-orient:vertical;font-size:.88rem;line-height:1.5;display:-webkit-box;overflow:hidden;margin:0 0 .75rem!important}.article-content[data-astro-cid-sgg5joot] .link-card__hostname{color:var(--color-text-muted);opacity:.8;font-size:.8rem}.article-content[data-astro-cid-sgg5joot] .link-card__image{border-left:1px solid var(--color-border);background:var(--color-surface-muted);flex-shrink:0;width:33%;min-width:120px;max-width:240px}.article-content[data-astro-cid-sgg5joot] .link-card__image img{object-fit:cover;width:100%;height:100%;display:block}@media (width<=480px){.article-content[data-astro-cid-sgg5joot] .link-card{flex-direction:column-reverse}.article-content[data-astro-cid-sgg5joot] .link-card__image{border-left:0;border-bottom:1px solid var(--color-border);width:100%;max-width:none;height:180px}}.article-content[data-astro-cid-sgg5joot] blockquote{border-left:3px solid var(--color-border);color:var(--color-text-muted);margin-inline:0;padding-left:1rem}.article-content[data-astro-cid-sgg5joot] code{border:1px solid var(--color-border);background:var(--color-surface-muted);border-radius:.4rem;padding:.12rem .34rem;font-size:.92em}.article-content[data-astro-cid-sgg5joot] pre.astro-code{border:1px solid var(--color-border);border-radius:1rem;padding:1.25rem 1.5rem;font-size:.92rem;line-height:1.7}.article-content[data-astro-cid-sgg5joot] pre.astro-code code{font-size:inherit;background:0 0;border:0;padding:0}.article-content[data-astro-cid-sgg5joot] pre:not(.astro-code){border:1px solid var(--color-border);background:var(--color-surface-muted);border-radius:1rem;padding:1rem;overflow-x:auto}.article-content[data-astro-cid-sgg5joot] pre:not(.astro-code) code{background:0 0;border:0;padding:0}.article-nav[data-astro-cid-sgg5joot]{border-top:1px solid var(--color-border);margin-top:3rem;padding-top:2rem}.article-nav__inner[data-astro-cid-sgg5joot]{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.article-nav__item[data-astro-cid-sgg5joot]{min-width:0}.article-nav__item--next[data-astro-cid-sgg5joot]{text-align:right}.article-nav__link[data-astro-cid-sgg5joot]{border:1px solid var(--color-border);background:var(--color-surface);color:inherit;border-radius:.75rem;flex-direction:column;gap:.35rem;height:100%;padding:1rem;text-decoration:none;transition:border-color .2s,background .2s;display:flex}.article-nav__link[data-astro-cid-sgg5joot]:hover{border-color:var(--color-accent);background:var(--color-accent-soft)}.article-nav__item--next[data-astro-cid-sgg5joot] .article-nav__link[data-astro-cid-sgg5joot]{align-items:flex-end}.article-nav__label[data-astro-cid-sgg5joot]{color:var(--color-text-muted);white-space:nowrap;font-size:.78rem;font-weight:500}.article-nav__title[data-astro-cid-sgg5joot]{color:var(--color-text);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.9rem;font-weight:600;line-height:1.4;display:-webkit-box;overflow:hidden}@media (width<=540px){.article-nav__inner[data-astro-cid-sgg5joot]{grid-template-columns:1fr}.article-nav__item--next[data-astro-cid-sgg5joot]{text-align:left}.article-nav__item--next[data-astro-cid-sgg5joot] .article-nav__link[data-astro-cid-sgg5joot]{align-items:flex-start}}.article-detail__footer[data-astro-cid-sgg5joot]{border-top:1px solid var(--color-border);flex-direction:column;gap:1.5rem;margin-top:2.5rem;padding-top:2.5rem;display:flex}.article-detail__footer[data-astro-cid-sgg5joot] .related-projects{margin-top:0}.article-detail__profile[data-astro-cid-sgg5joot]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:1rem;align-items:flex-start;gap:1rem;padding:1.25rem;display:flex}.article-detail__avatar[data-astro-cid-sgg5joot]{border:1px solid var(--color-border);border-radius:999px;flex-shrink:0}.article-detail__author-name[data-astro-cid-sgg5joot]{margin-bottom:.2rem;font-size:.95rem;font-weight:700;display:block}.article-detail__author-bio[data-astro-cid-sgg5joot]{color:var(--color-text-muted);margin:0;font-size:.82rem;line-height:1.55}
