:root{color-scheme:light;--bg:#faf9f6;--surface:#fffefa;--ink:#242824;--muted:#62675e;--line:#dfE1d8;--soft:#f0f0e9;--accent:#e65c24;--accent-soft:#fff0e6;--accent-ink:#ad3b0e;--quote:#f5f5ef;--shadow:0 12px 55px #24282412;
/* A 1.25 type ramp, with a 14px floor for secondary text at the 17px root. */
--text-sm:0.82353rem;--text-base:1rem;--text-lg:1.25rem;--text-xl:1.5625rem;--text-2xl:1.953125rem;--text-3xl:2.44140625rem;--text-4xl:3.0517578125rem;--text-display:4.768371582rem;
--font-mono:ui-monospace,SFMono-Regular,Menlo,monospace;
--space-2:8px;--space-3:12px;--space-6:24px;
font-size:17px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}

@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#171a18;--surface:#1c201c;--ink:#e6e9df;--muted:#9ba293;--line:#343b32;--soft:#252c25;--accent:#fb824d;--accent-soft:#3c2a20;--accent-ink:#ff9a6d;--quote:#222922;--shadow:0 12px 55px #0004}
}

:root[data-theme=dark]{color-scheme:dark;--bg:#171a18;--surface:#1c201c;--ink:#e6e9df;--muted:#9ba293;--line:#343b32;--soft:#252c25;--accent:#fb824d;--accent-soft:#3c2a20;--accent-ink:#ff9a6d;--quote:#222922;--shadow:0 12px 55px #0004}

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-size:var(--text-base);line-height:1.55}
a{color:inherit;text-decoration:none}
a:hover{color:var(--accent-ink)}
button,input,select{font:inherit}
button,a,input,select,summary{touch-action:manipulation}
button{cursor:pointer}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
::selection{background:var(--accent-soft);color:var(--ink)}
.topline{height:4px;background:var(--accent)}
.shell{max-width:1232px;margin:auto;padding:0 48px}
.nav{height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:12px;font-weight:800;letter-spacing:.04em;font-size:var(--text-base)}
.brand-mark{display:flex;align-items:center;justify-content:center;width:35px;height:35px;background:var(--accent);color:var(--surface);font-size:20px;letter-spacing:-2px;padding-right:3px;border-radius:3px}
.brand-mark span{font-size:var(--text-sm);margin-top:4px}
.brand-dot{color:var(--accent)}
.nav nav{display:flex;gap:29px;align-items:center;font-size:var(--text-sm);font-weight:550}
.nav nav a{min-height:44px;display:inline-flex;align-items:center}
.nav nav a span{margin-left:4px;color:var(--muted)}
.theme{border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink);width:44px;height:44px;flex-shrink:0;font-size:var(--text-lg);line-height:1}
.hero{padding:52px 0 39px}
.eyebrow{font:var(--text-sm)/1.5 var(--font-mono);letter-spacing:.06em;color:var(--muted);display:flex;gap:10px;align-items:center}
.status-dot{height:6px;width:6px;border-radius:50%;background:var(--accent)}
.edition{color:var(--muted);margin-left:auto;letter-spacing:.8px}
h1{font-size:clamp(var(--text-3xl),6vw,var(--text-display));line-height:1.08;letter-spacing:-.03em;text-wrap:balance;margin:24px 0 15px;font-weight:720}
.title-dot{color:var(--accent)}
.lede{font-size:var(--text-xl);letter-spacing:-.015em;margin:0 0 10px;font-weight:450}
.intro{color:var(--muted);font-size:var(--text-base);line-height:1.6;max-width:70ch;text-wrap:pretty;margin:0}
.metrics{margin-top:33px;display:flex;gap:42px}
.metrics>div{padding-left:25px;border-left:1px solid var(--line)}
.metrics>div:first-child{padding-left:0;border:0}
.metrics strong{display:block;font-family:var(--font-mono);font-size:var(--text-xl);letter-spacing:-.02em;font-weight:500;color:var(--accent-ink)}
.metrics span{color:var(--muted);font-size:var(--text-sm);letter-spacing:.3px}
.metrics .coverage strong{color:var(--ink);font-size:var(--text-lg);line-height:1.95}
.directory{border-top:1px solid var(--line);padding-top:27px}
.directory-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
h2{font-size:var(--text-xl);line-height:1.25;letter-spacing:-.02em;text-wrap:balance;margin:0;font-weight:650}
.index-label{font:var(--text-sm) var(--font-mono);letter-spacing:.06em;color:var(--muted)}
.toolbar{display:flex;gap:14px}
.search-wrap{position:relative;display:flex;flex:1;align-items:center}
.search-wrap svg{width:19px;height:19px;position:absolute;left:17px;stroke:var(--muted);fill:none;stroke-width:1.5}
.search-wrap input{min-width:0;width:100%;height:51px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);padding:0 46px;font-size:var(--text-base)}
.search-wrap input::placeholder{color:var(--muted)}
kbd{position:absolute;right:17px;background:var(--bg);color:var(--muted);border:1px solid var(--line);padding:0 6px;border-radius:3px;font-size:var(--text-sm)}
.search-wrap:focus-within kbd{display:none}
.sort-wrap{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:6px;padding:0 12px;background:var(--surface);font-size:var(--text-sm)}
.sort-wrap label{color:var(--muted);white-space:nowrap}
.sort-wrap select{border:0;color:var(--ink);background:var(--surface);font-size:var(--text-base);min-height:48px;max-width:260px;cursor:pointer;padding:8px 0}
.filters{display:flex;flex-wrap:wrap;gap:7px;margin:17px 0 23px}
.chip{border:1px solid var(--line);border-radius:5px;padding:5px 10px;color:var(--muted);font-size:var(--text-sm);background:transparent;white-space:nowrap;line-height:1.4;min-height:44px}
.chip span{font-family:var(--font-mono);font-size:var(--text-sm);margin-left:6px}
.chip:hover{border-color:var(--muted);color:var(--ink)}
.chip[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.results-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:15px;color:var(--muted);font-size:var(--text-sm)}
.results-bar p{margin:0}
.results-bar strong{color:var(--ink);font-weight:600}
.recent-label{min-height:44px;display:flex;align-items:center;gap:8px;cursor:pointer;font-size:var(--text-sm)}
.recent-label input{position:absolute;opacity:0;width:28px;height:16px}
.toggle{width:27px;height:15px;border-radius:9px;background:var(--line);position:relative;flex-shrink:0;transition:background .15s}
.toggle:after{content:"";position:absolute;left:3px;top:3px;width:9px;height:9px;border-radius:50%;background:var(--surface);transition:transform .15s}
input:checked+.toggle{background:var(--accent)}
input:checked+.toggle:after{transform:translateX(12px)}
input:focus-visible+.toggle{outline:2px solid var(--accent);outline-offset:3px}
.list-head{display:grid;grid-template-columns:64px minmax(0,1fr) 212px;gap:16px;border-bottom:1px solid var(--line);padding:0 20px 12px 0;color:var(--muted);font:var(--text-sm) var(--font-mono);letter-spacing:1px}
.list-head span:last-child{text-align:right}
.tool{position:relative;border-bottom:1px solid var(--line);padding:var(--space-6) 0;display:grid;grid-template-columns:64px minmax(0,1fr) 212px;column-gap:16px}
.rank{font:var(--text-sm) var(--font-mono);color:var(--muted);padding-top:3px}
.rank.top-rank{color:var(--accent-ink)}
.tool-body{min-width:0}
.tool-name-row h3{font-size:inherit;line-height:1.3}
.tool-name-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.tool-name{font-size:var(--text-lg);font-weight:650;letter-spacing:-.015em;overflow-wrap:anywhere}
.out-arrow{font-size:var(--text-sm);color:var(--muted);margin-left:7px;font-weight:400}
.tool-key{font:var(--text-sm) var(--font-mono);color:var(--muted);overflow-wrap:anywhere}
.tool-description{font-size:var(--text-base);color:var(--muted);margin:7px 0 12px;max-width:70ch;line-height:1.6;text-wrap:pretty;overflow-wrap:anywhere}
.tool-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.tag{min-height:44px;font-size:var(--text-sm);color:var(--muted);padding:2px 6px;border-radius:3px;background:var(--soft);border:0}
.tag:hover{color:var(--accent-ink)}
.tool-meta{display:flex;flex-wrap:wrap;gap:6px 15px;font-size:var(--text-sm);color:var(--muted);margin-top:13px}
.tool-meta b{font-weight:600;color:var(--ink)}
.dates{font-family:var(--font-mono);font-size:var(--text-sm)}
.chart-col{padding-right:0;align-self:start;text-align:right}
.score{font:var(--text-xl)/1.2 var(--font-mono);letter-spacing:-.02em;color:var(--accent-ink)}
.score-label{font-size:var(--text-sm);letter-spacing:.5px;color:var(--muted);margin:3px 0 11px}
.spark{display:block;margin-left:auto;width:100%;height:56px;overflow:visible}
.spark rect{fill:var(--accent);opacity:.65}
.spark rect:last-of-type{opacity:1}
.spark text{fill:var(--muted);font:var(--text-sm) var(--font-mono)}
.spark line{stroke:var(--line);stroke-width:1}
.evidence{grid-column:2/4;margin-top:13px;min-width:0}
.evidence summary{min-height:44px;cursor:pointer;font-size:var(--text-sm);color:var(--muted);width:fit-content;list-style:none;display:flex;align-items:center;gap:7px}
.evidence summary::-webkit-details-marker{display:none}
.evidence summary:before{content:"+";font:var(--text-sm) var(--font-mono);color:var(--accent-ink);width:11px}
.evidence[open] summary:before{content:"−"}
.evidence summary:hover{color:var(--accent-ink)}
.quotes{display:grid;gap:var(--space-3);margin-top:15px}
.quote{margin:0;background:var(--quote);border-left:2px solid var(--accent);padding:14px 17px;border-radius:0 4px 4px 0}
.quote p{font-size:var(--text-base);max-width:70ch;line-height:1.6;text-wrap:pretty;margin:0 0 9px;overflow-wrap:anywhere}
.quote footer{border:0;margin:0;padding:0;display:flex;justify-content:space-between;gap:10px;font-size:var(--text-sm);color:var(--muted)}
.quote cite{font-style:normal}
.quote a{color:var(--accent-ink)}
.pagination{text-align:center;padding:29px 0 10px;display:flex;flex-direction:column;align-items:center;gap:12px}
.load-more{min-height:44px;background:var(--surface);color:var(--ink);padding:10px 26px;border-radius:5px;border:1px solid var(--line);font-size:var(--text-sm)}
.load-more:hover{border-color:var(--accent);color:var(--accent-ink)}
.load-more span{margin-left:22px}
#page-count{font-size:var(--text-sm);color:var(--muted)}
[hidden]{display:none!important}
.method-note{display:flex;gap:15px;align-items:center;padding:22px 24px;border:1px solid var(--line);border-radius:5px;margin:36px 0 45px}
.note-icon{display:flex;align-items:center;justify-content:center;border:1px solid var(--accent);color:var(--accent-ink);width:19px;height:19px;border-radius:50%;font-family:Georgia,serif;font-size:var(--text-sm);flex-shrink:0}
.method-note p{font-size:var(--text-base);color:var(--muted);margin:0;max-width:75ch;line-height:1.6}
.method-note a{color:var(--ink);white-space:nowrap;margin-left:5px}
footer{border-top:1px solid var(--line);padding:28px 0 32px;display:flex;justify-content:space-between;gap:25px}
footer strong{font-size:var(--text-sm)}
footer p{font-size:var(--text-sm);color:var(--muted);line-height:1.9;margin:5px 0 0}
footer>p{text-align:right}
footer a{text-decoration:underline;text-underline-offset:3px}
.loading,.empty{padding:60px 20px;text-align:center;color:var(--muted);font-size:var(--text-base)}
.loading-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin-right:10px}
.empty h3{color:var(--ink);margin:0 0 8px}
.empty button{min-height:44px;background:var(--accent-soft);color:var(--accent-ink);border:1px solid var(--line);padding:7px 15px;border-radius:4px;margin-top:10px}
.skip{position:fixed;top:-80px;left:15px;background:var(--ink);color:var(--bg);padding:10px 20px;z-index:10}
.skip:focus{top:10px}
.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}
dialog{max-width:650px;width:calc(100% - 32px);max-height:85vh;border:1px solid var(--line);border-radius:10px;padding:30px 35px;background:var(--bg);color:var(--ink);box-shadow:var(--shadow)}
dialog::backdrop{background:#0c150cb0;backdrop-filter:blur(4px)}
.dialog-heading{display:flex;align-items:center;justify-content:space-between}
.dialog-heading button{border:0;background:transparent;color:var(--muted);font-size:var(--text-xl);width:44px;height:44px;flex-shrink:0}
dialog h2{font-size:var(--text-2xl);letter-spacing:-.02em;margin:12px 0 17px}
dialog h3{font-size:var(--text-lg);margin:24px 0 8px}
dialog p{font-size:var(--text-base);color:var(--muted);max-width:70ch;line-height:1.6}
dialog a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}
.formula{padding:16px;background:var(--soft);border-radius:5px;font:var(--text-sm)/1.6 var(--font-mono);color:var(--accent-ink)}
.fine-print{font-size:var(--text-sm)!important;border-top:1px solid var(--line);padding-top:14px}
.about-data{background:var(--accent-soft);padding:12px;border-radius:4px}
.noscript{text-align:center}

