/* ==========================================================================
   TVS Forms — Front-end styles (v2)
   Override the custom properties on `.tvs-sp` or in Elementor Custom CSS
   to match your brand.
   ========================================================================== */

.tvs-sp {
    --tvs-accent: #2e6b34;
    --tvs-accent-hover: #215226;
    --tvs-text: #222;
    --tvs-text-muted: #555;
    --tvs-border: #d0d0d0;
    --tvs-bg-light: #f7f7f7;
    --tvs-radius: 8px;
    --tvs-font: inherit;

    font-family: var(--tvs-font);
    color: var(--tvs-text);
    max-width: 640px;
    margin: 0 auto;
    box-sizing: border-box;
}
.tvs-sp *,
.tvs-sp *::before,
.tvs-sp *::after {
    box-sizing: inherit;
}

/* ── Location page ───────────────────────────────────────────────────── */

.tvs-sp-location-header {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 4px;
}
.tvs-sp-location-name {
    margin: 0;
    font-size: 1.6em;
}
.tvs-sp-change-link {
    font-size: 0.9em;
    color: var(--tvs-accent);
    text-decoration: none;
}
.tvs-sp-change-link:hover {
    text-decoration: underline;
}

/* Contact */
.tvs-sp-contact {
    margin-bottom: 24px;
}
.tvs-sp-phone {
    font-size: 1.1em;
    font-weight: 600;
    color: var(--tvs-accent);
    text-decoration: none;
}
.tvs-sp-phone:hover {
    text-decoration: underline;
}
.tvs-sp-address {
    margin: 4px 0 0;
    color: var(--tvs-text-muted);
}

/* Form section */
.tvs-sp-form-section {
    margin-bottom: 24px;
}
.tvs-sp-form-section h3 {
    margin: 0 0 12px;
    font-size: 1.2em;
}

/* Map */
.tvs-sp-map {
    margin-bottom: 24px;
    border-radius: var(--tvs-radius);
    overflow: hidden;
    border: 1px solid var(--tvs-border);
}
.tvs-sp-iframe {
    display: block;
    width: 100%;
    border: 0;
}
.tvs-sp-iframe--map {
    height: 320px;
}

/* ── Picker / Lead-capture form ──────────────────────────────────────── */

.tvs-sp-picker {
    background: var(--tvs-bg-light);
    border: 1px solid var(--tvs-border);
    border-radius: var(--tvs-radius);
    padding: 32px 28px;
}
.tvs-sp-picker-heading {
    margin: 0 0 20px;
    font-size: 1.3em;
}

.tvs-sp-notice {
    background: #fff3cd;
    border: 1px solid #ffc107;
    border-radius: var(--tvs-radius);
    padding: 10px 14px;
    margin-bottom: 16px;
    font-size: 0.95em;
}

/* Fields */
.tvs-sp-field {
    margin-bottom: 16px;
}
.tvs-sp-field label {
    display: block;
    margin-bottom: 4px;
    font-weight: 600;
    font-size: 0.95em;
}
.tvs-sp-req {
    color: #c0392b;
}
.tvs-sp-field input,
.tvs-sp-field select {
    width: 100%;
    padding: 10px 12px;
    font-size: 1em;
    border: 1px solid var(--tvs-border);
    border-radius: var(--tvs-radius);
    background: #fff;
    font-family: var(--tvs-font);
    transition: border-color 0.15s;
}
.tvs-sp-field input:focus,
.tvs-sp-field select:focus {
    outline: none;
    border-color: var(--tvs-accent);
    box-shadow: 0 0 0 3px rgba(46, 107, 52, 0.12);
}
.tvs-sp-field select:disabled {
    background: #eee;
    color: var(--tvs-text-muted);
    cursor: not-allowed;
}

/* Two-column row */
.tvs-sp-row {
    display: flex;
    gap: 12px;
}
.tvs-sp-field--half {
    flex: 1 1 0;
}

/* ── Location preview card ───────────────────────────────────────────── */

.tvs-sp-preview {
    background: #fff;
    border: 1px solid var(--tvs-accent);
    border-left: 4px solid var(--tvs-accent);
    border-radius: var(--tvs-radius);
    padding: 14px 18px;
    margin-bottom: 20px;
}
.tvs-sp-preview-name {
    margin: 0 0 4px;
    font-weight: 700;
    font-size: 1.05em;
}
.tvs-sp-preview-phone {
    display: block;
    font-weight: 600;
    color: var(--tvs-accent);
    text-decoration: none;
    margin-bottom: 2px;
}
.tvs-sp-preview-phone:hover {
    text-decoration: underline;
}
.tvs-sp-preview-address {
    margin: 0;
    color: var(--tvs-text-muted);
    font-size: 0.95em;
}

