/* Wellness Voucher Blast (wv-blast.js), Kate, 15 Oct 2026. Sits on Lost Clients' classes (ll-cards, ll-card, slv-*, lc-pager); only
   the card grid differs: eight cards, four across (Lost Clients has five). */
.ll-cards.wv-cards{grid-template-columns:repeat(4,1fr)}
@media(max-width:1100px){.ll-cards.wv-cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.ll-cards.wv-cards{grid-template-columns:1fr 1fr;gap:8px}}
@media(max-width:430px){.ll-cards.wv-cards{grid-template-columns:1fr}}
/* Send a wave from the page (16 Oct 2026, Level 5) */
.wv-send{margin-bottom:14px}
.wv-send-h{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.wv-send-p{margin:6px 0 10px;line-height:1.5}
.wv-sw.on{background:#2f7d4f;color:#fff;border-color:#2f7d4f}
.wv-sw.off{background:#b3342d;color:#fff;border-color:#b3342d}
.wv-go{font-weight:600}
.wv-log{margin-top:10px}.wv-log summary{cursor:pointer;font-size:13px}
.wv-ring{display:inline-block;width:12px;height:12px;vertical-align:-1px;border:2px solid var(--accent,#7aa7ff);border-top-color:transparent;border-radius:50%;animation:wvspin .8s linear infinite}
@keyframes wvspin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.wv-ring{animation-duration:2.4s}}
/* Clients who have bought since the blast (21 Oct 2026): the row is tinted green so it stands out in a 600-row list */
.slv-table tr.wv-bought td{background:rgba(47,125,79,.16)}
.slv-table tr.wv-bought td:first-child{box-shadow:inset 3px 0 0 #2f7d4f}
.prd-card.wv-bought{background:rgba(47,125,79,.16);box-shadow:inset 3px 0 0 #2f7d4f}
.wv-bought-line{color:#2f7d4f}
/* How the blast is doing (22 Oct 2026): cards that do not click, three small tables with a bar for each row's AED collected, a value label on a bar */
.wv-perf{margin:0 0 20px}
.wv-perf h3{margin:0 0 10px}
.ll-cards.wv-pcards{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.wv-pcard{cursor:default}
.wv-pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px;margin:14px 0 6px}
.wv-pbox{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;min-width:0}
.wv-pbox h4{font-size:14px;font-weight:600;margin:0 0 10px}
.wv-pscroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.wv-ptbl{font-variant-numeric:tabular-nums}
.wv-ptbl th:not(:first-child),.wv-ptbl td:not(:first-child){text-align:right}
.wv-ptbl td.wv-aedc{text-align:left;min-width:104px}
.wv-aedt{display:block;text-align:right;font-weight:600;margin-bottom:3px}
.wv-bar{display:flex;height:10px;border-radius:5px;overflow:hidden;background:var(--border2);margin-left:auto;min-width:0}
.wv-bar i{display:block;width:100%;height:100%;background:var(--good);cursor:pointer;transition:filter 120ms}
.wv-bar i:hover{filter:brightness(1.12)}
.wv-bar i:focus-visible{outline:2px solid var(--text);outline-offset:-2px}
/* The value label over a bar (wvTipOn in wv-blast.js): the page's text and background swapped, so it reads on both themes. */
.wv-tip{position:fixed;z-index:80;max-width:min(320px,calc(100vw - 16px));padding:6px 10px;border-radius:8px;background:var(--text);color:var(--bg);font-size:12.5px;line-height:1.35;font-variant-numeric:tabular-nums;box-shadow:0 6px 18px rgba(0,0,0,.28);pointer-events:none}
/* Sortable headers on the 4th blast's list (23 Oct 2026): the header text is a button; the arrow shows the order, a faint double arrow when the column is not sorted */
.wv-sort{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;gap:5px;cursor:pointer;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;white-space:nowrap}
.wv-sort:hover{color:var(--text)}
.wv-sort:focus-visible{outline:2px solid var(--text);outline-offset:2px;border-radius:4px}
.wv-sortic{font-size:10px;opacity:.4}.wv-sort.on .wv-sortic{opacity:1}
/* One page for every blast (23 Oct 2026): the all-blasts table, and a heading for each blast's section */
.wv-blastsec{margin-top:26px}.wv-blastsec>h3{margin:0 0 10px}
/* Plain-words layout on the blasts page (23 Oct 2026, adult learning doctrine): a three-line why at the top, a one-line what and why under each heading, the long notes folded away */
.wv-why{margin:10px 0 4px;padding:12px 16px;border-left:3px solid var(--accent,#2f7d4f);background:var(--surface);border-radius:0 10px 10px 0;max-width:820px}
.wv-why p{margin:0 0 6px;line-height:1.5}.wv-why p:last-child{margin:0}
.wv-what{max-width:820px;line-height:1.5;margin:0 0 12px}
.wv-short{margin:0 0 12px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px;max-width:820px;line-height:1.5}
.wv-who{margin:0 0 14px;padding-left:20px;max-width:820px;line-height:1.5}.wv-who li{margin:0 0 4px}
.wv-how{margin:12px 0 0;max-width:820px}.wv-how summary{cursor:pointer;font-weight:600;padding:4px 0}.wv-how ul{margin:8px 0 0;padding-left:20px;line-height:1.5}.wv-how li{margin:0 0 6px}
.wv-h3{margin:26px 0 6px;font-size:20px}.wv-h4{margin:0 0 6px;font-size:16px}
/* One block per blast (23 Oct 2026): a head with when it went, three plain facts, five numbers, one note. Same shape for all four. */
.wv-blast{margin-top:30px;padding-top:6px;border-top:1px solid var(--border2)}
.wv-bhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:0 0 10px}
.wv-bhead h3{margin:0}
.wv-btag{font-size:13px;padding:3px 11px;border:1px solid var(--border);border-radius:999px;color:var(--muted)}
.wv-btag.next{border-color:var(--accent,#2f7d4f);color:var(--text);font-weight:600}
.wv-facts{margin:0 0 12px;max-width:820px}
.wv-facts>div{display:grid;grid-template-columns:104px 1fr;gap:12px;padding:5px 0;border-bottom:1px solid var(--border2)}
.wv-facts dt{color:var(--muted);font-size:13px}.wv-facts dd{margin:0;line-height:1.5}
.wv-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(138px,1fr));gap:10px;margin:0 0 10px}
.wv-stat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 12px;min-width:0}
.wv-sn{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.2}
.wv-sl{font-size:13px;color:var(--muted);margin-top:2px}.wv-sd{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.35}
.wv-bnote{max-width:820px;line-height:1.5}
@media(max-width:560px){.wv-facts>div{grid-template-columns:1fr;gap:2px}}

/* The send list's controls on a phone (Kate, 23 Oct 2026: "what is up with this cluster", four rows of pills). Each group is a label with its choices
   under it, sharing the width: List is three across, Show is two by two, and the three actions (Copy numbers, XLSX, CSV) are one row of three. */
@media(max-width:760px){
  #wvBlastContent .ll-filters{display:block}
  #wvBlastContent .ll-filters .ll-chips{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:6px;margin-top:10px}
  #wvBlastContent .ll-filters .ll-chips:has(> button:nth-of-type(4)){grid-auto-flow:row;grid-template-columns:1fr 1fr}
  #wvBlastContent .ll-filters .ll-chips > .slv-note{grid-column:1/-1;grid-row:1}
  #wvBlastContent .ll-filters .ll-chips > button{min-width:0;padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #wvBlastContent .wv-acts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:12px}
  #wvBlastContent .wv-acts .tglr{min-width:0;min-height:32px;padding:4px 6px;white-space:nowrap}
}

/* The report, the Lost Clients way (23 Oct 2026): a line per blast, the same numbers as a picture or a table, folded breakdowns. The bars share the page's tip label (wvTipOn). */
.wv-act{margin-top:8px!important;font-weight:600}
.wv-lines{margin:0 0 14px;padding-left:20px;max-width:820px;line-height:1.55}.wv-lines li{margin:0 0 8px}
.wv-vhd{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:16px 0 10px}.wv-vhd h4{margin:0;font-size:15px}
.wv-vgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:14px}
.wv-vrow{margin:0 0 14px}.wv-vrow:last-of-type{margin-bottom:0}
.wv-vname{margin-bottom:4px}
.wv-vline{display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:8px;align-items:center;margin:3px 0;font-size:13px}
.wv-vk{color:var(--muted)}
.wv-vtrack{min-width:0}
.wv-vtrack .wv-bar{margin-left:0;background:transparent;height:12px;border-radius:4px;min-width:7px}
.wv-vtrack .wv-bar.cost i{background:var(--accent)}
.wv-vv{white-space:nowrap;font-variant-numeric:tabular-nums}
.wv-key{display:flex;gap:6px 16px;flex-wrap:wrap;margin-top:10px;font-size:12.5px;color:var(--muted)}
.wv-key i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}.wv-key i.in{background:var(--good)}.wv-key i.cost{background:var(--accent)}
/* a table inside a card box must fit a 375px phone without a sideways scroll: cells wrap, the first column is the narrow one */
.wv-pbox .wv-ptbl th,.wv-pbox .wv-ptbl td{white-space:normal;padding:8px 5px;vertical-align:top}
.wv-pbox .wv-ptbl th:first-child,.wv-pbox .wv-ptbl td:first-child{padding-left:2px;min-width:70px}
.wv-pbox .wv-ptbl .slv-note{white-space:normal;line-height:1.3}
.wv-ptbl td.wv-aedc{min-width:104px}
.wv-more{max-width:none}.wv-more .wv-pgrid{margin-top:12px}
.wv-send .wv-how{margin-top:8px}
@media(max-width:560px){.wv-why{padding:9px 12px}.wv-why p{margin:0 0 4px;font-size:14px;line-height:1.4}.wv-why p:empty{display:none}}

/* Full performance of each blast (23 Oct 2026, wv-depth.js): a funnel of bars, small tables, the buyers across the full width. Stats are two across inside a box. */
.wv-depth{margin-top:14px}
.wv-fun{margin:0 0 12px}.wv-fun:last-of-type{margin-bottom:4px}
.wv-fun-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:14px}
.wv-fun-h b{font-variant-numeric:tabular-nums;white-space:nowrap}
.wv-fun .wv-vtrack{margin:3px 0 2px}.wv-fun .slv-note{margin:0;line-height:1.35}
.wv-stats.wv-stats2{grid-template-columns:repeat(2,minmax(0,1fr));margin:0 0 8px}
.wv-pbox.wv-pwide{margin-top:14px}
/* Blast 4 send panel (wv-lastsend.js): the message preview */
.wv-msg{margin:8px 0}.wv-pre{white-space:pre-wrap;word-break:break-word;margin:4px 0 0;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;font:inherit;line-height:1.5;max-width:520px}
/* Blast 4 send panel: one card per list, so Send is never behind a sideways swipe on a phone */
.wv-lcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px;margin:10px 0}
.wv-lcard{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;min-width:0}
.wv-lh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.wv-ll{display:grid;grid-template-columns:70px minmax(0,1fr);gap:8px;padding:5px 0;border-top:1px solid var(--border2);line-height:1.4}
.wv-lb{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
/* What each blast brought in, 23 Oct 2026: one answer line, then a card per blast (L1); the picture or table is L2, the sentences are folded (L3). */
.wv-www{max-width:820px;margin:0 0 12px}
.wv-sb{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:12px;margin:0 0 6px}
.wv-sbc{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;min-width:0}
.wv-sbh{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.wv-sbn{font-size:26px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.wv-sbl{font-size:13px;color:var(--muted);margin:2px 0 10px}
.wv-sbd{margin:0;display:grid;gap:6px}.wv-sbd div{display:flex;justify-content:space-between;gap:10px;align-items:baseline;padding-top:6px;border-top:1px solid var(--border2,var(--border))}
.wv-sbd dt{font-size:13px;color:var(--muted)}.wv-sbd dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.wv-sbf{margin:8px 0 0}
.wv-read{max-width:820px;margin:8px 0 0}
.wv-eg{margin:0 0 10px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent-mint,#99F6E4);border-radius:10px;line-height:1.5}
.wv-read .wv-facts{margin:0}
/* Full performance sub-entries in the rail (Kate, 23 Oct 2026): wv-blast.js wvRailSubs, the Lost Client Blasts way. Sidebar rail only, 1400px and up; below that the rail is a row of chips and these stay out of it. */
#wvBlastContent .side-sub{display:none}
@media(min-width:1400px){
  #wvBlastContent .side-sub{display:block;margin:0 0 4px}
  #wvBlastContent .lg-side .side-nav .side-sub a{padding:5px 0 5px 27px;font-size:13px;color:var(--muted);border-left:2px solid var(--border2,var(--border))}
  #wvBlastContent .lg-side .side-nav .side-sub a.on{color:var(--text);font-weight:600;border-left-color:var(--text)}
  @media(hover:hover){#wvBlastContent .lg-side .side-nav .side-sub a:hover{color:var(--text)}}
  #wvBlastContent .lg-side{max-height:calc(100vh - 136px);overflow-y:auto}
}
/* Details ↓ links (Kate, 23 Oct 2026: the browser's default blue was unreadable on the dark page): the page's own text colour, underlined. */
#wvBlastContent a[onclick*="wvJump"],#wvBlastContent a[onclick*="wvGoBlast"]{color:var(--text);text-decoration:underline;text-underline-offset:3px;font-weight:600}
@media(hover:hover){#wvBlastContent a[onclick*="wvJump"]:hover,#wvBlastContent a[onclick*="wvGoBlast"]:hover{color:var(--accent-text,var(--text));text-decoration-thickness:2px}}

/* The messages of each blast (23 Oct 2026, wv-messages.js): the wording in a WhatsApp-style bubble, the buttons as pills, a name box that fills {{1}} */
.wv-msgs{margin:26px 0 8px}
.wv-mname{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0 4px}.wv-mname input{max-width:160px}
.wv-mgrid{grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr))}
.wv-mfacts>div{grid-template-columns:78px 1fr}
.wv-bubble{white-space:pre-wrap;word-break:break-word;line-height:1.5;font-size:14px;padding:12px 14px;margin:8px 0 6px;background:var(--surface2,var(--bg));border:1px solid var(--border);border-radius:4px 14px 14px 14px;max-width:460px}
.wv-bfoot{margin-top:8px;font-size:12.5px;color:var(--muted)}
.wv-bbtns{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 6px}
.wv-bbtn{padding:5px 14px;border:1px solid var(--border);border-radius:999px;font-size:13px;font-weight:600}
.wv-mfacts dd{font-size:14px}
/* Blast 4 reminder panel (wv-remind.js, 27 Oct 2026): the publish-first warning sits between the intro and the card */
.wv-rm-warn{margin:10px 0 0;line-height:1.5;font-size:14px;padding:10px 12px;border:1px solid var(--bad);border-radius:10px}
#wvRmBox{margin-top:14px}
/* Warm against Standard, like the Lost Clients page (Kate, 2 Nov 2026) */
.wv-cmp .wv-verdict{border-radius:10px;padding:10px 12px;margin:0 0 10px;font-size:13.5px;background:var(--bg);border:1px solid var(--border)}
.wv-cmp .wv-cmp-t td:first-child{color:var(--muted);min-width:130px}
.wv-cmp .wv-cmp-t th:not(:first-child),.wv-cmp .wv-cmp-t td:not(:first-child){text-align:left}
.wv-cmp .wv-cmp-t tr.wv-key td{background:var(--bg);font-weight:600}
.wv-cmp .wv-cmp-t code{font-size:11.5px;overflow-wrap:anywhere}
