/* Moved out of _index_partial.php on 2026-10-18 (cached file instead of inline). Edit THIS file now; the partial only links it. */
    /* Signup-modal layout polish (scoped to #pbs-signup-modal; does not touch the login modal). */
    .pb-rewards #pbs-signup-modal .modal-card { padding: 26px 26px 28px; }
    .pb-rewards #pbs-signup-modal .modal-card h2 { font-size: clamp(1.35rem, 4.2vw, 1.7rem); line-height: 1.2; margin: 0 0 8px; }
    .pb-rewards #pbs-signup-modal .modal-card .lede { margin: 0 0 18px; }
    .pb-rewards #pbs-signup-modal .pbs-step-hint {
      text-align: left; margin: 0 0 14px; padding-right: 28px;
      font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase;
      color: #9a8575; font-weight: 600;
    }
    /* Even rhythm: label tight to its hint, hint to its field; primary button gets clear space. */
    .pb-rewards #pbs-signup-modal .modal-card label { margin-top: 4px; }
    .pb-rewards #pbs-signup-modal .modal-card .hint { margin: 2px 0 8px; }
    .pb-rewards #pbs-signup-modal .modal-meta-row { margin-top: 12px; text-align: center; }

    /* Mobile keyboard fix: top-align + let the overlay scroll so the focused field is never
       hidden under the keypad (a centered fixed modal slides the field below the keyboard and
       jumps while typing). Pin the backdrop so it still dims the whole viewport when scrolled. */
    .pb-rewards #pbs-signup-modal { align-items: flex-start; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 16px 14px 28px; }
    .pb-rewards #pbs-signup-modal .modal-backdrop { position: fixed; }
    .pb-rewards #pbs-signup-modal .modal-card { margin: 0 auto; }

    /* Consent rows: flex with top-aligned checkbox for multi-line label text. */
    .pb-rewards #pbs-signup-modal .consent {
      display: flex; align-items: flex-start; gap: 10px;
      margin: 12px 0 4px; padding: 0; font-size: 0.9rem; color: var(--ink);
    }
    .pb-rewards #pbs-signup-modal .consent input[type="checkbox"] {
      width: 18px; height: 18px; margin: 1px 0 0 0; flex-shrink: 0; accent-color: var(--accent); -webkit-appearance: auto; appearance: auto;
    }
    /* Show-password row: single line, vertically centred, label same size as
       field labels but not bold. Field labels use the shared rewards-form.css
       label style (0.9rem, font-weight: 600). Match the size, drop the weight. */
    /* Password label + Show-password on one line: label left, toggle right. */
    .pb-rewards #pbs-signup-modal .pw-label-row {
      display: flex; align-items: center; justify-content: space-between;
      gap: 12px; margin-top: 10px;
    }
    .pb-rewards #pbs-signup-modal .pw-label-row > label { margin: 0; }
    .pb-rewards #pbs-signup-modal .pw-show {
      display: flex; align-items: center; gap: 6px;
      margin: 0; padding: 0;
    }
    .pb-rewards #pbs-signup-modal .pw-show input[type="checkbox"] {
      width: 14px; height: 14px; margin: 0; flex-shrink: 0; accent-color: var(--accent); -webkit-appearance: auto; appearance: auto;
    }
    .pb-rewards #pbs-signup-modal .pw-show-label {
      font-size: 0.78rem; font-weight: normal; color: var(--ink);
      margin: 0; padding: 0; cursor: pointer;
    }
    /* Step-3 skip row: secondary "fill in later" action under the primary submit. */
    .pb-rewards #pbs-signup-modal .pbs-skip-row { margin-top: 12px; }
    /* Secondary "complete later" action: white button, red text + border
       (inverse of the primary red button; inherits geometry from .pb-rewards button). */
    .pb-rewards #pbs-signup-modal .pbs-skip-btn {
      background: #fff; color: var(--accent);
      border: 1.5px solid var(--accent); margin-top: 0;
    }
    .pb-rewards #pbs-signup-modal .pbs-skip-btn:hover { background: #fff5f5; }
    .pb-rewards #pbs-signup-modal .pbs-optional-note {
      font-size: 0.82rem; color: var(--muted); margin: 0 0 14px; line-height: 1.4;
    }
    .pb-rewards #pbs-signup-modal .pbs-bonus-hl { color: var(--accent); font-weight: 700; }
    .pb-rewards #pbs-signup-modal .pbs-dob-label { margin: 0; }
    /* Step-3 grouped field cards: email + DOB each in a light bordered block for
       clearer scanning. */
    .pb-rewards #pbs-signup-modal .pbs-field-card {
      border: 1px solid rgba(0,0,0,0.12); border-radius: 12px;
      background: rgba(0,0,0,0.02); padding: 14px 14px 12px;
      margin: 12px 0;
    }
    .pb-rewards #pbs-signup-modal .pbs-field-card > label {
      display: block; margin: 0 0 8px; font-weight: 600;
    }
    .pb-rewards #pbs-signup-modal .pbs-field-card .optional-tag {
      font-weight: 400; font-size: 12px; color: #8a8378;
    }
    .pb-rewards #pbs-signup-modal .pbs-field-card .hint {
      display: block; margin-top: 8px; margin-bottom: 0; font-size: 0.76rem; line-height: 1.45; color: #6f6a60;
    }
    .pb-rewards #pbs-signup-modal .pbs-field-card input,
    .pb-rewards #pbs-signup-modal .pbs-field-card .pbs-dob-row { margin: 0; }
    /* Collapse empty status/alert boxes so they don't reserve padding+margin
       (was leaving a big gap between the DOB card and the submit button). */
    .pb-rewards #pbs-signup-modal .alert:empty { display: none; margin: 0; padding: 0; }
    .pb-rewards #pbs-signup-modal .pbs-dob-row { display: flex; gap: 8px; margin-bottom: 0; }
    .pb-rewards #pbs-signup-modal .pbs-dob-row select { flex: 1; min-width: 0; }
  