:root{--bg:#F7F5F0;--surface:#FFFDF9;--raise:#fff;--line:#E4DED0;--soft:#F0EBDE;
 --ink:#191815;--ink2:#514E46;--ink3:#8A8578;--accent:#A8761F;--accent-soft:#F5E9CE;
 --good:#1F7A4C;--good-soft:#E3F0E8;--warn:#B93F10;--plate:#1E1D1A;--plate-ink:#F0ECE1;
 --mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
 --sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
 --sh:0 1px 2px rgba(30,25,10,.05),0 4px 14px rgba(30,25,10,.045)}
@media (prefers-color-scheme:dark){:root{--bg:#131311;--surface:#1B1B18;--raise:#232321;
 --line:#36352E;--soft:#272620;--ink:#F3F0E7;--ink2:#B6B1A3;--ink3:#8A8578;--accent:#CB9C3E;
 --accent-soft:#3C3119;--good:#4BA678;--good-soft:#1B2E24;--warn:#DE7440;--plate:#0D0D0B;
 --sh:0 1px 2px rgba(0,0,0,.4),0 4px 14px rgba(0,0,0,.3)}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;
 line-height:1.62;-webkit-font-smoothing:antialiased}
.top{max-width:820px;margin:0 auto;padding:14px 18px;display:flex;justify-content:space-between;
 align-items:center;gap:12px;border-bottom:1px solid var(--line)}
.brand{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;
 color:var(--ink2);text-decoration:none}
.brand.dim{color:var(--ink3)}
.wrap{max-width:820px;margin:0 auto;padding:22px 18px 60px}
.foot{max-width:820px;margin:0 auto;padding:22px 18px 60px;border-top:1px solid var(--line);
 color:var(--ink3);font-size:13px}
.crumb{font-family:var(--mono);font-size:11.5px;color:var(--ink3);margin-bottom:10px}
.crumb a{color:var(--ink2)}
h1{font-size:clamp(28px,4.6vw,42px);line-height:1.06;letter-spacing:-.025em;margin:4px 0 16px;
 text-wrap:balance;font-weight:680}
h2{font-size:13px;font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;
 color:var(--ink3);margin:38px 0 14px;padding-bottom:8px;border-bottom:1px solid var(--line);
 font-weight:500}
p{margin:0 0 14px}
.intro{font-size:18.5px;color:var(--ink2);max-width:64ch}
.lead{color:var(--ink2);font-size:16px;max-width:68ch}
.dim{color:var(--ink3);font-size:14px}
a{color:var(--accent)}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{
 outline:2px solid var(--accent);outline-offset:2px}
.glance{display:grid;grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:1px;
 background:var(--line);border:1px solid var(--line);border-radius:7px;overflow:hidden;margin:0 0 20px}
.glance>div{background:var(--surface);padding:13px 15px;display:flex;flex-direction:column}
.k{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
 color:var(--ink3);margin-bottom:4px}
.v{font-size:17px;font-weight:640;font-variant-numeric:tabular-nums;line-height:1.25}
.v small{display:block;font-size:10.5px;font-weight:400;opacity:.65;margin-top:2px}
.callout{border-left:3px solid var(--accent);background:var(--accent-soft);padding:15px 17px;
 border-radius:0 7px 7px 0;margin:0 0 18px;font-size:16.5px}
.callout.warn{border:1px solid var(--warn);border-left-width:3px;background:transparent;
 color:var(--warn);font-size:14.5px;border-radius:7px}
.ranked{margin:0 0 16px;padding-left:24px}
.ranked li{margin-bottom:11px}
.ranked li span{display:block;color:var(--ink2);font-size:15px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:7px;padding:15px 17px;
 margin-bottom:10px;box-shadow:var(--sh)}
.card b{display:block;margin-bottom:4px;font-size:16.5px}
.card p{margin:0;color:var(--ink2);font-size:15.5px}
a.card.link{display:block;text-decoration:none;color:var(--ink)}
a.card.link span{display:block;font-family:var(--mono);font-size:13px;color:var(--ink3);margin-top:3px}
a.card.link:hover{border-color:var(--accent)}
details.cause{background:var(--surface);border:1px solid var(--line);border-radius:7px;
 margin-bottom:10px;box-shadow:var(--sh);overflow:hidden}
details.cause[open]{border-color:var(--accent)}
summary{list-style:none;cursor:pointer;padding:15px 17px;display:flex;gap:11px;align-items:center;
 flex-wrap:wrap}
summary::-webkit-details-marker{display:none}
summary::after{content:'+';margin-left:auto;font-family:var(--mono);font-size:20px;
 color:var(--ink3);line-height:1}
