/* ═══════════════════════════════════════════════════════════
   Volterra Mobile CTA  v2.0
   Brand:  Navy #1B2A4A  ·  Red #C8232C  ·  White
   Visible ≤ 768px only
   ═══════════════════════════════════════════════════════════ */

/* ── Tokens ── */
:root {
    --vm-navy:        #1B2A4A;
    --vm-navy-deep:   #121E36;
    --vm-navy-light:  #243760;
    --vm-red:         #C8232C;
    --vm-red-hover:   #DB2B35;
    --vm-red-glow:    rgba(200, 35, 44, .28);
    --vm-white:       #FFFFFF;
    --vm-gray:        #8B92A0;
    --vm-gray-dark:   #4A5874;
    --vm-border:      #2D3D5E;
    --vm-input:       #16233D;
    --vm-ok:          #2EAD63;
    --vm-err:         #E04B4B;
    --vm-bar-h:       64px;
    --vm-ff:          -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
                      Helvetica, Arial, sans-serif;
}

/* ── HIDE EVERYTHING on desktop ── */
.vmcta-bar,
.vmcta-overlay,
.vmcta-modal {
    display: none !important;
}


/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   MOBILE STYLES  (≤ 768px)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
@media screen and (max-width: 768px) {

    /* Padding so page content isn't hidden behind bar */
    body {
        padding-bottom: var(--vm-bar-h) !important;
    }

    /* ════════════════════════════
       BOTTOM BAR  (always visible)
       ════════════════════════════ */
    .vmcta-bar {
        display: flex !important;
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        z-index: 999990;
        height: var(--vm-bar-h);
        background: var(--vm-navy);
        border-top: 1px solid var(--vm-border);
        box-shadow: 0 -4px 30px rgba(0, 0, 0, .50);
        padding: 8px 12px;
        gap: 10px;
        align-items: center;
        font-family: var(--vm-ff);
    }

    /* shared button */
    .vmcta-btn {
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        height: 46px;
        border: none;
        border-radius: 10px;
        font-size: 14px;
        font-weight: 600;
        font-family: var(--vm-ff);
        letter-spacing: .02em;
        cursor: pointer;
        text-decoration: none;
        -webkit-tap-highlight-color: transparent;
        transition: background .2s, transform .15s, box-shadow .2s, border-color .2s;
    }
    .vmcta-btn:active {
        transform: scale(.96);
    }
    .vmcta-btn svg {
        flex-shrink: 0;
        pointer-events: none;
    }

    /* Call — white outline on navy */
    .vmcta-btn--call {
        background: transparent;
        border: 1.5px solid rgba(255, 255, 255, .40);
        color: var(--vm-white);
    }
    .vmcta-btn--call:hover,
    .vmcta-btn--call:focus-visible {
        border-color: var(--vm-white);
        background: rgba(255, 255, 255, .08);
    }

    /* Devis — solid red */
    .vmcta-btn--devis {
        background: var(--vm-red);
        color: var(--vm-white);
        box-shadow: 0 2px 14px var(--vm-red-glow);
    }
    .vmcta-btn--devis:hover,
    .vmcta-btn--devis:focus-visible {
        background: var(--vm-red-hover);
        box-shadow: 0 4px 22px rgba(200, 35, 44, .45);
    }


    /* ════════════════════════════
       OVERLAY
       Uses opacity + pointer-events
       (NO display toggle — transitions work)
       ════════════════════════════ */
    .vmcta-overlay {
        display: block !important;
        position: fixed;
        inset: 0;
        z-index: 999991;
        background: rgba(0, 0, 0, .55);
        -webkit-backdrop-filter: blur(4px);
        backdrop-filter: blur(4px);
        opacity: 0;
        pointer-events: none;
        transition: opacity .3s ease;
    }
    .vmcta-overlay.is-open {
        opacity: 1;
        pointer-events: auto;
    }


    /* ════════════════════════════
       MODAL
       Uses transform + visibility
       (NO display toggle — transitions work)
       ════════════════════════════ */
    .vmcta-modal {
        display: block !important;
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        z-index: 999992;
        max-height: 92vh;
        pointer-events: none;
        visibility: hidden;
        transform: translateY(100%);
        transition: transform .35s cubic-bezier(.32, .72, 0, 1),
                    visibility 0s .35s;
    }
    .vmcta-modal.is-open {
        visibility: visible;
        pointer-events: auto;
        transform: translateY(0);
        transition: transform .35s cubic-bezier(.32, .72, 0, 1),
                    visibility 0s 0s;
    }

    .vmcta-modal-inner {
        background: var(--vm-navy);
        border-radius: 20px 20px 0 0;
        padding: 0 20px 32px;
        max-height: 92vh;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    /* drag handle */
    .vmcta-handle {
        width: 40px;
        height: 4px;
        background: var(--vm-border);
        border-radius: 2px;
        margin: 12px auto 0;
    }

    /* header */
    .vmcta-modal-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 16px 0 4px;
    }
    .vmcta-modal-title {
        display: flex;
        align-items: center;
        gap: 8px;
        font-size: 17px;
        font-weight: 700;
        color: var(--vm-white);
        font-family: var(--vm-ff);
    }
    .vmcta-modal-icon {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 34px;
        height: 34px;
        background: rgba(200, 35, 44, .14);
        border-radius: 8px;
        color: var(--vm-red);
    }
    .vmcta-close {
        background: var(--vm-navy-light);
        border: none;
        color: var(--vm-gray);
        font-size: 24px;
        width: 34px;
        height: 34px;
        border-radius: 50%;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        line-height: 1;
        font-family: var(--vm-ff);
        transition: background .15s, color .15s;
    }
    .vmcta-close:hover {
        background: var(--vm-border);
        color: var(--vm-white);
    }

    .vmcta-subtitle {
        font-size: 13px;
        color: var(--vm-gray);
        margin: 0 0 18px;
        line-height: 1.5;
        font-family: var(--vm-ff);
    }


    /* ════════════════════════════
       FORM
       ════════════════════════════ */
    .vmcta-form {
        display: block;
    }

    .vmcta-field {
        margin-bottom: 14px;
    }
    .vmcta-field label {
        display: block;
        font-size: 12px;
        font-weight: 600;
        color: var(--vm-gray);
        text-transform: uppercase;
        letter-spacing: .06em;
        margin-bottom: 5px;
        font-family: var(--vm-ff);
    }
    .vmcta-req {
        color: var(--vm-red);
    }
    .vmcta-opt {
        font-weight: 400;
        text-transform: none;
        letter-spacing: 0;
        font-size: 11px;
    }

    .vmcta-field input,
    .vmcta-field select,
    .vmcta-field textarea {
        display: block;
        width: 100%;
        background: var(--vm-input);
        border: 1.5px solid var(--vm-border);
        border-radius: 10px;
        color: var(--vm-white);
        font-size: 15px;
        padding: 12px 14px;
        font-family: var(--vm-ff);
        -webkit-appearance: none;
        appearance: none;
        box-sizing: border-box;
        transition: border-color .2s, box-shadow .2s;
    }
    .vmcta-field input::placeholder,
    .vmcta-field textarea::placeholder {
        color: var(--vm-gray-dark);
    }
    .vmcta-field input:focus,
    .vmcta-field select:focus,
    .vmcta-field textarea:focus {
        outline: none;
        border-color: var(--vm-red);
        box-shadow: 0 0 0 3px rgba(200, 35, 44, .18);
    }

    /* select arrow */
    .vmcta-field select {
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238B92A0' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 14px center;
        padding-right: 40px;
    }

    .vmcta-field textarea {
        resize: vertical;
        min-height: 70px;
    }

    /* error highlight */
    .vmcta-field.has-error input,
    .vmcta-field.has-error select,
    .vmcta-field.has-error textarea {
        border-color: var(--vm-err) !important;
        box-shadow: 0 0 0 3px rgba(224, 75, 75, .14) !important;
    }


    /* ── Submit button ── */
    .vmcta-submit-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        height: 50px;
        margin-top: 8px;
        background: var(--vm-red);
        color: var(--vm-white);
        border: none;
        border-radius: 12px;
        font-size: 15px;
        font-weight: 700;
        font-family: var(--vm-ff);
        cursor: pointer;
        box-shadow: 0 2px 16px var(--vm-red-glow);
        -webkit-tap-highlight-color: transparent;
        transition: background .2s, transform .15s, box-shadow .2s;
    }
    .vmcta-submit-btn:hover,
    .vmcta-submit-btn:focus-visible {
        background: var(--vm-red-hover);
        box-shadow: 0 4px 24px rgba(200, 35, 44, .42);
    }
    .vmcta-submit-btn:active {
        transform: scale(.98);
    }
    .vmcta-submit-btn:disabled {
        opacity: .55;
        pointer-events: none;
    }

    /* loading state inside button */
    .vmcta-submit-loading {
        display: none;
        align-items: center;
        gap: 8px;
    }
    .vmcta-submit-btn.is-loading .vmcta-submit-text {
        display: none;
    }
    .vmcta-submit-btn.is-loading .vmcta-submit-loading {
        display: inline-flex;
    }


    /* ════════════════════════════
       RESULT SCREENS  (success / error)
       Hidden by default, shown via .is-visible
       ════════════════════════════ */
    .vmcta-result {
        display: none;
        text-align: center;
        padding: 24px 0 4px;
        font-family: var(--vm-ff);
    }
    .vmcta-result.is-visible {
        display: block;
    }
    .vmcta-result h3 {
        font-size: 18px;
        font-weight: 700;
        color: var(--vm-white);
        margin: 14px 0 6px;
    }
    .vmcta-result p {
        font-size: 14px;
        color: var(--vm-gray);
        margin: 0 0 20px;
        line-height: 1.5;
    }
    .vmcta-result-icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 64px;
        height: 64px;
        border-radius: 50%;
    }
    .vmcta-result--ok .vmcta-result-icon {
        background: rgba(46, 173, 99, .12);
        color: var(--vm-ok);
    }
    .vmcta-result--err .vmcta-result-icon {
        background: rgba(224, 75, 75, .12);
        color: var(--vm-err);
    }

} /* END @media */
