/* ---------------------------------------------------------------
   Pricing-page bundle picker
   Brand-aligned to the existing site: Poppins (display) + Mulish (body),
   navy + gold on white, restrained ornament. Scope is namespaced under
   `.rp` so this can sit inside any page wrapper without leaking styles.
   --------------------------------------------------------------- */

/* ── RESET ──────────────────────────────────────────────────────
   Hard-reset every descendant of `.rp` so host-page CSS (the theme,
   Elementor, the page builder, the parent template, etc.) can't leak
   in. Wrapped in `:where()` so the reset has zero specificity,
   letting my own rules below take precedence without specificity
   battles. `all: revert` peels each property back to its user-agent
   default; the explicit margin/padding/list-style/decoration overrides
   below re-establish a known baseline. */

/* SVGs are EXCLUDED from `all: revert`. Their presentational attributes
   (fill="none", stroke="currentColor", width="30", stroke-width="1.5",
   stroke-linecap="round", etc.) sit at lower priority than any author
   CSS, so reverting properties on the SVG/<path>/<rect> elements would
   override the attributes and break the stroke-only icons (black blobs
   or invisible open paths). The `:not(svg):not(svg *)` carve-out leaves
   every SVG and its descendants untouched by the reset. */
:where(.rp, .rp *:not(svg):not(svg *), .rp *::before, .rp *::after) {
  all: revert;
  box-sizing: border-box;
}
:where(.rp svg, .rp svg *) { box-sizing: border-box; }
:where(.rp svg) { display: block; max-width: 100%; }

:where(.rp) { margin: 0; padding: 0; }
:where(.rp h1, .rp h2, .rp h3, .rp h4, .rp h5, .rp h6,
       .rp p, .rp ul, .rp ol, .rp li, .rp blockquote, .rp figure) {
  margin: 0;
  padding: 0;
  font: inherit;
  color: inherit;
}
:where(.rp ul, .rp ol) { list-style: none; }
:where(.rp a) { text-decoration: none; color: inherit; background: transparent; }
:where(.rp button) {
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  color: inherit;
  font: inherit;
  text-align: inherit;
}
:where(.rp img) { display: block; max-width: 100%; }

/* ── PICKER ─────────────────────────────────────────────────────
   Brand-aligned styles. Poppins (display) + Mulish (body).

   Variables live on `.rp`, `.rp-bar`, and `.rp-modal` because the JS
   re-parents the sticky bar and modal to <body> on init so they can
   escape parent stacking/containing contexts (Elementor + isolation).
   Once detached, var() refs to --rp-* would fall back to undefined,
   stripping the bar/modal of background, color, and font. Declaring
   them on all three roots fixes that. */

:where(.rp, .rp-bar, .rp-modal) {
  --rp-bg:           #FFFFFF;
  --rp-surface:      #FFFFFF;
  --rp-surface-soft: #F4F5F8;
  --rp-navy:         #130D60;
  --rp-navy-2:       #221A8C;
  --rp-navy-deep:    #0A0644;
  --rp-navy-tint:    rgba(19,13,96,.04);
  --rp-navy-tint-2:  rgba(19,13,96,.08);
  --rp-gold:         #C9A961;
  --rp-gold-warm:    #B8964A;
  --rp-gold-soft:    #E1C98A;
  --rp-ink:          #16143A;
  --rp-ink-soft:     #5C5878;
  --rp-border:       rgba(16,24,40,.10);
  --rp-border-soft:  rgba(16,24,40,.06);

  --rp-shadow-1:     0 1px 2px rgba(15,10,69,.04), 0 8px 22px rgba(15,10,69,.06);
  --rp-shadow-2:     0 6px 14px rgba(15,10,69,.08), 0 22px 48px rgba(15,10,69,.10);
  --rp-shadow-sel:   0 8px 18px rgba(19,13,96,.28), 0 22px 56px rgba(19,13,96,.20), 0 0 0 1px rgba(201,169,97,.40);

  --font-display: 'Poppins', system-ui, -apple-system, Segoe UI, sans-serif;
  --font-body:    'Mulish',  system-ui, -apple-system, Segoe UI, sans-serif;
}

