:root{--ink:#1b1a1f;--ink-soft:#57545e;--paper:#fbfaf7;--paper-2:#f2f0eb;--paper-3:#e7e4dc;--accent:#b4235a;--accent-deep:#8f1747;--accent-wash:#fbe8ef;--good:#1d6b3a;--good-wash:#e3f2e8;--line:#e2ded5;--line-strong:#c9c4b8;--on-accent:#fff;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--sans:system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--wrap:960px;--wrap-text:680px;--gutter:16px;--radius:14px;--shadow-sm:0 1px 2px #1b1a1f0f;--shadow-md:0 12px 30px #1b1a1f1a}*{box-sizing:border-box}html,body{overflow-x:clip}html{-webkit-text-size-adjust:100%}body{color:var(--ink);background:var(--paper);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.65}a{color:var(--accent-deep);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--accent)}a:active{color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}h1,h2,h3{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);overflow-wrap:break-word;font-weight:700;line-height:1.15}h1{margin:0 0 .6rem;font-size:clamp(2rem,1.5rem + 2.4vw,3rem)}h2{margin:2.6rem 0 .9rem;font-size:clamp(1.45rem,1.2rem + 1vw,1.9rem)}h3{margin:0 0 .4rem;font-size:1.15rem}p{margin:0 0 1rem}code{font-family:var(--mono);font-size:.9em}.eyebrow{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 .6rem;font-size:.78rem}.eyebrow a{color:inherit;text-decoration:none}.eyebrow a:hover{text-decoration:underline}.tag{font-family:var(--mono);color:var(--accent-deep);white-space:nowrap;margin-left:.4ch;font-size:.8em}.skip-link{position:absolute;top:0;left:-999px}.skip-link:focus{left:var(--gutter);z-index:100;background:var(--paper);padding:.4rem .8rem;top:.5rem}main{max-width:var(--wrap);padding:2rem var(--gutter) 4rem;margin:0 auto}.prose{max-width:var(--wrap-text)}.prose ul,.prose ol{padding-left:1.3rem}.prose li{margin-bottom:.4rem}.site-header{border-bottom:1px solid var(--line);background:var(--paper)}.site-nav{max-width:var(--wrap);padding:.7rem var(--gutter);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem 1rem;margin:0 auto;display:flex}.site-brand{font-family:var(--serif);color:var(--ink);white-space:nowrap;align-items:center;gap:.55ch;font-size:1.2rem;font-weight:700;text-decoration:none;display:inline-flex}.site-brand:before{content:"";border:2px solid var(--accent);border-top-width:5px;border-radius:2px 2px 4px 4px;width:10px;height:14px}.site-links{flex-wrap:wrap;align-items:center;gap:.15rem;margin-left:-.55rem;display:flex}.site-links a{color:var(--ink-soft);white-space:nowrap;border-radius:6px;padding:.3rem .55rem;font-size:.92rem;text-decoration:none}.site-links a:hover{color:var(--ink);background:var(--paper-2)}.site-links a:active{background:var(--paper-3)}.site-links a[aria-current=page]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--accent);border-radius:0}@media (width>=640px){.site-links{margin-left:0}}.site-footer{border-top:1px solid var(--line);color:var(--ink-soft);font-size:.88rem}.site-footer .wrap{max-width:var(--wrap);padding:1.4rem var(--gutter);flex-wrap:wrap;gap:.4rem 1.2rem;margin:0 auto;display:flex}.site-footer a{color:var(--ink-soft);white-space:nowrap}.disclosure{border-top:1px dashed var(--line-strong);color:var(--ink-soft);max-width:var(--wrap-text);margin-top:3rem;padding-top:1rem;font-size:.85rem}.updated-tag{font-family:var(--mono);color:var(--ink-soft);margin:0 0 1rem;font-size:.8rem}.btn{min-height:48px;font:inherit;white-space:nowrap;cursor:pointer;border:1.5px solid #0000;border-radius:10px;justify-content:center;align-items:center;padding:.7rem 1.4rem;font-weight:700;text-decoration:none;transition:background-color .15s,border-color .15s,transform .15s;display:inline-flex}.btn--primary{background:var(--accent-deep);color:var(--on-accent)}.btn--primary:hover{background:var(--ink);color:var(--on-accent)}.btn:active{transform:translateY(1px)}.btn:disabled{background:var(--paper-3);color:var(--ink-soft);cursor:progress;transform:none}.checker{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--paper-2);box-shadow:var(--shadow-sm);margin:0 0 3rem;padding:clamp(1rem,.6rem + 2vw,2.2rem)}.checker__title{max-width:18ch}.checker__lede{color:var(--ink-soft);max-width:60ch;font-size:1.08rem}.checker__form{gap:1rem;max-width:640px;margin-top:1.4rem;display:grid}.field{gap:.35rem;display:grid}.field__label{font-size:.95rem;font-weight:700}.field__hint{color:var(--ink-soft);margin-left:.3ch;font-size:.85rem;font-weight:400}.field input,.field textarea{width:100%;min-width:0;font:inherit;color:var(--ink);background:var(--paper);border:1.5px solid var(--line-strong);border-radius:10px;padding:.7rem .8rem}.field textarea{resize:vertical;min-height:6.5rem}.field input:focus-visible,.field textarea:focus-visible{border-color:var(--accent);outline-offset:1px}.checker__human{gap:.4rem;min-width:0;display:grid}.checker__turnstile{max-width:100%;min-height:65px}.checker__note,.checker__fine{color:var(--ink-soft);margin:0;font-size:.85rem}.checker__submit{justify-self:start}.checker__out{margin-top:1.4rem}.checker__status{margin:0 0 1rem;font-weight:700}.checker__status[data-kind=error]{color:var(--accent-deep)}.checker__summary{font-family:var(--mono);margin:0 0 .8rem;font-size:.92rem}.checker__cached,.checker__testmode{background:var(--accent-wash);color:var(--ink);border-radius:8px;margin:0 0 .8rem;padding:.55rem .8rem;font-size:.9rem}.checker__sources{margin-top:1rem;font-size:.88rem}.checker__sources summary{cursor:pointer;font-weight:700}.checker__sources ul{margin:.2rem 0 .8rem;padding-left:1.2rem}.checker__sources li{font-family:var(--mono);overflow-wrap:anywhere;font-size:.82rem}.checker__src-q{overflow-wrap:anywhere;margin:.8rem 0 0;font-weight:700}.table-wrap{max-width:100%;overflow-x:auto}.result-table{border-collapse:collapse;table-layout:fixed;background:var(--paper);width:100%;font-size:.92rem}.result-table th,.result-table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere;padding:.55rem .6rem}.result-table thead th{background:var(--paper-3);overflow-wrap:normal;font-size:.78rem}.result-table tbody th{font-weight:400}.result-table thead th:first-child{width:40%}.result-table td{font-family:var(--mono);font-size:.82rem;font-weight:700}.result-table .is-cited{color:var(--good);background:var(--good-wash)}.result-table .is-missed{color:var(--ink-soft)}.result-table .is-error{color:var(--accent-deep)}.home-section{margin:0 0 3rem}.home-section>h2{margin-top:0}.category-list{grid-template-columns:minmax(0,1fr);gap:.7rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=900px){.category-list{grid-template-columns:repeat(2,minmax(0,1fr))}.category-list li:first-child{grid-column:1/-1}}.category-link{border:1px solid var(--line);border-left:4px solid var(--accent);background:var(--paper);height:100%;color:var(--ink);border-radius:10px;gap:.2rem;padding:1rem 1.1rem;text-decoration:none;transition:border-color .15s,box-shadow .15s;display:grid}.category-link:hover{border-color:var(--line-strong);border-left-color:var(--accent-deep);box-shadow:var(--shadow-md);color:var(--ink)}.category-link:active{background:var(--paper-2)}.category-link__name{font-family:var(--serif);font-size:1.15rem;font-weight:700}.category-link__desc{color:var(--ink-soft);font-size:.92rem}.rules{max-width:var(--wrap-text);padding-left:1.4rem}.rules li{margin-bottom:.6rem}.author__name{font-family:var(--serif);margin-bottom:.4rem;font-size:1.3rem;font-weight:700}.page-head{max-width:var(--wrap-text);margin:0 0 2rem}.page-head__lede{color:var(--ink-soft);font-size:1.08rem}.page-foot{margin-top:2rem}.empty-note{color:var(--ink-soft);border:1px dashed var(--line-strong);max-width:var(--wrap-text);border-radius:10px;padding:1rem 1.1rem}.article-list{max-width:var(--wrap-text);margin:0;padding:0;list-style:none}.article-list li{border-top:1px solid var(--line)}.article-list li:last-child{border-bottom:1px solid var(--line)}.article-list a{color:var(--ink);gap:.2rem;padding:.9rem .2rem;text-decoration:none;display:grid}.article-list a:hover .article-list__title{color:var(--accent-deep)}.article-list a:active{background:var(--paper-2)}.article-list__title{font-weight:700}.article-list__meta{font-family:var(--mono);color:var(--ink-soft);flex-wrap:wrap;gap:.2rem .9rem;font-size:.78rem;display:flex}.article{max-width:var(--wrap-text)}.byline{font-family:var(--mono);color:var(--ink-soft);font-size:.82rem}.notice{border-radius:8px;padding:.7rem .9rem;font-size:.95rem}.notice--docs{background:var(--accent-wash);border-left:4px solid var(--accent)}.article__body img{max-width:100%;height:auto}.article__body pre{overflow-x:auto}.article__body table{border-collapse:collapse;max-width:100%;display:block;overflow-x:auto}.article__body th,.article__body td{border:1px solid var(--line);padding:.4rem .6rem}.toc{border:1px solid var(--line);background:var(--paper-2);border-radius:10px;margin:1.4rem 0;padding:.8rem 1rem}.toc summary{cursor:pointer;font-weight:700}.callout{background:var(--accent-wash);border-radius:10px;margin:1.4rem 0;padding:1rem 1.1rem}.callout>strong{font-family:var(--mono);text-transform:uppercase;color:var(--accent-deep);margin-bottom:.3rem;font-size:.8rem;display:block}.callout p:last-child{margin-bottom:0}.verdict{border:1px solid var(--line-strong);border-left:4px solid var(--accent);background:var(--paper-2);border-radius:10px;margin:1.4rem 0;padding:1.1rem 1.2rem}.verdict__title{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-deep);margin:0 0 .4rem;font-size:.78rem}.verdict__summary{font-family:var(--serif);margin:0 0 .8rem;font-size:1.2rem;line-height:1.4}.verdict__fit{gap:.4rem;margin:0;display:grid}.verdict__fit div{grid-template-columns:minmax(0,6.5rem) minmax(0,1fr);gap:.6rem;display:grid}.verdict__fit dt{font-size:.9rem;font-weight:700}.verdict__fit dd{margin:0;font-size:.95rem}.badge{font-family:var(--mono);border-radius:6px;padding:.15rem .5rem;font-size:.78rem;display:inline-block}.badge--tested{background:var(--good-wash);color:var(--good)}.nowrap{white-space:nowrap}.badge--docs{background:var(--paper-3);color:var(--ink-soft)}.tool-badges{gap:.4rem;margin:1rem 0;padding:0;list-style:none;display:grid}.tool-badges li{flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;display:flex}.tool-badges__name{font-weight:700}.pros-cons{grid-template-columns:minmax(0,1fr);gap:1rem;margin:1.4rem 0;display:grid}@media (width>=640px){.pros-cons{grid-template-columns:repeat(2,minmax(0,1fr))}}.pros-cons__col{border:1px solid var(--line);border-radius:10px;padding:.9rem 1rem}.pros-cons__title{margin:0 0 .4rem;font-size:1rem}.pros-cons ul{margin:0;padding-left:1.2rem}.ranking{gap:1rem;margin:1.6rem 0;padding:0;list-style:none;display:grid}.ranking__item{border:1px solid var(--line);background:var(--paper);border-radius:12px;grid-template-columns:2.4rem minmax(0,1fr);gap:.8rem;padding:1rem;display:grid}.ranking__rank{font-family:var(--mono);color:var(--accent-deep);font-size:1.2rem;font-weight:700}.ranking__name{margin:0 0 .3rem;font-size:1.25rem}.ranking__fit{margin:.5rem 0 .3rem}.tool-link{margin-top:.3rem}.compare{margin:1.6rem 0}.compare-table{border-collapse:collapse;table-layout:fixed;background:var(--paper);width:100%;font-size:.92rem}.compare-table--wide{min-width:640px}.compare-table th,.compare-table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere;padding:.55rem .6rem}.compare-table thead th{background:var(--paper-3);overflow-wrap:normal;font-size:.82rem}.compare-table tbody th{font-weight:700}.test-summary{border-top:1px dashed var(--line-strong);margin:2rem 0;padding-top:1rem}.test-summary__meta{font-family:var(--mono);color:var(--good);font-size:.85rem}.limits-table{border-collapse:collapse;font-size:.92rem}.limits-table th,.limits-table td{text-align:left;border-bottom:1px solid var(--line);padding:.4rem .8rem .4rem 0}.shot{margin:1.6rem 0}.shot img{border:1px solid var(--line);border-radius:8px;max-width:100%;height:auto;display:block}.shot figcaption{color:var(--ink-soft);margin-top:.4rem;font-size:.85rem}.illustration{margin:1.6rem 0}.illustration img{border-radius:8px;width:100%;max-width:100%;height:auto;display:block}.illustration figcaption{color:var(--ink-soft);margin-top:.4rem;font-size:.85rem}.faq{max-width:var(--wrap-text);margin-top:2.4rem}.faq details{border-top:1px solid var(--line);padding:.7rem 0}.faq details:last-of-type{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;font-weight:700}.policy h2{margin-top:2rem}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
