
:root{ --zl:#7c3aed; --z-ink:#1f2937; --z-ink-2:#6b7280; --z-line:#e5e7eb; --ink-2:#4b5563; }
/* whole card links Amazon; the Details chip keeps the internal page */
.zl-card{ position:relative; overflow:hidden; }
.card-amz{ position:absolute; inset:0; z-index:3; }
.card-details{ position:absolute; top:10px; right:10px; z-index:4; background:#fff; color:#4c1d95 !important;
  border:1px solid rgba(76,29,149,.18); border-radius:999px; padding:3px 11px; font-size:.72rem; font-weight:700;
  letter-spacing:.04em; text-transform:uppercase; text-decoration:none !important; box-shadow:0 1px 4px rgba(0,0,0,.08); }
.card-details:hover{ background:var(--zl); color:#fff !important; }
.card-cta{ position:relative; z-index:4; display:block; margin-top:auto; text-align:center; padding:.6rem 1rem;
  border-radius:999px; font-weight:700; font-size:.9rem; color:#fff !important; text-decoration:none !important;
  background:linear-gradient(135deg,#667eea 0%,#764ba2 100%); }
.card-cta:hover{ filter:brightness(1.08); }
.zl-card .trust-points{ margin:.2rem 0 .9rem; }
.zl-note{ margin:.2rem 0 .9rem; font-size:.85rem; color:#6b7280; }
.zl-bs-img{ overflow:hidden; border-radius:10px 10px 0 0; }
.zl-bs-img img{ height:250px; object-fit:cover; }
.zl-clamp{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:2.6em; }
/* product pages */
.zl-avail{ margin:1rem 0 0; padding:.75rem 1rem; border-left:4px solid var(--zl); background:#f5f3ff; border-radius:8px;
  font-size:.92rem; color:#374151; }
/* guide and sitemap */
.zl-crumbs{ font-size:.85rem; opacity:.9; margin-bottom:.8rem; }
.zl-crumbs a{ color:#fff; text-decoration:underline; }
.zl-prose{ max-width:960px; margin:0 auto; color:#374151; }
.zl-prose h2{ font-size:1.6rem; font-weight:800; color:#111827; margin:2.4rem 0 .9rem; line-height:1.25; }
.zl-prose h3{ font-size:1.2rem; font-weight:700; color:#111827; margin:1.6rem 0 .6rem; }
.zl-prose p, .zl-prose li{ font-size:1.03rem; line-height:1.75; }
.zl-prose p{ margin:0 0 1rem; }
.zl-prose ul{ list-style:disc; padding-left:1.4rem; margin:0 0 1rem; }
.zl-prose ol{ list-style:decimal; padding-left:1.4rem; margin:0 0 1rem; }
.zl-prose a{ color:#6d28d9; text-decoration:underline; }
.zl-sitemap ul{ columns:2; column-gap:2rem; }
.zl-sitemap h2 a{ color:#111827; text-decoration:none; }
.spec-table-wrap{ overflow-x:auto; margin:1rem 0 1.4rem; }
.spec-table{ width:100%; border-collapse:collapse; font-size:.92rem; background:#fff; }
.spec-table th, .spec-table td{ border-bottom:1px solid var(--z-line); padding:.6rem .7rem; text-align:left; vertical-align:top; }
.spec-table thead th{ background:#f5f3ff; font-weight:700; }
details.faq{ border:1px solid var(--z-line); border-radius:10px; padding:.7rem 1rem; margin:.6rem 0; background:#fff; }
details.faq summary{ font-weight:700; cursor:pointer; }
details.faq p{ margin:.5rem 0 0; }
.widget{ border:1px solid var(--z-line); border-radius:14px; padding:1.1rem 1.2rem; margin:1.4rem 0; background:#fff; }
.widget select, .widget input{ padding:.45rem .6rem; border-radius:8px; border:1px solid #ccc; }
.widget-sub{ color:var(--z-ink-2); font-size:.9rem; }
@media (max-width:640px){ .zl-sitemap ul{ columns:1; } .zl-prose p, .zl-prose li{ font-size:.96rem; } }

/* ---- inline-SVG figures ------------------------------------------------ */
.chart-figure{ margin:1.6rem 0 2rem; padding:1.1rem 1.2rem 1rem;
  border:1px solid var(--z-line); border-radius:14px; background:#fff; }
.chart-title{ font-family:'Plus Jakarta Sans',sans-serif; font-weight:700;
  font-size:.95rem; color:var(--z-ink); margin:0 0 .8rem; }
.chart-svg{ display:block; max-width:100%; height:auto; overflow:visible; }
.chart-note{ font-size:.8rem; color:var(--z-ink-2); margin:.8rem 0 0; }
@media (max-width:575.98px){ .chart-figure{ padding:.9rem .7rem; } }


/* ---------- trust points on product cards ------------------------------
   Replaces the "4.6 stars from N ratings" line. Three earned claims, no
   numbers. See trust_points.py for how a card qualifies for each one.     */
.trust-points{
  display:inline-block; text-align:left;
  list-style:none; margin:.15rem 0 1.15rem; padding:0;
}
.trust-points li{
  display:flex; align-items:flex-start; gap:.6rem;
  font-family:'Plus Jakarta Sans',sans-serif;
  font-size:.875rem; font-weight:600; line-height:1.4;
  color:var(--ink-2);
}
.trust-points li + li{ margin-top:.44rem; }
.trust-points li::before{
  /* deliberately NOT --accent: the check must not read as another CTA */
  content:"\2713";
  flex:0 0 14px; margin-top:.01rem;
  color:#16A34A;
  font-size:.95rem; font-weight:700; line-height:1.3;
}
@media (max-width:575.98px){
  .trust-points li{ font-size:.83rem; }
}


/* ---- interactive widgets ----------------------------------------------- */
.widget{ border:1px solid var(--z-line, var(--line, #E4E8E4)); border-radius:16px; background:#fff;
  padding:1.15rem 1.25rem 1.3rem; margin:1.8rem 0 2.2rem; }
.widget > h3{ font-size:1.05rem; margin:0 0 .25rem; }
.widget .widget-sub{ font-size:.85rem; color:var(--z-ink-2, var(--ink-2, #5A635C)); margin:0 0 1rem; }
.widget label{ font-size:.78rem; font-weight:700; text-transform:uppercase;
  letter-spacing:.03em; color:var(--z-ink-2, var(--ink-2, #5A635C)); display:block; margin-bottom:.3rem; }
.widget select,.widget input[type=search]{
  width:100%; max-width:100%; padding:.55rem .75rem; font-size:.95rem;
  border:1px solid var(--z-line, var(--line, #E4E8E4)); border-radius:10px; background:var(--z-paper-2, var(--paper-2, #fff));
  color:var(--z-ink, var(--ink, #1F2421)); }
.widget select:focus,.widget input:focus{ outline:2px solid var(--z-accent,#23794A);
  outline-offset:1px; }
.widget-controls{ display:flex; gap:.9rem; flex-wrap:wrap; margin-bottom:1rem; }
.widget-controls > div{ flex:1 1 190px; }
.widget-out{ border-top:1px solid var(--z-line, var(--line, #E4E8E4)); padding-top:1rem; }
.widget-out dl{ display:grid; grid-template-columns:auto 1fr; gap:.35rem 1rem;
  margin:0 0 .9rem; font-size:.92rem; }
.widget-out dt{ color:var(--z-ink-2, var(--ink-2, #5A635C)); }
.widget-out dd{ margin:0; font-weight:600; }
.verdict{ display:inline-block; font-size:.78rem; font-weight:700; padding:.3rem .7rem;
  border-radius:999px; margin-bottom:.7rem; }
.verdict.yes{ background:#E7F6EC; color:#137A3C; }
.verdict.no{ background:#FDECEC; color:#A32020; }
.verdict.warn{ background:#FFF4DC; color:#8A5A00; }
table.sortable th{ cursor:pointer; user-select:none; white-space:nowrap; }
table.sortable th[aria-sort="ascending"]::after{ content:" \2191"; }
table.sortable th[aria-sort="descending"]::after{ content:" \2193"; }
table.sortable th:hover{ color:var(--z-ink, var(--ink, #1F2421)); }
.widget .row-count{ font-size:.82rem; color:var(--z-ink-2, var(--ink-2, #5A635C)); margin:.7rem 0 0; }