.rp {
  position: relative;
  isolation: isolate;
  /* Bottom padding is just section-end breathing room — the sticky bar
     is `position: fixed` and reparented to <body>, so it doesn't need
     any padding inside `.rp` to avoid overlap. */
  padding: clamp(48px, 7vw, 88px) clamp(16px, 3vw, 40px) clamp(40px, 5vw, 56px);
  background: var(--rp-bg);
  color: var(--rp-ink);
  font-family: var(--font-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.rp *,
.rp *::before,
.rp *::after { box-sizing: border-box; }
.rp button { font-family: inherit; }

/* Background atmosphere -------------------------------------------- */
.rp-bg {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  background:
    radial-gradient(ellipse 60% 30% at 50% 0%, rgba(19,13,96,.05) 0%, transparent 70%);
}

/* Header ----------------------------------------------------------- */
.rp-head {
  max-width: 760px;
  margin: 0 auto 52px;
  text-align: center;
}
.rp-eyebrow {
  font-family: var(--font-body);
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: #00076F;
  margin: 0 0 18px;
}
.rp-headline {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 42px;
  line-height: 1.3;
  color: #000000;
  margin: 0 0 16px;
}
.rp-lede {
  font-size: clamp(15.5px, 1.4vw, 18px);
  line-height: 1.55;
  color: var(--rp-ink-soft);
  max-width: 560px;
  margin: 0 auto;
}

/* Cards grid ------------------------------------------------------- */
.rp-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  max-width: 1180px;
  margin: 0 auto;
}

/* Card uses div+role=button so it can host a <ul> + nested <button>. */
.rp-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  text-align: left;
  background: var(--rp-surface);
  padding: 36px 32px 30px;
  border-radius: 18px;
  box-shadow: var(--rp-shadow-1);
  outline: 1.5px solid var(--rp-border-soft);
  outline-offset: -1.5px;
  color: var(--rp-ink);
  font-family: var(--font-body);
  font-size: 15px;
  cursor: pointer;
  min-width: 0;
  transition:
    transform 280ms cubic-bezier(.2,.7,.2,1),
    box-shadow 280ms cubic-bezier(.2,.7,.2,1),
    background 240ms ease,
    color 240ms ease,
    outline-color 240ms ease;
}
.rp-card > * { min-width: 0; max-width: 100%; }
.rp-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--rp-shadow-2);
  outline-color: var(--rp-border);
}
.rp-card:focus-visible {
  outline: 2.5px solid var(--rp-gold);
  outline-offset: 3px;
}

.rp-card-corner {
  position: absolute;
  top: 18px;
  right: 18px;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--rp-gold);
  color: var(--rp-navy);
  display: flex;
  align-items: center;
  justify-content: center;
  transform: scale(0);
  transition: transform 320ms cubic-bezier(.34,1.56,.64,1);
  box-shadow: 0 5px 14px rgba(201,169,97,.40);
}

.rp-card-glyph {
  color: var(--rp-navy);
  margin: 0 0 24px;
  display: inline-flex;
  width: 54px;
  height: 54px;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: var(--rp-navy-tint);
  transition: background 240ms ease, color 240ms ease;
}

.rp-card-name {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 26px;
  line-height: 1.15;
  letter-spacing: -.012em;
  color: var(--rp-ink);
  margin: 0 0 4px;
}

.rp-card-tag {
  font-family: var(--font-body);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--rp-ink-soft);
  margin: 0 0 22px;
}

.rp-card-price {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin: 0 0 20px;
  padding-bottom: 20px;
  border-bottom: 1px dashed var(--rp-border);
}
.rp-card-price-amount {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 48px;
  line-height: 1;
  letter-spacing: -.025em;
  color: var(--rp-ink);
}
.rp-card-price-period {
  font-family: var(--font-body);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--rp-ink-soft);
  transition: color 240ms ease;
}

.rp-card-pitch {
  font-family: var(--font-body);
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--rp-ink-soft);
  margin: 0 0 22px;
  white-space: normal;
  overflow-wrap: break-word;
  word-break: normal;
  transition: color 240ms ease;
}

