/* ==========================================================================
   wizard-ux.css
   Additive UX/accessibility layer for the lead wizard (get-started.php).
   Loaded AFTER site.css and after the page's inline <style>, so equal-
   specificity rules here win. Uses only the existing design tokens
   (--purple, --purple-light, --border, --muted, ...) — no new colors.
   Everything is scoped to .wizard-wrap / .wizard-card / .exit-toast so no
   other page is affected.
   ========================================================================== */

/* --- Group captions ------------------------------------------------------
   Step 8's category names and step 44's two questions used to be <label>s
   that pointed at nothing. They are now plain captions that name a
   role="group"/"radiogroup" (aria-labelledby). Same look as a label. */
.field-label {
  display: block;
  margin-bottom: 7px;
  color: #b8c0ce;
  font-size: .74rem;
  font-weight: 700;
}

.service-picker-group > .field-label {
  margin-bottom: 10px;
  color: var(--text);
  font-size: .8rem;
}

/* --- Touch targets (>= 44px) --------------------------------------------- */
.wizard-card .option-card {
  min-height: 48px;
}

.wizard-card .option-card.option-card-sm {
  min-height: 44px;
  font-size: .82rem;
}

.wizard-card .button {
  min-height: 44px;
}

/* Small secondary actions (cross-sell, add person, check availability,
   remove) — previously inline 9px padding, which came out ~36px tall. */
.wizard-card .button-compact {
  padding: 10px 16px;
  font-size: .84rem;
}

.wizard-card .stakeholder-remove {
  min-width: 44px;
}

/* --- Inputs: 16px stops iOS Safari zooming the page on focus ------------- */
.wizard-card input[type="text"],
.wizard-card input[type="email"],
.wizard-card input[type="tel"],
.wizard-card input[type="date"],
.wizard-card textarea,
.wizard-card select,
.wizard-card #impact-rate-select {
  font-size: 16px;
}

.wizard-card #impact-rate-select {
  min-height: 44px;
  padding-right: 34px;
}

/* --- Focus ---------------------------------------------------------------
   Native radios/checkboxes inside the small option cards are visually hidden
   (opacity:0), so the ring has to appear on the card itself. site.css does
   this with :has(); this is the fallback for browsers without :has(). */
@supports not selector(:has(*)) {
  .option-card:focus-within {
    outline: 2px solid var(--purple-light);
    outline-offset: 2px;
  }
}

/* Headings and the success container are focused by script (tabindex=-1)
   only to move screen-reader/keyboard position — no ring on those. */
.wizard-step h2[tabindex="-1"]:focus,
.wizard-success:focus,
#demo-generating-heading:focus {
  outline: none;
}

/* --- Inline validation ---------------------------------------------------
   Existing .field-error / .form-group.invalid styles stay (the message text
   itself, not just the red border, carries the state). */
.field-error {
  line-height: 1.45;
}

.wizard-error {
  scroll-margin-top: 96px;
  line-height: 1.5;
}

/* --- Progress ------------------------------------------------------------
   The bar's endless shimmer was decoration next to the field a visitor is
   trying to fill in; the width change is the only motion that carries
   meaning. The success check's endless pulse likewise. */
.wizard-progress-bar {
  animation: none;
}

.wizard-success .check {
  animation: none;
}

.wizard-progress,
#wizard-success {
  scroll-margin-top: 96px;
}

/* --- Helper text contrast ------------------------------------------------
   --muted-2 is 4.63:1 on the page background but only ~4.3-4.5:1 once it
   sits on the translucent card surfaces, just under WCAG AA for small text.
   Inside the wizard card these step up to --muted (6.6:1 there). */
.wizard-card .category-hint,
.wizard-card .selectivity-note,
.wizard-card .scope-benchmark,
.wizard-card .scope-disclaimer,
.wizard-card .scope-impact-label,
.wizard-card .scope-impact-figure-label,
.wizard-card .agreement-redirect-note {
  color: var(--muted) !important;
}

/* --- Review screen: "Edit" links ----------------------------------------- */
.review-row-value {
  margin-left: auto;
}

