/*
 * CoverYou design-system components (D-018). Needs tokens.css first.
 * Every class is prefixed .cy- so nothing here touches existing markup (Bootstrap's .btn,
 * style.css's .banner-btn etc. stay as they are until a page is moved over).
 */

/* ---------- Typography ---------- */
.cy-root {
  font-family: var(--cy-font);
  font-size: var(--cy-fs-md);
  line-height: var(--cy-lh-md);
  color: var(--cy-text-body);
  -webkit-font-smoothing: antialiased;
}

.cy-hero,
.cy-h1,
.cy-h2,
.cy-h3,
.cy-h4 {
  font-family: var(--cy-font);
  color: var(--cy-text-primary);
  margin: 0;
  letter-spacing: -0.01em;
}
.cy-hero { font-size: var(--cy-hero-fs); line-height: var(--cy-hero-lh); font-weight: var(--cy-weight-heading); letter-spacing: -0.02em; }
.cy-h1 { font-size: var(--cy-h1-fs); line-height: var(--cy-h1-lh); font-weight: var(--cy-weight-heading); }
.cy-h2 { font-size: var(--cy-h2-fs); line-height: var(--cy-h2-lh); font-weight: var(--cy-weight-subheading); }
.cy-h3 { font-size: var(--cy-h3-fs); line-height: var(--cy-h3-lh); font-weight: var(--cy-weight-title); }
.cy-h4 { font-size: var(--cy-h4-fs); line-height: var(--cy-h4-lh); font-weight: var(--cy-weight-title); letter-spacing: 0; }

.cy-text-lg { font-size: var(--cy-fs-lg); line-height: var(--cy-lh-lg); }
.cy-text-md { font-size: var(--cy-fs-md); line-height: var(--cy-lh-md); }
.cy-text-sm { font-size: var(--cy-fs-sm); line-height: var(--cy-lh-sm); }
.cy-text-xs { font-size: var(--cy-fs-xs); line-height: var(--cy-lh-xs); }
.cy-text-2xs { font-size: var(--cy-fs-2xs); line-height: var(--cy-lh-2xs); }
.cy-num { font-variant-numeric: tabular-nums; } /* prices and figures that should line up */
.cy-label { font-weight: var(--cy-weight-label); }
.cy-title { font-weight: var(--cy-weight-title); }
.cy-muted { color: var(--cy-text-secondary); }
.cy-subtle { color: var(--cy-text-tertiary); }
.cy-eyebrow {
  font-size: var(--cy-fs-xs);
  line-height: var(--cy-lh-xs);
  font-weight: var(--cy-weight-title);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--cy-action-brand);
}

/* ---------- Special font (Pacifico) ----------
   Only for a few special places, such as a highlight in the header or a word/line on a
   banner. Inherits the size of the text around it but never goes below 16px, because a
   script blurs at small sizes. Keep important information (prices, "Claim", "Free") in
   Inter, never only in the special font. */
.cy-special {
  font-family: var(--cy-font-special);
  font-weight: 400;
  font-style: normal;
  font-size: max(1em, 16px);
  line-height: 1.35;
  letter-spacing: 0;
  text-transform: none;
  color: var(--cy-primary);
}

/* ---------- Icons (Tabler via <x-cy-icon>) ----------
   1em by default, so an icon matches the text it sits in. Fixed sizes for standalone icons. */
.cy-icon {
  display: inline-block;
  flex: none;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  stroke-width: var(--cy-icon-stroke);
}
.cy-icon--sm { width: var(--cy-icon-sm); height: var(--cy-icon-sm); }
.cy-icon--md { width: var(--cy-icon-md); height: var(--cy-icon-md); }
.cy-icon--lg { width: var(--cy-icon-lg); height: var(--cy-icon-lg); }
.cy-icon--xl { width: var(--cy-icon-xl); height: var(--cy-icon-xl); stroke-width: 1.5; }
/* Icon in a soft tile, for feature lists and product cards */
.cy-icon-tile {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--cy-radius-md);
  background: var(--cy-brand-50);
  color: var(--cy-brand-600);
}
.cy-icon-tile .cy-icon { width: var(--cy-icon-lg); height: var(--cy-icon-lg); }