.rp-card-features {
  list-style: none;
  margin: 0 0 22px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 11px;
}
.rp-card-features li {
  display: grid;
  grid-template-columns: 14px 1fr;
  gap: 12px;
  align-items: start;
  margin: 0;
  color: var(--rp-ink);
  transition: color 240ms ease;
}
.rp-card-feature-text {
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.5;
  white-space: normal;
  overflow-wrap: break-word;
  word-break: normal;
}
.rp-card-bullet {
  display: block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  margin-top: 5px;
  background: radial-gradient(circle at 30% 30%, var(--rp-gold-soft) 0 50%, var(--rp-gold-warm) 100%);
}

/* Learn-more link inside the card (real <button>, stops propagation).
   The hover/focus/active rules are defensively `!important` because
   themes + Elementor commonly inject `button:hover { background: ... }`
   that bypasses the base reset (pseudo-classes are a separate cascade
   layer from the base element). */
.rp-card-learn {
  appearance: none;
  -webkit-appearance: none;
  background: transparent !important;
  background-image: none !important;
  border: 0;
  border-bottom: 1px solid var(--rp-border-soft);
  box-shadow: none !important;
  padding: 0 0 22px;
  margin: 0 0 14px;
  font-family: var(--font-body);
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--rp-navy);
  cursor: pointer;
  text-align: left;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: auto;
  transition: color 200ms ease, gap 200ms ease;
}
.rp-card-learn:hover,
.rp-card-learn:focus,
.rp-card-learn:focus-visible,
.rp-card-learn:active {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  text-decoration: none !important;
}
.rp-card-learn:hover { color: var(--rp-navy-2); gap: 10px; }
.rp-card-learn-arrow { transition: transform 200ms ease; }
.rp-card-learn:hover .rp-card-learn-arrow { transform: translateX(3px); }
.rp-card-learn:focus { outline: none; }
.rp-card-learn:focus-visible { outline: 2px solid var(--rp-gold); outline-offset: 4px; border-radius: 4px; }