.review-edit {
  flex-shrink: 0;
  align-self: center;
  min-height: 44px;
  min-width: 44px;
  margin: -10px 0;
  padding: 0 6px;
  border: 0;
  background: none;
  color: var(--purple-light);
  font: inherit;
  font-size: .82rem;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

.review-edit:hover {
  color: var(--text);
}

/* --- Success screen ------------------------------------------------------- */
.wizard-success-next {
  margin-top: 24px;
}

.agreement-redirect-cancel-btn {
  min-height: 44px;
  padding: 0 4px;
}

@media (pointer: fine) {
  .agreement-redirect-cancel-btn {
    min-height: 0;
    padding: 0;
  }
}

/* --- Exit-intent toast ---------------------------------------------------
   While hidden it is fully removed from the accessibility tree and Tab
   order (before, its dismiss control could be tabbed to while invisible). */
.exit-toast {
  visibility: hidden;
  transition: opacity .35s ease, transform .35s cubic-bezier(.34, 1.56, .64, 1), visibility 0s linear .35s;
}

.exit-toast.is-visible {
  visibility: visible;
  transition-delay: 0s;
}

.exit-toast-close {
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  width: 32px;
  height: 32px;
}

/* --- Small screens -------------------------------------------------------- */
@media (max-width: 600px) {
  /* Long option labels in the 2-column dense grid should wrap, never push
     the card wider than the viewport. */
  .wizard-card .option-card {
    min-width: 0;
    overflow-wrap: break-word;
  }

  /* Rows that carry an Edit button: label + Edit on the first line, the
     answer on its own line underneath (long answers stay readable). */
  .review-row-editable .review-row-value {
    text-align: left;
    margin-left: 0;
    flex-basis: 100%;
    order: 3;
  }

  .review-row-editable .review-edit {
    margin-left: auto;
  }
}

/* Motion: the site-wide prefers-reduced-motion override in site.css already
   zeroes animation/transition durations; this keeps the smooth-scroll and
   the toast's slide honest too. */
@media (prefers-reduced-motion: reduce) {
  .exit-toast {
    transition: none;
  }
}


/* ==========================================================================
   VISUAL LAYER (polish pass)
   Presentation only. Sits on the existing tokens (purple accent; green/red
   reserved for status). Selectors are scoped to .wizard-* so nothing outside
   the wizard changes. JS state classes it relies on: .option-card.checked,
   body.wizard-engaged, .wizard-wrap[data-step], #wizard-form[data-dir].
   ========================================================================== */

/* --- Hero ---------------------------------------------------------------- */
.wizard-hero {
  padding: 128px 0 30px;
}

/* The blob layer is clipped by the hero box, which drew a hard horizontal
   edge across the page. Fade it out instead. */
.wizard-hero .bg-ambient {
  -webkit-mask-image: linear-gradient(180deg, #000 0, #000 55%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 0, #000 55%, transparent 100%);
}

.wizard-hero h1 {
  max-width: 640px;
  margin-top: 16px;
  font-size: clamp(2.1rem, 4.6vw, 3.1rem);
  line-height: 1.04;
  letter-spacing: -.05em;
  text-wrap: balance;
}

.wizard-hero .lede {
  max-width: 500px;
  margin-top: 16px;
  font-size: 1.02rem;
  line-height: 1.7;
  text-wrap: pretty;
}

/* Past step 1 the intro condenses so the question sits higher on screen
   (body.wizard-engaged is set by the wizard script). The h1 stays in the
   document as a quiet page label. */
.wizard-engaged .wizard-hero {
  padding: 100px 0 14px;
}

.wizard-engaged .wizard-hero .kicker,
.wizard-engaged .wizard-hero .lede {
  display: none;
}

.wizard-engaged .wizard-hero h1 {
  margin-top: 0;
  color: var(--muted);
  font-size: .9rem;
  font-weight: 700;
  letter-spacing: .01em;
  line-height: 1.4;
}

/* Trust note now sits under the card, where a hesitating visitor looks. */
.wizard-trust {
  max-width: 500px;
  margin: 22px auto 0;
  color: var(--muted);
  font-size: .82rem;
  font-style: normal;
  line-height: 1.6;
  text-align: center;
  text-wrap: pretty;
}

.wizard-wrap[data-step="46"] .wizard-trust {
  display: none; /* the review step carries its own version inside the card */
}

/* --- Wrap + progress ------------------------------------------------------ */
.wizard-wrap {
  max-width: 640px;
}

.wizard-progress {
  display: block;
  margin-bottom: 14px;
}

.wizard-progress-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .02em;
}

.wizard-progress-count {
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

.wizard-progress-label {
  color: var(--muted);
  font-weight: 600;
}

.wizard-progress-track {
  width: 100%;
  height: 4px;
  background: rgba(255, 255, 255, .08);
}

.wizard-progress-bar {
  background: linear-gradient(90deg, var(--purple), var(--purple-light));
  transition: width .5s cubic-bezier(.16, 1, .3, 1);
}

/* --- Card ----------------------------------------------------------------- */
.wizard-card {
  position: relative;
  padding: 40px;
  border-color: rgba(255, 255, 255, .1);
  background: linear-gradient(180deg, rgba(255, 255, 255, .05), rgba(255, 255, 255, .02) 45%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05), 0 40px 80px -44px rgba(0, 0, 0, .8);
}

/* One deliberate highlight: a hairline of accent along the top edge. */
.wizard-card::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 28px;
  right: 28px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(169, 141, 255, .6), transparent);
  pointer-events: none;
}

