:root{--paper:#FAF7F2;--surface:#FFFFFF;--card:#F3EFE7;--card-2:#F6F2EA;--border:#E9E2D6;--border-strong:#D8CFBE;--ink:#211E1A;--ink-2:#5C564D;--muted:#988F80;--accent:#1E3A5F;--accent-2:#2E517F;--accent-soft:#E9EEF4;--green:#0F6B47;--green-soft:#E6F0E9;--amber:#8A5A12;--amber-soft:#FBF1DD;--amber-border:#E8CB8C;--gray-soft:#EDE8DF;--serif:"Newsreader",Georgia,serif;--sans:"Public Sans",system-ui,sans-serif;--font-head:var(--sans);--reading:730px;--wide:1100px;--radius:12px;--radius-sm:9px;--shadow:0 1px 2px rgba(90,70,40,.04),0 8px 26px rgba(90,70,40,.05)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0;font-family:var(--font-head);font-weight:700;line-height:1.12;letter-spacing:-.025em;text-wrap:balance}p{margin:0;text-wrap:pretty}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.wrap{max-width:var(--wide);margin:0 auto;padding:0 30px}.reading{max-width:var(--reading);margin-left:auto;margin-right:auto}.center{text-align:center}.muted{color:var(--ink-2)}.site-header{position:sticky;top:0;z-index:50;background:var(--paper);border-bottom:1px solid transparent;transition:background .25s,border-color .25s,backdrop-filter .25s}.site-header.scrolled{background:#faf7f2d9;backdrop-filter:saturate(140%) blur(10px);-webkit-backdrop-filter:saturate(140%) blur(10px);border-bottom-color:var(--border)}.header-inner{display:flex;align-items:center;gap:28px;height:66px}.brand{font-family:var(--serif);font-size:21px;font-weight:600;letter-spacing:-.015em;color:var(--ink)}.brand:hover{text-decoration:none}.brand .dim{color:var(--muted)}.nav{display:flex;align-items:center;gap:24px;margin-left:auto}.nav a{color:var(--ink-2);font-size:14.5px;font-weight:500;white-space:nowrap}.nav a:hover,.nav a.active{color:var(--accent);text-decoration:none}.nav a.active{font-weight:600;border-bottom:1.5px solid var(--accent);padding-bottom:2px}.hamburger{display:none;margin-left:auto;background:none;border:1px solid var(--border-strong);border-radius:9px;width:42px;height:42px;cursor:pointer;align-items:center;justify-content:center}.hamburger span,.hamburger span:before,.hamburger span:after{content:"";display:block;width:18px;height:2px;background:var(--ink);border-radius:2px;position:relative}.hamburger span:before{position:absolute;top:-6px}.hamburger span:after{position:absolute;top:6px}.mobile-menu{display:none}.btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--sans);font-weight:600;font-size:16px;padding:13px 26px;border-radius:999px;border:1.5px solid transparent;cursor:pointer;transition:background .15s,border-color .15s,transform .05s}.btn:hover{text-decoration:none}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-2)}.btn-secondary{background:transparent;color:var(--accent);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--card)}.btn .arrow{transition:transform .15s}.btn:hover .arrow{transform:translate(3px)}.link-q{font-weight:600;color:var(--ink-2);border-bottom:1.5px solid var(--border-strong);padding-bottom:2px}.link-q:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.back-link{font-size:14.5px;font-weight:600;color:var(--ink-2);display:inline-flex;align-items:center;gap:8px}.back-link:hover{color:var(--accent);text-decoration:none}.eyebrow{font-size:13px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:11px}.eyebrow.rules:before,.eyebrow.rules:after{content:"";width:26px;height:1px;background:var(--border-strong)}.lbl{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:26px}.sec-head h2{font-size:clamp(26px,3vw,34px)}.sec-head .more{font-size:14.5px;font-weight:600;color:var(--accent);white-space:nowrap}.sec-head .more:hover{text-decoration:underline;text-underline-offset:3px}.rule{height:1px;background:var(--border);max-width:var(--reading);margin:0 auto}.crumb{font-size:13.5px;color:var(--muted);display:flex;align-items:center;gap:9px;flex-wrap:wrap}.crumb a{color:var(--ink-2);font-weight:500}.crumb a:hover{color:var(--accent);text-decoration:none}.crumb .sep{color:var(--border-strong)}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:5px 11px;border-radius:999px;white-space:nowrap}.badge svg{width:11px;height:11px}.b-aff{background:var(--accent-soft);color:var(--accent)}.b-no{background:var(--gray-soft);color:var(--ink-2)}.b-cat{background:var(--green-soft);color:var(--green)}.logo-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--card);color:var(--muted);font-family:var(--sans);font-weight:700;font-size:.85em;border-radius:inherit}.tool-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.tool-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;transition:border-color .15s,box-shadow .2s,transform .12s;color:inherit}.tool-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow);transform:translateY(-2px);text-decoration:none}.tool-card .tc-head{display:flex;align-items:center;gap:13px;margin-bottom:13px}.tool-logo{width:44px;height:44px;border-radius:11px;border:1px solid var(--border);overflow:hidden;flex:none}.tool-card h3{font-size:18px;line-height:1.2}.tool-card:hover h3{color:var(--accent)}.tool-card .tagline{color:var(--ink-2);font-size:14.5px;line-height:1.5;flex:1}.tool-card .tc-meta{margin-top:16px;padding-top:14px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:10px}.tool-card .price{font-size:14px;font-weight:700}.tool-card .price small{color:var(--muted);font-weight:500}.tool-card .price .free{display:block;font-size:12.5px;color:var(--green);font-weight:600;margin-top:1px}.tool-card .price .free.no{color:var(--muted)}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:18px}.chip{font-size:13.5px;font-weight:600;color:var(--ink-2);background:var(--surface);border:1px solid var(--border-strong);border-radius:999px;padding:7px 15px;cursor:pointer;transition:.14s;white-space:nowrap}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}.chip-spacer{margin-left:auto}.sortby{font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:7px}.sortby b{color:var(--ink-2);font-weight:600}.tool-card .score{font-size:12px;color:var(--ink-2);text-align:right}.tool-card .score b{display:block;font-size:18px;font-weight:800;color:var(--ink)}.list{border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow)}.lrow{display:grid;grid-template-columns:34px 46px minmax(0,1.5fr) 1fr auto auto;gap:20px;align-items:center;padding:18px 22px;border-top:1px solid var(--border);transition:background .12s;color:inherit}.list .lrow:first-child{border-top:0}.lrow:hover{background:var(--card-2);text-decoration:none}.lrank{font-size:18px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;text-align:center}.llogo{width:46px;height:46px;border-radius:11px;border:1px solid var(--border);overflow:hidden;flex:none}.lname{min-width:0}.lname h3{font-size:18px}.lrow:hover .lname h3{color:var(--accent)}.lname .lt{font-size:13.5px;color:var(--ink-2);margin-top:1px;line-height:1.4}.lcat{font-size:14px;color:var(--ink-2)}.lcat .ck{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:2px}.lprice{text-align:right;white-space:nowrap}.lprice .pv{font-weight:700;font-size:15px}.lprice .pv small{color:var(--muted);font-weight:500}.lprice .lf{display:block;font-size:12.5px;font-weight:600;color:var(--green);margin-top:1px}.lprice .lf.no{color:var(--muted)}.lright{display:flex;align-items:center;gap:18px;justify-self:end}.lscore{text-align:right}.lscore .sv{font-size:20px;font-weight:800;color:var(--ink);line-height:1}.lscore .sk{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:3px}.list-foot{display:flex;justify-content:center;margin-top:22px}.cats{max-width:var(--reading);margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:0 52px}.cat{display:block;padding:22px 0;border-top:1px solid var(--border);color:inherit}.cats .cat:nth-child(1),.cats .cat:nth-child(2){border-top:0}.cat h3{font-size:21px;display:flex;align-items:center;justify-content:space-between;gap:10px}.cat:hover h3{color:var(--accent)}.cat h3 .a{color:var(--muted);font-weight:400;transition:transform .15s}.cat:hover h3 .a{transform:translate(3px);color:var(--accent)}.cat p{font-size:14.5px;color:var(--ink-2);margin-top:5px;line-height:1.5}.cat .cn{font-size:12.5px;color:var(--muted);margin-top:7px;font-weight:500}.cat:hover{text-decoration:none}.guides-sec{background:var(--card)}.guides{max-width:var(--reading);margin:0 auto}.gr{display:block;padding:24px 0;border-top:1px solid var(--border);color:inherit}.guides .gr:first-child{border-top:0}.gr .gd{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.gr .gt{font-family:var(--font-head);font-size:24px;font-weight:700;margin-top:6px;line-height:1.2}.gr:hover .gt{color:var(--accent)}.gr .gx{font-size:15px;color:var(--ink-2);margin-top:7px;line-height:1.5}.gr:hover{text-decoration:none}.callout{border-radius:var(--radius);padding:18px 20px;font-size:15.5px;line-height:1.55;margin:26px 0}.callout .ct{font-weight:700;display:block;margin-bottom:4px;font-family:var(--font-head);letter-spacing:-.01em}.callout-info{background:var(--accent-soft);border-left:3px solid var(--accent);color:var(--ink)}.callout-warn{background:var(--amber-soft);border-left:3px solid var(--amber-border);color:var(--ink)}.callout-warn .ct{color:var(--amber)}.disclosure{font-family:var(--serif);font-style:italic;color:var(--ink-2);font-size:14.5px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);padding:14px 17px;background:var(--card);line-height:1.55}.disclosure a{color:var(--accent)}.disclosure.flat{border:0;border-top:1px solid var(--border);border-radius:0;background:transparent;padding:22px 0 0;margin-top:36px}.review-head{display:grid;grid-template-columns:64px 1fr auto;gap:18px;align-items:center;margin:16px 0 22px}.review-head .rlogo{width:64px;height:64px;border-radius:15px;border:1px solid var(--border);overflow:hidden}.review-head h1{font-size:clamp(30px,4vw,42px)}.review-head .r-tag{font-size:17px;color:var(--ink-2);margin-top:5px}.review-head .r-score{text-align:center;background:var(--accent-soft);border-radius:14px;padding:14px 20px}.review-head .r-score .sv{font-size:32px;font-weight:800;color:var(--accent);line-height:1}.review-head .r-score .sk{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-top:5px}.verified{font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:8px}.verified:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green);flex:none}.cta-strip{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:8px 0 6px}.cta-strip .verified{margin-left:auto}.proscons{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0}.pc{border:1px solid var(--border);border-radius:var(--radius);padding:20px 22px}.pc.pros{background:var(--green-soft);border-color:#cfe5d7}.pc h4{font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-bottom:12px;display:flex;align-items:center;gap:8px}.pc.pros h4{color:var(--green)}.pc.cons h4{color:var(--ink-2)}.pc ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.pc li{font-size:15px;line-height:1.45;padding-left:24px;position:relative}.pc li:before{position:absolute;left:0;top:0;font-weight:700}.pc.pros li:before{content:"+";color:var(--green)}.pc.cons li:before{content:"–";color:var(--muted)}.specs{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.specs .srow{display:grid;grid-template-columns:200px 1fr;gap:20px;padding:15px 20px;border-top:1px solid var(--border);font-size:15px}.specs .srow:first-child{border-top:0}.specs .sk{color:var(--muted);font-weight:600}.specs .sv{font-weight:500}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}table.cmp{width:100%;border-collapse:collapse;font-size:15px;min-width:680px}table.cmp thead th{position:sticky;top:0;background:var(--card);text-align:left;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2);padding:14px 18px;border-bottom:1px solid var(--border-strong);white-space:nowrap}table.cmp tbody td{padding:16px 18px;border-bottom:1px solid var(--border);vertical-align:middle}table.cmp tbody tr:last-child td{border-bottom:0}table.cmp tbody tr:hover{background:var(--card-2)}table.cmp .t-name{font-weight:700;font-size:16px}table.cmp .t-name a:hover{color:var(--accent)}table.cmp .t-best{color:var(--ink-2)}table.cmp .t-price{font-weight:700;white-space:nowrap}table.cmp .t-free{color:var(--green);font-weight:600;white-space:nowrap}table.cmp .t-na{color:var(--muted)}table.cmp .t-score{font-weight:800}.scroll-hint{font-size:12.5px;color:var(--muted);margin-top:9px;display:none}.prose{font-size:18px;line-height:1.72;color:var(--ink)}.prose>*+*{margin-top:24px}.prose h2{font-size:28px;margin-top:48px}.prose h3{font-size:21px;margin-top:36px}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}.prose ul,.prose ol{padding-left:24px;display:flex;flex-direction:column;gap:9px}.prose li{padding-left:4px}.prose img{border-radius:var(--radius);border:1px solid var(--border)}.prose figure{margin:0}.prose figcaption{font-size:13.5px;color:var(--muted);margin-top:9px;text-align:center;font-style:italic}.prose blockquote{margin:0;padding:6px 0 6px 22px;border-left:3px solid var(--border-strong);font-family:var(--serif);font-style:italic;font-size:21px;color:var(--ink-2)}.faq{display:flex;flex-direction:column}.faq .qa{padding:22px 0;border-top:1px solid var(--border)}.faq .qa:first-child{border-top:0}.faq h3{font-size:19px;margin-bottom:8px}.faq p{color:var(--ink-2);font-size:16px;line-height:1.6}.idx{display:flex;flex-direction:column}.idx .ir{display:flex;gap:22px;align-items:flex-start;padding:24px 0;border-top:1px solid var(--border);color:inherit}.idx .ir:first-child{border-top:0}.idx .ir:hover{text-decoration:none}.idx .ithumb{width:128px;height:84px;flex:none;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--card);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;font-style:italic}.idx .ithumb img{width:100%;height:100%;object-fit:cover;display:block}.idx .imain{flex:1;min-width:0}.idx .it{font-size:22px;font-weight:700;letter-spacing:-.02em;font-family:var(--font-head);line-height:1.2}.idx .ir:hover .it{color:var(--accent)}.idx .ix{font-size:15.5px;color:var(--ink-2);margin-top:7px;line-height:1.5}.idx .id{font-size:12.5px;color:var(--muted);font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-top:9px}.page-head{padding:46px 0 30px}.page-head h1{font-size:clamp(32px,4.4vw,48px);max-width:20ch}.page-head .ph-sub{font-size:19px;color:var(--ink-2);margin-top:16px;max-width:60ch;line-height:1.55}.pillar-sec{padding:18px 0 36px}.pillar-sec .ps-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;border-top:1px solid var(--border);padding-top:30px;margin-bottom:6px}.pillar-sec h2{font-size:clamp(24px,3vw,30px)}.pillar-sec .ps-more{font-size:14px;font-weight:600;color:var(--accent);white-space:nowrap}.pillar-sec .ps-blurb{color:var(--ink-2);font-size:16.5px;max-width:64ch;line-height:1.55;margin-bottom:20px}.mini-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.mini-row{display:flex;align-items:center;gap:14px;padding:14px 18px;border-top:1px solid var(--border);color:inherit}.mini-list .mini-row:first-child{border-top:0}.mini-row:hover{background:var(--card-2);text-decoration:none}.mini-row .mn{font-weight:700;font-size:15.5px;min-width:130px}.mini-row:hover .mn{color:var(--accent)}.mini-row .mb{color:var(--ink-2);font-size:14.5px;flex:1}.mini-row .mp{font-weight:700;font-size:14px;white-space:nowrap}.mini-row .mbadge{margin-left:4px}.article-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:14px;color:var(--muted);margin-top:18px}.article-lead{font-family:var(--serif);font-size:22px;line-height:1.5;color:var(--ink-2);margin-top:24px}.hero-figure{margin:34px 0 8px}.img-ph{width:100%;aspect-ratio:16/8;display:flex;align-items:center;justify-content:center;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:var(--muted);font-size:14px;font-style:italic}.empty{border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--card);padding:48px 30px;text-align:center}.empty h3{font-size:20px;margin-bottom:8px}.empty p{color:var(--ink-2);font-size:15.5px;max-width:44ch;margin:0 auto 18px}.site-footer{border-top:1px solid var(--border);padding:52px 0 36px;margin-top:64px}.ft{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap}.ft .brand{font-size:19px}.ftag{font-family:var(--serif);font-style:italic;font-size:18px;color:var(--ink);max-width:30ch;margin-top:12px;line-height:1.4}.ft nav{display:flex;gap:52px}.ft nav h4{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 13px}.ft nav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.ft nav a{font-size:14.5px;color:var(--ink-2)}.ft nav a:hover{color:var(--accent);text-decoration:none}.copy{font-size:13px;color:var(--muted);margin-top:18px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.copy a{color:var(--muted)}.copy a:hover{color:var(--ink-2);text-decoration:none}@media(max-width:900px){.tool-grid,.cat-grid{grid-template-columns:repeat(2,1fr)}.ft nav{gap:36px}}@media(max-width:680px){body{font-size:16px}.wrap{padding:0 20px}.nav{display:none}.hamburger{display:flex}.tool-grid,.cat-grid,.proscons{grid-template-columns:1fr}.specs .srow{grid-template-columns:1fr;gap:3px}.scroll-hint{display:block}.prose{font-size:17px}.prose h2{font-size:24px}.cats{grid-template-columns:1fr}.cats .cat:nth-child(2){border-top:1px solid var(--border)}.idx .ir{gap:16px}.idx .ithumb{width:92px;height:64px}.idx .it{font-size:19px}.page-head{padding:34px 0 24px}.review-head{grid-template-columns:52px 1fr;gap:14px}.review-head .rlogo{width:52px;height:52px}.review-head .r-score{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:12px;padding:10px}.review-head .r-score .sk{margin-top:0}.cta-strip .verified{margin-left:0;width:100%}.cta-strip .btn{width:100%;justify-content:center}.site-footer{margin-top:44px}.ft nav{gap:32px;flex-wrap:wrap}.lrow{grid-template-columns:40px minmax(0,1fr) auto;grid-template-rows:auto auto;gap:4px 14px;padding:16px}.lrank{display:none}.llogo{grid-column:1;grid-row:1/3;width:40px;height:40px;align-self:center}.lname{grid-column:2;grid-row:1}.lname .lt,.lcat{display:none}.lprice{grid-column:2;grid-row:2;text-align:left;display:flex;align-items:baseline;gap:8px}.lprice .lf{margin-top:0}.lright{grid-column:3;grid-row:1/3;flex-direction:column;align-items:flex-end;gap:7px}.lscore{display:flex;align-items:baseline;gap:5px}.lscore .sk{display:none}.mini-row{flex-wrap:wrap;gap:4px 12px}.mini-row .mn{min-width:0;width:100%}.mini-row .mb{flex-basis:100%;order:3}.mobile-menu.open{display:block;border-bottom:1px solid var(--border);background:var(--paper)}.mobile-menu nav{display:flex;flex-direction:column;padding:6px 20px 16px}.mobile-menu nav a{padding:13px 0;border-top:1px solid var(--border);color:var(--ink);font-weight:500;font-size:16px}.mobile-menu nav a.active{color:var(--accent);font-weight:700}.mobile-menu nav a:first-child{border-top:0}}