details[open] summary::after{content:'\2013'}
.cn{font-size:18px;font-weight:640;text-transform:capitalize}
.pill{font-family:var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;
 padding:3px 8px;border-radius:99px;white-space:nowrap;border:1px solid var(--line);color:var(--ink3)}
.pill.most{color:var(--accent);background:var(--accent-soft);border-color:transparent;font-weight:600}
.pill.free{color:var(--good);background:var(--good-soft);border-color:transparent}
.pill.pro{color:var(--warn);border-color:var(--warn)}
.cost{font-family:var(--mono);font-size:15px;font-variant-numeric:tabular-nums;font-weight:600;
 white-space:nowrap}
.cbody{padding:0 17px 17px;border-top:1px solid var(--soft)}
ul.meta{list-style:none;display:flex;gap:8px;flex-wrap:wrap;padding:12px 0 14px;margin:0}
ul.meta li{font-family:var(--mono);font-size:11.5px;color:var(--ink3);border:1px solid var(--line);
 border-radius:4px;padding:3px 8px}
.test{font-size:16px;color:var(--ink2);margin:0 0 9px}
.means{font-size:15.5px;background:var(--soft);padding:11px 14px;border-radius:6px;margin:0 0 14px}
.vid{border:1px solid var(--line);border-radius:7px;overflow:hidden;margin:0 0 14px;background:var(--raise)}
.vidposter{display:block;width:100%;padding:0;border:0;background:#111;cursor:pointer;
 position:relative;line-height:0}
.vidposter img{width:100%;height:auto;display:block;opacity:.82;object-fit:cover;aspect-ratio:16/9}
.vidposter:hover img{opacity:1}
.play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.play svg{width:62px;height:62px;fill:#fff;filter:drop-shadow(0 2px 8px rgba(0,0,0,.6))}
.vidcap{position:absolute;left:12px;right:12px;bottom:10px;color:#fff;font-family:var(--mono);
 font-size:12.5px;line-height:1.35;text-align:left;text-shadow:0 1px 4px rgba(0,0,0,.9)}
.vid iframe{width:100%;aspect-ratio:16/9;display:block;border:0}
.vidmeta{padding:9px 14px;font-size:12.5px;color:var(--ink3);display:flex;justify-content:space-between;
 gap:10px;flex-wrap:wrap;font-family:var(--mono)}
.buyrow{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding-top:14px;
 border-top:1px solid var(--soft)}
.pimg{border-radius:6px;background:#fff;object-fit:contain;flex:none;border:1px solid var(--line)}
.pmeta{flex:1;min-width:150px}
.pn{font-family:var(--mono);font-size:13px;color:var(--ink)}
.ptitle{font-size:13px;color:var(--ink3);margin:2px 0 5px;line-height:1.4}
.chip{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;
 border:1px solid currentColor;border-radius:4px;padding:2px 6px;margin-right:5px}
.chip.oem{color:var(--accent)}.chip.aft{color:var(--ink3)}.chip.cat{color:var(--warn)}
a.buy{font-family:var(--mono);font-size:14px;color:#fff;background:var(--accent);text-decoration:none;
 border-radius:6px;padding:11px 18px;white-space:nowrap;font-weight:600;margin-left:auto}
a.buy:hover{filter:brightness(1.08)}
.plate{background:var(--plate);color:var(--plate-ink);padding:17px 19px;display:grid;
 grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:17px 24px;font-family:var(--mono);
 border-radius:7px;margin-bottom:18px}
.plate .k{opacity:.6}
.rel{display:flex;gap:8px;flex-wrap:wrap}
.rel a{font-size:14.5px;color:var(--ink2);text-decoration:none;border:1px solid var(--line);
 border-radius:99px;padding:7px 15px;background:var(--surface)}
.rel a:hover{border-color:var(--accent);color:var(--ink)}
.rel.big a{font-size:16px;padding:11px 18px}
.picker{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:18px;
 box-shadow:var(--sh)}
.picker label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.1em;
 text-transform:uppercase;color:var(--ink3);margin-bottom:7px}
input[type=text],input[type=number]{padding:13px 15px;font-size:17px;border:1px solid var(--line);
 border-radius:7px;background:var(--raise);color:var(--ink);width:100%;font-family:inherit}
input[type=number]{width:96px;font-family:var(--mono);padding:8px 11px;font-size:16px}
.results{margin-top:12px;max-height:340px;overflow-y:auto;border:1px solid var(--line);
 border-radius:7px;background:var(--raise)}
.hit{padding:13px 15px;border-bottom:1px solid var(--soft)}
.hit:last-child{border-bottom:0}
.hit b{font-size:16px}
.hit>span{display:block;font-family:var(--mono);font-size:12.5px;color:var(--ink3)}
.symlinks{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}
.symlinks a{font-size:13.5px;text-decoration:none;border:1px solid var(--line);border-radius:99px;
 padding:5px 12px;color:var(--ink2)}
.symlinks a:hover{border-color:var(--accent);color:var(--ink)}
.calc{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:18px;
 box-shadow:var(--sh)}
.calc label{font-size:16px}
.vrows{margin:0}
.vrows>div{display:flex;justify-content:space-between;gap:14px;padding:11px 0;
 border-bottom:1px solid var(--soft)}
.vrows>div:last-child{border-bottom:0}
.vrows dt{color:var(--ink2);font-size:15.5px}
.vrows dd{margin:0;font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600}
@media(max-width:640px){
  body{font-size:16px}
  .buyrow{gap:10px}
  a.buy{margin-left:0;width:100%;text-align:center}
  .pimg{width:76px;height:76px}
}

/* ---------- revision: verdict card replaces intro + glance + callout ---------- */
.verdict{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);
 border-radius:8px;padding:18px 20px;margin:0 0 16px;box-shadow:var(--sh)}