.wizard-step > h2 {
  font-size: clamp(1.45rem, 3.6vw, 1.75rem);
  line-height: 1.2;
  letter-spacing: -.035em;
  margin-bottom: 10px;
  text-wrap: balance;
}

.wizard-step > h2 + .step-copy {
  max-width: 52ch;
  margin-bottom: 28px;
  font-size: .95rem;
  line-height: 1.6;
}

/* Direction-aware step change: forward slides in from the right, Back from
   the left. Short, and switched off for reduced motion. */
@keyframes wizard-in-fwd {
  from { opacity: 0; transform: translateX(14px); }
  to { opacity: 1; transform: none; }
}

@keyframes wizard-in-back {
  from { opacity: 0; transform: translateX(-14px); }
  to { opacity: 1; transform: none; }
}

#wizard-form[data-dir="fwd"] .wizard-step.active {
  animation: wizard-in-fwd .32s cubic-bezier(.16, 1, .3, 1) both;
}

#wizard-form[data-dir="back"] .wizard-step.active {
  animation: wizard-in-back .32s cubic-bezier(.16, 1, .3, 1) both;
}

/* --- Fields ---------------------------------------------------------------- */
.wizard-card .form-group {
  margin-bottom: 18px;
}

.wizard-card .form-group > label {
  margin-bottom: 8px;
  color: #c9d0dc;
  font-size: .8rem;
  font-weight: 600;
}

.wizard-card input[type="text"],
.wizard-card input[type="email"],
.wizard-card input[type="tel"],
.wizard-card input[type="date"],
.wizard-card textarea,
.wizard-card select {
  padding: 14px 16px;
  border-color: rgba(255, 255, 255, .12);
  border-radius: 12px;
  background-color: rgba(255, 255, 255, .04);
  transition: border-color .18s ease, background-color .18s ease;
}

.wizard-card input[type="text"],
.wizard-card input[type="email"],
.wizard-card input[type="tel"],
.wizard-card input[type="date"] {
  min-height: 52px;
}

.wizard-card input::placeholder,
.wizard-card textarea::placeholder {
  color: #7f889a;
}

.wizard-card input[type="text"]:hover,
.wizard-card input[type="email"]:hover,
.wizard-card input[type="tel"]:hover,
.wizard-card input[type="date"]:hover,
.wizard-card textarea:hover,
.wizard-card select:hover {
  border-color: rgba(255, 255, 255, .22);
}

/* One clear ring (a11y.css adds a second, light-blue one and squares the
   corners; this keeps a strong visible focus but in the accent, and keeps
   the field's radius). */
.wizard-card input[type="text"]:focus-visible,
.wizard-card input[type="email"]:focus-visible,
.wizard-card input[type="tel"]:focus-visible,
.wizard-card input[type="date"]:focus-visible,
.wizard-card textarea:focus-visible,
.wizard-card select:focus-visible {
  border-color: var(--purple-light);
  border-radius: 12px;
  background-color: rgba(255, 255, 255, .055);
  outline: 2px solid var(--purple-light);
  outline-offset: 2px;
  box-shadow: none;
}

/* Error state: red border AND a message with an icon (never colour alone). */
.wizard-card .form-group.invalid input:focus-visible {
  border-color: var(--red);
  outline-color: var(--red);
}

.wizard-card .field-error.visible {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin-top: 8px;
  color: #ffb1c0;
  font-size: .82rem;
}

.wizard-card .field-error.visible::before {
  content: "";
  flex: none;
  width: 15px;
  height: 15px;
  margin-top: 2px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ff5c7a' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 7.5v5.5M12 16.5h.01'/%3E%3C/svg%3E") center / contain no-repeat;
}

.wizard-card .wizard-error {
  border-radius: 12px;
}

