:root{
  --ink:#141a22; --ink-2:#3d4a5c; --ink-3:#6b7a8d;
  --rule:#dfe4ea; --rule-2:#eef1f5;
  --paper:#ffffff; --paper-2:#f7f8fa; --paper-3:#eff2f6;
  --accent:#1b4d8f; --accent-soft:#e8eff8;
  --gold:#8a6d22; --gold-soft:#fbf4e2;
  --good:#1f6b4a; --warn:#8a4b1f;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
  --maxw:1080px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--serif); font-size:18px; line-height:1.62;
}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 24px}
.narrow{max-width:760px}
.skip{position:absolute; left:-9999px}
.skip:focus{left:12px; top:12px; background:var(--paper); padding:10px 14px; border:2px solid var(--accent); z-index:99}

/* masthead */
.masthead{border-bottom:2px solid var(--ink); background:var(--paper)}
.masthead-inner{display:flex; align-items:baseline; justify-content:space-between; gap:24px; padding:22px 24px; max-width:var(--maxw); margin:0 auto; flex-wrap:wrap}
.brand{font-family:var(--sans); font-weight:700; font-size:15px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink); text-decoration:none}
.brand span{color:var(--accent)}
.masthead nav{font-family:var(--sans); font-size:13.5px}
.masthead nav a{color:var(--ink-2); text-decoration:none; margin-left:20px; border-bottom:1px solid transparent; padding-bottom:2px}
.masthead nav a:hover{color:var(--accent); border-bottom-color:var(--accent)}

/* hero */
.hero{padding:56px 0 34px; border-bottom:1px solid var(--rule)}
.kicker{font-family:var(--sans); font-size:12px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--accent); margin:0 0 14px}
h1{font-size:clamp(34px,5.2vw,52px); line-height:1.12; letter-spacing:-.018em; margin:0 0 18px; font-weight:600}
.standfirst{font-size:21px; line-height:1.55; color:var(--ink-2); margin:0 0 26px; max-width:46em}
.byline{font-family:var(--sans); font-size:13.5px; color:var(--ink-3); display:flex; flex-wrap:wrap; gap:8px 18px; align-items:center; padding-top:18px; border-top:1px solid var(--rule)}
.byline b{color:var(--ink-2); font-weight:600}

/* facts */
.facts{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--rule); border:1px solid var(--rule); margin:34px 0}
.fact{background:var(--paper); padding:18px 20px}
.fact .n{font-family:var(--sans); font-size:27px; font-weight:700; color:var(--accent); line-height:1.1; letter-spacing:-.02em}
.fact .l{font-family:var(--sans); font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3); margin-top:6px}

/* typography */
section{padding:46px 0; border-bottom:1px solid var(--rule)}
section:last-of-type{border-bottom:0}
h2{font-size:clamp(25px,3.4vw,33px); line-height:1.2; letter-spacing:-.012em; margin:0 0 8px; font-weight:600}
h2 .num{font-family:var(--sans); font-size:13px; font-weight:700; letter-spacing:.14em; color:var(--accent); display:block; margin-bottom:10px; text-transform:uppercase}
h3{font-size:22px; margin:34px 0 10px; font-weight:600; letter-spacing:-.008em}
h4{font-family:var(--sans); font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); margin:22px 0 8px; font-weight:700}
p{margin:0 0 16px}
a{color:var(--accent)}
.lede{font-size:19.5px; color:var(--ink-2)}
ul,ol{margin:0 0 16px; padding-left:22px}
li{margin-bottom:7px}
small,.small{font-size:14.5px; color:var(--ink-3)}

/* tables */
.tablewrap{overflow-x:auto; margin:24px 0; border:1px solid var(--rule)}
table{border-collapse:collapse; width:100%; font-family:var(--sans); font-size:14.5px; background:var(--paper)}
caption{text-align:left; font-family:var(--sans); font-size:13px; color:var(--ink-3); padding:12px 14px; border-bottom:1px solid var(--rule); background:var(--paper-2)}
th,td{padding:11px 14px; text-align:left; border-bottom:1px solid var(--rule-2); vertical-align:top}
thead th{background:var(--paper-3); font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-2); border-bottom:1px solid var(--rule); white-space:nowrap; font-weight:700}
tbody tr:hover{background:var(--paper-2)}
td.rank{font-weight:700; color:var(--ink-3); width:44px; text-align:center}
td.vendor{font-weight:600; color:var(--ink)}
td.score{font-weight:700; color:var(--accent); text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap}
td.num{text-align:right; font-variant-numeric:tabular-nums}
tbody tr.top td{background:var(--gold-soft)}
tbody tr.top td.rank{color:var(--gold)}

