/**
 * Quote funnel v2 — G1 conversion build (2026-06-10).
 * Loaded ONLY by page-quote.php (enqueued there, like the page's other assets).
 * Raw CSS so it never depends on a Tailwind build (same contract as the
 * inline <style> block in page-quote.php).
 */

/* ── Q2: inline validation messages (plain language, under the field) ───── */
.sacraw-field-error {
    font-family: var(--font-body);
    font-size: 0.75rem;
    line-height: 1.45;
    color: #b91c1c;
    margin-top: 0.375rem;
    text-align: left;
}
.sacraw-field-notice {
    font-family: var(--font-body);
    font-size: 0.75rem;
    line-height: 1.5;
    color: #78350f;
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 8px;
    padding: 8px 10px;
    margin-top: 0.5rem;
    text-align: left;
}
.sacraw-field-notice button { color: inherit; }

/* ── Q1: step-4 visitor panel — price card first once eligibility is attested.
   DOM order stays question-first (the gate) for the unanswered state; once
   attested the price renders directly under the step heading, the coverage
   selectors follow, and the attestation cards drop below. ──────────────── */
.sacraw-visitor-panel {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.sacraw-visitor-panel.is-attested .sacraw-vp-price     { order: -3; }
.sacraw-visitor-panel.is-attested .sacraw-vp-selectors { order: -2; }

/* Directive 5: once answered, the insurer-required eligibility wording stays
   VERBATIM but is visually subordinate below the price. */
.sacraw-visitor-panel.is-attested .sacraw-vp-elig,
.sacraw-visitor-panel.is-attested .sacraw-vp-med {
    border-width: 1px;
    background: var(--color-surface-alt, #F7F5F1);
    padding: 0.85rem 1rem;
}
.sacraw-visitor-panel.is-attested .sacraw-vp-elig h3,
.sacraw-visitor-panel.is-attested .sacraw-vp-med h3 {
    font-size: 0.8125rem;
}
.sacraw-visitor-panel.is-attested .sacraw-elig-legal {
    font-size: 0.71875rem;
    line-height: 1.5;
    color: var(--color-text-muted);
}

/* ── F2/Q1: sticky-bar mobile Email Quote icon button (44px tap target) ── */
.sacraw-sticky-iconbtn {
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    border: 1.5px solid var(--color-border);
    border-radius: 12px;
    background: #fff;
    color: var(--color-text-muted);
}

/* ── Directive 5: the chat launcher never sits beside the raw card fields.
   page-quote.php toggles body.sf-quote-pay-step on step 7. ─────────────── */
body.sf-quote-pay-step .sacraw-chat { display: none !important; }

/* ── Mockup defect (a) fix, 2026-06-10: the new G1 quote markup (sticky bar,
   price sheet, exit-intent modal) uses Tailwind utilities that are ABSENT from
   the compiled assets/css/style.css (no Tailwind rebuild was run). Without
   them the desktop sticky bar duplicated the mobile price + envelope buttons.
   Exact standard definitions, byte-matched to the mockup harness shim
   (_harness/bootstrap.php #sf-harness-missing-utilities-shim) so deploy
   behavior equals the mockups. The header-phone trio (whitespace-nowrap,
   text-[12px], leading-none) lives in sacraw-brand.css (global). ────────── */
.min-w-0{min-width:0}
.mr-1{margin-right:.25rem}
.h-1{height:.25rem}
.leading-snug{line-height:1.375}
.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}
@media (min-width:640px){.sm\:hidden{display:none}}

/* ── Mockup defect (b) fix, 2026-06-10 (MOCKUP-NOTES caveat 7): the chat FAB
   stacked ABOVE the open mobile price-breakdown sheet (sheet overlay is z-50;
   the chat root sits higher) and overlapped the Total row — visible in 01b.
   page-quote.php toggles body.sf-quote-sheet-open while showPriceSheet is
   true, mirroring the sf-quote-pay-step mechanism above. ────────────────── */
body.sf-quote-sheet-open .sacraw-chat { display: none !important; }