/* --- Option cards ---------------------------------------------------------
   (Site.css gave every <label> a 7px bottom margin, which made rows of cards
   sit further apart than columns.) */
.wizard-card .option-grid {
  gap: 12px;
  margin-bottom: 8px;
}

.wizard-card .option-grid-dense {
  gap: 10px;
}

.wizard-card .option-card {
  position: relative;
  gap: 12px;
  margin-bottom: 0;
  padding: 14px 16px;
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 12px;
  background: rgba(255, 255, 255, .03);
  color: #dfe4ee;
  font-size: .9rem;
  line-height: 1.35;
  transition: border-color .18s ease, background-color .18s ease, box-shadow .18s ease, color .18s ease;
}

.wizard-card .option-card:hover {
  border-color: rgba(255, 255, 255, .22);
  background: rgba(255, 255, 255, .055);
}

.wizard-card .option-card:active {
  transform: none;
}

.wizard-card .option-card.checked {
  border-color: rgba(130, 87, 255, .85);
  background: rgba(130, 87, 255, .12);
  box-shadow: 0 0 0 1px rgba(130, 87, 255, .5);
  color: #fff;
  animation: none;
}

.wizard-card .option-card:has(input:checked) {
  border-color: rgba(130, 87, 255, .85);
  background: rgba(130, 87, 255, .12);
  box-shadow: 0 0 0 1px rgba(130, 87, 255, .5);
  color: #fff;
}

/* Large cards: the native control becomes a crisp check / radio indicator on
   the right (still the real input, so keyboard + screen readers unchanged). */
.wizard-card .option-card:not(.option-card-sm) > input {
  order: 3;
  flex: none;
  width: 20px;
  height: 20px;
  margin: 0 0 0 auto;
  padding: 0;
  border: 1.5px solid rgba(255, 255, 255, .3);
  border-radius: 6px;
  background-color: transparent;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 14px;
  box-shadow: none;
  -webkit-appearance: none;
  appearance: none;
  transition: background-color .18s ease, border-color .18s ease;
}

.wizard-card .option-card:not(.option-card-sm) > input[type="radio"] {
  border-radius: 50%;
}

.wizard-card .option-card:not(.option-card-sm):hover > input {
  border-color: rgba(255, 255, 255, .5);
}

.wizard-card .option-card:not(.option-card-sm) > input[type="checkbox"]:checked {
  border-color: var(--purple);
  background-color: var(--purple);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");
}

.wizard-card .option-card:not(.option-card-sm) > input[type="radio"]:checked {
  border-color: var(--purple);
  background-color: var(--purple);
  background-image: radial-gradient(circle, #fff 0 3px, transparent 3.5px);
  background-size: 100% 100%;
}

/* The card carries the focus ring, so the little indicator doesn't add a
   second one. */
.wizard-card .option-card > input:focus-visible {
  outline: none;
  box-shadow: none;
}

/* Small (dense-grid) cards: input stays hidden; the selected badge is a crisp
   drawn check instead of a glyph. */
.wizard-card .option-card.option-card-sm {
  min-height: 48px;
  padding: 12px 10px;
  font-size: .84rem;
}

.wizard-card .option-card-sm.checked::after {
  content: "";
  top: -7px;
  right: -7px;
  width: 20px;
  height: 20px;
  background: var(--purple) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 12px no-repeat;
  box-shadow: 0 0 0 2px #0b0c12;
}

/* Icon tile (step 7 areas of interest) */
.opt-icon {
  flex: none;
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border: 1px solid rgba(130, 87, 255, .25);
  border-radius: 10px;
  background: rgba(130, 87, 255, .12);
  color: var(--purple-light);
  transition: background-color .18s ease;
}

.wizard-card .option-card.checked .opt-icon {
  background: rgba(130, 87, 255, .24);
}

/* Step 7: one column reads as a list of distinct areas; icon + label + check
   need the width. */
#interests-grid {
  grid-template-columns: 1fr;
}

#interests-grid .option-card {
  min-height: 60px;
  padding: 11px 16px 11px 12px;
}

/* Category captions on step 8 */
.cat-icon {
  display: inline-grid;
  place-items: center;
  margin-right: 4px;
  color: var(--purple-light);
  vertical-align: -3px;
}

.cat-icon .opt-icon-svg {
  width: 16px;
  height: 16px;
}

/* Design-direction cards (step 42): the mini-layout previews fill the card,
   so the native indicator is visually replaced by the same corner check badge
   the dense cards use (the real input stays in place for keyboards/AT). */