.rp-card-cta {
  margin-top: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  border-radius: 12px;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 14.5px;
  letter-spacing: .02em;
  background: var(--rp-navy-tint);
  color: var(--rp-navy);
  transition: background 220ms ease, color 220ms ease;
}
.rp-card-cta-default,
.rp-card-cta-selected { display: inline-flex; align-items: center; gap: 9px; }
.rp-card-cta-selected { display: none; }
.rp-card-cta-plus {
  font-size: 18px;
  line-height: 1;
  font-weight: 500;
}
.rp-card:hover .rp-card-cta { background: var(--rp-navy); color: #FFFFFF; }

/* Selected ---------------------------------------------------------- */
.rp-card[aria-pressed="true"] {
  background: var(--rp-navy);
  color: #FFFFFF;
  outline-color: transparent;
  box-shadow: var(--rp-shadow-sel);
  transform: translateY(-4px);
}
.rp-card[aria-pressed="true"] .rp-card-name { color: #FFFFFF; }
.rp-card[aria-pressed="true"] .rp-card-price-amount { color: #FFFFFF; }
.rp-card[aria-pressed="true"] .rp-card-corner { transform: scale(1); }
.rp-card[aria-pressed="true"] .rp-card-glyph {
  background: rgba(201,169,97,.18);
  color: var(--rp-gold);
}
.rp-card[aria-pressed="true"] .rp-card-tag,
.rp-card[aria-pressed="true"] .rp-card-pitch,
.rp-card[aria-pressed="true"] .rp-card-features li,
.rp-card[aria-pressed="true"] .rp-card-price-period { color: rgba(255,255,255,.78); }
.rp-card[aria-pressed="true"] .rp-card-price { border-bottom-color: rgba(255,255,255,.18); }
.rp-card[aria-pressed="true"] .rp-card-cta-default { display: none; }
.rp-card[aria-pressed="true"] .rp-card-cta-selected { display: inline-flex; }
.rp-card[aria-pressed="true"] .rp-card-cta {
  background: rgba(201,169,97,.16);
  color: var(--rp-gold);
}
.rp-card[aria-pressed="true"] .rp-card-bullet { background: var(--rp-gold); }
.rp-card[aria-pressed="true"] .rp-card-learn {
  color: var(--rp-gold);
  border-bottom-color: rgba(255,255,255,.14);
}
.rp-card[aria-pressed="true"] .rp-card-learn:hover { color: var(--rp-gold-soft); }

@keyframes rp-pop {
  0%   { transform: translateY(-4px) scale(1);     }
  50%  { transform: translateY(-7px) scale(1.025); }
  100% { transform: translateY(-4px) scale(1);     }
}
.rp-card[aria-pressed="true"].is-just-selected {
  animation: rp-pop 380ms cubic-bezier(.34,1.4,.64,1);
}

/* Companies / MLS card --------------------------------------------- */
.rp-org {
  max-width: 1180px;
  margin: 32px auto 0;
}
.rp-org-inner {
  position: relative;
  background:
    radial-gradient(circle at 8% 12%, rgba(201,169,97,.14) 0%, transparent 45%),
    linear-gradient(135deg, var(--rp-navy) 0%, var(--rp-navy-deep) 100%);
  border-radius: 18px;
  padding: clamp(32px, 4vw, 44px);
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 32px;
  overflow: hidden;
  border: 1px solid rgba(201,169,97,.20);
  box-shadow: 0 10px 28px rgba(10,6,68,.18);
}
.rp-org-text { color: #FFFFFF; }
.rp-org-eyebrow {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--rp-gold);
  margin: 0 0 12px;
}
.rp-org-headline {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(22px, 2.4vw, 30px);
  line-height: 1.18;
  letter-spacing: -.015em;
  color: #FFFFFF;
  margin: 0 0 12px;
}
.rp-org-copy {
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.55;
  color: rgba(255,255,255,.80);
  max-width: 580px;
  margin: 0;
}
.rp-org-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 14px 24px;
  border-radius: 999px;
  background: transparent;
  color: #FFFFFF;
  border: 1.5px solid var(--rp-gold);
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: .06em;
  text-transform: uppercase;
  text-decoration: none;
  transition: background 220ms ease, color 220ms ease, transform 220ms ease;
}
.rp-org-button:hover {
  background: var(--rp-gold);
  color: var(--rp-navy);
  transform: translateY(-2px);
}
.rp-org-arrow { display: inline-flex; transition: transform 220ms ease; }
.rp-org-button:hover .rp-org-arrow { transform: translateX(4px); }

/* Sticky bar -------------------------------------------------------- */
/* Elementor's sticky widgets / popups can reach z-index ~9998 and theme
   chat widgets often sit at 99999. Bumping past both so the picker bar
   always stays on top. Modal sits one higher (see below). */
.rp-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 100000;
  pointer-events: none;
  transform: translateY(120%);
  transition: transform 380ms cubic-bezier(.2,.8,.2,1);
}
.rp-bar.is-active {
  transform: translateY(0);
  pointer-events: auto;
}
.rp-bar-inner {
  max-width: 1180px;
  margin: 0 auto 16px;
  background: var(--rp-navy);
  color: #FFFFFF;
  border-radius: 16px;
  padding: 16px 22px;
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 24px;
  align-items: center;
  border: 1px solid rgba(201,169,97,.28);
  box-shadow:
    0 16px 40px rgba(10,6,68,.36),
    inset 0 0 0 1px rgba(255,255,255,.04);
  font-family: var(--font-body);
}
.rp-bar-status {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.rp-bar-count {
  font-family: var(--font-body);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--rp-gold);
}
.rp-bar-chips {
  font-family: var(--font-body);
  font-size: 13.5px;
  color: rgba(255,255,255,.80);
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rp-bar-total {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0;
  position: relative;
}
.rp-bar-amount {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 32px;
  line-height: 1;
  letter-spacing: -.02em;
  transition: opacity 160ms ease, transform 160ms ease;
}
.rp-bar-period {
  font-family: var(--font-body);
  font-size: 11.5px;
  font-weight: 600;
  color: rgba(255,255,255,.62);
  margin-top: 2px;
}
.rp-bar-savings {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 8px;
  padding: 5px 11px;
  border-radius: 999px;
  background: rgba(201,169,97,.16);
  color: var(--rp-gold);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.rp-bar-savings[hidden] { display: none; }
.rp-bar-savings::before {
  content: "★";
  font-size: 10px;
  letter-spacing: 0;
}
.rp-bar-button {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 22px;
  border-radius: 999px;
  background: var(--rp-gold);
  color: var(--rp-navy);
  text-decoration: none;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: .06em;
  text-transform: uppercase;
  transition: background 220ms ease, transform 220ms ease, opacity 220ms ease;
}
.rp-bar-button:hover {
  background: var(--rp-gold-soft);
  transform: translateY(-2px);
}
.rp-bar-button[aria-disabled="true"] {
  background: rgba(201,169,97,.28);
  color: rgba(19,13,96,.6);
  cursor: not-allowed;
  pointer-events: none;
}
.rp-bar-arrow { display: inline-flex; transition: transform 240ms ease; }
.rp-bar-button:hover .rp-bar-arrow { transform: translateX(4px); }

/* Learn-more modal -------------------------------------------------- */
.rp-modal {
  position: fixed;
  inset: 0;
  z-index: 100001;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
.rp-modal[hidden] { display: none; }
.rp-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(10,6,68,.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  cursor: pointer;
  opacity: 0;
  animation: rp-fade-in 220ms ease forwards;
}
.rp-modal-panel {
  position: relative;
  background: #FFFFFF;
  width: min(560px, 100%);
  max-height: calc(100vh - 48px);
  overflow-y: auto;
  border-radius: 20px;
  padding: 40px 36px 32px;
  box-shadow: 0 28px 80px rgba(10,6,68,.45);
  border: 1px solid var(--rp-border);
  color: var(--rp-ink);
  font-family: var(--font-body);
  transform: translateY(12px) scale(.98);
  opacity: 0;
  animation: rp-modal-in 320ms cubic-bezier(.2,.7,.2,1) forwards;
}
@keyframes rp-fade-in   { to { opacity: 1; } }
@keyframes rp-modal-in  { to { opacity: 1; transform: translateY(0) scale(1); } }

.rp-modal-close {
  position: absolute;
  top: 16px;
  right: 16px;
  appearance: none;
  background: var(--rp-surface-soft);
  border: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  color: var(--rp-ink);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 200ms ease, color 200ms ease, transform 200ms ease;
}
.rp-modal-close-x {
  font-family: var(--font-body);
  font-size: 26px;
  font-weight: 400;
  line-height: 1;
  display: block;
  margin-top: -2px; /* optical centering — the × glyph sits slightly low in most fonts */
}
.rp-modal-close:hover { background: var(--rp-navy); color: #FFFFFF; transform: rotate(90deg); }
.rp-modal-close:focus-visible { outline: 2px solid var(--rp-gold); outline-offset: 2px; }

.rp-modal-head {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 22px;
}
.rp-modal-glyph {
  display: inline-flex;
  width: 64px;
  height: 64px;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  background: var(--rp-navy-tint);
  color: var(--rp-navy);
  flex-shrink: 0;
}
.rp-modal-titles { display: flex; flex-direction: column; min-width: 0; }
.rp-modal-eyebrow {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--rp-gold-warm);
  margin: 0 0 4px;
}
.rp-modal-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 28px;
  line-height: 1.1;
  letter-spacing: -.015em;
  color: var(--rp-ink);
  margin: 0;
}

.rp-modal-price {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0 0 24px;
  padding-bottom: 24px;
  border-bottom: 1px dashed var(--rp-border);
}
.rp-modal-price-amount {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 44px;
  line-height: 1;
  letter-spacing: -.025em;
  color: var(--rp-ink);
}
.rp-modal-price-period {
  font-size: 14px;
  font-weight: 600;
  color: var(--rp-ink-soft);
}

.rp-modal-desc {
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.6;
  color: var(--rp-ink-soft);
  margin: 0 0 24px;
}

.rp-modal-section {
  font-family: var(--font-body);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--rp-gold-warm);
  margin: 0 0 14px;
}

.rp-modal-features {
  list-style: none !important;
  margin: 0 0 28px !important;
  padding: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
}
.rp-modal-features li {
  display: grid !important;
  grid-template-columns: 16px 1fr !important;
  gap: 12px !important;
  align-items: start !important;
  font-family: var(--font-body);
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--rp-ink);
  list-style: none !important;
}
/* `!important` on content + display + color because the modal is moved
   to <body> on init, so the picker's reset block no longer covers it
   and host-theme rules on `li::before` can otherwise win. */
.rp-modal-features li::before {
  content: "\2022" !important;
  display: block !important;
  color: var(--rp-gold) !important;
  font-family: var(--font-body) !important;
  font-size: 22px !important;
  line-height: 1 !important;
  margin-top: 0 !important;
  text-align: center;
}

.rp-modal-cta {
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 16px 24px;
  border-radius: 12px;
  background: var(--rp-navy);
  color: #FFFFFF;
  border: 0;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 14.5px;
  letter-spacing: .04em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 220ms ease, transform 220ms ease;
}
.rp-modal-cta:hover { background: var(--rp-navy-2); transform: translateY(-2px); }
.rp-modal-cta.is-selected { background: rgba(201,169,97,.18); color: var(--rp-gold-warm); }
.rp-modal-cta.is-selected:hover { background: rgba(201,169,97,.28); }
.rp-modal-cta:focus-visible { outline: 2px solid var(--rp-gold); outline-offset: 3px; }

/* Mobile ------------------------------------------------------------ */
@media (max-width: 880px) {
  .rp { padding: 40px 14px 240px; }
  .rp-head { margin-bottom: 32px; }
  .rp-grid { grid-template-columns: 1fr; gap: 14px; }
  .rp-card { padding: 28px 24px; }
  .rp-card-price-amount { font-size: 42px; }
  .rp-org-inner {
    grid-template-columns: 1fr;
    padding: 28px 24px;
    text-align: left;
  }
  .rp-bar-inner {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "status status"
      "total  button";
    gap: 14px;
    margin: 0 10px 10px;
    padding: 14px 16px;
    border-radius: 14px;
  }
  .rp-bar-status { grid-area: status; }
  .rp-bar-total { grid-area: total; align-items: flex-start; }
  .rp-bar-button { grid-area: button; padding: 13px 18px; font-size: 13px; }
  .rp-bar-amount { font-size: 28px; }
  .rp-modal { padding: 16px; align-items: flex-end; }
  .rp-modal-panel { padding: 32px 24px 24px; border-radius: 18px; }
  .rp-modal-title { font-size: 24px; }
  .rp-modal-price-amount { font-size: 38px; }
}

/* Compare table ----------------------------------------------------- */

.rp-cmp { padding-bottom: clamp(48px, 8vh, 96px); }

.rp-cmp-card {
  max-width: 1180px;
  margin: 0 auto;
  border-radius: 20px;
  background: #FFFFFF;
  box-shadow: var(--rp-shadow-1);
  border: 1px solid var(--rp-border-soft);
  overflow: hidden;
  position: relative;
}

.rp-cmp-scroll {
  overflow-x: auto;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}

.rp-cmp-table {
  width: 100%;
  min-width: 880px;
  border-collapse: collapse;
  font-family: var(--font-body);
  color: var(--rp-ink);
}
.rp-cmp-table th,
.rp-cmp-table td {
  text-align: left;
  vertical-align: top;
}

/* Sticky-ish header row */
.rp-cmp-table thead th {
  padding: 30px 22px 24px;
  background: #FAFBFD;
  border-bottom: 1px solid var(--rp-border);
}

.rp-cmp-h-feature {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--rp-ink-soft);
  width: 32%;
  min-width: 220px;
}