/* vendor cards */
.vendor-card{border:1px solid var(--rule); border-left:3px solid var(--rule); padding:26px 28px; margin:26px 0; background:var(--paper)}
.vendor-card.gold{border-left-color:var(--gold)}
.vendor-card.silver{border-left-color:var(--accent)}
.vc-head{display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:4px}
.vc-rank{font-family:var(--sans); font-size:12px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3)}
.vendor-card.gold .vc-rank{color:var(--gold)}
.vc-head h3{margin:0; font-size:26px}
.vc-score{font-family:var(--sans); font-size:30px; font-weight:700; color:var(--accent); letter-spacing:-.02em; font-variant-numeric:tabular-nums}
.vc-score sub{font-size:13px; font-weight:400; color:var(--ink-3); letter-spacing:0}
.verdict{font-family:var(--sans); font-size:13px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--accent); margin:2px 0 14px}
.vendor-card.gold .verdict{color:var(--gold)}
.pros-cons{display:grid; grid-template-columns:1fr 1fr; gap:22px; margin-top:18px; padding-top:18px; border-top:1px solid var(--rule-2)}
.pros-cons ul{list-style:none; padding:0; margin:0; font-family:var(--sans); font-size:14.5px; line-height:1.5}
.pros-cons li{padding-left:20px; position:relative; margin-bottom:8px; color:var(--ink-2)}
.pros li::before{content:"+"; position:absolute; left:0; color:var(--good); font-weight:700}
.cons li::before{content:"\2212"; position:absolute; left:0; color:var(--warn); font-weight:700}
.specs{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:1px; background:var(--rule-2); border:1px solid var(--rule-2); margin:18px 0 0}
.spec{background:var(--paper); padding:11px 13px; font-family:var(--sans)}
.spec dt{font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-3); margin-bottom:3px}
.spec dd{margin:0; font-size:14px; font-weight:600; color:var(--ink)}

/* callouts */
.callout{background:var(--accent-soft); border-left:3px solid var(--accent); padding:20px 24px; margin:26px 0; font-size:17px}
.callout h4{margin-top:0; color:var(--accent)}
.callout p:last-child{margin-bottom:0}
.note{background:var(--paper-2); border:1px solid var(--rule); padding:18px 22px; margin:24px 0; font-family:var(--sans); font-size:14.5px; line-height:1.6; color:var(--ink-2)}
.note p:last-child{margin-bottom:0}
.note strong{color:var(--ink)}

/* weights */
.weights{list-style:none; padding:0; margin:22px 0}
.weights li{display:grid; grid-template-columns:minmax(190px,280px) 64px 1fr; gap:14px; align-items:center; padding:12px 0; border-bottom:1px solid var(--rule-2); margin:0; font-family:var(--sans); font-size:15px}
.weights .w{font-weight:700; color:var(--accent); font-variant-numeric:tabular-nums}
.bar{height:7px; background:var(--paper-3); position:relative; overflow:hidden}
.bar i{position:absolute; top:0; bottom:0; left:0; background:var(--accent); display:block}

/* faq */
.faq details{border-bottom:1px solid var(--rule)}
.faq details:first-of-type{border-top:1px solid var(--rule)}
.faq summary{cursor:pointer; padding:18px 0; font-size:18.5px; font-weight:600; list-style:none; display:flex; justify-content:space-between; gap:16px; align-items:flex-start}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+"; font-family:var(--sans); color:var(--accent); font-weight:400; font-size:24px; line-height:1}
.faq details[open] summary::after{content:"\2212"}
.faq .a{padding:0 0 20px; color:var(--ink-2); max-width:58em}
.faq .a p:last-child{margin-bottom:0}

/* sources */
ol.sources{font-family:var(--sans); font-size:14.5px; line-height:1.6; padding-left:26px}
ol.sources li{margin-bottom:12px; color:var(--ink-2)}
ol.sources a{word-break:break-word}

/* footer */
footer{background:var(--paper-2); border-top:2px solid var(--ink); padding:40px 0 48px; font-family:var(--sans); font-size:14px; color:var(--ink-3)}
footer h4{margin-top:0}
.foot-grid{display:grid; grid-template-columns:2fr 1fr 1fr; gap:36px}
footer a{color:var(--ink-2); text-decoration:none; display:block; margin-bottom:7px}
footer a:hover{color:var(--accent)}
.disclosure{margin-top:32px; padding-top:22px; border-top:1px solid var(--rule); font-size:13px; line-height:1.6; max-width:70em}

code{font-family:var(--mono); font-size:.88em; background:var(--paper-3); padding:1px 5px; border-radius:2px}
pre{font-family:var(--mono); font-size:13px; line-height:1.55; background:var(--paper-2); border:1px solid var(--rule); padding:16px 18px; overflow-x:auto; margin:20px 0}
pre code{background:none; padding:0}

@media (max-width:820px){
  .facts{grid-template-columns:repeat(2,1fr)}
  .pros-cons{grid-template-columns:1fr; gap:14px}
  .foot-grid{grid-template-columns:1fr}
  .weights li{grid-template-columns:1fr 54px}
  .weights .bar{grid-column:1/-1}
}
@media (max-width:560px){
  body{font-size:17px}
  .wrap{padding:0 18px}
  .masthead-inner{padding:16px 18px}
  .masthead nav a{margin:0 16px 0 0}
  .vendor-card{padding:20px}
}

@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ink:#e7ebf0; --ink-2:#b4bdc9; --ink-3:#8b96a5;
    --rule:#2a323d; --rule-2:#222932;
    --paper:#11151a; --paper-2:#171c23; --paper-3:#1d232b;
    --accent:#7fb0e8; --accent-soft:#16212e;
    --gold:#d7b45c; --gold-soft:#241f12;
    --good:#5fc79a; --warn:#d99a5c;
  }
}
:root[data-theme="dark"]{
  --ink:#e7ebf0; --ink-2:#b4bdc9; --ink-3:#8b96a5;
  --rule:#2a323d; --rule-2:#222932;
  --paper:#11151a; --paper-2:#171c23; --paper-3:#1d232b;
  --accent:#7fb0e8; --accent-soft:#16212e;
  --gold:#d7b45c; --gold-soft:#241f12;
  --good:#5fc79a; --warn:#d99a5c;
}