.wizard-card .option-card.style-example-card:not(.option-card-sm) > input {
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 1px;
  margin: 0;
  border: 0;
  opacity: 0;
  pointer-events: none;
}

.wizard-card .style-example-card.checked::after {
  content: "";
  position: absolute;
  top: -7px;
  right: -7px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--purple) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 12px no-repeat;
  box-shadow: 0 0 0 2px #0b0c12;
}

/* --- Navigation ------------------------------------------------------------ */
.wizard-nav {
  margin-top: 36px;
  gap: 12px;
}

#wizard-back[style*="hidden"] {
  display: none;
}

#wizard-next,
#wizard-submit {
  min-height: 52px;
  margin-left: auto;
  padding-left: 28px;
  padding-right: 28px;
}

#wizard-back {
  border-color: transparent;
  background: transparent;
}

#wizard-back:hover {
  background: rgba(255, 255, 255, .06);
}

/* --- Sizing step (37) ------------------------------------------------------- */
.wizard-card .scope-estimate {
  padding: 20px 22px;
  border-color: rgba(255, 255, 255, .09);
  border-radius: 16px;
  background: rgba(255, 255, 255, .03);
}

.wizard-card .scope-impact-figure-value {
  color: var(--text);
  font-size: 1.5rem;
  font-variant-numeric: tabular-nums;
}

.wizard-card #impact-hours-input {
  height: 28px;
  padding: 0;
  border: 0;
  background: transparent;
  -webkit-appearance: none;
  appearance: none;
}

.wizard-card #impact-hours-input::-webkit-slider-runnable-track {
  height: 4px;
  border-radius: 4px;
  background: rgba(255, 255, 255, .16);
}

.wizard-card #impact-hours-input::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 22px;
  height: 22px;
  margin-top: -9px;
  border: 3px solid #0b0c12;
  border-radius: 50%;
  background: var(--purple-light);
  box-shadow: 0 0 0 1px var(--purple-light);
}

.wizard-card #impact-hours-input::-moz-range-track {
  height: 4px;
  border-radius: 4px;
  background: rgba(255, 255, 255, .16);
}

.wizard-card #impact-hours-input::-moz-range-thumb {
  width: 16px;
  height: 16px;
  border: 3px solid #0b0c12;
  border-radius: 50%;
  background: var(--purple-light);
  box-shadow: 0 0 0 1px var(--purple-light);
}

/* Added stakeholder rows: keep both fields top-aligned even when one shows
   an error (the row's inline style bottom-aligns them). */
.wizard-card .stakeholder-row {
  align-items: flex-start !important;
}

.wizard-card .stakeholder-remove {
  margin-top: 31px;
}

/* --- Review step ------------------------------------------------------------ */
.wizard-card #review-summary > .scope-badge,
.wizard-card #pricing-breakdown > .scope-badge {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--purple-light);
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.review-row-value,
.review-row-label {
  font-variant-numeric: tabular-nums;
}

#review-rows .review-row {
  display: grid;
  grid-template-columns: minmax(96px, 150px) minmax(0, 1fr) auto;
  grid-template-areas: "label value edit";
  column-gap: 16px;
  align-items: baseline;
  padding: 13px 0;
  border-bottom: 1px solid rgba(255, 255, 255, .06);
}

#review-rows .review-row:last-child {
  border-bottom: 0;
}

#review-rows .review-row-label {
  grid-area: label;
  font-size: .82rem;
}

#review-rows .review-row-value {
  grid-area: value;
  margin-left: 0;
  font-size: .9rem;
  text-align: left;
}

#review-rows .review-edit {
  grid-area: edit;
  align-self: center;
  margin: -10px -8px -10px 0;
  padding: 0 10px;
  border-radius: 8px;
  text-decoration: none;
  transition: background-color .18s ease, color .18s ease;
}

#review-rows .review-edit:hover {
  background: rgba(130, 87, 255, .14);
  color: var(--text);
}

/* Pricing: figures right-aligned in a column, never wrapping onto their own
   line; the rate the visitor actually pays is the one emphasised row. */
#pricing-rows .review-row {
  display: flex;
  flex-wrap: nowrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 11px 0;
  border-bottom: 1px solid rgba(255, 255, 255, .06);
}

#pricing-rows .review-row:last-child {
  border-bottom: 0;
}

#pricing-rows .review-row-label {
  flex: 1 1 auto;
  min-width: 0;
  font-size: .86rem;
}