.vhead{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.vlabel{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;
 color:var(--ink3)}
.vname{margin:0;font-size:26px;font-weight:700;letter-spacing:-.02em;text-transform:capitalize;
 border:0;padding:0;font-family:var(--sans);color:var(--ink)}
.vbadges{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin:0 0 13px;
 padding:0;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:hidden}
.vbadges li{background:var(--surface);padding:9px 10px;text-align:center}
.vbadges b{display:block;font-size:17px;font-variant-numeric:tabular-nums;line-height:1.2}
.vbadges span{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;
 color:var(--ink3)}
.vtell{margin:0 0 14px;font-size:16px;color:var(--ink2)}
.vcta{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;font-weight:650;
 font-size:16px;padding:12px 22px;border-radius:7px}
.vcta:hover{filter:brightness(1.08)}
.vnote{margin:11px 0 0;font-size:13.5px;color:var(--ink3)}
figure.diag{margin:0 0 16px;background:var(--surface);border:1px solid var(--line);
 border-radius:8px;padding:14px}
figure.diag svg{width:100%;height:auto;display:block}
figure.diag figcaption{font-size:13.5px;color:var(--ink3);text-align:center;margin-top:6px}
p.safety{font-size:14px;color:var(--warn);border:1px solid var(--warn);border-radius:6px;
 padding:9px 13px;margin:0 0 8px}
ol.freechecks{margin:0 0 8px;padding-left:22px}
ol.freechecks li{margin-bottom:9px;color:var(--ink2);font-size:15.5px}
ol.freechecks b{color:var(--ink)}
.pill.rank{color:var(--accent);background:var(--accent-soft);border-color:transparent;font-weight:600}
.chip.fit{color:var(--good)}
p.disc{font-size:12.5px;color:var(--ink3);background:var(--soft);border-radius:5px;
 padding:8px 11px;margin:12px 0 0}
p.asof{font-size:11.5px;color:var(--ink3);font-family:var(--mono);margin:7px 0 0}
p.nopart{font-size:14.5px;color:var(--ink2);background:var(--soft);border-radius:6px;
 padding:12px 14px;margin:12px 0 0}
p.nopart b{color:var(--ink)}
p.powered{font-size:14px;color:var(--warn);border:1px dashed var(--warn);border-radius:6px;
 padding:9px 12px;margin:0 0 10px}
@media(max-width:640px){
  .vbadges{grid-template-columns:repeat(2,1fr)}
  .vname{font-size:23px}
  .vcta{display:block;text-align:center}
}

/* advice/monetisation alignment + right-to-repair */
p.demote{font-size:14px;color:var(--warn);background:transparent;border:1px dashed var(--warn);
 border-radius:6px;padding:9px 12px;margin:12px 0 0}
details.r2r{border:1px solid var(--line);border-radius:7px;margin-top:14px;background:var(--bg)}
details.r2r summary{padding:12px 15px;font-size:15px;font-weight:560}
details.r2r .cbody{border-top:1px solid var(--soft);padding:14px 15px}
table.r2rtable{width:100%;border-collapse:collapse;font-size:14px;margin:0 0 10px}
table.r2rtable th{text-align:left;font-weight:600;padding:7px 10px 7px 0;white-space:nowrap;
 border-bottom:1px solid var(--soft);width:1%}
table.r2rtable td{padding:7px 10px 7px 0;border-bottom:1px solid var(--soft);color:var(--ink2)}
td.r2r-covered{color:var(--good);font-weight:600;white-space:nowrap}
td.r2r-likely{color:var(--ink2);white-space:nowrap}
td.r2r-excluded{color:var(--warn);font-weight:600;white-space:nowrap}
.vbadges a{text-decoration:none}
.vbadges a b{border-bottom:2px solid var(--accent)}
a.vbuy{display:block;text-decoration:none;color:inherit}
a.vbuy b{display:block;color:var(--accent);text-decoration:underline;text-underline-offset:3px}
a.vbuy span{color:var(--accent)!important}
a.vbuy:hover b{filter:brightness(1.1)}

/* problem index on /fix/ — appliance > symptom > families. Grouped because a
   flat list of every family x symptom is a wall the reader has to scan. */
h3.probgrp{font-size:15px;font-weight:620;margin:22px 0 8px;padding-bottom:6px;
 border-bottom:1px solid var(--soft);color:var(--ink)}
dl.prob{margin:0;display:grid;grid-template-columns:minmax(150px,auto) 1fr;gap:7px 18px;
 align-items:baseline}
dl.prob dt{font-size:15px;font-weight:560;color:var(--ink)}
dl.prob dd{margin:0;display:flex;gap:7px;flex-wrap:wrap}
dl.prob dd a{font-size:14px;color:var(--ink2);text-decoration:none;border:1px solid var(--line);
 border-radius:999px;padding:4px 11px;white-space:nowrap}
dl.prob dd a:hover{border-color:var(--accent);color:var(--ink)}
@media (max-width:560px){
 dl.prob{grid-template-columns:1fr;gap:3px 0}
 dl.prob dt{margin-top:10px}
}

/* triage: honest dead ends and safety stops read differently from a link row */
dl.prob dd.nopage{font-size:13.5px;color:var(--ink3)}
dl.prob dd.stopnow{font-size:13.5px;color:var(--warn,#b4531a);border-left:3px solid currentColor;
 padding-left:10px}
dl.prob dd.stopnow b{color:inherit}
.vidmeta .vcaveat{display:block;color:var(--ink3);font-style:italic;margin-top:3px}

.picker label{display:block;font-weight:600;margin-bottom:6px}
.picker input{width:100%;padding:12px 14px;font-size:17px;font-family:inherit;
  border:1px solid var(--line);border-radius:3px}
.results{border:1px solid var(--line);border-top:none;max-height:340px;overflow-y:auto;background:var(--surface)}
button.hit{display:block;width:100%;text-align:left;padding:10px 14px;border:none;
  border-bottom:1px solid var(--line);background:none;font:inherit;cursor:pointer}
button.hit:hover,button.hit:focus,button.hit.on{background:var(--soft)}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
button.hit b{display:block}
button.hit span{font-size:13px;color:var(--ink2)}
.t{font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;border-radius:2px;margin-left:6px}
.t3{background:var(--good-soft);color:var(--good)}.t2{background:var(--accent-soft);color:var(--accent)}.t1{background:var(--line);color:var(--ink3)}
.card{border:1px solid var(--line);border-radius:3px;padding:20px;margin:22px 0;background:var(--surface)}
.card.warn{border-left:3px solid var(--warn)}
.runs{background:var(--soft);padding:12px 14px;border-radius:3px;margin:12px 0;font-size:15px}
.agebox{margin:14px 0}.agebox input{width:76px;padding:7px 9px;font:inherit;
  border:1px solid var(--line);border-radius:3px;margin:0 6px}
.v{padding:10px 14px;border-left:3px solid var(--accent);background:var(--soft);margin:10px 0}
.v.keep{border-left-color:var(--good)}.v.swap{border-left-color:var(--warn)}
p.disc{font-size:13.5px;color:var(--ink);background:var(--accent-soft);border:1px solid var(--line);border-radius:3px;padding:10px 13px;margin:12px 0}
ol.parts{list-style:none;padding:0}
ol.parts li{border-top:1px solid var(--line);padding:14px 0}
.pt{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.price{font-variant-numeric:tabular-nums;font-weight:600}
.free{background:var(--good-soft);padding:8px 11px;border-radius:3px;margin:8px 0;font-size:14px}
.esc{font-size:14px;color:var(--warn);margin:6px 0}
a.buy{display:inline-block;margin-top:8px;font-weight:600}
dl.prob dt{font-weight:600;margin-top:10px}
dl.prob dd{margin:2px 0 0 0;font-size:14px;color:var(--ink2)}
p.more{background:var(--accent-soft);padding:11px 14px;border-radius:3px;margin-top:14px}

ul.applist{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin:10px 0 22px}
ul.applist a{display:inline-block;border:1px solid var(--line);background:var(--surface);
  border-radius:3px;padding:10px 15px;text-decoration:none;font-weight:600}
ul.applist a:hover{background:var(--soft)}
.buyroute{background:var(--good-soft);border:1px solid var(--line);border-left:3px solid var(--good);
  border-radius:3px;padding:16px 20px;margin:26px 0}
.buyroute h2{margin-top:0}

.hubtool{background:var(--accent-soft);border:1px solid var(--line);border-radius:3px;padding:20px 22px;margin:22px 0}
.hubtool h2{margin-top:0}
/* ⛔ CTA CONTRAST. Every purchase button was light text on the ochre accent:
   3.98:1 in light mode, failing WCAG AA 4.5:1. The element most tied to
   revenue was the least legible on the page. --plate is dark ink in BOTH
   themes, so it stays high-contrast on the accent whichever way it flips
   (--surface does not: it is white in light mode). Focus ring added — the
   buy links had none. */
/* One accent cannot serve both roles: as a BUTTON FILL it wants to be light
   enough for dark ink, as LINK TEXT it wants to be dark enough against a light
   page. Measured, --accent gave 4.23:1 as a fill and ~3.98:1 as link text —
   both under AA. So a second token, defined for both themes:
     light  #8A5F0F  -> 5.13:1 as link text on --bg, 4.76:1 under light ink
     dark   #CB9C3E  -> 7.27:1 as link text on --bg, 7.67:1 over dark ink   */
:root{--accent-strong:#8A5F0F;--btn-ink:#F7F5F0}
@media (prefers-color-scheme:dark){:root{--accent-strong:#CB9C3E;--btn-ink:#0D0D0B}}
a{color:var(--accent-strong)}
a.cta,a.buy{display:inline-block;background:var(--accent-strong);color:var(--btn-ink);
  padding:11px 18px;border-radius:3px;font-weight:600;text-decoration:none}
a.cta:hover,a.buy:hover{filter:brightness(.93)}
a.cta:focus-visible,a.buy:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
ul.freechecks li{margin-bottom:9px}
/* The component table had NO styling: gen_site's stylesheet carries no table
   rules, so it rendered as bare unaligned text. Prices in a column must be
   tabular-nums or the reader cannot scan them, which is the whole point of
   the table. */
/* Scroll affordance. The wrapper scrolls but said nothing about it, and the
   column that falls off a phone screen is always the last one — the price and
   the buy link. A right-edge fade plus an explicit hint, both hidden once the
   table fits. */
.tw{overflow-x:auto;border:1px solid var(--line);border-radius:3px;
  background:var(--surface);margin:0 0 6px;position:relative;
  -webkit-overflow-scrolling:touch;scrollbar-width:thin}
.tw::after{content:"";position:sticky;right:0;top:0;float:right;width:26px;height:100%;
  pointer-events:none;background:linear-gradient(to right,transparent,var(--surface))}
.scrollhint{display:none;font-size:12.5px;color:var(--ink2);margin:0 0 16px}
@media (max-width:760px){.scrollhint{display:block}}
.tw table{border-collapse:collapse;width:100%;font-size:15px;min-width:460px}
.tw th{text-align:left;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink3);font-weight:600;padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
.tw td{padding:9px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.tw tr:last-child td{border-bottom:none}
.tw th.n,.tw td.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
ul.hublist{columns:2;column-gap:30px;list-style:none;padding:0}
ul.hublist li{break-inside:avoid;margin-bottom:6px}
@media (max-width:620px){ul.hublist{columns:1}}

.verdictbox{background:var(--accent-soft);border:1px solid var(--line);border-left:3px solid var(--warn);
  border-radius:3px;padding:16px 20px;margin:20px 0}
.verdictbox h2{margin-top:0}
.es{font-size:10px;letter-spacing:.08em;text-transform:uppercase;background:var(--good-soft);
  color:var(--good);padding:2px 6px;border-radius:2px;white-space:nowrap}
td.cfg{font-size:13px;color:var(--ink2)}
tr.clsrow td{background:var(--soft);font-weight:600;font-size:13px;letter-spacing:.02em;padding-top:12px}
.needs{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:16px 0}
.need{background:var(--surface);border:1px solid var(--line);border-radius:3px;padding:16px 18px}
.need b{display:block;margin-bottom:7px}
.need p{font-size:14px;color:var(--ink2);margin:0 0 9px}
