@font-face{font-family:Fraunces;font-style:normal;font-weight:400 700;font-display:swap;src:url(assets/fonts/fraunces-var.woff2) format("woff2")}:root{--vs-radius: .625rem;--vs-radius-lg: calc(.625rem + 4px) ;--vs-radius-xl: calc(.625rem + 8px) ;--vs-radius-2xl: calc(.625rem + 12px) ;--vs-radius-3xl: calc(.625rem + 20px) ;--background: oklch(.988 .004 285);--foreground: oklch(.216 .03 278);--card: oklch(1 0 0);--card-foreground: oklch(.216 .03 278);--popover: oklch(1 0 0);--popover-foreground: oklch(.216 .03 278);--primary: oklch(.3 .15 278);--primary-foreground: oklch(.985 .005 285);--secondary: oklch(.955 .015 285);--secondary-foreground: oklch(.32 .06 278);--muted: oklch(.955 .01 285);--muted-foreground: oklch(.5 .025 280);--accent: oklch(.93 .025 285);--accent-foreground: oklch(.33 .06 280);--destructive: oklch(.577 .245 27.325);--border: oklch(.906 .015 285);--input: oklch(.906 .015 285);--ring: oklch(.3 .15 278);--rating: oklch(.76 .15 75);--rating-foreground: oklch(.25 .05 60);--gold: oklch(.78 .14 82);--gold-foreground: oklch(.24 .05 75);--success: oklch(.62 .14 150);--surface: oklch(.972 .008 285);--night: oklch(.19 .045 280);--night-text: oklch(.93 .012 285);--violet: oklch(.62 .21 288);--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--font-display: "Fraunces", Georgia, "Times New Roman", serif;--shadow-sm: 0 1px 2px 0 oklch(.216 .03 278 / 5%);--shadow-md: 0 4px 6px -1px oklch(.216 .03 278 / 7%), 0 2px 4px -2px oklch(.216 .03 278 / 5%)}.dark{--background: oklch(.17 .025 280);--foreground: oklch(.955 .008 285);--card: oklch(.216 .03 280);--card-foreground: oklch(.955 .008 285);--popover: oklch(.216 .03 280);--popover-foreground: oklch(.955 .008 285);--primary: oklch(.62 .21 288);--primary-foreground: oklch(.16 .03 280);--secondary: oklch(.27 .03 280);--secondary-foreground: oklch(.93 .012 285);--muted: oklch(.26 .025 282);--muted-foreground: oklch(.7 .018 285);--accent: oklch(.3 .05 282);--accent-foreground: oklch(.93 .012 285);--destructive: oklch(.704 .191 22.216);--border: oklch(1 0 0 / 10%);--input: oklch(1 0 0 / 15%);--ring: oklch(.62 .21 288);--rating: oklch(.8 .15 80);--rating-foreground: oklch(.2 .04 60);--gold: oklch(.86 .13 85);--gold-foreground: oklch(.2 .04 75);--success: oklch(.7 .14 155);--surface: oklch(.2 .028 280);--night: oklch(.19 .045 280);--night-text: oklch(.93 .012 285);--violet: oklch(.62 .21 288);--shadow-sm: 0 1px 2px 0 oklch(0 0 0 / 20%);--shadow-md: 0 4px 6px -1px oklch(0 0 0 / 25%), 0 2px 4px -2px oklch(0 0 0 / 20%)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;background:var(--background);color:var(--foreground);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;height:auto}a{color:inherit;text-decoration:none}button{font-family:inherit}::selection{background:#8567fa40}:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:4px}h1,h2,h3,h4{margin:0;line-height:1.2;letter-spacing:-.01em}p{margin:0}.font-display,.vs-h-display{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.015em}.vs-container{max-width:80rem;margin-inline:auto;padding-inline:1rem}@media(min-width:640px){.vs-container{padding-inline:1.5rem}}.vs-main{min-height:60vh}.vs-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.vs-skip-link:focus{position:fixed;left:1rem;top:1rem;z-index:70;width:auto;height:auto;clip:auto;white-space:nowrap;background:var(--primary);color:var(--primary-foreground);padding:.5rem 1rem;border-radius:.5rem}.text-gradient-sphera{background-image:linear-gradient(120deg,#4442b0,#815ae4 48%,#ebbd57);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}.dark .text-gradient-sphera{background-image:linear-gradient(120deg,oklch(.75 .14 285),oklch(.72 .19 296),#fcd176)}.glass-panel{background:color-mix(in oklab,var(--card) 68%,transparent);backdrop-filter:blur(18px) saturate(1.5);-webkit-backdrop-filter:blur(18px) saturate(1.5)}.card-glow{position:relative}.card-glow:after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:linear-gradient(135deg,transparent 30%,oklch(.62 .21 288 / 55%) 62%,oklch(.83 .14 85 / 45%) 100%);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;opacity:0;transition:opacity .45s ease;pointer-events:none}.card-glow:hover:after{opacity:1}.card-lift{transition:transform .4s cubic-bezier(.22,1,.36,1),box-shadow .4s ease}.card-lift:hover{transform:translateY(-4px);box-shadow:0 20px 45px -18px #2317764d}.dark .card-lift:hover{box-shadow:0 20px 45px -16px #08071fb3}@keyframes aurora-drift-1{0%,to{transform:translate(0) scale(1)}33%{transform:translate(6%,-8%) scale(1.12)}66%{transform:translate(-5%,5%) scale(.94)}}@keyframes aurora-drift-2{0%,to{transform:translate(0) scale(1)}40%{transform:translate(-7%,6%) scale(1.15)}75%{transform:translate(4%,-5%) scale(.9)}}@keyframes aurora-drift-3{0%,to{transform:translate(0) scale(1)}50%{transform:translate(5%,8%) scale(1.18)}}.animate-aurora-1{animation:aurora-drift-1 26s ease-in-out infinite}.animate-aurora-2{animation:aurora-drift-2 32s ease-in-out infinite}.animate-aurora-3{animation:aurora-drift-3 38s ease-in-out infinite}@keyframes float-y{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}.animate-float{animation:float-y 7s ease-in-out infinite}.animate-float-delayed{animation:float-y 9s ease-in-out 1.2s infinite}@keyframes spin-slow{to{transform:rotate(360deg)}}.animate-spin-slower{animation:spin-slow 60s linear infinite}@keyframes gold-pulse{0%,to{box-shadow:0 0 #f1bf4e59}50%{box-shadow:0 0 0 6px #f1bf4e00}}.animate-gold-pulse{animation:gold-pulse 2.6s ease-out infinite}.vs-js .reveal{opacity:0;transform:translateY(26px);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1);transition-delay:var(--reveal-delay, 0ms);will-change:opacity,transform}.reveal.is-visible{opacity:1;transform:none}.stars-bg{background-image:radial-gradient(1.2px 1.2px at 12% 22%,rgb(255 255 255 / 65%) 50%,transparent 51%),radial-gradient(1px 1px at 34% 68%,rgb(255 255 255 / 45%) 50%,transparent 51%),radial-gradient(1.4px 1.4px at 57% 14%,rgb(255 255 255 / 55%) 50%,transparent 51%),radial-gradient(1px 1px at 72% 48%,rgb(255 255 255 / 40%) 50%,transparent 51%),radial-gradient(1.2px 1.2px at 88% 78%,rgb(255 255 255 / 50%) 50%,transparent 51%),radial-gradient(1px 1px at 22% 86%,rgb(255 255 255 / 42%) 50%,transparent 51%),radial-gradient(1.3px 1.3px at 46% 38%,rgb(255 255 255 / 38%) 50%,transparent 51%),radial-gradient(1px 1px at 66% 84%,rgb(255 255 255 / 50%) 50%,transparent 51%),radial-gradient(1.1px 1.1px at 92% 26%,rgb(255 255 255 / 48%) 50%,transparent 51%),radial-gradient(1px 1px at 5% 54%,rgb(255 255 255 / 36%) 50%,transparent 51%);background-size:640px 640px}@media(prefers-reduced-motion:reduce){.animate-aurora-1,.animate-aurora-2,.animate-aurora-3,.animate-float,.animate-float-delayed,.animate-spin-slower,.animate-gold-pulse{animation:none!important}.reveal{opacity:1!important;transform:none!important;transition:none!important}html{scroll-behavior:auto}}.vs-aurora-backdrop{position:absolute;inset:0;overflow:hidden;pointer-events:none}.vs-aurora-backdrop .orb-1{position:absolute;left:-8rem;top:-10%;height:28rem;width:28rem;border-radius:9999px;background:#23177626;filter:blur(64px)}.dark .vs-aurora-backdrop .orb-1{background:#8567fa33}.vs-aurora-backdrop .orb-2{position:absolute;right:-10rem;top:8%;height:32rem;width:32rem;border-radius:9999px;background:#9561f326;filter:blur(64px)}.dark .vs-aurora-backdrop .orb-2{background:#9561f333}.vs-aurora-backdrop .orb-3{position:absolute;left:33%;bottom:-12rem;height:30rem;width:30rem;border-radius:9999px;background:#e4ad3c1a;filter:blur(64px)}.vs-aurora-backdrop .ring-1{position:absolute;right:-8rem;top:-12rem;height:36rem;width:36rem;border-radius:9999px;border:1px solid oklch(.216 .03 278 / 6%)}.dark .vs-aurora-backdrop .ring-1{border-color:#ffffff12}.vs-aurora-backdrop .ring-1:before{content:"";position:absolute;left:12%;top:12%;height:.5rem;width:.5rem;border-radius:9999px;background:#e4ad3c99;box-shadow:0 0 12px 2px #e4ad3c66}.vs-aurora-backdrop .ring-2{position:absolute;right:-4rem;top:-6rem;height:24rem;width:24rem;border-radius:9999px;border:1px solid oklch(.216 .03 278 / 5%)}.dark .vs-aurora-backdrop .ring-2{border-color:#ffffff0d}.vs-aurora-backdrop .starfield{position:absolute;inset:0;opacity:.6}.dark .vs-aurora-backdrop .starfield{opacity:.9}.vs-header{position:sticky;top:0;z-index:50;width:100%;border-bottom:1px solid color-mix(in oklab,var(--border) 70%,transparent)}.vs-header-bar{position:relative;display:flex;height:4rem;align-items:center;gap:.5rem}.vs-header:after{content:"";position:absolute;inset-inline:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,oklch(.3 .15 278 / 40%),transparent);pointer-events:none}.vs-logo{position:relative;display:inline-flex;flex-shrink:0;align-items:center;transition:transform .3s ease}.vs-logo:hover{transform:scale(1.03)}.vs-logo:before{content:"";position:absolute;inset:-.5rem -.75rem;border-radius:9999px;background:#e4ad3c00;filter:blur(12px);transition:background-color .5s ease;pointer-events:none}.vs-logo:hover:before{background:#e4ad3c33}.vs-logo img{height:2rem;width:auto;display:block}.vs-logo img.dark-only,.dark .vs-logo img.light-only{display:none}.dark .vs-logo img.dark-only{display:block}.vs-logo img.logo-white{display:block!important}.vs-logo img.logo-white.light-only{display:none!important}.vs-nav{display:none;align-items:center;margin-left:.5rem}@media(min-width:1024px){.vs-nav{display:flex}}.vs-nav-item{position:relative}.vs-nav-link{display:flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.5rem .75rem;font-size:.875rem;font-weight:500;color:color-mix(in oklab,var(--foreground) 75%,transparent);transition:background-color .15s ease,color .15s ease}.vs-nav-link:hover,.vs-nav-link.is-active{background:var(--accent);color:var(--accent-foreground)}.vs-nav-link .vs-chevron{height:.875rem;width:.875rem;transition:transform .2s ease}.vs-nav-item.is-open .vs-chevron{transform:rotate(180deg)}.vs-dropdown{position:absolute;left:0;top:100%;padding-top:.5rem;z-index:60;display:none}.vs-nav-item.is-open .vs-dropdown{display:block}.vs-dropdown-panel{width:16rem;border-radius:var(--vs-radius-xl);border:1px solid var(--border);background:color-mix(in oklab,var(--popover) 95%,transparent);padding:.5rem;box-shadow:0 20px 25px -5px #2317761a,0 8px 10px -6px #2317760f;backdrop-filter:blur(24px)}.vs-dropdown-all{display:flex;align-items:center;gap:.625rem;border-radius:var(--vs-radius-lg);padding:.5rem .75rem;font-size:.875rem;font-weight:600}.vs-dropdown-all:hover{background:var(--accent)}.vs-dropdown-all .vs-icon-tile{display:grid;place-items:center;height:2rem;width:2rem;border-radius:var(--vs-radius-md);background:#2317761a;color:var(--primary)}.vs-dropdown-sep{height:1px;background:var(--border);margin:.25rem 0}.vs-dropdown-sub{display:block;border-radius:var(--vs-radius-lg);padding:.5rem .75rem .5rem 3.25rem;font-size:.875rem;color:color-mix(in oklab,var(--foreground) 80%,transparent)}.vs-dropdown-sub:hover{background:var(--accent);color:var(--accent-foreground)}.vs-header-actions{margin-left:auto;display:flex;align-items:center;gap:.25rem}.vs-icon-btn{display:inline-grid;place-items:center;height:2.25rem;width:2.25rem;border-radius:var(--vs-radius-md);border:none;background:transparent;color:var(--muted-foreground);cursor:pointer;transition:background-color .15s ease,color .15s ease}.vs-icon-btn:hover{background:var(--accent);color:var(--accent-foreground)}.vs-icon-btn svg{height:1.2rem;width:1.2rem}.vs-burger{display:inline-grid}@media(min-width:1024px){.vs-burger{display:none}}.vs-sheet-backdrop{position:fixed;inset:0;z-index:60;background:#00000073;opacity:0;pointer-events:none;transition:opacity .3s ease}.vs-sheet{position:fixed;top:0;right:0;bottom:0;z-index:61;width:85vw;max-width:24rem;background:var(--background);overflow-y:auto;transform:translate(100%);transition:transform .35s cubic-bezier(.22,1,.36,1);box-shadow:-20px 0 60px #00000026}body.vs-sheet-open .vs-sheet-backdrop{opacity:1;pointer-events:auto}body.vs-sheet-open .vs-sheet{transform:translate(0)}.vs-sheet-head{border-bottom:1px solid var(--border);padding:1.25rem;display:flex;justify-content:space-between;align-items:center}.vs-sheet-nav{display:flex;flex-direction:column;gap:.25rem;padding:1rem}.vs-sheet-cat summary{display:flex;align-items:center;justify-content:space-between;border-radius:var(--vs-radius-lg);padding:.625rem .75rem;font-weight:500;cursor:pointer;list-style:none}.vs-sheet-cat summary::-webkit-details-marker{display:none}.vs-sheet-cat summary:hover{background:var(--accent)}.vs-sheet-cat .cat-label{display:flex;align-items:center;gap:.625rem}.vs-sheet-cat .vs-icon-tile{display:grid;place-items:center;height:1.75rem;width:1.75rem;border-radius:var(--vs-radius-md);background:#2317761a;color:var(--primary)}.vs-sheet-cat .vs-icon-tile svg{height:.875rem;width:.875rem}.vs-sheet-cat summary .vs-chevron{height:1rem;width:1rem;color:var(--muted-foreground);transition:transform .2s ease}.vs-sheet-cat[open] summary .vs-chevron{transform:rotate(180deg)}.vs-sheet-subs{margin-left:1rem;margin-top:.25rem;border-left:1px solid var(--border);padding-left:.75rem;display:flex;flex-direction:column}.vs-sheet-subs a{border-radius:var(--vs-radius-md);padding:.5rem .75rem;font-size:.875rem}.vs-sheet-subs a.all{font-weight:600}.vs-sheet-subs a:not(.all){color:color-mix(in oklab,var(--foreground) 75%,transparent)}.vs-sheet-subs a:hover{background:var(--accent)}.vs-sheet-sep{height:1px;background:var(--border);margin:.5rem 0}.vs-sheet-link{border-radius:var(--vs-radius-lg);padding:.625rem .75rem;font-weight:500}.vs-sheet-link:hover{background:var(--accent)}.vs-sheet-link.muted{color:var(--muted-foreground)}.vs-sheet-link .star{height:1rem;width:1rem;color:var(--rating)}.vs-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:9999px;font-weight:600;border:none;cursor:pointer;transition:opacity .2s ease,background-color .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease;text-decoration:none;white-space:nowrap}.vs-btn-primary{background:var(--primary);color:var(--primary-foreground)}.vs-btn-primary:hover{opacity:.88}.vs-btn-outline{background:transparent;color:var(--foreground);border:1px solid var(--border)}.vs-btn-outline:hover{background:var(--accent);color:var(--accent-foreground)}.vs-btn-accent-outline{background:transparent;color:var(--primary);border:2px solid var(--primary)}.vs-btn-accent-outline:hover{background:#2317760d}.vs-btn-dark{background:var(--foreground);color:var(--background)}.vs-btn-dark:hover{opacity:.85}.vs-btn-gold{background:var(--rating);color:var(--rating-foreground)}.vs-btn-gold:hover{filter:brightness(1.05)}.vs-btn-sm{height:2.25rem;padding:0 1rem;font-size:.875rem}.vs-btn-md{height:2.5rem;padding:0 1.25rem;font-size:.875rem}.vs-btn-lg{height:3rem;padding:0 1.75rem;font-size:.9375rem}.vs-btn-xl{height:3rem;padding:0 1.75rem;font-size:1rem}.vs-btn-block{width:100%}.vs-btn svg{height:1rem;width:1rem;flex-shrink:0}.vs-chip{display:inline-flex;align-items:center;gap:.375rem;border-radius:9999px;border:1px solid var(--border);background:color-mix(in oklab,var(--card) 70%,transparent);padding:.375rem 1rem;font-size:.75rem;font-weight:600;color:var(--muted-foreground);box-shadow:var(--shadow-sm);backdrop-filter:blur(4px)}.vs-chip svg{height:.875rem;width:.875rem;color:var(--gold)}.vs-pill{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.25rem .625rem;font-size:.75rem;font-weight:500}.vs-pill-muted{background:var(--muted);color:var(--muted-foreground)}.vs-pill-success{background:#399d571a;color:var(--success)}.vs-pill-primary{background:#2317761a;color:var(--primary)}.vs-type-badge{display:inline-flex;border-radius:9999px;padding:.125rem .625rem;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.vs-type-tool{background:#2317761a;color:var(--primary)}.vs-type-review{background:#e8a12726;color:var(--rating-foreground)}.vs-type-comparison,.vs-type-bestlist{background:var(--accent);color:var(--accent-foreground)}.vs-type-guide{background:var(--muted);color:var(--foreground)}.vs-eyebrow{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--primary)}.vs-card{position:relative;display:flex;flex-direction:column;border-radius:var(--vs-radius-2xl);border:1px solid var(--border);background:var(--card);padding:1.25rem;box-shadow:var(--shadow-sm);transition:transform .35s ease,box-shadow .35s ease,border-color .2s ease}a.vs-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.vs-card-eyebrow{display:flex;align-items:center;gap:.375rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--primary)}.vs-card-eyebrow svg{height:.75rem;width:.75rem}.vs-card-title{margin-top:.375rem;font-size:1rem;font-weight:600;line-height:1.375}a.vs-card:hover .vs-card-title{color:var(--primary)}.vs-card-meta{margin-top:auto;padding-top:.75rem;font-size:.75rem;color:var(--muted-foreground)}.vs-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.vs-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.vs-tool-logo{display:grid;flex-shrink:0;place-items:center;font-weight:700;color:#fff;box-shadow:var(--shadow-sm);box-shadow:0 1px 2px #0000001f;border:1px solid rgb(0 0 0 / 5%)}.vs-tool-logo-sm{height:2rem;width:2rem;font-size:.75rem;border-radius:var(--vs-radius-lg)}.vs-tool-logo-md{height:2.75rem;width:2.75rem;font-size:.875rem;border-radius:var(--vs-radius-xl)}.vs-tool-logo-lg{height:3.5rem;width:3.5rem;font-size:1.125rem;border-radius:var(--vs-radius-2xl)}.vs-tool-card-head{display:flex;align-items:flex-start;gap:.875rem}.vs-tool-card-head .t-name{min-width:0;flex:1}.vs-tool-card-head h3{font-size:1rem;font-weight:600;line-height:1.375;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vs-tool-card-head h3 a:hover{color:var(--primary)}.vs-tool-card-head .t-cat{margin-top:.125rem;font-size:.75rem;color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vs-tool-card-score{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}.vs-score-chip{border-radius:var(--vs-radius-lg);background:#2317761a;color:var(--primary);padding:.25rem .5rem;font-size:.875rem;font-weight:700;font-variant-numeric:tabular-nums}.vs-tool-card-desc{margin-top:.75rem;font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}.vs-tool-card-tags{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem .75rem;margin-top:.75rem;font-size:.75rem;color:var(--muted-foreground)}.vs-tool-card-tags .tag-tested{display:inline-flex;align-items:center;gap:.25rem}.vs-tool-card-tags .tag-tested svg{height:.75rem;width:.75rem}.vs-tool-card-cta{display:flex;align-items:center;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.vs-tool-card-cta .vs-btn{flex:1}.vs-rank-bubble{position:absolute;left:-.5rem;top:-.5rem;z-index:10;display:grid;place-items:center;height:1.75rem;width:1.75rem;border-radius:9999px;background:var(--foreground);color:var(--background);font-size:.75rem;font-weight:700;box-shadow:var(--shadow-md)}.vs-featured-tool{position:relative;overflow:hidden;border-radius:var(--vs-radius-2xl);border:2px solid oklch(.3 .15 278 / 25%);background:linear-gradient(to bottom right,var(--card),var(--card) 50%,oklch(.3 .15 278 / 5%));padding:1.5rem;box-shadow:var(--shadow-md)}@media(min-width:640px){.vs-featured-tool{padding:1.75rem}}.vs-featured-tool:before{content:"";position:absolute;right:-2.5rem;top:-2.5rem;height:10rem;width:10rem;border-radius:9999px;background:#2317761a;filter:blur(40px);pointer-events:none}.vs-featured-tool .top-pick{position:absolute;right:1.25rem;top:1.25rem;display:inline-flex;align-items:center;gap:.375rem;border-radius:9999px;background:var(--rating);color:var(--rating-foreground);padding:.375rem .75rem;font-size:.75rem;font-weight:700;box-shadow:var(--shadow-sm)}.vs-featured-tool .top-pick svg{height:.875rem;width:.875rem}.vs-ft-head{display:flex;flex-wrap:wrap;align-items:flex-start;gap:1rem}.vs-ft-head .t-main{min-width:0;flex:1}.vs-ft-head h3{font-size:1.25rem;font-weight:700;letter-spacing:-.01em}.vs-ft-head h3 a:hover{color:var(--primary)}.vs-ft-head .t-tag{margin-top:.25rem;font-size:.875rem;color:var(--muted-foreground)}.vs-ft-head .rank-tag{border-radius:var(--vs-radius-md);background:var(--foreground);color:var(--background);padding:.125rem .5rem;font-size:.75rem;font-weight:700;margin-right:.5rem}.vs-ft-score{margin-left:auto;text-align:right}.vs-ft-score .big{font-size:1.875rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}.vs-ft-score .big small{font-size:1rem;font-weight:500;color:var(--muted-foreground)}.vs-ft-body{margin-top:1.25rem;display:grid;gap:1.25rem}@media(min-width:768px){.vs-ft-body{grid-template-columns:1fr 1fr}}.vs-ft-pros{margin-top:.75rem;display:flex;flex-direction:column;gap:.375rem}.vs-ft-pros li{display:flex;gap:.5rem;font-size:.875rem;color:var(--muted-foreground);list-style:none}.vs-ft-pros li svg{margin-top:.125rem;height:1rem;width:1rem;flex-shrink:0;color:var(--success)}.vs-ft-info{display:flex;flex-direction:column;justify-content:center;gap:.625rem;border-radius:var(--vs-radius-xl);background:color-mix(in oklab,var(--background) 70%,transparent);border:1px solid var(--border);padding:1rem}.vs-ft-info .row{display:flex;align-items:center;justify-content:space-between;font-size:.875rem}.vs-ft-info .row .k{color:var(--muted-foreground)}.vs-ft-info .row .v{font-weight:600}.vs-ft-info .row .v.yes{color:var(--success)}.vs-ft-info .actions{margin-top:.5rem;display:flex;flex-direction:column;gap:.5rem}.vs-vs-block{display:flex;align-items:center;gap:.5rem;margin-top:.625rem}.vs-vs-side{display:flex;flex:1;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--vs-radius-xl);background:color-mix(in oklab,var(--muted) 60%,transparent);padding:.75rem .5rem}.vs-vs-side .n{font-size:.875rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vs-vs-label{font-size:.75rem;font-weight:700;text-transform:uppercase;color:var(--muted-foreground)}.vs-mini-ranks{margin-top:.75rem;display:flex;flex-direction:column;gap:.5rem}.vs-mini-ranks li{display:flex;align-items:center;gap:.625rem;font-size:.875rem;list-style:none}.vs-mini-ranks .rk{display:grid;place-items:center;flex-shrink:0;height:1.25rem;width:1.25rem;border-radius:9999px;background:#2317761a;color:var(--primary);font-size:.6875rem;font-weight:700}.vs-mini-ranks .nm{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vs-mini-ranks .sc{margin-left:auto;flex-shrink:0;font-size:.75rem;color:var(--muted-foreground);font-variant-numeric:tabular-nums}.vs-grid{display:grid;gap:1rem}.vs-grid-2{grid-template-columns:1fr}@media(min-width:640px){.vs-grid-2{grid-template-columns:repeat(2,1fr)}}.vs-grid-3{grid-template-columns:1fr}@media(min-width:640px){.vs-grid-3{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.vs-grid-3{grid-template-columns:repeat(3,1fr)}}.vs-grid-4{grid-template-columns:1fr}@media(min-width:640px){.vs-grid-4{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.vs-grid-4{grid-template-columns:repeat(4,1fr)}}.vs-grid-5{grid-template-columns:1fr}@media(min-width:640px){.vs-grid-5{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.vs-grid-5{grid-template-columns:repeat(3,1fr)}}@media(min-width:1280px){.vs-grid-5{grid-template-columns:repeat(5,1fr)}}.vs-section{margin:0}.vs-section-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.75rem;margin-bottom:1.5rem}.vs-section-head .txt{max-width:42rem}.vs-section-head h2{margin-top:.25rem;font-size:1.5rem;font-weight:700;letter-spacing:-.01em}@media(min-width:640px){.vs-section-head h2{font-size:1.875rem}}.vs-section-head .desc{margin-top:.5rem;font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}.vs-section-head .vs-btn-outline-primary{border:1px solid var(--border);border-radius:9999px;padding:.5rem 1rem;font-size:.875rem;font-weight:600;color:var(--primary);transition:background-color .2s ease,color .2s ease}.vs-section-head .vs-btn-outline-primary:hover{background:var(--primary);color:var(--primary-foreground)}.vs-home-sections{display:flex;flex-direction:column;gap:5rem;padding-block:4rem}@media(min-width:640px){.vs-home-sections{padding-block:5rem}}.vs-hero{position:relative;overflow:hidden;border-bottom:1px solid var(--border)}.vs-hero-inner{position:relative;padding-block:5rem;display:flex;flex-direction:column;align-items:center}@media(min-width:640px){.vs-hero-inner{padding-block:6rem}}@media(min-width:1024px){.vs-hero-inner{padding-block:8rem}}.vs-hero-center{max-width:48rem;margin-inline:auto;text-align:center}.vs-hero h1{margin-top:1.75rem;font-family:var(--font-display);font-size:2.75rem;font-weight:600;line-height:1.05;letter-spacing:-.015em}@media(min-width:640px){.vs-hero h1{font-size:3.75rem}}@media(min-width:1024px){.vs-hero h1{font-size:4.5rem}}.vs-hero-sub{margin:1.5rem auto 0;max-width:36rem;font-size:1rem;line-height:1.75;color:var(--muted-foreground)}@media(min-width:640px){.vs-hero-sub{font-size:1.125rem}}.vs-hero-sub a{font-weight:500;color:var(--primary);text-decoration:underline;text-decoration-color:#2317764d;text-underline-offset:4px}.vs-hero-sub a:hover{text-decoration-color:var(--primary)}.vs-hero-search{margin:2.25rem auto 0;max-width:36rem}.vs-hero-stats{margin-top:1.25rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem 1rem;font-size:.75rem;color:var(--muted-foreground)}.vs-hero-stats .lead{font-weight:500;color:var(--foreground)}.vs-hero-chips{position:absolute;inset:0;pointer-events:none;display:none}@media(min-width:1024px){.vs-hero-chips{display:block}}.vs-hero-chip{position:absolute;border-radius:var(--vs-radius-2xl);border:1px solid rgb(255 255 255 / 40%);padding:.75rem 1rem;box-shadow:0 10px 15px -3px #2317761a}.dark .vs-hero-chip{border-color:#ffffff1a}.vs-hero-chip .n{font-size:.75rem;font-weight:600}.vs-hero-chip .r{margin-top:.125rem;display:flex;align-items:center;gap:.25rem;font-size:.6875rem;color:var(--muted-foreground)}.vs-hero-chip .r svg{height:.75rem;width:.75rem;color:var(--gold);fill:var(--gold)}.vs-hero-chip-1{left:7%;top:30%}.vs-hero-chip-2{right:8%;top:24%}.vs-hero-chip-3{right:16%;bottom:16%;border-radius:9999px;padding:.5rem 1rem .5rem .5rem;animation-delay:2.2s}.vs-hero-chip-3 .inner{display:flex;align-items:center;gap:.5rem}.vs-hero-chip-3 .ico{display:grid;place-items:center;height:1.75rem;width:1.75rem;border-radius:9999px;background:#2317761a;color:var(--primary)}.vs-hero-chip-3 .ico svg{height:.875rem;width:.875rem}.vs-hero-chip-3 .t{font-size:.75rem;font-weight:600}.vs-searchbox{position:relative}.vs-searchbox input{width:100%;height:3.25rem;border-radius:var(--vs-radius-xl);border:1px solid var(--input);background:color-mix(in oklab,var(--card) 70%,transparent);padding:0 3.25rem 0 3rem;font-size:.9375rem;color:var(--foreground);box-shadow:var(--shadow-md);transition:border-color .2s ease,box-shadow .2s ease}.vs-searchbox input::placeholder{color:var(--muted-foreground)}.vs-searchbox input:focus{outline:none;border-color:var(--ring);box-shadow:0 0 0 3px #2317761f}.vs-searchbox .mag{position:absolute;left:1rem;top:50%;transform:translateY(-50%);height:1.1rem;width:1.1rem;color:var(--muted-foreground);pointer-events:none}.vs-searchbox .go{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);height:2.25rem;width:2.25rem;display:grid;place-items:center;border-radius:var(--vs-radius-lg);border:none;background:var(--primary);color:var(--primary-foreground);cursor:pointer}.vs-searchbox .go:hover{opacity:.88}.vs-searchbox .go svg{height:1rem;width:1rem}.vs-stars{position:relative;display:inline-flex;align-items:center}.vs-stars .row{display:flex;gap:.125rem;color:color-mix(in oklab,var(--muted-foreground) 40%,transparent)}.vs-stars .fill{position:absolute;inset:0;display:flex;gap:.125rem;overflow:hidden;color:var(--rating)}.vs-stars .fill svg,.vs-stars .row svg{flex-shrink:0}.vs-stars svg{height:.875rem;width:.875rem;fill:currentColor}.vs-rating-badge{display:flex;align-items:center;gap:.5rem}.vs-rating-badge .num{display:grid;place-items:center;height:2.25rem;width:2.25rem;border-radius:var(--vs-radius-lg);background:var(--primary);color:var(--primary-foreground);font-size:.875rem;font-weight:700}.vs-rating-badge .lab{display:flex;flex-direction:column;line-height:1.2}.vs-rating-badge .lab .k{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--muted-foreground)}.vs-rating-badge .lab .v{font-size:.875rem;font-weight:600}.vs-rating-badge .lab .v span{font-weight:400;color:var(--muted-foreground)}.vs-rating-bars{display:flex;flex-direction:column;gap:1rem}.vs-rating-bar .top{display:flex;align-items:center;justify-content:space-between;font-size:.875rem;margin-bottom:.375rem}.vs-rating-bar .top .l{font-weight:500}.vs-rating-bar .top .w{border-radius:var(--vs-radius-md);background:#2317761a;color:var(--primary);padding:.125rem .5rem;font-size:.75rem;font-weight:700;font-variant-numeric:tabular-nums}.vs-rating-bar .track{height:.625rem;border-radius:9999px;background:var(--muted);overflow:hidden}.vs-rating-bar .fill-bar{height:100%;border-radius:9999px;background:linear-gradient(90deg,#231776,#8567fa);transition:width 1s cubic-bezier(.22,1,.36,1)}.vs-rating-bar .top .score{font-variant-numeric:tabular-nums;margin-left:.5rem;color:var(--muted-foreground)}.vs-proscons{display:grid;gap:1rem}@media(min-width:768px){.vs-proscons{grid-template-columns:1fr 1fr}}.vs-proscons-col{border-radius:var(--vs-radius-2xl);border:1px solid var(--border);background:var(--card);padding:1.25rem 1.5rem}.vs-proscons-col h3{display:flex;align-items:center;gap:.5rem;font-size:.9375rem;font-weight:700}.vs-proscons-col h3 svg{height:1.125rem;width:1.125rem}.vs-proscons-col.pros h3 svg{color:var(--success)}.vs-proscons-col.cons h3 svg{color:var(--destructive)}.vs-proscons-col ul{margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.vs-proscons-col li{display:flex;gap:.625rem;font-size:.875rem;line-height:1.5;color:color-mix(in oklab,var(--foreground) 80%,transparent);list-style:none}.vs-proscons-col li .dot{margin-top:.3rem;height:.5rem;width:.5rem;flex-shrink:0;border-radius:9999px}.vs-proscons-col.pros .dot{background:var(--success)}.vs-proscons-col.cons .dot{background:var(--destructive)}.vs-trust{position:relative;overflow:hidden;border-radius:var(--vs-radius-3xl);border:1px solid var(--border);background:var(--night);color:#fff;padding:2rem}@media(min-width:640px){.vs-trust{padding:3rem}}.vs-trust .decor{position:absolute;inset:0;pointer-events:none}.vs-trust .decor .stars{position:absolute;inset:0;opacity:.7}.vs-trust .decor .glow-1{position:absolute;right:-5rem;top:-6rem;height:18rem;width:18rem;border-radius:9999px;background:#6741ca40;filter:blur(64px)}.vs-trust .decor .glow-2{position:absolute;left:-4rem;bottom:-6rem;height:18rem;width:18rem;border-radius:9999px;background:#e4ad3c26;filter:blur(64px)}.vs-trust .decor .ring{position:absolute;left:-4rem;bottom:-30%;height:24rem;width:24rem;border-radius:9999px;border:1px solid rgb(255 255 255 / 7%)}.vs-trust .inner{position:relative}.vs-trust .gold-eyebrow{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--gold)}.vs-trust h2{margin-top:.75rem;max-width:36rem;font-family:var(--font-display);font-size:1.875rem;font-weight:600;letter-spacing:-.01em}@media(min-width:640px){.vs-trust h2{font-size:2.25rem}}.vs-trust .lede{margin-top:1rem;max-width:42rem;font-size:.875rem;line-height:1.75;color:#ffffffb3}@media(min-width:640px){.vs-trust .lede{font-size:1rem}}.vs-trust .pillars{margin-top:2.25rem;display:grid;gap:1rem}@media(min-width:640px){.vs-trust .pillars{grid-template-columns:repeat(3,1fr)}}.vs-trust .pillar{border-radius:var(--vs-radius-2xl);border:1px solid rgb(255 255 255 / 10%);background:#ffffff0a;padding:1.25rem;backdrop-filter:blur(4px)}.vs-trust .pillar svg{height:1.5rem;width:1.5rem;color:var(--gold)}.vs-trust .pillar h3{margin-top:.75rem;font-size:.875rem;font-weight:700}.vs-trust .pillar p{margin-top:.375rem;font-size:.8125rem;line-height:1.25rem;color:#fff9}.vs-trust .pillar a,.vs-trust .lede a{color:var(--gold);text-decoration:underline;text-underline-offset:2px}.vs-cat-card{display:flex;flex-direction:column;border-radius:var(--vs-radius-2xl);border:1px solid var(--border);background:var(--card);padding:1.5rem;box-shadow:var(--shadow-sm);transition:transform .3s ease,border-color .2s ease,box-shadow .3s ease}.vs-cat-card:hover{transform:translateY(-2px);border-color:#23177666;box-shadow:var(--shadow-md)}.vs-cat-card .top{display:flex;align-items:center;justify-content:space-between}.vs-cat-card .ico{display:grid;place-items:center;height:2.75rem;width:2.75rem;border-radius:var(--vs-radius-xl);background:#2317761a;color:var(--primary);transition:background-color .25s ease,color .25s ease}.vs-cat-card:hover .ico{background:var(--primary);color:var(--primary-foreground)}.vs-cat-card .ico svg{height:1.25rem;width:1.25rem}.vs-cat-card .count{border-radius:9999px;background:var(--muted);padding:.25rem .625rem;font-size:.75rem;font-weight:600;color:var(--muted-foreground);font-variant-numeric:tabular-nums}.vs-cat-card h3{margin-top:1rem;font-size:1.125rem;font-weight:600;letter-spacing:-.01em}.vs-cat-card:hover h3{color:var(--primary)}.vs-cat-card .desc{margin-top:.375rem;font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}.vs-cat-card .subs{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.375rem}.vs-cat-card .sub{border-radius:9999px;border:1px solid var(--border);background:var(--background);padding:.25rem .625rem;font-size:.6875rem;font-weight:500;color:var(--muted-foreground)}.vs-method-strip{position:relative;overflow:hidden;border-radius:var(--vs-radius-3xl);border:1px solid var(--border);background:var(--surface);padding:1.5rem}@media(min-width:640px){.vs-method-strip{padding:2.5rem}}.vs-method-grid{display:grid;align-items:center;gap:2rem}@media(min-width:1024px){.vs-method-grid{grid-template-columns:2fr 3fr}}.vs-method-grid .badge-line{display:inline-flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--primary)}.vs-method-grid .badge-line svg{height:1rem;width:1rem}.vs-method-grid h2{margin-top:.5rem;font-family:var(--font-display);font-size:1.875rem;font-weight:600;letter-spacing:-.01em}.vs-method-grid .txt p{margin-top:.75rem;font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}.vs-rubric-list{display:grid;gap:.75rem}@media(min-width:640px){.vs-rubric-list{grid-template-columns:repeat(2,1fr)}}.vs-rubric-row{display:flex;align-items:center;justify-content:space-between;border-radius:var(--vs-radius-xl);background:var(--card);padding:.75rem 1rem;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.vs-rubric-row .l{font-size:.875rem;font-weight:500}.vs-rubric-row .w{border-radius:var(--vs-radius-md);background:#2317761a;color:var(--primary);padding:.125rem .5rem;font-size:.75rem;font-weight:700;font-variant-numeric:tabular-nums}.vs-page-band{border-bottom:1px solid var(--border);background:var(--surface);padding-block:2rem}.vs-page-band h1{font-size:1.875rem;font-weight:700;letter-spacing:-.01em}@media(min-width:640px){.vs-page-band h1{font-size:2.25rem}}.vs-page-band .h-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.vs-page-band .h-row .ico{display:grid;place-items:center;height:3rem;width:3rem;border-radius:var(--vs-radius-xl);background:#2317761a;color:var(--primary)}.vs-page-band .h-row .ico svg{height:1.5rem;width:1.5rem}.vs-page-band .h-row .year{color:var(--muted-foreground)}.vs-page-band .desc{margin-top:1rem;max-width:42rem;font-size:.9375rem;line-height:1.75;color:var(--muted-foreground)}.vs-page-band .counts{margin-top:.5rem;font-size:.875rem;color:var(--muted-foreground)}.vs-page-band .counts b{color:var(--foreground);font-weight:600}.vs-sub-pills{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.5rem}.vs-sub-pill{border-radius:9999px;border:1px solid var(--border);background:var(--card);padding:.375rem .875rem;font-size:.875rem;font-weight:500;transition:border-color .2s ease,background-color .2s ease}.vs-sub-pill:hover{border-color:#23177666;background:var(--accent)}.vs-sub-pill .n{margin-left:.375rem;font-size:.75rem;color:var(--muted-foreground);font-variant-numeric:tabular-nums}.vs-breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;font-size:.8125rem;color:var(--muted-foreground)}.vs-breadcrumbs a:hover{color:var(--primary)}.vs-breadcrumbs .sep{opacity:.5}.vs-breadcrumbs .cur{color:var(--foreground);font-weight:500}.vs-page-body{padding-block:2.5rem;display:flex;flex-direction:column;gap:3.5rem}.vs-section-title{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;font-size:1.125rem;font-weight:700}.vs-section-title svg{height:1.25rem;width:1.25rem}.vs-section-title .gold{color:var(--rating)}.vs-section-title .primary{color:var(--primary)}.vs-detail{display:grid;gap:2.5rem;padding-block:2.5rem}@media(min-width:1024px){.vs-detail{grid-template-columns:2fr 1fr}}.vs-detail-main{display:flex;flex-direction:column;gap:2.5rem;min-width:0}.vs-detail-side{display:flex;flex-direction:column;gap:1.5rem}.vs-detail-header{display:flex;flex-wrap:wrap;align-items:flex-start;gap:1.25rem}.vs-detail-header .h-main{min-width:0;flex:1}.vs-detail-header h1{font-size:1.875rem;font-weight:700;letter-spacing:-.01em}@media(min-width:640px){.vs-detail-header h1{font-size:2.25rem}}.vs-detail-header .tagline{margin-top:.25rem;font-size:.9375rem;color:var(--muted-foreground)}.vs-detail-header .meta-row{margin-top:.75rem;display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;font-size:.875rem;color:var(--muted-foreground)}.vs-detail-cta-row{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}.vs-panel{border-radius:var(--vs-radius-2xl);border:1px solid var(--border);background:var(--card);padding:1.5rem;box-shadow:var(--shadow-sm)}.vs-panel h2{font-size:1.125rem;font-weight:700;margin-bottom:.75rem}.vs-panel .p-body{line-height:1.75;color:color-mix(in oklab,var(--foreground) 90%,transparent)}.vs-info-grid{display:grid;gap:1rem 2rem;margin-top:1.25rem}@media(min-width:640px){.vs-info-grid{grid-template-columns:1fr 1fr}}.vs-info-item{display:flex;align-items:flex-start;gap:.75rem}.vs-info-item svg{margin-top:.125rem;height:1rem;width:1rem;flex-shrink:0;color:var(--primary)}.vs-info-item dt{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--muted-foreground)}.vs-info-item dd{margin:.125rem 0 0;font-size:.875rem;font-weight:500}.vs-info-item dd a:hover{color:var(--primary)}.vs-side-box{border-radius:var(--vs-radius-2xl);border:1px solid var(--border);background:var(--card);padding:1.5rem;box-shadow:var(--shadow-sm)}.vs-side-box .box-label{font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--muted-foreground)}.vs-side-box .rows{margin-top:.75rem;display:flex;flex-direction:column;gap:.5rem;font-size:.875rem}.vs-side-box .rows .r{display:flex;justify-content:space-between;gap:1rem}.vs-side-box .rows .k{color:var(--muted-foreground)}.vs-side-box .rows .v{font-weight:600}.vs-aff-note{margin-top:.75rem;text-align:center;font-size:.6875rem;line-height:1rem;color:var(--muted-foreground)}.vs-aff-note a{text-decoration:underline;text-underline-offset:2px}.vs-related-tools ul{margin:1rem 0 0;padding:0;list-style:none}.vs-related-tools li+li{border-top:1px solid var(--border)}.vs-related-tools li a{display:flex;align-items:center;gap:.75rem;padding-block:.75rem}.vs-related-tools li a .t-name{min-width:0;flex:1}.vs-related-tools li a .t-name .n{font-size:.875rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vs-related-tools li a:hover .t-name .n{color:var(--primary)}.vs-related-tools li a .t-name .c{font-size:.75rem;color:var(--muted-foreground)}.vs-related-articles ul{margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.75rem;list-style:none}.vs-related-articles li a{display:flex;align-items:flex-start;gap:.75rem}.vs-related-articles .tag{margin-top:.125rem;flex-shrink:0;border-radius:var(--vs-radius-md);background:var(--muted);padding:.125rem .5rem;font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground)}.vs-related-articles .t{font-size:.875rem;font-weight:500;line-height:1.5}.vs-related-articles li a:hover .t{color:var(--primary)}.vs-dotted-list{margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:1rem;list-style:none}.vs-dotted-list li{display:flex;align-items:flex-start;gap:.75rem}.vs-dotted-list .dot{margin-top:.375rem;height:.5rem;width:.5rem;flex-shrink:0;border-radius:9999px;background:var(--gold)}.vs-dotted-list a.n{font-size:.875rem;font-weight:600}.vs-dotted-list a.n:hover{color:var(--primary)}.vs-dotted-list .c{font-size:.75rem;color:var(--muted-foreground)}.vs-dotted-list .d{font-size:.75rem;font-weight:500;color:var(--success);display:inline-flex;align-items:center;gap:.375rem}.vs-dotted-list .d svg{height:.875rem;width:.875rem}.vs-link-rows{display:flex;flex-direction:column;gap:.75rem}.vs-link-rows a{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-radius:var(--vs-radius-xl);border:1px solid var(--border);background:var(--card);padding:1rem;transition:border-color .2s ease}.vs-link-rows a:hover{border-color:#23177666}.vs-link-rows .t{font-weight:600}.vs-link-rows .go{font-size:.875rem;color:var(--primary);white-space:nowrap}.vs-faq{display:flex;flex-direction:column;gap:.75rem}.vs-faq-item{border:1px solid var(--border);border-radius:var(--vs-radius-xl);background:var(--card);overflow:hidden}.vs-faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;font-size:.9375rem;font-weight:600;cursor:pointer;list-style:none}.vs-faq-item summary::-webkit-details-marker{display:none}.vs-faq-item summary:hover{color:var(--primary)}.vs-faq-item summary .chev{height:1rem;width:1rem;flex-shrink:0;color:var(--muted-foreground);transition:transform .25s ease}.vs-faq-item[open] summary .chev{transform:rotate(180deg)}.vs-faq-item .a{padding:0 1.25rem 1rem;font-size:.875rem;line-height:1.625rem;color:var(--muted-foreground)}.vs-compare-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--vs-radius-2xl);background:var(--card);box-shadow:var(--shadow-sm)}table.vs-compare-table{width:100%;border-collapse:collapse;font-size:.875rem;min-width:34rem}.vs-compare-table th,.vs-compare-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}.vs-compare-table thead th{background:var(--surface);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground)}.vs-compare-table tbody tr:last-child th,.vs-compare-table tbody tr:last-child td{border-bottom:none}.vs-compare-table .row-label{font-weight:600;color:var(--muted-foreground);white-space:nowrap}.vs-compare-table .winner{color:var(--success);font-weight:700}.vs-winner-row{display:flex;align-items:flex-start;gap:.75rem;border:1px solid var(--border);border-radius:var(--vs-radius-xl);background:var(--card);padding:.875rem 1rem;font-size:.875rem}.vs-winner-row .cat{font-weight:600;min-width:9rem}.vs-winner-row .chip{border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;font-weight:700;background:var(--accent);color:var(--accent-foreground);white-space:nowrap}.vs-winner-row .chip.a,.vs-winner-row .chip.b{background:#399d571f;color:var(--success)}.vs-winner-row .note{color:var(--muted-foreground)}.vs-prose{line-height:1.75;color:color-mix(in oklab,var(--foreground) 90%,transparent)}.vs-prose p{margin-top:1rem}.vs-prose p:first-child{margin-top:0}.vs-prose h2{font-size:1.375rem;font-weight:700;margin-top:2.25rem;letter-spacing:-.01em}.vs-prose h3{font-size:1.0625rem;font-weight:700;margin-top:1.75rem}.vs-prose ul,.vs-prose ol{margin:1rem 0 0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.375rem}.vs-prose a{color:var(--primary);text-decoration:underline;text-underline-offset:3px}.vs-prose blockquote{margin:1.25rem 0 0;border-left:3px solid oklch(.78 .14 82 / 60%);padding:.25rem 0 .25rem 1rem;color:var(--muted-foreground);font-style:italic}.vs-verdict{border-radius:var(--vs-radius-2xl);border:1px solid oklch(.78 .14 82 / 40%);background:linear-gradient(to bottom right,oklch(.78 .14 82 / 7%),transparent 60%);padding:1.5rem}.vs-verdict .k{display:inline-flex;align-items:center;gap:.375rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--gold-foreground)}.vs-verdict .k svg{height:.875rem;width:.875rem;color:var(--gold)}.dark .vs-verdict .k{color:var(--gold)}.vs-verdict p{margin-top:.5rem;line-height:1.75}.vs-split{display:grid;gap:1rem}@media(min-width:768px){.vs-split{grid-template-columns:1fr 1fr}}.vs-split .col{border-radius:var(--vs-radius-2xl);border:1px solid var(--border);background:var(--card);padding:1.25rem}.vs-split .col h3{font-size:.9375rem;font-weight:700}.vs-split .col ul{margin:.625rem 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.375rem}.vs-split .col li{display:flex;gap:.5rem;font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}.vs-split .col li svg{margin-top:.2rem;height:.875rem;width:.875rem;flex-shrink:0;color:var(--primary)}.vs-feature-grid{display:grid;gap:1rem}@media(min-width:640px){.vs-feature-grid{grid-template-columns:repeat(2,1fr)}}.vs-feature-card{border:1px solid var(--border);border-radius:var(--vs-radius-2xl);background:var(--card);padding:1.25rem;box-shadow:var(--shadow-sm)}.vs-feature-card h3{font-size:.9375rem;font-weight:700}.vs-feature-card p{margin-top:.375rem;font-size:.875rem;line-height:1.5rem;color:var(--muted-foreground)}.vs-feature-card .price{font-size:1.125rem;font-weight:700;font-variant-numeric:tabular-nums}.vs-feature-card .plan{font-size:.875rem;font-weight:600}.vs-feature-card .note{font-size:.75rem;color:var(--muted-foreground);margin-top:.25rem}.vs-toc{border:1px solid var(--border);border-radius:var(--vs-radius-2xl);background:var(--card);padding:1.25rem 1.5rem}.vs-toc .k{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted-foreground)}.vs-toc ol{margin:.625rem 0 0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.375rem;font-size:.875rem}.vs-toc a{color:color-mix(in oklab,var(--foreground) 75%,transparent)}.vs-toc a:hover{color:var(--primary)}.vs-podium{display:grid;gap:1rem}@media(min-width:1024px){.vs-podium{grid-template-columns:repeat(3,1fr)}}.vs-podium .pick{border-radius:var(--vs-radius-2xl);border:1px solid var(--border);background:var(--card);padding:1.25rem;box-shadow:var(--shadow-sm)}.vs-podium .pick .medal{display:inline-flex;align-items:center;gap:.375rem;border-radius:9999px;padding:.25rem .75rem;font-size:.75rem;font-weight:700;background:#e4ad3c26;color:var(--gold-foreground)}.dark .vs-podium .pick .medal{color:var(--gold)}.vs-podium .pick .medal svg{height:.875rem;width:.875rem}.vs-podium .pick h3{margin-top:.625rem;font-size:1rem;font-weight:700}.vs-podium .pick h3 a:hover{color:var(--primary)}.vs-podium .pick p{margin-top:.375rem;font-size:.8125rem;line-height:1.375rem;color:var(--muted-foreground)}.vs-footer{position:relative;margin-top:auto;overflow:hidden;background:var(--night);color:var(--night-text)}.vs-footer .decor{position:absolute;inset:0;pointer-events:none}.vs-footer .decor .stars{position:absolute;inset:0;opacity:.7}.vs-footer .decor .glow-1{position:absolute;top:-10rem;left:25%;height:24rem;width:24rem;border-radius:9999px;background:#6741ca26;filter:blur(64px)}.vs-footer .decor .glow-2{position:absolute;bottom:-12rem;right:8%;height:24rem;width:24rem;border-radius:9999px;background:#e4ad3c1a;filter:blur(64px)}.vs-footer .decor .orbit{position:absolute;right:-6rem;top:-6rem;height:20rem;width:20rem;border-radius:9999px;border:1px solid rgb(255 255 255 / 6%)}.vs-footer .decor .orbit:before{content:"";position:absolute;left:15%;top:15%;height:.375rem;width:.375rem;border-radius:9999px;background:#e4ad3c7f}.vs-footer .decor .hairline{position:absolute;inset-inline:0;top:0;height:1px;background:linear-gradient(90deg,transparent,oklch(.62 .21 292 / 50%),transparent)}.vs-footer .inner{position:relative;padding-block:4rem}.vs-footer-grid{display:grid;gap:3rem}@media(min-width:1024px){.vs-footer-grid{grid-template-columns:4fr 5fr 3fr}}.vs-footer-brand p.about{margin-top:1.25rem;max-width:24rem;font-size:.875rem;line-height:1.5rem;color:#ffffffb3}.vs-footer-trust{margin-top:1.5rem;display:flex;flex-direction:column;gap:.625rem}.vs-footer-trust p{display:flex;align-items:center;gap:.625rem;font-size:.8125rem;color:#ffffffbf}.vs-footer-trust svg{height:1rem;width:1rem;flex-shrink:0;color:var(--gold)}.vs-footer .newsletter-label{margin-top:1.75rem;margin-bottom:.75rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--gold)}.vs-footer h2.col-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#ffffff7f}.vs-footer-cats{margin-top:1.25rem;display:grid;grid-template-columns:repeat(2,1fr);gap:0 1.5rem}.vs-footer-cat{margin-bottom:1.25rem}.vs-footer-cat>a{display:inline-flex;align-items:center;gap:.25rem;font-size:.875rem;font-weight:600;color:#ffffffe5;transition:color .2s ease}.vs-footer-cat>a:hover{color:var(--gold)}.vs-footer-cat>a .arr{height:.75rem;width:.75rem;opacity:0;transform:translate(-.25rem);transition:all .2s ease}.vs-footer-cat>a:hover .arr{opacity:1;transform:none}.vs-footer-cat ul{margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.375rem;list-style:none}.vs-footer-cat ul a{font-size:.8125rem;color:#ffffff8c;transition:color .2s ease}.vs-footer-cat ul a:hover{color:#fff}.vs-footer-pages ul{margin:1.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem;list-style:none}.vs-footer-pages ul a{font-size:.8125rem;color:#ffffff8c;transition:color .2s ease}.vs-footer-pages ul a:hover{color:#fff}.vs-footer-pages .col-label.second{margin-top:1.75rem}.vs-footer-bottom{margin-top:3.5rem;display:flex;flex-direction:column;gap:.75rem;border-top:1px solid rgb(255 255 255 / 10%);padding-top:1.75rem}@media(min-width:640px){.vs-footer-bottom{flex-direction:row;align-items:center;justify-content:space-between}}.vs-footer-bottom p{font-size:.75rem;color:#ffffff8c}.vs-footer-bottom a{text-decoration:underline;text-underline-offset:2px}.vs-footer-bottom a:hover{color:#fff}.vs-newsletter{display:flex;gap:.5rem;max-width:24rem}.vs-newsletter input{flex:1;min-width:0;height:2.5rem;border-radius:var(--vs-radius-lg);border:1px solid rgb(255 255 255 / 15%);background:#ffffff14;padding:0 .875rem;font-size:.875rem;color:#fff;transition:border-color .2s ease}.vs-newsletter input::placeholder{color:#ffffff73}.vs-newsletter input:focus{outline:none;border-color:#8d64f7b3}.vs-newsletter-section{position:relative;overflow:hidden;border-top:1px solid var(--border)}.vs-newsletter-section .inner{position:relative;display:flex;flex-direction:column;align-items:center;padding-block:5rem;text-align:center}.vs-newsletter-section h2{margin-top:1.25rem;font-family:var(--font-display);font-size:1.875rem;font-weight:600;letter-spacing:-.01em}@media(min-width:640px){.vs-newsletter-section h2{font-size:2.25rem}}.vs-newsletter-section .sub{margin:1rem auto 0;max-width:32rem;font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}@media(min-width:640px){.vs-newsletter-section .sub{font-size:1rem}}.vs-newsletter-section .vs-newsletter{margin:2rem auto 0;max-width:28rem}.vs-newsletter-section .vs-newsletter input{border-color:var(--input);background:color-mix(in oklab,var(--card) 70%,transparent);color:var(--foreground)}.vs-newsletter-section .vs-newsletter input::placeholder{color:var(--muted-foreground)}.vs-search-pills{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.25rem}.vs-search-pill{border-radius:9999px;border:1px solid var(--border);background:var(--card);padding:.375rem .875rem;font-size:.8125rem;font-weight:500;color:var(--muted-foreground);transition:all .2s ease}.vs-search-pill:hover{border-color:#23177666;color:var(--foreground)}.vs-search-pill.is-active{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}.vs-search-pill .cnt{font-variant-numeric:tabular-nums;opacity:.7;margin-left:.25rem}.vs-search-result{display:flex;flex-direction:column;gap:.5rem;padding:1rem}.vs-search-result .head{display:flex;align-items:center;gap:.5rem}.vs-search-result .head .meta{font-size:.75rem;color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vs-search-result h3{font-size:.9375rem;font-weight:600;line-height:1.375}.vs-search-result .exc{font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}.vs-search-empty{border-radius:var(--vs-radius-2xl);border:1px dashed var(--border);padding:3rem 1.5rem;text-align:center}.vs-search-empty h2{font-size:1.25rem;font-weight:700}.vs-search-empty p{margin-top:.5rem;font-size:.875rem;color:var(--muted-foreground)}.vs-static-head{border-bottom:1px solid var(--border);background:var(--surface);padding-block:2.5rem}.vs-static-head h1{font-family:var(--font-display);font-size:2.25rem;font-weight:600;letter-spacing:-.015em;max-width:46rem}@media(min-width:640px){.vs-static-head h1{font-size:2.75rem}}.vs-static-head .lede{margin-top:1rem;max-width:42rem;font-size:1.0625rem;line-height:1.75;color:var(--muted-foreground)}.vs-static-body{padding-block:2.5rem 4rem;max-width:52rem}.vs-static-body .vs-prose h2{margin-top:3rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.vs-value-grid{display:grid;gap:1rem;margin-top:1.5rem}@media(min-width:640px){.vs-value-grid{grid-template-columns:repeat(2,1fr)}}.vs-value-card{border-radius:var(--vs-radius-2xl);border:1px solid var(--border);background:var(--card);padding:1.25rem;box-shadow:var(--shadow-sm)}.vs-value-card .h{display:flex;align-items:center;gap:.625rem}.vs-value-card .ico{display:grid;place-items:center;height:2.25rem;width:2.25rem;border-radius:var(--vs-radius-lg);background:#2317761a;color:var(--primary)}.vs-value-card .ico svg{height:1.125rem;width:1.125rem}.vs-value-card h3{font-size:.9375rem;font-weight:700}.vs-value-card p{margin-top:.625rem;font-size:.875rem;line-height:1.5rem;color:var(--muted-foreground)}.vs-rubric-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--vs-radius-2xl);background:var(--card);box-shadow:var(--shadow-sm);margin-top:1.25rem}table.vs-rubric-table{width:100%;border-collapse:collapse;font-size:.875rem;min-width:30rem}.vs-rubric-table th,.vs-rubric-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--border)}.vs-rubric-table thead th{background:var(--surface);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground)}.vs-rubric-table tbody tr:last-child th,.vs-rubric-table tbody tr:last-child td{border-bottom:none}.vs-steps{counter-reset:step;display:flex;flex-direction:column;gap:1.25rem;margin-top:1.25rem}.vs-step{display:flex;gap:1rem}.vs-step .n{counter-increment:step;display:grid;place-items:center;flex-shrink:0;height:2rem;width:2rem;border-radius:9999px;background:#2317761a;color:var(--primary);font-weight:700;font-size:.875rem}.vs-step .n:before{content:counter(step)}.vs-step h3{font-size:.9375rem;font-weight:700}.vs-step p{margin-top:.25rem;font-size:.875rem;line-height:1.5rem;color:var(--muted-foreground)}.vs-contact-grid{display:grid;gap:2.5rem}@media(min-width:1024px){.vs-contact-grid{grid-template-columns:3fr 2fr}}.vs-form{display:flex;flex-direction:column;gap:1rem}.vs-field{display:flex;flex-direction:column;gap:.375rem}.vs-field label{font-size:.8125rem;font-weight:600}.vs-field label .req{color:var(--destructive)}.vs-field input,.vs-field select,.vs-field textarea{border-radius:var(--vs-radius-lg);border:1px solid var(--input);background:var(--background);padding:.625rem .875rem;font-size:.875rem;font-family:inherit;color:var(--foreground);transition:border-color .2s ease,box-shadow .2s ease;width:100%}.vs-field textarea{min-height:8rem;resize:vertical}.vs-field input:focus,.vs-field select:focus,.vs-field textarea:focus{outline:none;border-color:var(--ring);box-shadow:0 0 0 3px #2317761f}.vs-field .err{font-size:.75rem;color:var(--destructive);display:none}.vs-field.has-error input,.vs-field.has-error select,.vs-field.has-error textarea{border-color:var(--destructive)}.vs-field.has-error .err{display:block}.vs-info-list{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.vs-info-list .item{display:flex;align-items:flex-start;gap:.75rem;font-size:.875rem;line-height:1.5rem}.vs-info-list svg{margin-top:.2rem;height:1rem;width:1rem;flex-shrink:0;color:var(--primary)}.vs-info-list .k{font-weight:600}.vs-info-list .v{color:var(--muted-foreground)}.vs-toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%) translateY(150%);z-index:100;display:flex;align-items:center;gap:.625rem;border-radius:var(--vs-radius-xl);background:var(--foreground);color:var(--background);padding:.75rem 1.25rem;font-size:.875rem;font-weight:500;box-shadow:0 20px 40px #00000040;transition:transform .4s cubic-bezier(.22,1,.36,1);max-width:min(92vw,30rem)}.vs-toast.show{transform:translate(-50%) translateY(0)}.vs-toast svg{height:1rem;width:1rem;flex-shrink:0;color:#47b777}.vs-toast.is-error svg{color:oklch(.704 .191 22.216)}.vs-404{text-align:center;padding-block:6rem;position:relative}.vs-404 .code{font-family:var(--font-display);font-size:clamp(5rem,14vw,9rem);font-weight:600;line-height:1}.vs-404 h1{margin-top:1rem;font-size:1.5rem;font-weight:700}.vs-404 p{margin-top:.75rem;color:var(--muted-foreground);font-size:.9375rem}.vs-404 .actions{margin-top:2rem;display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.vs-pagination{display:flex;gap:.375rem;justify-content:center;margin-top:2.5rem}.vs-pagination .page-numbers{display:inline-grid;place-items:center;min-width:2.25rem;height:2.25rem;border-radius:var(--vs-radius-lg);border:1px solid var(--border);padding-inline:.5rem;font-size:.875rem;font-weight:500}.vs-pagination .page-numbers.current{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}.vs-pagination .page-numbers:hover:not(.current){background:var(--accent)}.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);white-space:nowrap;border:0}.vs-prose .wp-caption{max-width:100%}.vs-prose .wp-caption-text,.vs-prose figcaption{font-size:.8125rem;color:var(--muted-foreground);text-align:center;margin-top:.5rem}.vs-prose img{border-radius:var(--vs-radius-lg)}.vs-prose .alignright{float:right;margin:.5rem 0 1rem 1.5rem}.vs-prose .alignleft{float:left;margin:.5rem 1.5rem 1rem 0}.vs-prose .aligncenter{display:block;margin-inline:auto}.vs-prose .alignwide{width:100%}.vs-prose .wp-block-quote{margin:1.25rem 0;border-left:3px solid oklch(.78 .14 82 / 60%);padding-left:1rem;color:var(--muted-foreground);font-style:italic}.vs-prose table{width:100%;border-collapse:collapse;font-size:.875rem}.vs-prose table th,.vs-prose table td{border:1px solid var(--border);padding:.5rem .75rem;text-align:left}.sticky{position:relative}.wp-caption-text,.bypostauthor,.gallery-caption{font-size:.8125rem}.admin-bar .vs-header{top:32px}@media screen and (max-width:782px){.admin-bar .vs-header{top:46px}}[data-vs-theme-toggle] .if-dark,.dark [data-vs-theme-toggle] .if-light{display:none}.dark [data-vs-theme-toggle] .if-dark{display:inline-grid}.vs-searchform-inline{position:relative}.vs-searchform-inline input{width:100%;height:2.75rem;border-radius:var(--vs-radius-lg);border:1px solid var(--input);background:var(--background);padding:0 2.75rem 0 .875rem;font-size:.875rem;color:var(--foreground)}.vs-searchform-inline button{position:absolute;right:.25rem;top:.25rem;height:2.25rem;width:2.25rem;display:grid;place-items:center;border:none;border-radius:var(--vs-radius-md);background:transparent;color:var(--muted-foreground);cursor:pointer}.vs-searchform-inline button:hover{color:var(--primary)}.vs-searchform-inline svg{height:1rem;width:1rem}.vs-footer{content-visibility:auto;contain-intrinsic-size:auto 640px}@media(max-width:767px){.vs-aurora-backdrop .orb-1,.vs-aurora-backdrop .orb-2,.vs-aurora-backdrop .orb-3{animation:none;filter:blur(48px)}.vs-aurora-backdrop .ring-1{animation:none}}.vs-article{max-width:46rem}.vs-article-head h1{font-family:var(--font-display);font-size:clamp(1.75rem,1.2rem + 2.4vw,2.75rem);line-height:1.15;margin:.75rem 0 .5rem;letter-spacing:-.015em}.vs-article-head .meta{color:var(--muted-foreground);font-size:.875rem;margin:0}.vs-article-thumb{margin:1.5rem 0;border-radius:var(--vs-radius-xl);overflow:hidden}.vs-article-thumb img{display:block;width:100%;height:auto}.vs-prose{font-size:1.0625rem;line-height:1.75;color:var(--foreground)}.vs-prose h2{font-family:var(--font-display);font-size:1.5rem;margin:2rem 0 .75rem;letter-spacing:-.01em}.vs-prose h3{font-size:1.1875rem;margin:1.5rem 0 .5rem}.vs-prose p{margin:0 0 1.1rem}.vs-prose a{color:var(--primary);text-underline-offset:3px}.vs-prose ul,.vs-prose ol{padding-left:1.5rem;margin:0 0 1.1rem}.vs-prose li{margin-bottom:.4rem}.vs-prose blockquote{border-left:3px solid var(--gold);padding:.25rem 0 .25rem 1.25rem;margin:1.5rem 0;color:var(--muted-foreground);font-style:italic}.vs-prose img{border-radius:var(--vs-radius)}.vs-prose code{background:var(--secondary);border-radius:4px;padding:.1rem .35rem;font-size:.9em}.vs-article-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:2rem}.dark .vs-prose{color:var(--foreground)}
/* ═══════════════════════════════════════════════════════════════════
   v2.1.0 — ICON & LAYOUT HARDENING (fixes giant icons + mobile)
   Root causes fixed: v2.0 emitted <svg> without width/height and
   .vs-tool-logo without a size modifier — browsers default
   unconstrained SVGs to 300x150px. PHP now always emits explicit
   sizes; this CSS is the safety net for every context.
   ═══════════════════════════════════════════════════════════════════ */
.vs-body svg{max-width:100%}
.vs-body img{max-width:100%;height:auto}
.vs-tool-logo{height:2rem;width:2rem;font-size:.75rem;border-radius:var(--vs-radius-lg);overflow:hidden;aspect-ratio:1}
.vs-card-meta svg{height:.75rem;width:.75rem;flex-shrink:0}
.vs-card-eyebrow svg{height:.75rem;width:.75rem;flex-shrink:0}
.vs-card-eyebrow{display:flex;align-items:center;gap:.375rem}
.vs-pill svg{height:.75rem;width:.75rem;flex-shrink:0}
.vs-eyebrow svg{height:.75rem;width:.75rem;flex-shrink:0}
.vs-chip svg{height:.875rem;width:.875rem;flex-shrink:0}
.vs-section-title svg{height:1.25rem;width:1.25rem;flex-shrink:0}
.vs-section-title{display:flex;align-items:center;gap:.5rem}
.meta-row svg{height:.875rem;width:.875rem;flex-shrink:0}
.meta-row .d{display:flex;align-items:center;gap:.375rem}
.vs-info-item>svg{height:1rem;width:1rem;flex-shrink:0;color:var(--primary)}
.vs-info-grid svg{height:1rem;width:1rem;flex-shrink:0;color:var(--primary)}
.vs-btn svg{height:1rem;width:1rem;flex-shrink:0}
.vs-mini-ranks svg{height:.75rem;width:.75rem}
.vs-breadcrumbs svg{height:.75rem;width:.75rem}
.vs-prose svg{height:1rem;width:1rem}
.vs-dropdown-sub svg,.vs-dropdown-all svg{height:.9rem;width:.9rem;flex-shrink:0}
.vs-tool-card-tags svg{height:.75rem;width:.75rem;flex-shrink:0}
h2 svg,h3 svg{flex-shrink:0}
.vs-toast svg{height:1.25rem;width:1.25rem;flex-shrink:0}
.vs-to-top svg{height:1.1rem;width:1.1rem}
/* fluid typography — smoother than 3 fixed steps */
.vs-hero h1{font-size:clamp(2.35rem,7vw,4.5rem)}
.vs-page-band h1{font-size:clamp(1.55rem,4.5vw,2.25rem)}
/* stray-overflow guard */
body{overflow-x:clip}
/* ═══ v2.1 NEW COMPONENTS: scroll progress · back-to-top · count-up ═══ */
.vs-progress{position:fixed;top:0;left:0;height:2px;width:0;background:linear-gradient(90deg,var(--primary),var(--accent),var(--gold));z-index:80;pointer-events:none}
.admin-bar .vs-progress{top:32px}
@media screen and (max-width:782px){.admin-bar .vs-progress{top:46px}}
.vs-to-top{position:fixed;right:1.25rem;bottom:1.25rem;z-index:65;display:inline-grid;place-items:center;height:2.75rem;width:2.75rem;border-radius:9999px;border:1px solid color-mix(in oklab,var(--border) 80%,transparent);background:color-mix(in oklab,var(--card) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--foreground);box-shadow:var(--shadow-lg);opacity:0;transform:translateY(.75rem) scale(.95);pointer-events:none;transition:opacity .25s ease,transform .25s ease;cursor:pointer}
.vs-to-top.is-visible{opacity:1;transform:none;pointer-events:auto}
.vs-to-top:hover{border-color:var(--accent);color:var(--primary)}
.vs-count{font-variant-numeric:tabular-nums}
@media(prefers-reduced-motion:reduce){.vs-progress,.vs-to-top{transition:none}.vs-hero-chip{animation:none!important}}
@media print{.vs-to-top,.vs-progress{display:none}}
/* ═══ v2.1 EDITING: block-editor content + frontend edit hints ═══ */
.vs-prose .alignwide{width:100%;max-width:none}
.vs-prose .alignfull{width:100vw;margin-left:calc(50% - 50vw);max-width:none}
.vs-prose table{display:block;overflow-x:auto;border-collapse:collapse;width:100%}
.vs-prose table th,.vs-prose table td{border:1px solid var(--border);padding:.5rem .75rem;text-align:left;font-size:.875rem}
.vs-prose blockquote{margin:1.5rem 0 0;padding:1rem 1.25rem;border-left:3px solid var(--accent);background:color-mix(in oklab,var(--accent) 6%,transparent);border-radius:var(--vs-radius-lg)}
.vs-prose blockquote p{margin-top:.25rem}
.vs-prose code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875em;background:color-mix(in oklab,var(--foreground) 8%,transparent);padding:.125rem .375rem;border-radius:.375rem}
.vs-prose pre{margin:1.25rem 0 0;padding:1rem 1.25rem;background:color-mix(in oklab,var(--foreground) 6%,transparent);border:1px solid var(--border);border-radius:var(--vs-radius-lg);overflow-x:auto}
.vs-prose pre code{background:transparent;padding:0}
.vs-prose img{border-radius:var(--vs-radius-lg)}
.vs-prose figure{margin:1.5rem 0 0}
.vs-prose figcaption{margin-top:.5rem;font-size:.8125rem;color:var(--muted-foreground);text-align:center}
.vs-edit-hint{display:inline-flex;align-items:center;gap:.5rem;font-size:.8125rem;font-weight:500;color:var(--muted-foreground);text-decoration:none;border:1px dashed var(--border);border-radius:9999px;padding:.375rem .875rem}
.vs-edit-hint:hover{color:var(--primary);border-color:var(--accent)}
.vs-edit-hint svg{height:.875rem;width:.875rem}
/* edit-hint shown only to logged-in users with edit rights — PHP gates it */
/* ═══════════════════════════════════════════════════════════════════
   v2.1.0 — ICON & LAYOUT HARDENING (fixes giant icons + mobile)
   Root causes fixed: v2.0 emitted <svg> without width/height and
   .vs-tool-logo without a size modifier — browsers default
   unconstrained SVGs to 300x150px. PHP now always emits explicit
   sizes; this CSS is the safety net for every context.
   ═══════════════════════════════════════════════════════════════════ */
