/* ═══════════════════════════════════════════════════════════════════════════
   PolitiDex — Say vs. Do receipt card  ·  "surface the contradiction"
   ────────────────────────────────────────────────────────────────────────────
   The receipt is the hero object: what a politician SAID set against what they
   actually DID, stamped with a plain-language verdict, and always carrying the
   source + date so the claim is checkable. It is built entirely from data the
   app already ships (window.ACCT_SPOTLIGHT — the sourced accountability layer —
   plus the stated-stance layer window.ISSUE_STANCE_DATA); no new schema.

   Visual language deliberately reuses the rest of the site (dark navy panels,
   Barlow Condensed / Bebas Neue display type, crimson / gold / green accents)
   so it reads as a first-class PolitiDex object, not a bolt-on. The one new
   idea is the VERDICT STAMP — an angled, ink-pressed rubber stamp — which is
   the "this is different" moment: the truth, stamped.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Homepage hero band ─────────────────────────────────────────────────────*/
#say-vs-do {
  position: relative;
  padding: 3.25rem 1rem 3.5rem;
  background:
    radial-gradient(1100px 420px at 50% -10%, rgba(192, 21, 42, 0.14), transparent 70%),
    linear-gradient(180deg, #0a0f1e 0%, #0b1120 55%, #0a0f1e 100%);
  border-top: 1px solid rgba(255, 255, 255, 0.05);
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
  overflow: hidden;
}
#say-vs-do .svd-inner { max-width: 78rem; margin: 0 auto; }

#say-vs-do .svd-head { text-align: center; margin-bottom: 1.6rem; }
#say-vs-do .svd-eyebrow {
  display: inline-flex; align-items: center; gap: 0.5rem;
  background: linear-gradient(90deg, rgba(192, 21, 42, 0.16), rgba(245, 200, 66, 0.12));
  border: 1px solid rgba(245, 200, 66, 0.32);
  border-radius: 9999px; padding: 0.34rem 1rem; margin-bottom: 0.85rem;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700;
  font-size: 0.72rem; letter-spacing: 0.2em; text-transform: uppercase; color: #fad96a;
}
#say-vs-do .svd-title {
  font-family: 'Bebas Neue', 'Barlow Condensed', sans-serif;
  font-size: clamp(2.1rem, 6vw, 3.6rem); line-height: 0.98; letter-spacing: 0.02em;
  color: #fff; margin: 0 0 0.55rem;
}
#say-vs-do .svd-title .svd-say { color: #eef4ff; }
#say-vs-do .svd-title .svd-vs  { color: #7596c0; margin: 0 0.35rem; }
#say-vs-do .svd-title .svd-do  { color: #f87171; }
#say-vs-do .svd-lead {
  font-family: 'Barlow', sans-serif; font-size: clamp(0.95rem, 2.1vw, 1.12rem);
  color: #cbd5e1; max-width: 44rem; margin: 0 auto; line-height: 1.55;
}
#say-vs-do .svd-lead strong { color: #fff; font-weight: 700; }

/* ── Featured (large) receipt + rotation controls ───────────────────────────*/
#say-vs-do .svd-stage {
  position: relative; max-width: 46rem; margin: 0 auto 1.5rem;
}
#say-vs-do .svd-controls {
  display: flex; align-items: center; justify-content: center; gap: 1rem;
  margin-top: 1rem;
}
#say-vs-do .svd-nav {
  width: 2.4rem; height: 2.4rem; border-radius: 9999px; cursor: pointer;
  background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.14);
  color: #cdd9ec; font-size: 1.05rem; line-height: 1; display: flex;
  align-items: center; justify-content: center; transition: all 0.18s ease;
}
#say-vs-do .svd-nav:hover { border-color: rgba(245, 200, 66, 0.6); color: #fff; transform: translateY(-1px); }
#say-vs-do .svd-dots { display: flex; gap: 0.4rem; }
#say-vs-do .svd-dot {
  width: 0.5rem; height: 0.5rem; border-radius: 9999px; cursor: pointer; padding: 0; border: 0;
  background: rgba(255, 255, 255, 0.2); transition: all 0.2s ease;
}
#say-vs-do .svd-dot.is-active { background: #f5c842; width: 1.4rem; }
/* On touch devices grow each dot's HIT area (not the visible dot) so it clears a
   comfortable thumb target. The colored pill stays small via content-box clip. */