/* ---------- Layout ---------- */
.cy-container {
  width: 100%;
  max-width: var(--cy-container);
  margin-inline: auto;
  padding-inline: var(--cy-gutter);
}
.cy-section { padding-block: var(--cy-section-y); }
.cy-stack > * + * { margin-top: var(--cy-space-4); }

/* ---------- Buttons ----------
   Four variants, one family. Every button shares the Figma bevel, radius, height, type and
   motion, so a page never mixes button styles:
     primary   - the main action of a screen (one per view): brand orange
     secondary - the alternative action: white with a border (never grey; grey reads as disabled)
     tertiary  - low-emphasis actions (Cancel, Skip, Learn more): text only, no bevel
     danger    - destructive actions only (Cancel policy, Delete)
   States: hover lifts and darkens, pressed sinks (bevel flips), focus-visible shows an outline,
   disabled is flat, .is-loading shows a spinner and blocks double submits (payments, OTP). */
.cy-btn {
  /* size */
  --_h: var(--cy-btn-md-h);
  --_px: var(--cy-btn-md-px);
  --_fs: var(--cy-btn-md-fs);
  --_r: var(--cy-btn-md-r);
  --_b: 3px; /* bevel depth: 3/4px as in Figma, 2px on small buttons */
  /* colour (primary by default) */
  --_bg: var(--cy-action-brand);
  --_bg-hover: var(--cy-action-brand-hover);
  --_bg-pressed: var(--cy-action-brand-pressed);
  --_fg: var(--cy-action-brand-label);
  --_shade: rgba(0, 0, 0, 0.30);
  --_shine: rgba(255, 255, 255, 0.35);
  --_so: calc(var(--_b) + 1px); /* light-bevel offset: 4px on primary (Figma), 3px on secondary */
  --_edge: transparent;         /* optional inset border colour */
  --_lift: var(--cy-elevation-2);

  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--cy-space-2);
  height: var(--_h);
  min-width: var(--_h);
  padding: 0 var(--_px);
  border: 0;
  border-radius: var(--_r);
  background: var(--_bg);
  color: var(--_fg);
  font-family: var(--cy-font);
  font-size: var(--_fs);
  line-height: 1;
  font-weight: var(--cy-weight-title); /* 600: white on orange needs the extra weight to read well */
  letter-spacing: -0.005em;
  text-decoration: none;
  white-space: nowrap;
  vertical-align: middle;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  box-shadow:
    inset 0 0 0 1px var(--_edge),
    inset calc(var(--_b) * -1) calc(var(--_b) * -1) calc(var(--_b) + 1px) var(--_shade),
    inset var(--_so) var(--_so) calc(var(--_b) + 1px) var(--_shine);
  transition:
    background-color var(--cy-duration) var(--cy-ease),
    box-shadow var(--cy-duration) var(--cy-ease),
    transform var(--cy-duration) var(--cy-ease),
    color var(--cy-duration) var(--cy-ease);
}
.cy-btn:hover {
  background: var(--_bg-hover);
  color: var(--_fg);
  text-decoration: none;
  transform: translateY(-1px);
  box-shadow:
    inset 0 0 0 1px var(--_edge),
    inset calc(var(--_b) * -1) calc(var(--_b) * -1) calc(var(--_b) + 1px) var(--_shade),
    inset var(--_so) var(--_so) calc(var(--_b) + 1px) var(--_shine),
    var(--_lift);
}
.cy-btn:active {
  background: var(--_bg-pressed);
  transform: translateY(0);
  /* pressed: the bevel flips so the button looks pushed in */
  box-shadow:
    inset 0 0 0 1px var(--_edge),
    inset var(--_b) var(--_b) calc(var(--_b) + 1px) var(--_shade),
    inset calc(var(--_b) * -1) calc(var(--_b) * -1) calc(var(--_b) + 1px) var(--_shine);
}
.cy-btn:focus { outline: none; }
/* OLD: .cy-btn:focus-visible { outline: 2px solid var(--cy-neutral-900); outline-offset: 3px; }
   Why (owner, 29 Oct): the black ring looked heavy on the header buttons. A soft brand ring still shows keyboard focus. */
.cy-btn:focus-visible { outline: 2px solid var(--cy-brand-300); outline-offset: 2px; }