/* ── Buttons ─────────────────────────────────────────────────────────── */

.tvs-sp-btn {
    display: inline-block;
    padding: 12px 28px;
    font-size: 1em;
    font-weight: 600;
    color: #fff;
    background: var(--tvs-accent);
    border: none;
    border-radius: var(--tvs-radius);
    cursor: pointer;
    text-align: center;
    text-decoration: none;
    transition: background 0.15s;
    font-family: var(--tvs-font);
}
.tvs-sp-btn:hover,
.tvs-sp-btn:focus-visible {
    background: var(--tvs-accent-hover);
    color: #fff;
    text-decoration: none;
}
.tvs-sp-btn:disabled {
    opacity: 0.65;
    cursor: not-allowed;
}
.tvs-sp-btn--submit {
    width: 100%;
    margin-top: 4px;
    white-space: normal;
    word-wrap: break-word;
    min-height: 48px;
}

/* ── Status messages ─────────────────────────────────────────────────── */

.tvs-sp-status {
    margin-top: 12px;
    font-size: 0.95em;
    min-height: 1.4em;
}
.tvs-sp-status--ok {
    color: #1a7f37;
}
.tvs-sp-status--err {
    color: #c0392b;
}

/* ── Thank-you state ─────────────────────────────────────────────────── */

.tvs-sp-thankyou {
    background: #f0faf1;
    border: 1px solid var(--tvs-accent);
    border-radius: var(--tvs-radius);
    padding: 32px 28px;
    text-align: center;
}
.tvs-sp-thankyou h3 {
    margin: 0 0 12px;
    font-size: 1.4em;
    color: var(--tvs-accent);
}
.tvs-sp-thankyou p {
    margin: 0 0 8px;
}

/* ── Post-submit interstitial ────────────────────────────────────────── */

.tvs-sp-interstitial {
    background: #f0faf1;
    border: 1px solid var(--tvs-accent);
    border-radius: var(--tvs-radius);
    padding: 32px 28px;
    text-align: center;
}
.tvs-sp-interstitial-title {
    margin: 0 0 12px;
    font-size: 1.4em;
    color: var(--tvs-accent);
}
.tvs-sp-interstitial-msg {
    margin: 0 0 16px;
    font-size: 1.05em;
}
.tvs-sp-interstitial-countdown {
    margin: 0 0 20px;
    color: var(--tvs-text-muted);
    font-size: 0.95em;
}
.tvs-sp-countdown-num {
    color: var(--tvs-accent);
    font-size: 1.15em;
    min-width: 1ch;
    display: inline-block;
}
.tvs-sp-interstitial-cta {
    margin: 0;
}
.tvs-sp-btn--continue {
    display: inline-block;
}

/* ── IO (Introductory Offer) CTA box ────────────────────────────────── */

.tvs-sp--io {
    max-width: 540px;
}
.tvs-sp-io-box {
    background: #fff;
    border: none;
    border-radius: 0;
    padding: 32px 28px;
    text-align: center;
}
.tvs-sp-io-headline {
    margin: 0 0 8px;
    font-family: "Yeseva One", sans-serif;
    font-size: 28px;
    font-weight: 700;
    line-height: 28px;
    color: #000;
}
.tvs-sp-io-subhead {
    margin: 0 0 14.4px;
    font-family: Roboto, sans-serif;
    font-size: 16px;
    font-weight: 400;
    line-height: 24px;
    color: var(--tvs-text-muted);
}
.tvs-sp-io-box .tvs-sp-field label {
    text-align: left;
}
.tvs-sp-io-box .tvs-sp-btn--submit {
    margin-top: 8px;
    background: rgb(253, 181, 19);
    color: #000;
}
.tvs-sp-io-box .tvs-sp-btn--submit:hover,
.tvs-sp-io-box .tvs-sp-btn--submit:focus-visible {
    background: rgb(228, 163, 17);
    color: #000;
}

/* ── Empty state ─────────────────────────────────────────────────────── */

.tvs-sp--empty {
    text-align: center;
    padding: 40px 20px;
    color: var(--tvs-text-muted);
}

/* ── Responsive ──────────────────────────────────────────────────────── */

@media (max-width: 480px) {
    .tvs-sp-picker {
        padding: 20px 16px;
    }
    .tvs-sp-row {
        flex-direction: column;
        gap: 0;
    }
    .tvs-sp-location-header {
        flex-direction: column;
        gap: 4px;
    }
    .tvs-sp-io-box {
        padding: 20px 16px;
    }
}
