/* Shared tab mechanics; the supplied homepage tokens remain the visual default. */
.dsh-service-tabs{min-width:0;scroll-margin-top:100px}
.dsh-service-tabs .dsh-category-tabs{overflow-x:auto;scrollbar-width:thin}
.dsh-service-tabs .dsh-category-tabs a{flex-shrink:0}
.dsh-service-tabs .dsh-service-tab-panel[hidden]{display:none!important}
.dsh-service-tabs .dsh-service-tab-panels{margin-top:30px}
.dsh-service-tabs .dsh-service-grid{margin-top:0}
.dsh-service-tabs .dsh-service-tab-description{margin:0 0 24px;color:var(--dsh-muted);font-size:16px;line-height:1.6}
.dsh-service-tabs .dsh-category-tabs a[data-active="false"]{color:var(--dsh-tab-color,#33415c);background:var(--dsh-tab-background,#fff);box-shadow:none}
.dsh-service-tabs .dsh-category-tabs a[data-active="true"]{color:var(--dsh-tab-active-color,#fff);background:var(--dsh-tab-active-background,linear-gradient(109deg,#16307a,#0b1d52));box-shadow:0 8px 20px #142d7859}
.dsh-service-tabs .dsh-category-tabs a:focus-visible,.dsh-service-tab-panel:focus-visible{outline:3px solid #00adea;outline-offset:4px}
.dsh-service-tabs .dsh-service-tab-empty{border:1px solid var(--dsh-line,#dbe6f2);border-radius:22px;background:linear-gradient(125deg,#f5faff,#e9f2ff);padding:clamp(28px,4vw,60px);min-height:280px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left}
.dsh-service-tabs .dsh-service-tab-empty h3{margin:0 0 16px;font-size:28px}
.dsh-service-tabs .dsh-service-tab-empty p{max-width:560px;margin:0 0 24px;color:var(--dsh-muted);font-size:16px;line-height:1.7}
.dsh-service-tabs .dsh-service-tab-more{display:inline-flex;align-items:center;gap:12px;margin-top:24px;min-height:44px;color:var(--dsh-blue);font-weight:700}
.dsh-service-tabs .dsh-tab-symbol{font-size:16px;line-height:16px}
.dsh-service-tabs .dsh-category-tabs .dsh-icon{width:16px!important;height:16px!important;object-fit:contain}
@media(max-width:767px){.dsh-service-tabs .dsh-service-tab-panels{margin-top:26px}.dsh-service-tabs .dsh-service-tab-empty{padding:28px 22px;min-height:280px}.dsh-service-tabs .dsh-service-tab-empty h3{font-size:24px}}
.dsh-dark .dsh-service-tab-empty{background:#102840;border-color:#28405a}
.dsh-service-tabs .dsh-category-tabs .dsh-icon{filter:none}
.dsh-dark .dsh-service-tabs{--dsh-tab-background:#203e58;--dsh-tab-color:#d3e9fa;--dsh-tab-active-background:#1653a0;--dsh-tab-active-color:#fff}

/* ---------- Shared service-card template (Core 1.2.22) ----------
   One card layout for every tab, after the HIV Test card: text upper left, artwork upper
   right in a curved cutout, then price, benefits and the actions anchored at the bottom.
   Tab themes change colour tokens only; the geometry is the same on every card. Scoped to
   the widget so catalogue and category pages keep their own card styles. Browsers with
   subgrid align the price, benefit and action rows across each row of cards. */
.dsh-site .dsh-service-tabs {
  --card-pad: 28px;
  --card-radius: 22px;
  --card-gap: 28px;
  --art-frac: .48;                       /* artwork width as a share of the card */
  --art-h: clamp(200px, 15.5vw, 236px);  /* artwork height, 3 columns from 1200px */
  --art-gap: 12px;                       /* text clearance around the curve */
}
.dsh-site .dsh-service-tabs .dsh-service-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--card-gap);
  max-width: none;
  margin: 0;
  text-align: left;
}
.dsh-site .dsh-service-tabs .dsh-service-card {
  --accent: #0b8f6f;
  --tint: #eafaf4;
  --ink: #14213d;
  --muted: #5b6b86;
  --surface: #fff;
  --border: #e4ebf2;
  --link: var(--accent);
  --cta: linear-gradient(107deg, #17b981, #0e9a6b);
  --save: var(--accent);
  --badge: #3384f5;
  --bubble: color-mix(in srgb, var(--accent) 12%, #fff);
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: var(--card-pad);
  border: 1px solid var(--border);
  border-radius: var(--card-radius);
  background: var(--surface);
  color: var(--ink);
  font-family: var(--dsh-body);
  box-shadow: 0 6px 18px #1329580a;
  overflow: hidden;
}

/* Artwork: a curved cutout anchored to the card's upper right. The image fills the frame;
   the frame's height, not the image, sets how much space the text gives up. */
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-art-frame {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 0;
  display: block;
  width: calc(var(--art-frac) * 100%);
  height: var(--art-h);
  margin: 0;
  overflow: hidden;
  border-bottom-left-radius: 100%;
  background: var(--tint);
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-art-frame .dsh-card-art {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  max-width: none;
  height: 100% !important; /* the base stylesheet fixes the image height with !important */
  border-radius: 0;
  object-fit: cover;
  object-position: var(--art-pos, 50% 25%);
}

/* Heading: a float the size of the artwork reserves its space, so the label, title and
   description wrap beside the curve and continue full width below it. */
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading {
  position: relative;
  z-index: 1;
  width: auto;
  max-width: none;
  min-height: calc(var(--art-h) - var(--card-pad) + var(--art-gap));
  margin: 0;
  padding: 0;
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading::before {
  content: "";
  float: right;
  width: calc(var(--art-frac) * 100% + (2 * var(--art-frac) - 1) * var(--card-pad));
  height: calc(var(--art-h) - var(--card-pad));
  border-bottom-left-radius: 100%;
  shape-outside: border-box;
  shape-margin: var(--art-gap);
}
.dsh-site .dsh-service-tabs .dsh-service-card:not(:has(.dsh-card-art-frame)) .dsh-card-heading { min-height: 0; }
.dsh-site .dsh-service-tabs .dsh-service-card:not(:has(.dsh-card-art-frame)) .dsh-card-heading::before { display: none; }
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin: 0 0 12px;
  padding: 7px 13px;
  border-radius: 30px;
  background: var(--badge);
  color: #fff;
  font: 700 11.5px/1.2 var(--dsh-body);
  letter-spacing: .02em;
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-badge::before { content: "★"; font-size: .9em; }
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading .dsh-eyebrow {
  display: block;
  margin: 0 0 10px;
  color: var(--accent);
  font: 700 11px/1.4 var(--dsh-body);
  letter-spacing: .1em;
  text-transform: uppercase;
  white-space: normal;
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading > h3 {
  margin: 0 0 10px;
  max-width: none;
  color: var(--ink);
  font: 700 clamp(21px, 1.75vw, 26px)/1.18 var(--dsh-body);
  letter-spacing: -.01em;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: manual;
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading > h3 a { color: inherit; text-decoration: none; }
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading > p {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  max-width: none;
  margin: 0;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.6;
}

/* Price, saving, benefits. */
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-price {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 10px;
  min-height: 0;
  margin: 14px 0 0;
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-price strong {
  color: var(--ink);
  font: 800 32px/1.1 var(--dsh-body);
  letter-spacing: -.03em;
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-price del { color: var(--muted); font-size: 14px; }
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-price .dsh-quote { font-size: 20px; }
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-saving {
  align-self: flex-start;
  margin: 10px 0 0;
  padding: 5px 12px;
  border-radius: 30px;
  background: var(--save);
  color: #fff;
  font: 750 12px/1.3 var(--dsh-body);
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-highlights {
  display: grid;
  align-content: start;
  gap: 12px;
  margin: 20px 0 0;
  padding: 0;
  border: 0;
  background: none;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.45;
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-highlights li { display: flex; align-items: flex-start; gap: 12px; }
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-highlights li > span {
  flex: none;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  margin-top: -5px;
  border-radius: 50%;
  background: var(--bubble);
}

/* Actions: one full-width primary button, the existing details link beneath it. */
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
  margin-top: auto;
  padding-top: 22px;
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  min-height: 54px;
  padding: 10px 16px;
  border: 0;
  border-radius: 14px;
  background: var(--cta);
  font: 700 15px/1.25 var(--dsh-body);
  text-align: center;
  box-shadow: 0 8px 18px color-mix(in srgb, var(--accent) 25%, transparent);
}
.dsh-site .dsh-service-tabs .dsh-service-card .dsh-detail-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  color: var(--link) !important; /* the base stylesheet sets this colour with !important */
  font: 650 13.5px/1.2 var(--dsh-body);
  text-underline-offset: .2em;
}

/* Themes: colour tokens only. Classic cards keep their record's family; a panel never
   repeats a treatment on neighbouring cards (see dsh_service_tab_variants()). */
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-green { --accent: #0b8f6f; --tint: #eafaf4; --cta: linear-gradient(107deg, #17b981, #0e9a6b); }
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-blue { --accent: #1465ca; --tint: #eef5ff; --cta: linear-gradient(105deg, #2b7cf0, #1456c2); }
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-purple { --accent: #6d28d9; --tint: #f4eeff; --cta: linear-gradient(102deg, #8b3ff5, #6d28d9); }
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-navy {
  --accent: #4f9bff;
  --tint: rgb(255 255 255 / .1);
  --ink: #fff;
  --muted: #b9c9ec;
  --surface: linear-gradient(120deg, #163781, #091944);
  --border: #6b9ef3;
  --link: #d2e5ff;
  --cta: linear-gradient(100deg, #2598ff, #1c70ec);
  --save: #2a7bf0;
  --bubble: rgb(255 255 255 / .14);
  box-shadow: 0 20px 40px #0b20593f, inset 0 0 0 1px #6b9ef3;
}
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-navy .dsh-card-heading .dsh-eyebrow { color: #a7cbff; }
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-navy .dsh-card-highlights { color: #deeaff; }
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-navy .dsh-card-price del { color: #b9c9ec; }
/* Soft pastel (PEP): lilac, peach and gold cards on a blush frame. */
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-lilac { --accent: #a24fc8; --tint: #f6e9ff; --surface: linear-gradient(180deg, #f6e9ff, #fff 62%); --border: #ecd7f6; --cta: linear-gradient(95deg, #c46fd8, #a24fc8); --badge: linear-gradient(90deg, #d779b7, #a24fc8); }
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-peach { --accent: #e2601a; --tint: #ffeadd; --surface: linear-gradient(180deg, #ffeadd, #fff 62%); --border: #f7d9c6; --cta: linear-gradient(95deg, #ff9a4d, #e86a1f); --badge: #f27a2b; }
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-gold { --accent: #9a7410; --tint: #fff4cf; --surface: linear-gradient(180deg, #fff4cf, #fff 62%); --border: #f1e2b0; --cta: linear-gradient(95deg, #d8a93a, #a07a12); --badge: #b8902a; }
/* Rainbow (LGBTQ+): violet text accents, rainbow saving pills, a rainbow button on the lead card. */
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-rainbow {
  --accent: #7b3fe4;
  --tint: #f4eeff;
  --save: linear-gradient(90deg, #ff4d5e, #ff9a2e, #3ccf74, #3a8dff, #9b5cf6);
  --badge: linear-gradient(90deg, #ff5a5f, #ff9f43, #a259ff);
  --cta: linear-gradient(102deg, #8b3ff5, #6d28d9);
  --art-pos: 62% 50%;
}
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-rainbow:first-child {
  --cta: linear-gradient(90deg, #ff4d5e, #ff9a2e, #ffc93c, #3ccf74, #3a8dff, #9b5cf6);
  box-shadow: 0 18px 40px -16px rgb(255 120 80 / .45), 0 0 0 1px rgb(255 154 46 / .25);
}
.dsh-site .dsh-service-tabs .dsh-service-card.dsh-card-rainbow:first-child .dsh-card-cta { text-shadow: 0 1px 2px rgb(0 0 0 / .28); }

/* Themed panel frames around the grid. */
.dsh-site .dsh-service-tabs .dsh-theme-panel { position: relative; isolation: isolate; margin-top: 6px; padding: clamp(18px, 2.6vw, 34px); border-radius: 30px; }
.dsh-site .dsh-service-tabs .dsh-panel-rainbow .dsh-theme-panel {
  border: 2.5px solid transparent;
  background:
    radial-gradient(55% 70% at 0% 0%, #ffe1ea 0, transparent 70%) padding-box,
    radial-gradient(50% 70% at 100% 10%, #dcefff 0, transparent 70%) padding-box,
    radial-gradient(60% 70% at 85% 100%, #efe0ff 0, transparent 70%) padding-box,
    radial-gradient(55% 60% at 15% 100%, #fff2c6 0, transparent 70%) padding-box,
    linear-gradient(#fffdfd, #fffdfd) padding-box,
    linear-gradient(110deg, #ff4d5e, #ff9a2e, #ffd23f, #3ccf74, #3a8dff, #9b5cf6) border-box;
  box-shadow: 0 26px 60px -34px rgb(155 92 246 / .55);
}
.dsh-site .dsh-service-tabs .dsh-panel-pastel .dsh-theme-panel {
  border: 2px solid #f5cfe2;
  background: linear-gradient(140deg, #fff3f8, #fbf5ff 50%, #fff8ef);
  box-shadow: 0 26px 60px -36px rgb(214 120 170 / .45);
}

/* Shared content tracks: with subgrid, every row of cards aligns its heading, price,
   saving, benefits and actions, and the tallest content sets each track. */
@supports (grid-template-rows: subgrid) {
  .dsh-site .dsh-service-tabs .dsh-service-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: subgrid;
    grid-row: span 5;
    row-gap: 0;
    align-content: start;
  }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading { grid-row: 1; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-price { grid-row: 2; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-saving { grid-row: 3; justify-self: start; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-highlights { grid-row: 4; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-actions { grid-row: 5; align-self: stretch; justify-content: flex-end; margin-top: 0; }
  .dsh-site .dsh-service-tabs .dsh-service-card:not(:has(.dsh-saving)) .dsh-card-price { grid-row: 2 / 4; }
  /* A wrapped button label makes every button in that row the same height. */
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-cta { flex: 1 0 auto; }
}

/* Two columns on tablets and narrow desktops. */
@media (max-width: 1199px) {
  .dsh-site .dsh-service-tabs { --card-pad: 24px; --card-gap: 24px; --art-h: clamp(200px, 22vw, 250px); }
  .dsh-site .dsh-service-tabs .dsh-service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Phones: the same card, compact, two per row. Descriptions and benefits stay on the
   service page; the label, title, price, saving and both actions remain. */
@media (max-width: 767px) {
  .dsh-site .dsh-service-tabs { --card-pad: 10px; --card-radius: 16px; --card-gap: 10px; --art-h: clamp(80px, 26vw, 108px); --art-gap: 8px; }
  .dsh-site .dsh-service-tabs .dsh-service-tab-panels { margin-top: 18px; }
  .dsh-site .dsh-service-tabs .dsh-service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dsh-site .dsh-service-tabs .dsh-service-card { box-shadow: 0 4px 12px #1329580a; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-badge { margin-bottom: 6px; padding: 3px 7px; font-size: 8.5px; letter-spacing: .04em; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading .dsh-eyebrow { margin-bottom: 4px; font-size: 9px; letter-spacing: .08em; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading > h3 { margin-bottom: 0; font-size: clamp(13px, 3.6vw, 15px); line-height: 1.28; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-heading > p { display: none; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-price { gap: 2px 6px; margin-top: 8px; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-price strong { font-size: 17px; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-price del { font-size: 11px; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-price .dsh-quote { font-size: 14px; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-saving { margin-top: 6px; padding: 3px 8px; font-size: 10px; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-highlights { display: none; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-actions { gap: 2px; padding-top: 12px; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-cta { min-height: 44px; padding: 8px 10px; border-radius: 11px; font-size: 12.5px; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-card-cta .dsh-icon { display: none; }
  .dsh-site .dsh-service-tabs .dsh-service-card .dsh-detail-link { min-height: 32px; font-size: 11.5px; }
  .dsh-site .dsh-service-tabs .dsh-theme-panel { margin-top: 0; padding: 8px; border-radius: 22px; }
}

/* "Show every matching service" (Core 1.2.25): extra cards fold behind one button. */
.dsh-site .dsh-service-tabs .dsh-card-folded { display: none !important; }
.dsh-site .dsh-service-tabs .dsh-service-tab-all {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 48px; margin: 26px auto 0; padding: 12px 26px;
  border: 1px solid #cfe0f7; border-radius: 999px; background: #fff;
  color: var(--dsh-navy, #0f2a44); font: 700 15px/1.2 var(--dsh-font, inherit); cursor: pointer;
  box-shadow: 0 10px 24px -18px #13295899; transition: transform .2s, box-shadow .2s, border-color .2s;
}
.dsh-site .dsh-service-tabs .dsh-service-tab-all[hidden] { display: none; }
.dsh-site .dsh-service-tabs .dsh-service-tab-all:hover { transform: translateY(-2px); border-color: #9fc3f5; box-shadow: 0 14px 28px -18px #13295899; }
.dsh-site .dsh-service-tabs .dsh-service-tab-all:focus-visible { outline: 3px solid #7fb0ff; outline-offset: 3px; }
.dsh-site .dsh-service-tabs .dsh-service-tab-all span { color: var(--dsh-blue, #0758e8); }
@media (max-width: 767px) { .dsh-site .dsh-service-tabs .dsh-service-tab-all { width: 100%; margin-top: 18px; } }
@media (prefers-reduced-motion: reduce) { .dsh-site .dsh-service-tabs .dsh-service-tab-all { transition: none; } }