.rp-cmp-h-plan {
  width: 17%;
  min-width: 165px;
  border-left: 1px solid var(--rp-border-soft);
}

.rp-cmp-h-highlight {
  background:
    linear-gradient(180deg, rgba(19,13,96,.06) 0%, rgba(19,13,96,.02) 100%) !important;
}

/* Header-cell inner layout: flex column with the price + CTA pinned to the
   bottom via `.rp-cmp-plan-buy { margin-top: auto }`. This means columns
   with shorter taglines reserve the same vertical footprint as taller
   columns, so prices and CTAs line up across the row regardless of how
   the meta block wraps. */
.rp-cmp-plan-inner {
  display: flex;
  flex-direction: column;
  height: 100%;
  gap: 14px;
}
.rp-cmp-plan-meta { display: flex; flex-direction: column; gap: 4px; }
.rp-cmp-plan-buy {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: auto;
}

.rp-cmp-plan-name {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 17px;
  line-height: 1.2;
  color: var(--rp-ink);
  margin: 0;
}
.rp-cmp-plan-tag {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--rp-ink-soft);
  margin: 0;
  line-height: 1.4;
}
.rp-cmp-plan-price {
  display: flex;
  align-items: baseline;
  gap: 3px;
  margin: 0;
}
.rp-cmp-plan-price-amount {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 22px;
  line-height: 1;
  letter-spacing: -.02em;
  color: var(--rp-ink);
}
.rp-cmp-plan-price-unit {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 11.5px;
  color: var(--rp-ink-soft);
}