@media (pointer: coarse) {
  #say-vs-do .svd-dots { gap: 0.1rem; }
  #say-vs-do .svd-dot {
    box-sizing: border-box; width: 1.75rem; height: 1.75rem; padding: 0.625rem;
    background-clip: content-box;
  }
  #say-vs-do .svd-dot.is-active { width: 2.65rem; }
}
#say-vs-do .svd-count {
  font-family: 'Barlow Condensed', sans-serif; font-size: 0.74rem; letter-spacing: 0.1em;
  text-transform: uppercase; color: #7596c0;
}

/* ── The receipt card ───────────────────────────────────────────────────────*/
.svd-receipt {
  position: relative; text-align: left; width: 100%; cursor: pointer;
  background: linear-gradient(180deg, rgba(17, 25, 44, 0.96), rgba(11, 17, 32, 0.96));
  border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 1.1rem;
  padding: 1.25rem 1.3rem 1.05rem; overflow: hidden;
  box-shadow: 0 22px 55px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.05);
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.svd-receipt:hover { transform: translateY(-2px); box-shadow: 0 28px 65px rgba(0, 0, 0, 0.6); }
/* Left accent rail keyed to the verdict. */
.svd-receipt::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
  background: var(--svd-accent, #f87171);
}
.svd-receipt.v-contradicts { border-color: rgba(248, 113, 113, 0.32); --svd-accent: #f87171; }
.svd-receipt.v-consistent  { border-color: rgba(74, 222, 128, 0.32);  --svd-accent: #4ade80; }
.svd-receipt.v-flag        { border-color: rgba(245, 158, 11, 0.32);  --svd-accent: #f59e0b; }
/* Vote-derived omnibus split card ("one vote, two outcomes"). Same violet the
   issue chip uses, so the accent reads as "this is about the issue mapping"
   rather than as a fourth verdict severity. */
.svd-receipt.v-omnibus     { border-color: rgba(167, 139, 250, 0.32); --svd-accent: #a78bfa; }

/* Header: who + the stamp */
.svd-rc-head { display: flex; align-items: flex-start; gap: 0.8rem; margin-bottom: 0.85rem; }
.svd-rc-photo {
  width: 3rem; height: 3.6rem; border-radius: 0.6rem; flex: none; overflow: hidden;
  background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.1);
  display: flex; align-items: center; justify-content: center; font-size: 1.5rem;
}
.svd-rc-photo img { width: 100%; height: 100%; object-fit: cover; object-position: top center; }
.svd-rc-id { flex: 1; min-width: 0; padding-top: 0.1rem; }
.svd-rc-name {
  font-family: 'Bebas Neue', 'Barlow Condensed', sans-serif; font-size: 1.45rem;
  line-height: 1.02; letter-spacing: 0.02em; color: #fff;
}
.svd-rc-sub {
  font-family: 'Barlow Condensed', sans-serif; font-size: 0.78rem; color: #9fb4d4;
  letter-spacing: 0.02em; margin-top: 0.15rem; line-height: 1.25;
}
.svd-rc-party {
  display: inline-block; margin-left: 0.4rem; font-size: 0.64rem; font-weight: 800;
  padding: 0.02rem 0.34rem; border-radius: 0.3rem; vertical-align: middle;
}

/* The verdict stamp — angled, ink-pressed. */
.svd-stamp {
  flex: none; align-self: flex-start; transform: rotate(-7deg);
  border: 2.5px solid var(--svd-accent, #f87171); color: var(--svd-accent, #f87171);
  border-radius: 0.5rem; padding: 0.28rem 0.55rem; text-align: center;
  background: color-mix(in srgb, var(--svd-accent, #f87171) 10%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--svd-accent, #f87171) 30%, transparent);
  max-width: 8.5rem;
}
.svd-stamp-v {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.62rem;
  letter-spacing: 0.06em; text-transform: uppercase; line-height: 1.05;
}
.svd-stamp-ico { font-size: 0.9rem; line-height: 1; }

/* Issue chip */
.svd-rc-issue {
  display: inline-flex; align-items: center; gap: 0.3rem; margin-bottom: 0.7rem;
  font-family: 'Barlow Condensed', sans-serif; font-size: 0.68rem; font-weight: 700;
  letter-spacing: 0.08em; text-transform: uppercase; color: #c4b5fd;
  background: rgba(139, 92, 246, 0.12); border: 1px solid rgba(139, 92, 246, 0.28);
  border-radius: 9999px; padding: 0.2rem 0.6rem;
}

/* The SAID / DID split — the heart of the receipt. */
.svd-line { position: relative; padding: 0.55rem 0 0.55rem 1.7rem; }
.svd-line + .svd-line { border-top: 1px dashed rgba(255, 255, 255, 0.1); }
.svd-line-tag {
  position: absolute; left: 0; top: 0.62rem;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.9rem;
}
.svd-said .svd-line-tag { color: #60a5fa; }
.svd-did  .svd-line-tag { color: var(--svd-accent, #f87171); }
.svd-line-label {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; font-size: 0.62rem;
  letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 0.15rem;
}
.svd-said .svd-line-label { color: #7ab0f0; }
.svd-did  .svd-line-label { color: color-mix(in srgb, var(--svd-accent, #f87171) 78%, #fff); }
.svd-line-text { font-family: 'Barlow', sans-serif; font-size: 0.92rem; color: #e7eefb; line-height: 1.42; }
.svd-said .svd-line-text { color: #dbe6f7; font-style: italic; }
.svd-did .svd-line-headline { font-weight: 700; color: #fff; }
.svd-line-detail { font-size: 0.84rem; color: #b7c6de; line-height: 1.4; margin-top: 0.2rem; }

/* Footer: source + date — the checkable part. */
.svd-rc-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 0.6rem;
  flex-wrap: wrap; margin-top: 0.85rem; padding-top: 0.7rem;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.svd-rc-src {
  display: inline-flex; align-items: center; gap: 0.35rem; min-width: 0;
  font-family: 'Barlow Condensed', sans-serif; font-size: 0.78rem; font-weight: 600;
  letter-spacing: 0.02em; color: #8fd0ff; text-decoration: none;
  max-width: 100%;
}
.svd-rc-src:hover { color: #cfe9ff; text-decoration: underline; }
.svd-rc-src .svd-src-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.svd-rc-date {
  font-family: 'Barlow Condensed', sans-serif; font-size: 0.78rem; font-weight: 700;
  letter-spacing: 0.06em; color: #cdd9ec; white-space: nowrap;
}
.svd-rc-date::before { content: "📅 "; }
.svd-rc-more {
  font-family: 'Barlow Condensed', sans-serif; font-size: 0.72rem; font-weight: 700;
  letter-spacing: 0.05em; text-transform: uppercase; color: #f5c842;
}

/* ── Strip of more receipts (thumbnails below the featured one) ─────────────*/
#say-vs-do .svd-strip-h {
  text-align: center; font-family: 'Barlow Condensed', sans-serif; font-weight: 700;
  font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; color: #7596c0;
  margin: 0.4rem 0 0.9rem;
}
#say-vs-do .svd-strip {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.85rem; max-width: 62rem; margin: 0 auto;
}
.svd-mini {
  position: relative; text-align: left; cursor: pointer; overflow: hidden;
  background: rgba(13, 21, 38, 0.7); border: 1px solid rgba(255, 255, 255, 0.08);
  border-left: 3px solid var(--svd-accent, #f87171); border-radius: 0.75rem;
  padding: 0.75rem 0.85rem; transition: all 0.18s ease;
}
.svd-mini:hover { transform: translateY(-2px); border-color: rgba(255, 255, 255, 0.18); background: rgba(18, 28, 52, 0.85); }
.svd-mini.v-contradicts { --svd-accent: #f87171; }
.svd-mini.v-consistent  { --svd-accent: #4ade80; }
.svd-mini.v-flag        { --svd-accent: #f59e0b; }
.svd-mini.v-omnibus     { --svd-accent: #a78bfa; }
.svd-mini-top { display: flex; align-items: center; gap: 0.55rem; margin-bottom: 0.5rem; }
.svd-mini-photo {
  width: 2rem; height: 2.4rem; border-radius: 0.4rem; flex: none; overflow: hidden;
  background: rgba(255, 255, 255, 0.06); display: flex; align-items: center; justify-content: center; font-size: 1rem;
}
.svd-mini-photo img { width: 100%; height: 100%; object-fit: cover; object-position: top center; }
.svd-mini-name { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; font-size: 0.9rem; color: #eef4ff; line-height: 1.1; }
.svd-mini-verd {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.58rem;
  letter-spacing: 0.06em; text-transform: uppercase; color: var(--svd-accent, #f87171); line-height: 1.1; margin-top: 0.1rem;
}
.svd-mini-head { font-family: 'Barlow', sans-serif; font-size: 0.84rem; color: #dbe6f7; line-height: 1.35; }
.svd-mini-foot {
  margin-top: 0.5rem; font-family: 'Barlow Condensed', sans-serif; font-size: 0.68rem;
  color: #7f97ba; letter-spacing: 0.02em; display: flex; gap: 0.4rem; align-items: center;
}
.svd-mini-foot .svd-mini-src { color: #8fd0ff; }

#say-vs-do .svd-cta { text-align: center; margin-top: 1.6rem; }
#say-vs-do .svd-cta-note {
  font-family: 'Barlow Condensed', sans-serif; font-size: 0.74rem; letter-spacing: 0.06em;
  color: #7596c0; margin-top: 0.7rem;
}
#say-vs-do .svd-cta-btn {
  display: inline-flex; align-items: center; gap: 0.5rem; cursor: pointer;
  background: linear-gradient(90deg, #c0152a, #e11d48); color: #fff;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.88rem;
  letter-spacing: 0.1em; text-transform: uppercase; padding: 0.75rem 1.6rem;
  border-radius: 0.85rem; border: 1px solid rgba(255, 255, 255, 0.18); text-decoration: none;
  box-shadow: 0 8px 24px rgba(192, 21, 42, 0.3); transition: transform 0.18s ease, box-shadow 0.18s ease;
}
#say-vs-do .svd-cta-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(192, 21, 42, 0.45); }

/* ── Search-result verdict badge (the All-Seeing Eye pol rows) ──────────────*/
.svd-eye-badge {
  display: inline-flex; align-items: center; gap: 0.25rem; margin-left: 0.4rem;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.6rem;
  letter-spacing: 0.05em; text-transform: uppercase; padding: 0.1rem 0.4rem;
  border-radius: 0.35rem; white-space: nowrap; vertical-align: middle;
}
.svd-eye-badge.v-contradicts { color: #f87171; background: rgba(248, 113, 113, 0.14); border: 1px solid rgba(248, 113, 113, 0.4); }
.svd-eye-badge.v-consistent  { color: #4ade80; background: rgba(74, 222, 128, 0.14); border: 1px solid rgba(74, 222, 128, 0.4); }
.svd-eye-badge.v-flag        { color: #fbbf24; background: rgba(245, 158, 11, 0.14); border: 1px solid rgba(245, 158, 11, 0.4); }

/* ── Share controls ─────────────────────────────────────────────────────────*/
.svd-rc-actions { display: inline-flex; align-items: center; gap: 0.7rem; }
.svd-share-btn {
  display: inline-flex; align-items: center; gap: 0.3rem; cursor: pointer;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.74rem;
  letter-spacing: 0.06em; text-transform: uppercase; color: #0a0f1e;
  background: linear-gradient(90deg, #f5c842, #fbbf24); border: 0;
  border-radius: 9999px; padding: 0.32rem 0.75rem; line-height: 1;
  box-shadow: 0 3px 12px rgba(245, 200, 66, 0.28); transition: transform 0.15s ease, box-shadow 0.15s ease, filter 0.15s ease;
}
.svd-share-btn:hover { transform: translateY(-1px); box-shadow: 0 5px 16px rgba(245, 200, 66, 0.45); }
.svd-share-btn:active { transform: translateY(0); }
.svd-share-btn.is-busy { filter: saturate(0.5) brightness(0.9); cursor: progress; }
.svd-share-btn .svd-share-ico { font-size: 0.9rem; }
/* Mobile-first: the receipt card's own share pill is the most-tapped share in the
   app and was sized for a mouse. Same pill, a thumb-sized target. */
@media (max-width: 640px) {
  .svd-share-btn { min-height: 2.5rem; padding: 0.55rem 1rem; font-size: 0.78rem; }
}

/* Mini card — a small round share button pinned top-right. */
.svd-mini-share {
  position: absolute; top: 0.5rem; right: 0.5rem; z-index: 2; cursor: pointer;
  width: 1.7rem; height: 1.7rem; border-radius: 9999px; padding: 0; line-height: 1;
  font-size: 0.9rem; color: #0a0f1e; background: linear-gradient(90deg, #f5c842, #fbbf24);
  border: 0; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
  display: flex; align-items: center; justify-content: center;
  opacity: 0.55; transition: opacity 0.15s ease, transform 0.15s ease;
}
.svd-mini:hover .svd-mini-share { opacity: 1; }
.svd-mini-share:hover { transform: scale(1.08); opacity: 1; }
.svd-mini-share.is-busy { cursor: progress; }
/* Touch devices never fire :hover, so the rule above left this button parked at
   55% opacity forever — a share control that looked like a disabled decoration on
   exactly the devices the mini cards are scrolled on. On any pointer that cannot
   hover it is simply always at full strength, and it takes a 44px tap target with
   it. Desktop keeps the quiet-until-hover treatment unchanged. */
@media (hover: none) {
  .svd-mini-share {
    opacity: 1;
    width: 2.75rem; height: 2.75rem; font-size: 1.05rem;
    top: 0.25rem; right: 0.25rem;
  }
}

/* Fallback destination menu (desktop / no file-share support). */
.svd-share-menu {
  position: fixed; z-index: 2147483000; width: 240px; padding: 0.55rem;
  background: linear-gradient(180deg, rgba(17, 25, 44, 0.99), rgba(11, 17, 32, 0.99));
  border: 1px solid rgba(148, 163, 184, 0.28); border-radius: 0.9rem;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.6); backdrop-filter: blur(12px);
  animation: svdMenuIn 0.14s ease-out;
}
@keyframes svdMenuIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
.svd-share-menu .svd-sm-head {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; font-size: 0.72rem;
  letter-spacing: 0.14em; text-transform: uppercase; color: #f5c842; padding: 0.2rem 0.35rem 0.15rem;
}
.svd-share-menu .svd-sm-note {
  font-family: 'Barlow', sans-serif; font-size: 0.72rem; color: #9fd8a0; line-height: 1.35;
  padding: 0 0.35rem 0.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.08); margin-bottom: 0.4rem;
}
.svd-share-menu button {
  display: flex; align-items: center; gap: 0.55rem; width: 100%; cursor: pointer; text-align: left;
  font-family: 'Barlow', sans-serif; font-size: 0.9rem; color: #e7eefb;
  background: transparent; border: 0; border-radius: 0.55rem; padding: 0.55rem 0.55rem;
  transition: background 0.12s ease;
}
.svd-share-menu button:hover { background: rgba(96, 165, 250, 0.14); }

/* Toast */
.svd-toast {
  position: fixed; left: 50%; bottom: 1.4rem; transform: translate(-50%, 1.5rem);
  z-index: 2147483000; max-width: 90vw; opacity: 0;
  font-family: 'Barlow', sans-serif; font-size: 0.9rem; color: #eef4ff;
  background: rgba(17, 25, 44, 0.98); border: 1px solid rgba(148, 163, 184, 0.28);
  border-radius: 0.7rem; padding: 0.7rem 1.1rem; box-shadow: 0 16px 40px rgba(0, 0, 0, 0.55);
  transition: opacity 0.28s ease, transform 0.28s ease;
}
.svd-toast.is-in { opacity: 1; transform: translate(-50%, 0); }

/* ── Coverage honesty (window.PDXCoverage) ──────────────────────────────────*/
/* "Not yet documented" instead of silence, wherever coverage is thin. */
.pdx-cov-badge {
  display: inline-flex; align-items: center; gap: 0.2rem; margin-left: 0.4rem;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; font-size: 0.58rem;
  letter-spacing: 0.05em; text-transform: uppercase; padding: 0.1rem 0.4rem;
  border-radius: 0.35rem; white-space: nowrap; vertical-align: middle;
  color: #9fb4d4; background: rgba(148, 163, 184, 0.12); border: 1px solid rgba(148, 163, 184, 0.32);
}
.pdx-cov-badge.pdx-cov-none { color: #cbb58a; background: rgba(245, 200, 66, 0.1); border-color: rgba(245, 200, 66, 0.3); }
.pdx-cov-callout {
  display: flex; gap: 0.7rem; align-items: flex-start;
  background: rgba(148, 163, 184, 0.07); border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 0.8rem; padding: 0.85rem 1rem; margin: 0.6rem 0;
}
.pdx-cov-callout.pdx-cov-none { background: rgba(245, 200, 66, 0.06); border-color: rgba(245, 200, 66, 0.24); }
.pdx-cov-callout .pdx-cov-ico { font-size: 1.15rem; line-height: 1; flex: none; }
.pdx-cov-callout .pdx-cov-title {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700; font-size: 0.68rem;
  letter-spacing: 0.12em; text-transform: uppercase; color: #cbd9ec; margin-bottom: 0.2rem;
}
.pdx-cov-callout .pdx-cov-text { font-family: 'Barlow', sans-serif; font-size: 0.85rem; color: #9fb4d4; line-height: 1.5; margin: 0; }

/* ── Inline verdict badge (global search suggestions) ───────────────────────*/
/* Compact chip shown inline in the search dropdown next to a person / receipt so
   the say-vs-do verdict is legible before anything is opened. */
.svd-badge {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 0.22rem;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.58rem;
  letter-spacing: 0.04em; text-transform: uppercase; padding: 0.12rem 0.4rem;
  border-radius: 0.35rem; white-space: nowrap; line-height: 1.2;
}
.svd-badge.v-contradicts { color: #f87171; background: rgba(248, 113, 113, 0.14); border: 1px solid rgba(248, 113, 113, 0.4); }
.svd-badge.v-consistent  { color: #4ade80; background: rgba(74, 222, 128, 0.14); border: 1px solid rgba(74, 222, 128, 0.4); }
.svd-badge.v-flag        { color: #fbbf24; background: rgba(245, 158, 11, 0.14); border: 1px solid rgba(245, 158, 11, 0.4); }
.svd-badge.v-omnibus     { color: #c4b5fd; background: rgba(167, 139, 250, 0.14); border: 1px solid rgba(167, 139, 250, 0.4); }

/* ── Receipt lightbox (what "name + issue" search lands on) ─────────────────*/
.svd-lightbox {
  position: fixed; inset: 0; z-index: 2147482000;
  display: flex; align-items: flex-start; justify-content: center;
  padding: max(3vh, 1rem) 1rem calc(1rem + env(safe-area-inset-bottom, 0px));
  background: rgba(4, 8, 18, 0.78); backdrop-filter: blur(6px);
  overflow-y: auto; -webkit-overflow-scrolling: touch;
  animation: svd-lb-fade 0.18s ease-out;
}
@keyframes svd-lb-fade { from { opacity: 0; } to { opacity: 1; } }
.svd-lb-panel {
  width: 100%; max-width: 34rem; margin: auto 0;
  animation: svd-lb-rise 0.22s cubic-bezier(0.2, 0.8, 0.2, 1);
}
@keyframes svd-lb-rise { from { transform: translateY(14px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
.svd-lb-bar {
  display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.6rem;
}
.svd-lb-eyebrow {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.72rem;
  letter-spacing: 0.14em; text-transform: uppercase; color: #f5c842;
}
.svd-lb-close {
  display: flex; align-items: center; justify-content: center;
  width: 2.1rem; height: 2.1rem; border-radius: 9999px; cursor: pointer;
  background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.18);
  color: #dbe6f7; font-size: 0.95rem; line-height: 1; transition: background 0.15s ease, transform 0.15s ease;
}
.svd-lb-close:hover { background: rgba(255, 255, 255, 0.16); transform: scale(1.05); }
.svd-lb-close:focus-visible { outline: 2px solid #f5c842; outline-offset: 2px; }
.svd-lb-actions { margin-top: 0.85rem; display: flex; justify-content: center; }
.svd-lb-profile {
  width: 100%; cursor: pointer; text-align: center;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.82rem;
  letter-spacing: 0.08em; text-transform: uppercase; color: #dbe6f7;
  background: rgba(30, 53, 96, 0.55); border: 1px solid rgba(117, 150, 192, 0.4);
  border-radius: 0.85rem; padding: 0.8rem 1rem; min-height: 44px;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
}
.svd-lb-profile:hover { background: rgba(30, 53, 96, 0.85); border-color: rgba(117, 150, 192, 0.65); color: #fff; }
.svd-lb-profile:active { transform: scale(0.98); }
.svd-lb-profile:focus-visible { outline: 2px solid #f5c842; outline-offset: 2px; }
/* Inside the lightbox the receipt card is the focus, not a hover-lift teaser. */
.svd-lightbox .svd-receipt { cursor: pointer; }
.svd-lightbox .svd-receipt:hover { transform: none; }

/* ── Responsive ─────────────────────────────────────────────────────────────*/
@media (max-width: 640px) {
  #say-vs-do { padding: 2.4rem 0.85rem 2.6rem; }
  #say-vs-do .svd-strip { grid-template-columns: 1fr; }
  .svd-stamp { transform: rotate(-5deg); max-width: 7rem; }
  .svd-rc-name { font-size: 1.25rem; }
}
@media (min-width: 641px) and (max-width: 900px) {
  #say-vs-do .svd-strip { grid-template-columns: repeat(2, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
  .svd-receipt, .svd-mini, #say-vs-do .svd-nav, #say-vs-do .svd-cta-btn { transition: none; }
  .svd-share-menu { animation: none; }
}

/* ── Official Record share affordance (receipt-cards.js) ─────────────────────*/
/* Deliberately NOT the gold Say-vs-Do pill above. The two feeds answer different
   questions and must never be mistaken for one another, so the vote-derived
   control is institutional steel with a 🏛️ cue and an outline instead of a fill —
   the same visual split the 🏛️ / 🧾 section headers already use.
     It ships hidden. receipt-cards.js reveals it only after it has actually built
   the card behind it (hydrate()), and removes it outright when no card passes the
   guards, so a share is never offered that cannot be honoured. `[hidden]` is
   restated with display:none because the element is otherwise inline-flex. */
.pdxrc-share-btn[hidden] { display: none !important; }
.pdxrc-share-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem;
  cursor: pointer; min-height: 2rem; padding: 0.34rem 0.72rem;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.72rem;
  letter-spacing: 0.05em; text-transform: uppercase; line-height: 1;
  color: #dbe6f7; background: rgba(30, 53, 96, 0.55);
  border: 1px solid var(--pdxrc-c, rgba(127, 180, 255, 0.42)); border-radius: 9999px;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
}
.pdxrc-share-btn:hover { background: rgba(30, 53, 96, 0.9); color: #fff; transform: translateY(-1px); }
.pdxrc-share-btn:active { transform: translateY(0); }
.pdxrc-share-btn:focus-visible { outline: 2px solid #7fb4ff; outline-offset: 2px; }
.pdxrc-share-btn.is-busy { cursor: progress; filter: saturate(0.5) brightness(0.9); }
.pdxrc-share-btn .pdxrc-ico { font-size: 0.85rem; }
/* Verdict accent only on the border — the card carries the verdict, the button
   just points at it, so this stays a hint rather than a second stamp. */
.pdxrc-share-btn.pdxrc-v-contradicts { --pdxrc-c: rgba(248, 113, 113, 0.5); }
.pdxrc-share-btn.pdxrc-v-consistent  { --pdxrc-c: rgba(74, 222, 128, 0.5); }
.pdxrc-share-btn.pdxrc-v-omnibus     { --pdxrc-c: rgba(167, 139, 250, 0.55); }
/* Bottom-sheet / narrow-column use: a full-width tap target. */
.pdxrc-share-btn.pdxrc-block { width: 100%; min-height: 2.6rem; font-size: 0.78rem; }
@media (max-width: 640px) {
  /* Mobile-first: every share control clears the 44px guidance on touch. */
  .pdxrc-share-btn { min-height: 2.4rem; padding: 0.5rem 0.85rem; font-size: 0.76rem; }
  .pdxrc-share-btn.pdxrc-block { min-height: 2.75rem; }
}
@media (prefers-reduced-motion: reduce) {
  .pdxrc-share-btn { transition: none; }
  .pdxrc-share-btn:hover { transform: none; }
}

/* ── Person-level share affordance (share-anywhere.js) ───────────────────────*/
/* The complement to the two controls above: they each promise ONE artifact and
   are right to be absent when that artifact does not exist, and this one promises
   the best artifact a given person has, so it is always present.

   Two rules matter more than the look.

   1. FIXED SIZE. Unlike .pdxrc-share-btn this control never appears, never
      disappears and never changes its visible label — hydration swaps a glyph
      inside a fixed-width slot and repaints one text node inside a
      height-reserved box. It therefore cannot contribute layout shift on the
      mobile sheets it was added to, which is the whole reason it is fail-open
      rather than fail-closed.
   2. IT LOOKS LIKE NEITHER FEED. Gold is the curated Say-vs-Do receipt and steel
      is the Official Record; a control that may send either must not pre-empt
      that answer, so it is neutral slate and takes its accent from the tier only
      once the tier is known. */
.pdxsa-wrap { display: inline-flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
.pdxsa-wrap-block { display: flex; width: 100%; }
.pdxsa-share-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
  cursor: pointer; min-height: 2.1rem; padding: 0.36rem 0.8rem;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 800; font-size: 0.73rem;
  letter-spacing: 0.05em; text-transform: uppercase; line-height: 1;
  color: #e2e9f6; background: rgba(23, 34, 58, 0.72);
  border: 1px solid var(--pdxsa-c, rgba(143, 165, 196, 0.45)); border-radius: 9999px;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
}
.pdxsa-share-btn:hover { background: rgba(23, 34, 58, 0.95); color: #fff; transform: translateY(-1px); }
.pdxsa-share-btn:active { transform: translateY(0); }
.pdxsa-share-btn:focus-visible { outline: 2px solid #7fb4ff; outline-offset: 2px; }
/* Busy is a filter and a cursor, never a label change — a control that renamed
   itself to "Building…" would resize mid-gesture. */
.pdxsa-share-btn.pdxsa-busy { cursor: progress; filter: saturate(0.55) brightness(0.9); }
/* The icon slot is fixed-width so swapping 🔗 → 🏛️ → 🧾 cannot move the label. */
.pdxsa-share-btn .pdxsa-ico {
  flex: none; width: 1.05rem; text-align: center; font-size: 0.9rem; line-height: 1;
}
.pdxsa-share-btn .pdxsa-lbl { white-space: nowrap; }
/* The record card is the strongest tier, so it gets the brightest rim — and a
   COLOURLESS one. Gold means curated receipt and steel means Official Record;
   green, amber and red already mean backs-it-up, mixed and contradicted inside
   the card itself. A tier accent that borrowed any of those would announce the
   verdict on the button, before the reader has seen what it rests on. */
.pdxsa-share-btn.pdxsa-t-summary { --pdxsa-c: rgba(226, 233, 246, 0.62); }
.pdxsa-share-btn.pdxsa-t-record  { --pdxsa-c: rgba(127, 180, 255, 0.55); }
.pdxsa-share-btn.pdxsa-t-receipt { --pdxsa-c: rgba(245, 200, 66, 0.5); }
.pdxsa-share-btn.pdxsa-t-link    { --pdxsa-c: rgba(143, 165, 196, 0.4); }
.pdxsa-share-btn.pdxsa-block { width: 100%; min-height: 2.6rem; font-size: 0.78rem; }
/* The honest hint. Its height is RESERVED in whole lines — 2 × the 1.35 line-height
   here — so the text can be replaced when the record settles without the surrounding
   sheet resizing. That reservation is what lets the fallback be stated in prose at
   all. Whole lines rather than an eyeballed value: a box sized to N lines exactly
   cannot be grown by any string that wraps to N or fewer. */
.pdxsa-hint {
  display: block; min-height: 2.7em;
  font-size: 0.68rem; line-height: 1.35; color: #93a6c4;
}
@media (max-width: 640px) {
  /* Mobile-first: clears the 44px touch guidance, and the hint gets a third
     reserved line because the same sentence wraps earlier on a narrow sheet. */
  .pdxsa-share-btn { min-height: 2.5rem; padding: 0.55rem 0.9rem; font-size: 0.77rem; }
  .pdxsa-share-btn.pdxsa-block { min-height: 2.8rem; }
  .pdxsa-hint { min-height: 4.05em; font-size: 0.7rem; }
}
@media (prefers-reduced-motion: reduce) {
  .pdxsa-share-btn { transition: none; }
  .pdxsa-share-btn:hover { transform: none; }
}