/* disabled: flat (no bevel, no lift), paler than the secondary, with a thin outline, so it
   never looks like the bevelled grey secondary button */
.cy-btn[disabled],
.cy-btn.is-disabled,
.cy-btn[aria-disabled="true"] {
  background: var(--cy-neutral-50);
  color: var(--cy-neutral-400);
  box-shadow: inset 0 0 0 1px var(--cy-neutral-200);
  transform: none;
  cursor: not-allowed;
  pointer-events: none;
}

/* loading: keeps its width, hides the label, shows a spinner */
.cy-btn.is-loading {
  color: transparent !important;
  pointer-events: none;
}
.cy-btn.is-loading::after {
  content: "";
  position: absolute;
  width: 1.15em;
  height: 1.15em;
  border: 2px solid var(--_fg);
  border-right-color: transparent;
  border-radius: 50%;
  animation: cy-spin 0.7s linear infinite;
}
@keyframes cy-spin { to { transform: rotate(360deg); } }

.cy-btn .cy-icon { width: 1.25em; height: 1.25em; margin-inline: -0.125em; }
.cy-btn i { flex: none; font-size: 1.05em; }

/* sizes */
.cy-btn--sm { --_h: var(--cy-btn-sm-h); --_px: var(--cy-btn-sm-px); --_fs: var(--cy-btn-sm-fs); --_r: var(--cy-btn-sm-r); --_b: 2px; }
.cy-btn--md { --_h: var(--cy-btn-md-h); --_px: var(--cy-btn-md-px); --_fs: var(--cy-btn-md-fs); --_r: var(--cy-btn-md-r); }
.cy-btn--lg { --_h: var(--cy-btn-lg-h); --_px: var(--cy-btn-lg-px); --_fs: var(--cy-btn-lg-fs); --_r: var(--cy-btn-lg-r); }
.cy-btn--xl { --_h: var(--cy-btn-xl-h); --_px: var(--cy-btn-xl-px); --_fs: var(--cy-btn-xl-fs); --_r: var(--cy-btn-xl-r); }
.cy-btn--block { display: flex; width: 100%; }
.cy-btn--icon { padding: 0; width: var(--_h); }
@media (max-width: 767.98px) {
  .cy-btn--block-mobile { display: flex; width: 100%; }
}

/* variants */
.cy-btn--primary { /* defaults above */ }
/* secondary: exact Figma spec (owner, 17 Oct): #f5f5f5, radius 12, bevel -3/-3/4 dark 30% + 3/3/4 light 35%.
   Hover/pressed are Figma interactive-secondary hovered/pressed (neutral-200/300). */
.cy-btn--secondary {
  --_bg: var(--cy-neutral-100);
  --_bg-hover: var(--cy-neutral-200);
  --_bg-pressed: var(--cy-neutral-300);
  --_fg: var(--cy-text-primary);
  --_shade: rgba(0, 0, 0, 0.30);
  --_shine: rgba(255, 255, 255, 0.35);
  --_so: var(--_b);
}
.cy-btn--danger {
  --_bg: var(--cy-action-critical);
  --_bg-hover: var(--cy-action-critical-hover);
  --_bg-pressed: var(--cy-action-critical-pressed);
  --_fg: var(--cy-neutral-0);
}
.cy-btn--tertiary {
  --_bg: transparent;
  --_bg-hover: var(--cy-neutral-100);
  --_bg-pressed: var(--cy-neutral-200);
  --_fg: var(--cy-text-primary);
  --_shade: transparent;
  --_shine: transparent;
  --_lift: 0 0 #0000;
}
.cy-btn--tertiary:hover { transform: none; }
.cy-btn--tertiary[disabled],
.cy-btn--tertiary.is-disabled { background: transparent; box-shadow: none; }

.cy-on-dark .cy-btn--tertiary { --_fg: var(--cy-neutral-0); --_bg-hover: var(--cy-lighten-100); --_bg-pressed: var(--cy-lighten-200); }
.cy-on-dark .cy-btn:focus-visible,
.cy-on-brand .cy-btn:focus-visible { outline-color: var(--cy-neutral-0); }