.rp-cmp-plan-cta {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--rp-navy);
  text-decoration: none;
  padding: 6px 0;
  transition: color 200ms ease, gap 200ms ease;
}
.rp-cmp-plan-cta:hover { color: var(--rp-navy-2); gap: 9px; }
.rp-cmp-plan-cta-arrow { transition: transform 200ms ease; }
.rp-cmp-plan-cta:hover .rp-cmp-plan-cta-arrow { transform: translateX(2px); }

/* Section divider rows */
.rp-cmp-section th {
  background: var(--rp-navy-tint);
  padding: 12px 22px;
  border-top: 1px solid var(--rp-border-soft);
  border-bottom: 1px solid var(--rp-border-soft);
}
.rp-cmp-section-label {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--rp-navy);
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.rp-cmp-section-label::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--rp-gold);
}

/* Body cells */
.rp-cmp-table tbody th,
.rp-cmp-table tbody td {
  padding: 16px 22px;
  border-bottom: 1px solid var(--rp-border-soft);
  font-size: 14px;
  line-height: 1.45;
}
.rp-cmp-table tbody td { border-left: 1px solid var(--rp-border-soft); }
.rp-cmp-feature {
  font-family: var(--font-body);
  font-weight: 600;
  color: var(--rp-ink);
}
.rp-cmp-cell-highlight {
  background: rgba(19,13,96,.025);
}
.rp-cmp-table tbody tr:not(.rp-cmp-section):hover th,
.rp-cmp-table tbody tr:not(.rp-cmp-section):hover td {
  background: rgba(19,13,96,.035);
}
.rp-cmp-table tbody tr.rp-cmp-section + tr th,
.rp-cmp-table tbody tr.rp-cmp-section + tr td { /* no extra border above first row of a section */ }
.rp-cmp-table tbody tr:last-child th,
.rp-cmp-table tbody tr:last-child td { border-bottom: 0; }

/* Check / dash indicators */
.rp-cmp-yes {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--rp-navy);
  color: #FFFFFF;
  line-height: 1;
}
.rp-cmp-no {
  display: inline-block;
  color: rgba(16,24,40,.22);
  font-size: 18px;
  font-weight: 400;
  line-height: 1;
  padding: 0 2px;
}

/* Mobile / horizontal scroll affordance */
@media (max-width: 880px) {
  .rp-cmp-card { border-radius: 14px; }
  .rp-cmp-table thead th { padding: 22px 16px 18px; }
  .rp-cmp-table tbody th,
  .rp-cmp-table tbody td { padding: 14px 16px; }
  .rp-cmp-plan-name { font-size: 16px; }
  .rp-cmp-plan-price-amount { font-size: 19px; }
}

/* Reduced motion ---------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .rp-card,
  .rp-card-corner,
  .rp-org-button,
  .rp-org-arrow,
  .rp-bar,
  .rp-bar-button,
  .rp-bar-arrow,
  .rp-bar-amount,
  .rp-modal-backdrop,
  .rp-modal-panel,
  .rp-modal-close {
    transition: none !important;
    animation: none !important;
  }
}