.vs-body svg{max-width:100%}
.vs-body img{max-width:100%;height:auto}
.vs-tool-logo{height:2rem;width:2rem;font-size:.75rem;border-radius:var(--vs-radius-lg);overflow:hidden;aspect-ratio:1}
.vs-card-meta svg{height:.75rem;width:.75rem;flex-shrink:0}
.vs-card-eyebrow svg{height:.75rem;width:.75rem;flex-shrink:0}
.vs-card-eyebrow{display:flex;align-items:center;gap:.375rem}
.vs-pill svg{height:.75rem;width:.75rem;flex-shrink:0}
.vs-eyebrow svg{height:.75rem;width:.75rem;flex-shrink:0}
.vs-chip svg{height:.875rem;width:.875rem;flex-shrink:0}
.vs-section-title svg{height:1.25rem;width:1.25rem;flex-shrink:0}
.vs-section-title{display:flex;align-items:center;gap:.5rem}
.meta-row svg{height:.875rem;width:.875rem;flex-shrink:0}
.meta-row .d{display:flex;align-items:center;gap:.375rem}
.vs-info-item>svg{height:1rem;width:1rem;flex-shrink:0;color:var(--primary)}
.vs-info-grid svg{height:1rem;width:1rem;flex-shrink:0;color:var(--primary)}
.vs-btn svg{height:1rem;width:1rem;flex-shrink:0}
.vs-mini-ranks svg{height:.75rem;width:.75rem}
.vs-breadcrumbs svg{height:.75rem;width:.75rem}
.vs-prose svg{height:1rem;width:1rem}
.vs-dropdown-sub svg,.vs-dropdown-all svg{height:.9rem;width:.9rem;flex-shrink:0}
.vs-tool-card-tags svg{height:.75rem;width:.75rem;flex-shrink:0}
h2 svg,h3 svg{flex-shrink:0}
.vs-toast svg{height:1.25rem;width:1.25rem;flex-shrink:0}
.vs-to-top svg{height:1.1rem;width:1.1rem}
/* fluid typography — smoother than 3 fixed steps */
.vs-hero h1{font-size:clamp(2.35rem,7vw,4.5rem)}
.vs-page-band h1{font-size:clamp(1.55rem,4.5vw,2.25rem)}
/* stray-overflow guard */
body{overflow-x:clip}
/* ═══ v2.1 NEW COMPONENTS: scroll progress · back-to-top · count-up ═══ */
.vs-progress{position:fixed;top:0;left:0;height:2px;width:0;background:linear-gradient(90deg,var(--primary),var(--accent),var(--gold));z-index:80;pointer-events:none}
.admin-bar .vs-progress{top:32px}
@media screen and (max-width:782px){.admin-bar .vs-progress{top:46px}}
.vs-to-top{position:fixed;right:1.25rem;bottom:1.25rem;z-index:65;display:inline-grid;place-items:center;height:2.75rem;width:2.75rem;border-radius:9999px;border:1px solid color-mix(in oklab,var(--border) 80%,transparent);background:color-mix(in oklab,var(--card) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--foreground);box-shadow:var(--shadow-lg);opacity:0;transform:translateY(.75rem) scale(.95);pointer-events:none;transition:opacity .25s ease,transform .25s ease;cursor:pointer}
.vs-to-top.is-visible{opacity:1;transform:none;pointer-events:auto}
.vs-to-top:hover{border-color:var(--accent);color:var(--primary)}
.vs-count{font-variant-numeric:tabular-nums}
@media(prefers-reduced-motion:reduce){.vs-progress,.vs-to-top{transition:none}.vs-hero-chip{animation:none!important}}
@media print{.vs-to-top,.vs-progress{display:none}}
/* ═══ v2.1 EDITING: block-editor content + frontend edit hints ═══ */
.vs-prose .alignwide{width:100%;max-width:none}
.vs-prose .alignfull{width:100vw;margin-left:calc(50% - 50vw);max-width:none}
.vs-prose table{display:block;overflow-x:auto;border-collapse:collapse;width:100%}
.vs-prose table th,.vs-prose table td{border:1px solid var(--border);padding:.5rem .75rem;text-align:left;font-size:.875rem}
.vs-prose blockquote{margin:1.5rem 0 0;padding:1rem 1.25rem;border-left:3px solid var(--accent);background:color-mix(in oklab,var(--accent) 6%,transparent);border-radius:var(--vs-radius-lg)}
.vs-prose blockquote p{margin-top:.25rem}
.vs-prose code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875em;background:color-mix(in oklab,var(--foreground) 8%,transparent);padding:.125rem .375rem;border-radius:.375rem}
.vs-prose pre{margin:1.25rem 0 0;padding:1rem 1.25rem;background:color-mix(in oklab,var(--foreground) 6%,transparent);border:1px solid var(--border);border-radius:var(--vs-radius-lg);overflow-x:auto}
.vs-prose pre code{background:transparent;padding:0}
.vs-prose img{border-radius:var(--vs-radius-lg)}
.vs-prose figure{margin:1.5rem 0 0}
.vs-prose figcaption{margin-top:.5rem;font-size:.8125rem;color:var(--muted-foreground);text-align:center}
.vs-edit-hint{display:inline-flex;align-items:center;gap:.5rem;font-size:.8125rem;font-weight:500;color:var(--muted-foreground);text-decoration:none;border:1px dashed var(--border);border-radius:9999px;padding:.375rem .875rem}
.vs-edit-hint:hover{color:var(--primary);border-color:var(--accent)}
.vs-edit-hint svg{height:.875rem;width:.875rem}
/* edit-hint shown only to logged-in users with edit rights — PHP gates it */