/* Button group: primary + secondary side by side, stacked full width on phones */
.cy-btn-group { display: flex; flex-wrap: wrap; gap: var(--cy-space-3); align-items: center; }
@media (max-width: 575.98px) {
  .cy-btn-group--stack { flex-direction: column; align-items: stretch; }
  .cy-btn-group--stack .cy-btn { width: 100%; }
}

/* Touch screens: no hover lift, and small buttons grow to an easy tap size */
@media (hover: none) {
  .cy-btn:hover { background: var(--_bg); transform: none; }
}
@media (pointer: coarse) {
  .cy-btn--sm { --_h: 40px; }
}

/* ---------- Text link ---------- */
.cy-link {
  color: var(--cy-brand-700);
  font-weight: var(--cy-weight-label);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}
.cy-link:hover { color: var(--cy-brand-800); }

/* ---------- Input ---------- */
.cy-field { display: flex; flex-direction: column; gap: var(--cy-space-1); }
.cy-field > .cy-btn { align-self: flex-start; }
.cy-field__label { font-size: var(--cy-fs-sm); line-height: var(--cy-lh-sm); font-weight: var(--cy-weight-label); color: var(--cy-text-primary); }
.cy-field__help { font-size: var(--cy-fs-xs); line-height: var(--cy-lh-xs); color: var(--cy-input-helper); }
.cy-input {
  height: var(--cy-btn-lg-h);
  padding: 0 var(--cy-space-4);
  border: 1px solid var(--cy-input-border);
  border-radius: var(--cy-radius-md);
  background: var(--cy-input-bg);
  color: var(--cy-text-primary);
  font-family: var(--cy-font);
  font-size: var(--cy-fs-md);
  transition: border-color var(--cy-duration) var(--cy-ease), box-shadow var(--cy-duration) var(--cy-ease);
}
.cy-input::placeholder { color: var(--cy-input-placeholder); }
.cy-input:hover { border-color: var(--cy-neutral-700); }
.cy-input:focus { outline: none; border-color: var(--cy-input-border-focus); box-shadow: var(--cy-focus-ring); }
.cy-field.is-error .cy-input { border-color: var(--cy-critical-600); }
.cy-field.is-error .cy-field__help { color: var(--cy-critical-label); }

/* ---------- Card ---------- */
.cy-card {
  background: var(--cy-surface-primary);
  border: 1px solid var(--cy-border);
  border-radius: var(--cy-radius-lg);
  padding: var(--cy-space-6);
  box-shadow: var(--cy-elevation-2);
}
.cy-card--hover { transition: box-shadow var(--cy-duration) var(--cy-ease), transform var(--cy-duration) var(--cy-ease); }
.cy-card--hover:hover { box-shadow: var(--cy-elevation-5); transform: translateY(-2px); }

/* ---------- Badge ---------- */
.cy-badge {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 var(--cy-space-2);
  border-radius: var(--cy-radius-full);
  font-size: var(--cy-fs-2xs);
  line-height: 1;
  font-weight: var(--cy-weight-title);
  background: var(--cy-neutral-100);
  color: var(--cy-neutral-700);
}
.cy-badge--brand { background: var(--cy-brand-50); color: var(--cy-brand-700); }
.cy-badge--success { background: var(--cy-success-bg); color: var(--cy-success-800); }
.cy-badge--warning { background: var(--cy-warning-bg); color: var(--cy-warning-800); }
.cy-badge--critical { background: var(--cy-critical-bg); color: var(--cy-critical-700); }
.cy-badge--info { background: var(--cy-info-bg); color: var(--cy-info-700); }

@media (prefers-reduced-motion: reduce) {
  .cy-btn,
  .cy-input,
  .cy-card--hover { transition: none; }
  .cy-btn:active,
  .cy-card--hover:hover { transform: none; }
}

/* ---------- Section heading with the three-bar divider (D-026) ----------
   Figma: 16 / 120 / 16 px bars, 4px tall, 16px apart, 18px above a 28px title. Used by the
   Claims Assistance and PI pages. */