@media(min-width:1450px){.shell{max-width:1290px}
.hero{padding-top:65px}
}

@media(max-width:800px){
.shell{padding:0 25px}
.nav{min-height:88px;height:auto;padding:16px 0}
.nav nav{gap:20px}
.hero{padding-top:36px}

.toolbar{flex-wrap:wrap}
.search-wrap{flex-basis:100%}
.sort-wrap{min-height:48px;margin-left:auto}
.filters{margin-top:16px}

.list-head,.tool{grid-template-columns:48px minmax(0,1fr) 160px;column-gap:12px}
.list-head{padding-right:0}
.tool-name-row{gap:4px 12px}

.metrics{gap:24px;flex-wrap:wrap}
.metrics>div{padding-left:24px}
.method-note{padding:16px}
footer{flex-direction:column;gap:16px}
footer>p{text-align:left}
.nav .hn-nav{display:none}

}

@media(max-width:500px){
.shell{padding:0 16px}
.nav{gap:12px}
.brand{gap:8px;letter-spacing:.02em}
.brand-mark{width:32px;height:32px}
.nav nav{gap:12px}
.nav nav a span{display:none}

.hero{padding:32px 0}
.eyebrow{flex-wrap:wrap;gap:8px;letter-spacing:.04em}
.edition{margin-left:14px}
h1{font-size:var(--text-4xl);margin-top:24px}
.lede{font-size:var(--text-lg)}
.wide-only{display:none}

.metrics{gap:20px 24px;margin-top:24px}
.metrics>div{padding-left:0;border:0}
.metrics .coverage{flex-basis:100%}
.metrics .coverage strong{line-height:1.5}

.directory-heading{align-items:flex-start;flex-direction:column;gap:8px}
.sort-wrap{width:100%;justify-content:space-between}
.sort-wrap select{min-width:0;max-width:100%;flex:1}
.search-wrap input{padding-right:16px}
.search-wrap kbd{display:none}

.filters{gap:8px}
.chip{padding:8px 10px}
.results-bar{flex-wrap:wrap;align-items:flex-start;gap:8px;margin-bottom:16px}
.recent-label{line-height:1.5}

.list-head{grid-template-columns:40px minmax(0,1fr)}
.list-head span:last-child{display:none}

.tool{grid-template-columns:40px minmax(0,1fr);gap:0 12px;padding:24px 0}
.rank{padding-top:4px}
.tool-name-row{display:block}
.tool-key{display:block;margin-top:4px}

.chart-col{grid-column:2;display:flex;align-items:baseline;gap:8px;text-align:left;margin-top:16px}
.score-label{margin:0;letter-spacing:0}
.chart-col .spark{display:none}

.tool-meta{gap:8px 16px}
.dates{width:100%}
.evidence{grid-column:2;margin-top:12px}
.quote{padding:16px 12px}
.quote footer{flex-wrap:wrap}

.method-note{margin-top:24px;margin-bottom:32px;align-items:flex-start;padding:16px;gap:12px}
.method-note a{display:block;margin-left:0;white-space:normal}

dialog{padding:20px}
.formula{overflow-wrap:anywhere}

}

@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}
}


.tool-links{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:7px;font-size:var(--text-sm);color:var(--muted);overflow-wrap:anywhere}
.tool-links a{text-decoration:underline;text-underline-offset:3px}
