.cws-newsletter.modern {
    --cws-nl-gap: 14px;
    --cws-nl-field-bg: #ffffff;
    --cws-nl-field-border: #e7e3d8;
    --cws-nl-field-border-focus: #3f7d4f;
    --cws-nl-field-text: #16160f;
    --cws-nl-btn-bg: #16160f;
    --cws-nl-btn-bg-hover: #3f7d4f;
    --cws-nl-btn-text: #ffffff;
    --cws-nl-btn-text-hover: #ffffff;
    --cws-nl-radius: 10px;

    display: block;
    width: 100%;
    box-sizing: border-box;
}

.cws-newsletter__form {
    display: flex;
    flex-direction: column;
    gap: var(--cws-nl-gap);
    margin: 0;
}

.cws-newsletter__row {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: stretch;
}

.cws-newsletter__email {
    flex: 1 1 220px;
    min-width: 0;
    background: var(--cws-nl-field-bg);
    border: 1px solid var(--cws-nl-field-border);
    color: var(--cws-nl-field-text);
    border-radius: var(--cws-nl-radius);
    padding: 12px 16px;
    font: inherit;
    line-height: 1.4;
    transition: border-color .15s ease;
}

.cws-newsletter__email:focus {
    outline: none;
    border-color: var(--cws-nl-field-border-focus);
}

.cws-newsletter__submit {
    background: var(--cws-nl-btn-bg);
    color: var(--cws-nl-btn-text);
    border: 0;
    border-radius: var(--cws-nl-radius);
    padding: 12px 24px;
    font: inherit;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: background-color .15s ease, color .15s ease, opacity .15s ease;
    white-space: nowrap;
}

.cws-newsletter__submit:hover,
.cws-newsletter__submit:focus-visible {
    background: var(--cws-nl-btn-bg-hover);
    color: var(--cws-nl-btn-text-hover);
}

.cws-newsletter__consent {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    cursor: pointer;
    font-size: 13px;
    line-height: 1.5;
}

.cws-newsletter__consent input[type="checkbox"] {
    margin-top: 3px;
    flex-shrink: 0;
}

.cws-newsletter__consent-text a {
    text-decoration: underline;
}

.cws-newsletter__hp {
    position: absolute !important;
    left: -10000px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.cws-newsletter__message {
    font-size: 14px;
    line-height: 1.5;
    min-height: 0;
}

.cws-newsletter__message:empty {
    display: none;
}

.cws-newsletter__message.is-success {
    color: #1b6e3a;
}

.cws-newsletter__message.is-error {
    color: #b00020;
}

.cws-newsletter .spinner {
    display: none;
    width: 14px;
    height: 14px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-radius: 50%;
    animation: cws-nl-spin .8s linear infinite;
}

.cws-newsletter.is-loading .cws-newsletter__submit {
    opacity: .7;
    pointer-events: none;
}

.cws-newsletter.is-loading .spinner {
    display: inline-block;
}

@keyframes cws-nl-spin {
    to { transform: rotate(360deg); }
}

/* ============================================================
 * Specificity armour — Elementor kit button styling
 * ============================================================
 *
 * The kit's global rule — `.elementor-kit-N button { background-color: …;
 * color: … }` — is one class plus one element, specificity (0,1,1), and beats
 * every single-class rule above (0,1,0). The submit control is a real
 * <button type="submit">, so the kit hits it twice over.
 *
 * The fix is specificity, not `!important`: re-asserting under the
 * `.cws-newsletter` root gives (0,2,0), which wins cleanly.
 *
 * No Style-control bump was needed here: this widget's colour controls write
 * `--cws-nl-btn-*` custom properties on `{{WRAPPER}} .cws-newsletter` rather
 * than setting background/colour directly, so re-asserting through the same
 * variables keeps the Style tab authoritative. Do not replace these vars with
 * literal values — that is exactly what would break it.
 */

.cws-newsletter .cws-newsletter__submit {
    background: var(--cws-nl-btn-bg);
    color: var(--cws-nl-btn-text);
}

.cws-newsletter .cws-newsletter__submit:hover,
.cws-newsletter .cws-newsletter__submit:focus-visible {
    background: var(--cws-nl-btn-bg-hover);
    color: var(--cws-nl-btn-text-hover);
}