.cy-section-head { display: flex; flex-direction: column; align-items: center; gap: 18px; text-align: center; }
.cy-section-head--left { align-items: flex-start; text-align: left; }
.cy-section-head__title { margin: 0; color: var(--cy-neutral-1000); }
.cy-divider { display: inline-flex; align-items: center; gap: 16px; }
.cy-divider i { display: block; width: 16px; height: 4px; border-radius: 10px; background: var(--cy-brand-600); }
.cy-divider i:nth-child(2) { width: 120px; }

/* ---------- FAQ with product tabs + search (partials/cy-faq-tabs, D-026) ---------- */
.cy-faq { background: var(--cy-neutral-0); padding: var(--cy-section-y) max(16px, env(safe-area-inset-right, 0px)) var(--cy-section-y) max(16px, env(safe-area-inset-left, 0px)); }
.cy-faq__inner { max-width: 1140px; margin: 0 auto; display: flex; flex-direction: column; gap: var(--cy-section-head); }
.cy-faq__bar { display: flex; align-items: center; justify-content: space-between; gap: 24px 39px; flex-wrap: wrap; }
.cy-faq__tabs { display: flex; gap: 16px; overflow-x: auto; scrollbar-width: none; min-width: 0; }
.cy-faq__tabs::-webkit-scrollbar { display: none; }
.cy-faq__tab {
  flex-shrink: 0; padding: 0 0 4px; border: 0; border-bottom: 1px solid var(--cy-neutral-1000); background: none;
  font: 500 var(--cy-fs-md)/20px var(--cy-font); color: var(--cy-neutral-1000); white-space: nowrap; cursor: pointer;
}
.cy-faq__tab[aria-selected="true"] { color: var(--cy-brand-600); border-bottom-color: var(--cy-brand-600); }
.cy-faq__tab:focus-visible { outline: 2px solid var(--cy-brand-600); outline-offset: 3px; }
.cy-faq__search {
  display: flex; align-items: center; gap: 23px; width: 195px; height: 40px; margin: 0; padding: 4px 12px;
  border: 1px solid #cecece; border-radius: 10px; background: var(--cy-neutral-0);
}
.cy-faq__search input { flex: 1; min-width: 0; border: 0; outline: 0; background: none; font: 400 var(--cy-fs-md)/20px var(--cy-font); color: var(--cy-neutral-1000); }
.cy-faq__search input::placeholder { color: #cecece; }
.cy-faq__search:focus-within { border-color: var(--cy-neutral-500); }
.cy-faq__panel { display: flex; flex-direction: column; gap: 24px; padding: 4px 6px; }
.cy-faq__panel[hidden] { display: none; }
.cy-faq__item { background: var(--cy-neutral-0); border-radius: 10px; filter: drop-shadow(0 0 1px rgba(0, 0, 0, 0.25)); }
.cy-faq__item[hidden] { display: none; }
.cy-faq__q { display: flex; align-items: center; gap: 12px; padding: 12px; list-style: none; cursor: pointer; }
.cy-faq__q::-webkit-details-marker { display: none; }
.cy-faq__q:focus-visible { outline: 2px solid var(--cy-brand-600); outline-offset: 2px; border-radius: 10px; }
.cy-faq__q-text { flex: 1; margin: 0; font: 400 var(--cy-fs-lg)/24px var(--cy-font); color: var(--cy-neutral-1000); letter-spacing: 0; }
.cy-faq__chevron { flex-shrink: 0; transform: rotate(180deg); transition: transform var(--cy-duration) var(--cy-ease); }
.cy-faq__item[open] .cy-faq__chevron { transform: none; }
.cy-faq__a { padding: 0 12px 12px; font: 400 var(--cy-fs-md)/22px var(--cy-font); color: var(--cy-text-body); }
.cy-faq__empty { margin: 0; color: var(--cy-text-secondary); font-size: var(--cy-fs-md); }
@media (max-width: 767px) {


  .cy-faq__bar { margin-bottom: 0; }
  .cy-faq__search { width: 100%; }
  .cy-faq__panel { gap: 12px; }
  .cy-faq__q-text { font-size: var(--cy-fs-md); line-height: 20px; }
}
@media (prefers-reduced-motion: reduce) { .cy-faq__chevron { transition: none; } }
.cy-faq__more { align-self: center; margin-top: 8px; }
.cy-faq__more[hidden] { display: none; }

/* ---------- Benefit card (D-026): pink card, white icon disc, title + one line ----------
   Figma: 209px wide, 228px tall, 20px padding, 56px disc with a 32px icon. Claims Assistance + PI pages. */
.cy-benefits { margin: var(--cy-section-head) 0 0; padding: 0; list-style: none; display: flex; justify-content: space-between; gap: 24px; }
.cy-benefit { display: flex; flex-direction: column; gap: 12px; width: 209px; min-height: 228px; padding: 20px; border-radius: 12px; background: var(--cy-brand-50); }
.cy-benefit__icon { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 56px; height: 56px; border-radius: 28px; background: var(--cy-neutral-0); }
.cy-benefit__title { margin: 0; }
.cy-benefit__text { margin: -4px 0 0; font-size: var(--cy-fs-xs); line-height: 16px; color: var(--cy-neutral-1000); }
@media (max-width: 1199px) { .cy-benefits { flex-wrap: wrap; justify-content: center; } }
@media (max-width: 767px) {
  .cy-benefits { flex-direction: column; align-items: stretch; gap: 16px; }
  .cy-benefit { width: auto; min-height: 0; }
}

/* ---------- Claim request form (partials/claim-form, D-027) ----------
   Pop-up and Claims page. Inputs/buttons are the design-system ones; this lays them out and styles the
   OTP and thank-you steps. */
.cy-claim { display: block; }
.cy-claim__step { display: flex; flex-direction: column; gap: 20px; margin: 0; }
.cy-claim__step[hidden] { display: none; }
.cy-claim__fields { display: flex; flex-direction: column; gap: 16px; }
.cy-claim .cy-field { gap: 6px; min-width: 0; }
.cy-claim .cy-input { width: 100%; border-color: #757575; }
.cy-claim .cy-input::placeholder { color: #757575; }
.cy-claim__label { margin: 0; font-size: var(--cy-fs-xs); line-height: 16px; font-weight: 500; color: var(--cy-neutral-1000); }
.cy-claim__label span { font-weight: 400; color: var(--cy-text-secondary); }
.cy-claim__row { display: flex; gap: 8px; }
.cy-claim__row .cy-claim__title { flex: 0 0 84px; width: 84px; }
.cy-claim__select, .cy-claim__title {
  appearance: none; -webkit-appearance: none; padding-right: 40px; cursor: pointer;
  background: var(--cy-neutral-0) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6l6 -6'/%3E%3C/svg%3E") no-repeat right 12px center;
}
.cy-claim__phone { position: relative; display: block; }
.cy-claim__cc { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); font-size: var(--cy-fs-md); color: var(--cy-neutral-1000); pointer-events: none; }
.cy-claim__phone .cy-input { padding-left: 52px; }
.cy-claim__verified { display: flex; align-items: center; gap: 6px; margin: 0; height: 48px; padding: 0 16px; border-radius: var(--cy-radius-md); background: var(--cy-neutral-100); font-size: var(--cy-fs-md); }
.cy-claim__verified .cy-icon { color: #12a150; }
.cy-claim__verified span { color: var(--cy-text-secondary); font-size: var(--cy-fs-xs); }
.cy-claim__pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.cy-claim__msg { height: auto; min-height: 88px; padding-top: 12px; padding-bottom: 12px; line-height: 20px; resize: vertical; }
.cy-claim__err { font-size: var(--cy-fs-xs); line-height: 16px; color: var(--cy-critical-600, #d92d20); }
.cy-claim__err:empty { display: none; }
.cy-claim__hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.cy-claim__note { margin: -4px 0 0; font-size: var(--cy-fs-xs); line-height: 16px; color: var(--cy-text-secondary); }
/* D-056: required consent box */
.cy-claim__consent { display: flex; align-items: flex-start; gap: 10px; margin: 0; font-size: var(--cy-fs-xs); line-height: 18px; color: var(--cy-neutral-1000); font-weight: 400; cursor: pointer; }
.cy-claim__consent input { flex-shrink: 0; width: 18px; height: 18px; margin: 0; accent-color: var(--cy-brand-600); cursor: pointer; }
.cy-claim__consent a { color: var(--cy-brand-700); text-decoration: underline; }
/* Thank-you step */
.cy-claim__done { align-items: center; text-align: center; gap: 8px; padding: 16px 0; }
.cy-claim__done-icon { display: flex; align-items: center; justify-content: center; width: 64px; height: 64px; margin-bottom: 8px; border-radius: 50%; background: #e7f6ec; color: #12a150; }
.cy-claim__done-title { margin: 0; font: 600 var(--cy-fs-2xl)/28px var(--cy-font); }
.cy-claim__done-ref { margin: 0; font-size: var(--cy-fs-md); }
.cy-claim__done-ref strong { font-weight: 600; letter-spacing: 0.02em; }
.cy-claim__done-text { margin: 0; max-width: 360px; font-size: var(--cy-fs-md); line-height: 22px; color: var(--cy-text-body); }
.cy-claim__done-text a { color: var(--cy-brand-600); font-weight: 600; }
@media (max-width: 480px) { .cy-claim__pair { grid-template-columns: minmax(0, 1fr); } }

/* Claim pop-up shell (#claim-modal) */
.cy-claim-modal .modal-dialog { max-width: 480px; }
.cy-claim-modal .modal-content { border: 0; border-radius: 16px; border-bottom: 4px solid var(--cy-brand-600); box-shadow: 0 0 9px rgba(0, 0, 0, 0.25); overflow: hidden; }
.cy-claim-modal__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 24px 24px 0; }
.cy-claim-modal__title { margin: 0; font: 600 var(--cy-fs-3xl)/32px var(--cy-font); color: var(--cy-neutral-1000); }
.cy-claim-modal__sub { margin: 4px 0 0; font-size: var(--cy-fs-md); line-height: 20px; color: var(--cy-text-body); }
.cy-claim-modal__close { flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; padding: 0; border: 0; border-radius: 50%; background: var(--cy-neutral-100); color: var(--cy-neutral-1000); cursor: pointer; }
.cy-claim-modal__close:hover { background: var(--cy-brand-50); color: var(--cy-brand-700); }
.cy-claim-modal__body { padding: 20px 24px 24px; }
@media (max-width: 575px) { .cy-claim-modal__head { padding: 20px 16px 0; } .cy-claim-modal__body { padding: 16px; } }

/* ---------- Insurance partner logo strip (partials/insurer-logos, D-033) ----------
   Figma 6245:2045: 220 x 88 slots, logos at their design size. Two copies of the list scroll as one loop. */
.cy-logos { position: relative; overflow: hidden; padding-block: 8px;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 64px, #000 calc(100% - 64px), transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 64px, #000 calc(100% - 64px), transparent 100%); }
.cy-logos__track { display: flex; width: max-content; animation: cy-logos-scroll 60s linear infinite; }
.cy-logos:hover .cy-logos__track, .cy-logos:focus-within .cy-logos__track { animation-play-state: paused; }
.cy-logos__list { display: flex; margin: 0; padding: 0; list-style: none; }
.cy-logos__slot { display: flex; align-items: center; justify-content: center; flex: none; width: 220px; height: 88px; }
.cy-logos__slot img { display: block; max-width: none; }
.cy-logos__crop { position: relative; display: block; overflow: hidden; }
.cy-logos__crop img { position: absolute; top: 0; left: -0.12%; width: 126.47%; height: 100%; }
.cy-logos__national { position: relative; display: block; overflow: hidden; }
.cy-logos__national span { position: absolute; display: block; }
.cy-logos__national img { display: block; width: 100%; height: 100%; max-width: none; }
.cy-logos__flip { transform: rotate(-180deg) scaleX(-1); }
@keyframes cy-logos-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) {
  .cy-logos { -webkit-mask-image: none; mask-image: none; }
  .cy-logos__track { animation: none; width: auto; }
  .cy-logos__list { flex-wrap: wrap; justify-content: center; }
  .cy-logos__list[aria-hidden="true"] { display: none; }
}
@media (max-width: 767px) { .cy-logos__slot { width: 170px; height: 80px; } .cy-logos__slot img, .cy-logos__national, .cy-logos__crop { transform: scale(0.8); } }

/* ---------- WhatsApp opt-in switch (D-046, partials/whatsapp-optin) ---------- */
.cy-wa-optin { position: relative; display: inline-flex; align-items: center; gap: 8px; margin: 0; cursor: pointer; font-size: var(--cy-fs-sm); line-height: 18px; color: var(--cy-neutral-1000); user-select: none; }
.cy-wa-optin__input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cy-wa-optin__icon { display: inline-flex; color: #25d366; }
.cy-wa-optin__switch { position: relative; flex-shrink: 0; width: 34px; height: 20px; border-radius: 999px; background: #c9c9c9; transition: background var(--cy-duration) var(--cy-ease); }
.cy-wa-optin__switch::after { content: ""; position: absolute; left: 2px; top: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); transition: transform var(--cy-duration) var(--cy-ease); }
.cy-wa-optin__input:checked ~ .cy-wa-optin__switch { background: #25d366; }
.cy-wa-optin__input:checked ~ .cy-wa-optin__switch::after { transform: translateX(14px); }
.cy-wa-optin__input:focus-visible ~ .cy-wa-optin__switch { outline: 2px solid var(--cy-brand-600); outline-offset: 2px; }

/* ---------- Doctor FAQ block (partials/doctor-faq-section): HM-09 / HM-12 (2026-10-22) ---------- */
/* a search shows matching questions even when they sit behind "Show more" */
.doctor-faq-item--extra.is-search-match { display: block; }
.doctor-faq-empty { margin: 0 auto 16px; max-width: 1140px; text-align: center; font-size: var(--cy-fs-lg); line-height: 24px; }
.doctor-faq-empty a { color: var(--cy-brand-600); text-decoration: underline; }
/* the tab row scrolls sideways on small screens: fade its right edge so that is visible */
@media (max-width: 1199px) {
  .doctor-faq-tabs { -webkit-mask-image: linear-gradient(to right, #000 85%, transparent); mask-image: linear-gradient(to right, #000 85%, transparent); padding-right: 32px; }
}

/* Owner, 29 Oct: coral buttons must have white text. A .cy-btn that is a link took the link colour from wider rules
   (".ma a { color: inherit }", ".section a { color: ... }"), so some coral buttons showed grey or dark text. A link
   styled as a button always uses the button's own text colour, in every state. */
a.cy-btn, a.cy-btn:link, a.cy-btn:visited, a.cy-btn:hover, a.cy-btn:focus, a.cy-btn:active,
.ma a.cy-btn, .ma a.cy-btn:hover { color: var(--_fg); }

/* D-111: contact consent on the hero / quote forms (partials/contact-consent): an unticked box, required to send */
.cy-consent { margin: 2px 0 0; text-align: left; }
.cy-consent__label { position: relative; display: flex; align-items: flex-start; gap: 9px; margin: 0; cursor: pointer; font: 400 12px/17px var(--cy-font, Inter, sans-serif); color: var(--cy-neutral-700, #4a423d); }
.cy-consent__input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cy-consent__box { display: grid; place-items: center; width: 18px; height: 18px; flex: none; margin-top: 0; border-radius: 5px; background: #fff; box-shadow: inset 0 0 0 1.5px rgba(21, 17, 15, .28); color: transparent; transition: background-color .15s, box-shadow .15s; }
.cy-consent__box .cy-icon { width: 12px; height: 12px; stroke-width: 3.2; }
.cy-consent__input:checked + .cy-consent__box { background: var(--cy-brand-600, #e5533f); box-shadow: none; color: #fff; }
.cy-consent__input:focus-visible + .cy-consent__box { outline: 2px solid var(--cy-brand-600, #e5533f); outline-offset: 2px; }
.cy-consent__text a { color: var(--cy-neutral-900, #15110f); text-decoration: underline; text-underline-offset: 2px; }
.cy-consent.is-error .cy-consent__box { box-shadow: inset 0 0 0 1.5px var(--cy-error-600, #d92d20); }
.cy-consent__err { margin: 4px 0 0 27px; font-size: 11.5px; line-height: 15px; color: var(--cy-error-600, #d92d20); }

/* cookie bar: the buttons kept inside the page margin on tablets (D-119's colour changes were reverted on 30 Oct) */
@media (max-width: 991.98px) { .cookie-banner .d-flex { gap: 8px; padding-right: 16px; } .cookie-banner .cookies-btn { margin: 0; } }