/* v2.1 final: to-top chevron points up */
.vs-to-top svg{transform:rotate(180deg)}

/* ═══════════════════════════════════════════════════════════════════
   v2.2.0 — TOOL LOGO IMAGES (uploaded via the editor meta box)
   An uploaded logo renders as <img> inside the sized .vs-tool-logo
   wrap; object-fit keeps any aspect ratio inside the square.
   ═══════════════════════════════════════════════════════════════ */
.vs-tool-logo img,.vs-tool-logo .vs-tool-logo-img{width:100%;height:100%;object-fit:cover;display:block;min-width:0}
.vs-tool-logo.vs-tool-logo-imgwrap{background:#e9e6f7;overflow:hidden}
.vs-tool-logo.vs-tool-logo-imgwrap img{border-radius:inherit}

/* ═══════════════ v2.2.1 patch — section spacing & structured comparison blocks ═══════════════ */
/* Homepage "Lists + guides" — was completely unstyled (columns + cards stuck together) */
.vs-lists-guides-grid{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem 3rem;align-items:start}
.vs-lists-guides-grid>div>div:not(.vs-section-head){display:grid;gap:1rem}
.vs-lists-guides-grid .vs-section-head{margin-bottom:1.25rem}
@media(max-width:1023px){.vs-lists-guides-grid{grid-template-columns:1fr;gap:2.5rem}}
/* Comparison "Round by round" rows — container was unstyled (rows touching) */
.vs-winner-rows{display:flex;flex-direction:column;gap:.75rem}
/* Comparison head-to-head card CTA — was touching the card header */
.col-cta{margin-top:1rem}
/* Winner chips: tie variant (a/b already styled) */
.vs-winner-row .chip.tie{background:var(--secondary);color:var(--secondary-foreground)}
/* Feature cards inside key-differences / use-cases grids (uses .vs-feature-card) */
.vs-feature-grid .vs-feature-card h3{margin:0}

/* ══════════════════════════════════════════════════════════════════
   VrindaSphera v2.3 patch — the whole design, editable + responsive
   ══════════════════════════════════════════════════════════════════ */

/* ── Designed article bodies (blocks render the design) ────────── */
.vs-article{max-width:46rem}
.vs-article>*+*{margin-top:1.5rem}
.vs-article .wp-block-group{margin-block:0}
.vs-article .wp-block-group.vs-feature-grid,
.vs-article .wp-block-group.vs-winner-rows{margin-top:1.5rem}
.vs-article h2{scroll-margin-top:6rem}
.vs-article p{line-height:1.75}
.vs-article .wp-block-table{margin-block:1.5rem}
.vs-article .wp-block-table.vs-compare-table{overflow-x:auto;border:1px solid var(--border);border-radius:var(--vs-radius-2xl);background:var(--card);box-shadow:var(--shadow-sm);padding:0}
.vs-article .wp-block-table.vs-compare-table table{width:100%;border-collapse:collapse;font-size:.875rem;margin:0}
.vs-article .wp-block-table.vs-compare-table thead th{background:var(--surface);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground);padding:.75rem 1rem;text-align:left}
.vs-article .wp-block-table.vs-compare-table th,.vs-article .wp-block-table.vs-compare-table td{padding:.7rem 1rem;border-top:1px solid var(--border);text-align:left;vertical-align:top;overflow-wrap:anywhere}
.vs-article .wp-block-table.vs-compare-table .row-label{font-weight:600;color:var(--muted-foreground);white-space:nowrap}
.vs-article .wp-block-button__link{background:var(--primary);color:var(--primary-foreground);border-radius:var(--vs-radius-xl);font-weight:600;padding:.75rem 1.5rem;box-shadow:var(--shadow-sm);transition:transform .2s ease,box-shadow .2s ease}
.vs-article .wp-block-button__link:hover{transform:translateY(-1px)}
.vs-article .wp-block-button.is-style-outline .wp-block-button__link{background:transparent;color:var(--primary);border:1.5px solid var(--primary);box-shadow:none}
/* Ranked list entries (best-tools bodies) — now a real card. */
.vs-list-entry{border:1px solid var(--border);border-radius:var(--vs-radius-2xl);background:var(--card);padding:1.75rem;box-shadow:var(--shadow-sm);margin-top:1.5rem}
.vs-list-entry h2{font-family:var(--font-display);font-size:1.375rem;letter-spacing:-.01em}
.vs-list-entry .wp-block-buttons{margin-top:1rem}
/* Check-lists (who it is for) — check glyphs without inline SVGs. */
.vs-check-list{list-style:none;padding:0;display:grid;gap:.625rem;margin:1rem 0 0}
.vs-check-list li{display:flex;gap:.625rem;align-items:flex-start;line-height:1.6}
.vs-check-list li::before{content:'\2713';flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:1.375rem;height:1.375rem;border-radius:9999px;background:color-mix(in oklab,var(--success) 14%,transparent);color:var(--success);font-size:.75rem;font-weight:700;margin-top:.125rem}
/* Pros/cons list markers for block lists (no inline SVG). */
.vs-proscons-col.pros li::before{content:'\2713';color:var(--success);font-weight:700;flex-shrink:0}
.vs-proscons-col.cons li::before{content:'\2715';color:var(--danger,var(--destructive,#e5484d));font-weight:700;flex-shrink:0}
/* Trust pillars without SVG icons get a gold star glyph. */
.vs-trust .pillar h3::before{content:'\2726';display:block;color:var(--gold);font-size:1.25rem;margin-bottom:.5rem}

/* ── Page-driven homepage (v2.3) ───────────────────────────────── */
.vs-hero-edit{display:flex;flex-direction:column;align-items:center;gap:0}
.vs-hero-edit h1{margin-top:1.75rem;font-family:var(--font-display);font-size:clamp(2.35rem,7vw,4.5rem);font-weight:600;line-height:1.05;letter-spacing:-.015em}
.vs-hero-edit .vs-hero-stats{margin-top:1.25rem}
.vs-ph{display:none}
.vs-home-sections .wp-block-group{max-width:100%}
.vs-method-strip .wp-block-button__link{background:var(--night);color:var(--night-text);border-radius:var(--vs-radius-xl);font-weight:600;padding:.75rem 1.5rem}
.vs-method-strip .wp-block-button.is-style-outline .wp-block-button__link{background:transparent;color:inherit;border:1.5px solid color-mix(in oklab,var(--night-text) 40%,transparent)}
/* Hero chips in page mode keep the floating look. */
.vs-hero .vs-hero-edit~.vs-hero-chips{pointer-events:none}

/* ── Tool logo images: never crop, always fit ──────────────────── */
.vs-tool-logo-img{width:100%;height:100%;object-fit:contain;display:block;min-width:0}
.vs-tool-logo-imgwrap{background:#e9e6f7;overflow:hidden}

/* ── Responsive hardening ──────────────────────────────────────── */
html,body{overflow-x:clip}
.vs-container{min-width:0}
a{overflow-wrap:anywhere}
.vs-winner-row .note{min-width:0}
.vs-searchbox input{min-width:0}
.vs-tool-card-head{flex-wrap:wrap;min-width:0}
.vs-tool-card-score{margin-left:auto}
@media(max-width:639px){
        .vs-winner-row{display:grid;grid-template-columns:1fr;gap:.375rem;padding:.875rem 1rem}
        .vs-winner-row .chip{justify-self:start}
        .vs-winner-row .note{font-size:.8125rem}
        .vs-newsletter{flex-direction:column;max-width:100%;align-items:stretch}
        .vs-newsletter input{width:100%}
        .vs-newsletter .vs-btn{justify-content:center}
        .vs-tool-card-head .vs-tool-card-score{margin-left:0;width:100%}
        .vs-hero-stats{gap:.5rem .75rem;line-height:1.5}
        .vs-detail{padding-block:1.5rem}
        .vs-list-entry{padding:1.25rem}
        .vs-proscons-col{padding:1rem 1.125rem}
        .vs-split .col{padding:1rem 1.125rem}
}
/* Roomier homepage cards (user feedback: spacing felt tight). */
.vs-grid{gap:1.25rem}
.vs-cat-card{padding:1.625rem}
.vs-cat-card h3{margin-top:.875rem}
.vs-cat-card .desc{margin-top:.5rem}
.vs-cat-card .subs{margin-top:1rem}
.vs-side-box{padding:1.625rem}
.vs-feature-card{padding:1.375rem}
.vs-home-sections{gap:5.5rem;padding-block:4.5rem}
@media(max-width:1023px){
        .vs-home-sections{gap:3.5rem;padding-block:3rem}
}
@media(min-width:1024px){
        .vs-grid-4,.vs-grid-5{gap:1.5rem}
}
@media(max-width:1023px){
        .vs-grid{gap:1.125rem}
}

/* ══════════════════════════════════════════════════════════════════
   VrindaSphera v2.4 templates patch — FULL DESIGNED new-post starters
   Only classes that had no rules before are styled here; every other
   block class in the skeletons (vs-compare-table, vs-winner-rows,
   vs-feature-grid/card, vs-split, vs-faq, vs-verdict, vs-check-list,
   vs-proscons, vs-list-entry) already ships in the v2.3 .vs-article
   design system above. Design language unchanged: indigo/violet/gold,
   rounded cards, CSS-variable tokens.
   ══════════════════════════════════════════════════════════════════ */

/* ── CTA rows (the designed button row that closes every skeleton) ── */
.vs-cta-row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-top:1.5rem}
.vs-cta-row .wp-block-button{margin:0}
/* Legacy bestlist entry CTAs (were unstyled since v2.1) get the same row. */
.entry-cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}

/* ── Ranked entries (best-tools skeletons) ──────────────────────── */
/* .vs-rank-entry travels with .vs-list-entry (the styled v2.3 card);
   the alias below keeps it designed even if used alone, and gives the
   legacy .rank-head/.rank-n markup the position bubble it never had. */
.vs-rank-entry{border:1px solid var(--border);border-radius:var(--vs-radius-2xl);background:var(--card);padding:1.75rem;box-shadow:var(--shadow-sm);margin-top:1.5rem}
.rank-head{display:flex;align-items:center;gap:1rem}
.rank-n{display:grid;place-items:center;flex-shrink:0;height:2rem;width:2rem;border-radius:9999px;background:var(--primary);color:var(--primary-foreground);font-size:.875rem;font-weight:700}
/* Mini pros/cons inside ranked entries — tighter variant of the columns. */
.vs-proscons.mini{grid-template-columns:1fr 1fr;gap:.75rem}
.vs-proscons.mini .vs-proscons-col{padding:.875rem 1rem;border-radius:var(--vs-radius-xl)}
.vs-proscons.mini .vs-proscons-col h3{font-size:.8125rem}
.vs-proscons.mini .vs-proscons-col li{font-size:.8125rem}
@media(max-width:639px){
        .vs-proscons.mini{grid-template-columns:1fr}
}

/* ── Quick picks podium (best-tools skeletons) ──────────────────── */
/* CSS counters draw the position chips: they renumber themselves when
   the writer reorders the cards — nothing to edit by hand. */
.vs-quick-picks{counter-reset:vs-pick;display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1.5rem}
.vs-quick-pick{border:1px solid var(--border);border-radius:var(--vs-radius-2xl);background:var(--card);padding:1.375rem 1.25rem;box-shadow:var(--shadow-sm)}
.vs-quick-pick::before{counter-increment:vs-pick;content:counter(vs-pick);display:grid;place-items:center;height:2rem;width:2rem;border-radius:9999px;background:var(--primary);color:var(--primary-foreground);font-size:.875rem;font-weight:700;margin-bottom:.75rem}
.vs-quick-pick:first-child::before{background:var(--gold);color:var(--gold-foreground)}
.vs-quick-pick h3{font-size:1rem;font-weight:700;margin:0}
.vs-quick-pick p{margin-top:.375rem;font-size:.8125rem;line-height:1.5;color:var(--muted-foreground)}
@media(max-width:767px){
        .vs-quick-picks{grid-template-columns:1fr}
}

/* ── Numbered steps (guide skeletons) ───────────────────────────── */
/* .vs-steps already resets the counter (v2.1 rule); this adds the list
   reset and the indigo number circles on the items. */
.vs-steps{list-style:none;padding:0;margin:1.25rem 0 0}
.vs-steps li{display:flex;gap:.875rem;align-items:flex-start;line-height:1.65;color:color-mix(in oklab,var(--foreground) 88%,transparent)}
.vs-steps li::before{counter-increment:step;content:counter(step);flex-shrink:0;display:grid;place-items:center;height:1.75rem;width:1.75rem;border-radius:9999px;background:color-mix(in oklab,var(--primary) 12%,transparent);color:var(--primary);font-size:.8125rem;font-weight:700}

/* ── Key takeaways box (blog skeletons) ─────────────────────────── */
.vs-takeaways{border:1px solid var(--border);border-radius:var(--vs-radius-2xl);background:var(--surface);padding:1.375rem 1.5rem}
.vs-takeaways h3{font-size:.9375rem;font-weight:700;margin:0}
.vs-takeaways ul{margin:.625rem 0 0;padding:0;list-style:none;display:grid;gap:.5rem}
.vs-takeaways li{display:flex;gap:.625rem;font-size:.875rem;line-height:1.5;color:color-mix(in oklab,var(--foreground) 82%,transparent)}
.vs-takeaways li::before{content:'\2192';flex-shrink:0;color:var(--primary);font-weight:700}

/* ── Tips callout (guide skeletons) — violet sibling of .vs-verdict ── */
.vs-callout{border:1px solid color-mix(in oklab,var(--violet) 35%,transparent);border-radius:var(--vs-radius-2xl);background:linear-gradient(to bottom right,color-mix(in oklab,var(--violet) 7%,transparent),transparent 60%);padding:1.375rem 1.5rem}
.vs-callout h3{font-size:.9375rem;font-weight:700;margin:0}
.vs-callout ul{margin:.625rem 0 0;padding:0;list-style:none;display:grid;gap:.5rem}
.vs-callout li{display:flex;gap:.625rem;font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}
.vs-callout li::before{content:'\2605';color:var(--gold);flex-shrink:0}

/* ── Mistakes to avoid (guide skeletons) — red ✕ counterpart of the
   check-list, same pill geometry. ────────────────────────────────── */
.vs-mistakes{list-style:none;padding:0;display:grid;gap:.625rem;margin:1rem 0 0}
.vs-mistakes li{display:flex;gap:.625rem;align-items:flex-start;line-height:1.6}
.vs-mistakes li::before{content:'\2715';flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:1.375rem;height:1.375rem;border-radius:9999px;background:color-mix(in oklab,var(--destructive) 12%,transparent);color:var(--destructive);font-size:.75rem;font-weight:700;margin-top:.125rem}
/* ═══════════════ v2.4.1 desktop cards patch (homepage card alignment, agent 12-d) ═══════════════ */
/* 1) Featured tools: flex-column card — spec rows start at the top, the Visit Website / Read Review
      action row is pinned to the card bottom (margin-top:auto), so buttons line up across each grid
      row even when descriptions/pros differ in length or a tool has no review button yet. */
.vs-featured-tool{display:flex;flex-direction:column}
.vs-featured-tool .vs-ft-head{flex:0 0 auto}
.vs-featured-tool .vs-ft-body{flex:1 1 auto;align-items:stretch}
.vs-featured-tool .vs-ft-info{justify-content:flex-start}
.vs-featured-tool .vs-ft-info .actions{margin-top:auto;padding-top:.875rem}
.vs-featured-tool .vs-ft-info .actions .vs-btn{flex-shrink:0}
/* 2) Top-rated tool cards: pin the meta tags + CTA row to the card bottom so "Visit Website" /
      "Details" sit on the same horizontal line across the row regardless of description line count. */
.vs-card.vs-tool-card .vs-tool-card-tags{margin-top:auto;padding-top:.875rem}
.vs-card.vs-tool-card .vs-tool-card-cta{flex-shrink:0}
/* 3) Category cards: roomier sub-category chips — a little more gap, padding and line-height so the
      chips (incl. the "+N" overflow chip) wrap cleanly instead of packing tight against the edge. */
.vs-cat-card .subs{gap:.5rem}
.vs-cat-card .sub{padding:.3125rem .6875rem;line-height:1.3;white-space:nowrap}
/* 4) Review cards: already flex-column with clamped summary + bottom-pinned meta (v2.3) — grid
      stretch equalizes heights per row; verified, no override needed. */
/* 5) Comparison cards: a touch more inner padding so the summary text never sits flush against the
      card edges. Scoped via :has() to head-to-head cards only (ignored where :has is unsupported). */
.vs-grid a.vs-card:has(.vs-vs-block){padding:1.375rem 1.5rem}
/* 6) Hero floating chips: fine at 1024–1536, but see 6b below — at ≥1700px the Buffer pill crowded
      the decorative ring stroke, so it gets a small nudge (rule 6b). */
/* 7) Lists & Guides: stretch both columns to the same height and distribute cards evenly, so the
      shorter column no longer leaves an awkward hole (desktop two-column layout only). */
@media(min-width:1024px){
.vs-lists-guides-grid{align-items:stretch}
.vs-lists-guides-grid>div{display:flex;flex-direction:column}
.vs-lists-guides-grid>div>div:not(.vs-section-head){flex:1 1 auto;display:grid;gap:1rem;grid-auto-rows:1fr}
/* …and spread any stretch slack across the card's internal gaps (space-between) instead of pooling
   it all between description and meta, so stretched cards stay evenly filled, never empty-looking. */
.vs-lists-guides-grid .vs-card{justify-content:space-between}
.vs-lists-guides-grid .vs-card .vs-card-meta{margin-top:0}
}
/* 8) Newsletter: balanced desktop proportions — taller field + button and a wider input (flex-basis)
      so the email field no longer reads as a thin sliver next to Subscribe. Tablet/mobile untouched. */
@media(min-width:1024px){
.vs-newsletter-section form.vs-newsletter input{flex:1 1 15rem;height:3rem;font-size:.9375rem}
.vs-newsletter-section form.vs-newsletter .vs-btn{height:3rem;padding-inline:1.5rem}
}
/* 6b) Hero chip 2 (Buffer ★4.5): at wide viewports (≥1700px) the pill crowded the decorative ring-2
      stroke (≈8px clearance + a ±12px float bob). Nudged up-right so it floats clear inside the
      ring's arc at every desktop width (verified 1024→1920); mobile never shows the chips. */
.vs-hero-chip-2{right:7%;top:20%}
/* 8b) Newsletter mobile guard (pre-existing v2.4.0 defect found while verifying 390px): in the
      stacked layout the input collapsed to ≈18px (flex-basis:0 on the column axis) and the form
      shrank to its intrinsic ≈211px. Restore the intended 2.5rem field and full-width stacked form. */
@media(max-width:639px){
.vs-newsletter-section .vs-newsletter{align-self:stretch;max-width:100%}
.vs-newsletter-section form.vs-newsletter{width:100%}
.vs-newsletter-section form.vs-newsletter input{flex:0 0 auto;height:2.5rem}
}

/* ════════════════════════════════════════════════════════════════════
   v2.5 footer patch (append-only, agent 13-b) — social icon row, account
   links and wp_nav_menu-driven footer lists. All selectors are NEW; the
   only deliberate restatement is the >=640px .vs-footer-bottom
   flex-wrap addition (footer contract F): appended AFTER the original
   rule so the cascade adds the property without editing it. Values for
   the .vs-footer-menu rules are measured from the fallback list rules
   (.vs-footer-pages ul / .vs-footer-cat) so menu output renders
   pixel-identical to the automatic lists.
   ════════════════════════════════════════════════════════════════════ */
/* Social row after the newsletter form. The wrapper (always present)
   carries the top spacing so the layout also breathes when the label is
   hidden (empty vs_social_title) — matches .vs-footer-trust's 1.5rem. */
.vs-social-links{margin-top:1.5rem}
.vs-social-label{margin:0 0 .5rem;font-size:.75rem;color:rgb(255 255 255 / 60%)}
.vs-social-icons{display:flex;flex-wrap:wrap;gap:.5rem}
.vs-social-link{display:inline-flex;align-items:center;justify-content:center;height:2.25rem;width:2.25rem;border-radius:50%;background:rgb(255 255 255 / 6%);border:1px solid rgb(255 255 255 / 12%);color:#ffffffcc;transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}
.vs-social-link svg{height:1rem;width:1rem;flex-shrink:0}
.vs-social-link:hover{background:rgb(255 255 255 / 12%);border-color:#c9a227;color:#fff;transform:translateY(-2px)}
.vs-social-link:focus-visible{outline:2px solid #c9a227;outline-offset:2px}
/* Account links — 3rd child of .vs-footer-bottom. Two classes here beat
   the legacy .vs-footer-bottom a underline so account links stay clean
   at rest and underline on hover. 13px icons = .8125rem. */
.vs-footer-account{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.9rem}
.vs-footer-account .vs-account-link{display:inline-flex;align-items:center;gap:.375rem;font-size:.75rem;color:#ffffff8c;text-decoration:none}
.vs-footer-account .vs-account-link svg{height:.8125rem;width:.8125rem;flex-shrink:0}
.vs-footer-account .vs-account-link:hover{color:#fff;text-decoration:underline}
/* Bottom bar now holds 3 children (copyright, disclosure, account) — let
   long desktop rows wrap instead of overflowing. Same 640px breakpoint
   as the original rule; appended later in the file so it only ADDS
   flex-wrap to the row/justify behavior. */
@media(min-width:640px){.vs-footer-bottom{flex-wrap:wrap}}
/* Menu-driven Explore/Legal columns — mirror the fallback
   .vs-footer-pages lists exactly (measured: margin 1.25rem 0 0, padding
   0, flex column, gap .5rem, no bullets; links .8125rem #ffffff8c with
   .2s color easing, hover #fff). */
.vs-footer-pages .vs-footer-menu{margin:1.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem;list-style:none}
.vs-footer-pages .vs-footer-menu li{list-style:none}
.vs-footer-pages .vs-footer-menu a{font-size:.8125rem;color:#ffffff8c;transition:color .2s ease}
.vs-footer-pages .vs-footer-menu a:hover{color:#fff}
/* Menu-driven Categories column — mirror the fallback .vs-footer-cats
   2-col grid (gap 0 1.5rem, per-item margin-bottom 1.25rem); top-level
   links match .vs-footer-cat>a (.875rem/600/#ffffffe5, hover gold) and
   ul.sub-menu children match .vs-footer-cat ul a — measured flush (no
   extra indent), exactly like the automatic tree. */
.vs-footer-cats-nav .vs-footer-menu{margin-top:1.25rem;display:grid;grid-template-columns:repeat(2,1fr);gap:0 1.5rem;padding:0;list-style:none}
.vs-footer-cats-nav .vs-footer-menu>li{margin-bottom:1.25rem}
.vs-footer-cats-nav .vs-footer-menu>li>a{display:inline-flex;align-items:center;gap:.25rem;font-size:.875rem;font-weight:600;color:#ffffffe5;transition:color .2s ease}
.vs-footer-cats-nav .vs-footer-menu>li>a:hover{color:var(--gold)}
.vs-footer-cats-nav .vs-footer-menu ul.sub-menu{margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.375rem;list-style:none}
.vs-footer-cats-nav .vs-footer-menu ul.sub-menu a{font-size:.8125rem;color:#ffffff8c;transition:color .2s ease}
.vs-footer-cats-nav .vs-footer-menu ul.sub-menu a:hover{color:#fff}
/* ═══ v3.2.0 article kit — blog preview cards + single article extras (agent 14-b, append-only) ═══ */
/* .vs-glance — k/v rows in the "At a glance" side box. Metrics mirror the measured .vs-side-box .rows language (margin-top .75rem / column gap .5rem / .875rem rows / .k muted, .v 600) with the sidebar-link accent (var(--primary), underline) on values */
.vs-glance{margin:.75rem 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem;font-size:.875rem}
.vs-glance li{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}
.vs-glance .k{color:var(--muted-foreground)}
.vs-glance .v{font-weight:600;text-align:right;min-width:0}
.vs-glance .v a{color:var(--primary);text-decoration:underline;text-decoration-color:#2317764d;text-underline-offset:2px;transition:text-decoration-color .2s ease}
.vs-glance .v a:hover{text-decoration-color:currentColor}
.vs-glance .vs-pill{padding:.125rem .5rem;font-size:.6875rem}
/* .vs-card-desc — emitted by card-review.php since v3.1 but never styled (pre-existing gap); the v3.2 article card reuses it for the verdict/excerpt line — minimal fix mirroring the .vs-tool-card-desc metrics */
.vs-card-desc{margin-top:.75rem;font-size:.875rem;line-height:1.5;color:var(--muted-foreground)}

/* v3.2 article patch addendum: grid items must be allowed to shrink below
   content min-width (grid auto minimum) so 1-col mobile tracks stay at the
   container width — fixes card clipping for article/review/tool card heads
   (logo + title + score) at small viewports. Verified: no content clips
   (scrollWidth == clientWidth on every card at 390px). */
.vs-grid>*{min-width:0}
