.article-page{position:relative}.article{margin:0 auto;max-width:960px}.article__body{position:relative}.article__main{min-width:0}.article__sidebar{display:none}.article-toc--mobile{display:block}@media(min-width:900px){.article-toc--mobile{display:none}.article__sidebar{display:block;left:calc(var(--feed-padding) + 4px + .5rem);max-height:calc(100vh - 4rem);overflow-y:auto;position:fixed;top:50%;transform:translateY(-50%);width:200px;z-index:39}}.article__header{margin-bottom:2rem}.article__title{font-family:var(--font-serif);font-size:clamp(1.75rem,4vw,2.5rem);font-weight:600;line-height:1.3;margin:0 0 .75rem}.article__meta{align-items:center;color:var(--color-text-muted);display:flex;flex-wrap:wrap;font-size:.9375rem;gap:0 .5em}.article__meta>*+:before{content:" · ";margin-right:.25em;opacity:.7}.article__views{align-items:center;display:inline-flex;gap:.35em}.article__views-icon{color:var(--color-text-muted);flex-shrink:0}.article__author{align-items:center;border-top:1px solid var(--color-border);display:flex;gap:1rem;margin-top:1.5rem;padding-top:1.5rem}.article__author-link{color:inherit;text-decoration:none}.article__author-link:hover{color:var(--color-accent-2)}.article__author-avatar{border-radius:50%;height:48px;-o-object-fit:cover;object-fit:cover;width:48px}.article__author-avatar--placeholder{background:linear-gradient(135deg,color-mix(in srgb,var(--color-border) 60%,transparent) 0,color-mix(in srgb,var(--color-border) 30%,transparent))}.article__author-name{font-weight:600}.article__author-bio{color:var(--color-text-muted);font-size:.9375rem;margin:.25rem 0 0}.article__author--fallback .article__author-name{font-weight:500}.article__categories{margin-top:1rem}.article__categories,.article__tags{display:flex;flex-wrap:wrap;gap:.5rem}.article__tag{background:color-mix(in srgb,var(--color-accent-2) 12%,transparent);border-radius:var(--radius);color:var(--color-accent-2);font-size:.875rem;padding:.2rem .5rem;text-decoration:none}.article__tag:hover{background:var(--color-accent-2);color:#fff}.article__category-tag{background:#0d94881a;border-radius:var(--radius);color:var(--color-accent-2);display:inline-block;font-size:.8125rem;font-weight:500;padding:.25rem .6rem;text-decoration:none;transition:background .2s,color .2s}.article__category-tag:hover{background:var(--color-accent-2);color:#fff}.article-content__body,.article__content{font-family:var(--font-serif);font-size:1.125rem;line-height:1.75;overflow-wrap:break-word;word-wrap:break-word;max-width:100%}.article-content__body p,.article__content p{margin:0 0 1rem}.article-content__body h2,.article__content h2{font-size:1.5rem;margin:2rem 0 1rem}.article-content__body h3,.article__content h3{font-size:1.25rem;margin:1.5rem 0 .75rem}.article-content__body table,.article__content table{margin:1.5rem 0}.article-content__body figure.article-table-wrap table,.article__content figure.article-table-wrap table{margin:0}.article-content__body .article-table-wrap,.article-content__body figure.article-table-wrap,.article__content .article-table-wrap,.article__content figure.article-table-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin:1.5rem 0;overflow-x:auto}.article-content__body .article-table,.article-content__body table,.article__content .article-table,.article__content table{border-collapse:collapse;font-size:.9375rem;min-width:400px;width:100%}.article-content__body .article-table td,.article-content__body .article-table th,.article-content__body table td,.article-content__body table th,.article__content .article-table td,.article__content .article-table th,.article__content table td,.article__content table th{border:1px solid var(--color-border);padding:.75rem 1rem;text-align:left;vertical-align:top}.article-content__body .article-table thead th,.article-content__body table thead th,.article__content .article-table thead th,.article__content table thead th{background:color-mix(in srgb,var(--color-border) 25%,transparent);color:var(--color-text);font-weight:600}.article-content__body .article-table tbody th,.article-content__body table tbody th,.article__content .article-table tbody th,.article__content table tbody th{background:color-mix(in srgb,var(--color-border) 12%,transparent);font-weight:500;min-width:140px}.article-content__body .article-table tbody tr:hover td,.article-content__body .article-table tbody tr:hover th,.article-content__body table tbody tr:hover td,.article-content__body table tbody tr:hover th,.article__content .article-table tbody tr:hover td,.article__content .article-table tbody tr:hover th,.article__content table tbody tr:hover td,.article__content table tbody tr:hover th{background:color-mix(in srgb,var(--color-border) 8%,transparent)}.article__content .faq-block{background:color-mix(in srgb,var(--color-border) 15%,transparent);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin:2rem 0;max-width:100%;overflow-wrap:break-word;padding:1.5rem}.article__content .faq-block__title{color:var(--color-text);font-size:1.25rem;font-weight:600;margin:0 0 1rem}.article__content .faq-block .faq{margin:0}.article__content .faq-block .faq dt{border-top:1px solid color-mix(in srgb,var(--color-border) 80%,transparent);display:block;font-weight:600;margin-top:1rem;padding-top:1rem}.article__content .faq-block .faq dt:first-child{border-top:none;margin-top:0;padding-top:0}.article__content .faq-block .faq dd{margin:.25rem 0 0 1rem;max-width:100%;overflow-wrap:break-word;word-break:break-word}.article__content .faq{margin:2rem 0;max-width:100%;overflow-wrap:break-word}.article__content .faq dt{display:block;font-weight:600;margin-top:1rem}.article__content .faq dt:first-child{margin-top:0}.article__content .faq dd{margin:.25rem 0 0 1rem;max-width:100%;overflow-wrap:break-word;word-break:break-word}.article__rating{align-items:center;border-top:1px solid var(--color-border);display:flex;flex-wrap:wrap;gap:.75rem 1rem;justify-content:flex-start;margin-top:2.5rem;padding-top:2rem}.article__rating-label{color:var(--color-text-muted);font-size:.9375rem}.article__rating-stars{display:flex;gap:.25rem}.article__rating-star{background:none;border:none;color:var(--color-border);cursor:pointer;padding:.25rem;transition:color .2s ease,transform .15s ease}.article__rating-star:hover:not(.article__rating-star--disabled){color:var(--color-accent-2,#f59e0b);transform:scale(1.1)}.article__rating-star--filled{color:var(--color-accent-2,#f59e0b)}.article__rating-star--disabled{cursor:default;opacity:.8}.article__rating-avg{color:var(--color-text);font-size:1rem;font-weight:600}.article__rating-count{color:var(--color-text-muted);font-size:.9375rem}.article__share{align-items:center;display:flex;flex-basis:100%;gap:.5rem;justify-content:flex-start;margin-top:1rem;width:100%}.article__share-label{color:var(--color-text-muted);font-size:.9375rem}.article__share-btn{align-items:center;border-radius:50%;color:var(--color-text-muted);display:inline-flex;height:36px;justify-content:center;text-decoration:none;transition:color .2s ease,background-color .2s ease,transform .15s ease;width:36px}.article__share-btn--native{background:none;border:none;cursor:pointer;font:inherit;padding:0}.article__share-btn:hover{background-color:color-mix(in srgb,var(--color-accent-2,#f59e0b) 15%,transparent);color:var(--color-accent-2,#f59e0b);transform:scale(1.1)}.article__share-icon{align-items:center;display:inline-flex;justify-content:center}.article__share-icon svg{height:20px;width:20px}.article__share-copied{color:var(--color-text-muted);font-size:.8125rem}.article__copy-fade-enter-active,.article__copy-fade-leave-active,.article__share-copied{transition:opacity .2s ease}.article__copy-fade-enter-from,.article__copy-fade-leave-to{opacity:0}.article-toc{margin-bottom:2rem}.article-toc__title{color:var(--color-text-muted);font-size:.875rem;font-weight:600;margin:0 0 .5rem}.article-toc__list{list-style:none;margin:0;padding:0}.article-toc__item{border-left:2px solid transparent;margin-bottom:.35rem;padding-left:.5rem;position:relative;transition:border-color .2s ease,color .2s ease}.article-toc__item--h3{margin-left:.5rem}.article-toc__item--passed{border-left-color:var(--color-border)}.article-toc__item--passed .article-toc__link{color:var(--color-text-muted)}.article-toc__item--active{border-left-color:var(--color-accent-2)}.article-toc__item--active .article-toc__link{color:var(--color-accent-2);font-weight:600}.article-toc__link{color:var(--color-accent);display:block;font-size:.8125rem;text-decoration:none}.article-toc__link:hover{text-decoration:underline}.article-related{border-top:1px solid var(--color-border);margin-top:3rem;padding-top:2.5rem}.article-related__title{border-bottom:2px solid var(--color-accent-2);color:var(--color-text);display:inline-block;font-size:1.5rem;font-weight:600;margin:0 0 1.5rem;padding-bottom:.5rem}.article-related__list{display:flex;flex-direction:column;gap:1rem;list-style:none;margin:0;padding:0}.article-related__card{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;transition:box-shadow .25s ease,border-color .25s ease}.article-related__card:hover{border-left-color:var(--color-accent-2);box-shadow:var(--shadow-md)}.article-related__link{color:inherit;display:block;padding:1.5rem}.article-related__link:hover{color:inherit}.article-related__card-title{color:var(--color-text);font-size:1.125rem;font-weight:600;margin:0 0 .5rem}.article-related__card-excerpt{color:var(--color-text-muted);font-size:.9375rem;line-height:1.5;margin:0 0 .75rem}.article-related__card-meta{align-items:center;color:var(--color-text-muted);display:flex;flex-wrap:wrap;font-size:.8125rem;gap:.25rem}.article-related__meta-sep{opacity:.6}.article-related__type{border-radius:6px;display:inline-block;font-size:.75rem;font-weight:600;padding:.2rem .5rem}.article-related__type--review{background:#0d94881f;color:var(--color-accent-2)}.article-related__type--comparison{background:#7c3aed1f;color:var(--color-accent-4)}.article-related__type:not([class*=--]){background:#2563eb1f;color:var(--color-accent)}