#pricing-rows .review-row-value {
  flex: none;
  margin-left: auto;
  white-space: nowrap;
}

#pricing-rows .review-row:has(.price-row-intro) {
  margin: 8px -14px;
  padding: 14px;
  border: 0;
  border-radius: 12px;
  background: rgba(130, 87, 255, .1);
  box-shadow: inset 0 0 0 1px rgba(130, 87, 255, .28);
}

#pricing-rows .review-row:has(.price-row-intro) .review-row-label {
  color: var(--text);
  font-weight: 700;
}

#pricing-rows .price-row-intro {
  color: var(--text);
  font-size: 1.25rem;
  font-weight: 800;
  letter-spacing: -.01em;
}

/* --- Success + offers ------------------------------------------------------- */
.wizard-success {
  padding: 12px 0 4px;
}

.wizard-success h2 {
  font-size: 1.75rem;
  letter-spacing: -.035em;
  text-wrap: balance;
}

.wizard-success .check {
  width: 64px;
  height: 64px;
  margin-bottom: 22px;
  box-shadow: 0 0 0 8px rgba(62, 227, 161, .06);
  font-size: 0;
}

.check-svg path {
  stroke-dasharray: 24;
  stroke-dashoffset: 24;
  animation: wizard-check-draw .5s .15s cubic-bezier(.16, 1, .3, 1) forwards;
}

@keyframes wizard-check-draw {
  to { stroke-dashoffset: 0; }
}

.agreement-orb {
  color: var(--purple-light);
  font-size: 0;
}

#demo-offer,
#demo-ready,
#agreement-offer {
  padding: 24px;
  border-color: rgba(130, 87, 255, .3);
  background: linear-gradient(180deg, rgba(130, 87, 255, .1), rgba(130, 87, 255, .03));
}

.wizard-card .offer-title {
  font-size: 1.15rem;
  letter-spacing: -.02em;
  line-height: 1.3;
}

#demo-offer-btn,
#demo-ready-link,
#agreement-offer-link {
  min-height: 52px;
  padding-left: 26px;
  padding-right: 26px;
}

.demo-ready-frame-wrap {
  border-radius: 14px;
  border-color: rgba(255, 255, 255, .14);
}

/* Exit toast icon (was an emoji) */
.exit-toast-icon {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(62, 227, 161, .12);
  color: var(--green);
}

/* --- Small screens ----------------------------------------------------------- */
@media (max-width: 600px) {
  .wizard-hero {
    padding: 100px 0 18px;
  }

  .wizard-hero h1 {
    margin-top: 12px;
    font-size: 2rem;
  }

  .wizard-hero .lede {
    font-size: .95rem;
    line-height: 1.6;
  }

  .wizard-engaged .wizard-hero {
    padding: 88px 0 10px;
  }

  .wizard-wrap {
    padding: 0 16px;
  }

  .wizard-card {
    padding: 26px 20px 22px;
  }

  .wizard-card::before {
    left: 20px;
    right: 20px;
  }

  .wizard-nav {
    flex-wrap: nowrap;
    margin-top: 28px;
  }

  #wizard-next,
  #wizard-submit {
    flex: 1;
    padding-left: 16px;
    padding-right: 16px;
  }

  #wizard-back {
    flex: none;
  }

  .wizard-card .option-card {
    padding: 13px 14px;
  }

  #interests-grid .option-card {
    padding: 10px 14px 10px 10px;
  }

  #review-rows .review-row {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "label edit" "value value";
    row-gap: 2px;
    padding: 12px 0;
  }

  .review-row-editable .review-row-value {
    margin-left: 0;
    flex-basis: auto;
    order: 0;
  }

  #pricing-rows .review-row:has(.price-row-intro) {
    margin-left: -10px;
    margin-right: -10px;
    padding: 12px 10px;
  }

  #demo-offer,
  #demo-ready,
  #agreement-offer {
    padding: 20px;
  }

  #demo-offer-btn,
  #demo-ready-link,
  #agreement-offer-link {
    width: 100%;
    padding-left: 14px;
    padding-right: 14px;
  }
}

@media (prefers-reduced-motion: reduce) {
  #wizard-form .wizard-step.active,
  .check-svg path {
    animation: none;
  }

  .check-svg path {
    stroke-dashoffset: 0;
  }

  .wizard-progress-bar {
    transition: none;
  }
}

.wizard-success h2,
.wizard-success #demo-generating-heading,
.wizard-success #agreement-generating-heading {
  line-height: 1.2;
}
