/* ── CF7 Registration Form - Divi Customisation ──────────────
   Drop [event_register_form] in a Divi Code module.
   Edit the variables below to match your design.
   ─────────────────────────────────────────────────────────── */

@font-face {
    font-family: 'Quicksand';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/quicksand-v37-latin-regular.woff2') format('woff2');
}
@font-face {
    font-family: 'Quicksand';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('../fonts/quicksand-v37-latin-500.woff2') format('woff2');
}
@font-face {
    font-family: 'Quicksand';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/quicksand-v37-latin-600.woff2') format('woff2');
}
@font-face {
    font-family: 'Quicksand';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/quicksand-v37-latin-700.woff2') format('woff2');
}

:root {
    /* ── Typography ───────────────────────────────────────── */
    --events-font-family: 'Quicksand', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

    /* ── Colours ──────────────────────────────────────────── */
    --events-form-bg: #ffffff;
    --events-form-border-color: #dce3ea;
    --events-form-text-color: #1B3A6B;
    --events-label-color: #1B3A6B;
    --events-input-bg: #f0f5f7;
    --events-input-border-color: #dce3ea;
    --events-input-focus-border: #62c3c6;
    --events-input-text-color: #1B3A6B;
    --events-input-placeholder-color: #9eaab8;
    --events-button-bg: #62c3c6;
    --events-button-hover-bg: #4fb3b6;
    --events-button-text-color: #ffffff;
    --events-heading-color: #1B3A6B;
    --events-divider-color: #e3e8ed;
    --events-gdpr-color: #8a96a5;
    --events-error-color: #d63638;
    --events-success-bg: #edf7ed;
    --events-success-color: #1e7e34;

    /* ── Sizing ───────────────────────────────────────────── */
    --events-form-padding: 40px 44px;
    --events-form-border-radius: 16px;
    --events-input-border-radius: 8px;
    --events-input-padding: 14px 18px;
    --events-input-font-size: 15px;
    --events-button-border-radius: 8px;
    --events-button-padding: 14px 36px;
    --events-button-font-size: 13px;
    --events-field-spacing: 22px;
    --events-row-gap: 24px;
}

/* ── Form wrapper (outer container) ─────────────────────── */
.events-reg-wrap {
    font-family: var(--events-font-family);
    max-width: 960px;
    margin: 0 auto;
    color: var(--events-form-text-color);
}

/* ── Header section above the card ──────────────────────── */
.events-reg-wrap__header {
    margin-bottom: 28px;
}

.events-reg-wrap__title {
    margin: 0 0 8px;
    font-size: 28px;
    font-weight: 700;
    color: var(--events-heading-color);
    line-height: 1.3;
}

.events-reg-wrap__subtitle {
    margin: 0;
    font-size: 14px;
    font-weight: 500;
    color: #5b6b80;
}

.events-reg-wrap__subtitle span {
    margin: 0 6px;
    opacity: 0.5;
}

/* ── Form container (the card) ──────────────────────────── */
.wpcf7 {
    font-family: var(--events-font-family);
    background: transparent;
    border: none;
    border-radius: 0;
    padding: 0;
    color: var(--events-form-text-color);
}

/* ── Section cards ───────────────────────────────────────── */
.events-form__section {
    background: var(--events-form-bg);
    border: 1px solid var(--events-form-border-color);
    border-radius: var(--events-form-border-radius);
    padding: var(--events-form-padding);
    box-shadow: 0 1px 4px rgba(20, 40, 80, 0.04);
    margin-bottom: 20px;
}

/* ── Section heading ─────────────────────────────────────── */
.events-form__heading {
    margin: 0 0 4px;
    font-size: 20px;
    font-weight: 700;
    color: var(--events-heading-color);
}

.events-form__divider {
    border: none;
    border-top: 1px solid var(--events-divider-color);
    margin: 16px 0 var(--events-field-spacing);
}

/* ── Section divider for optional block ──────────────────── */
.events-form__section-optional .events-form__heading {
    font-size: 18px;
}

.events-form__optional-note {
    font-size: 13px;
    font-weight: 500;
    color: var(--events-gdpr-color);
    margin: 0 0 18px;
    font-style: italic;
}

/* ── Two-column grid rows ────────────────────────────────── */
.events-form__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--events-row-gap);
    margin-bottom: var(--events-field-spacing);
}

.events-form__row--full {
    grid-template-columns: 1fr;
}

.events-form__col {
    min-width: 0;
}

/* ── Labels ──────────────────────────────────────────────── */
.wpcf7 label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    color: var(--events-label-color);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 0;
}

/* ── Text inputs, email, tel, number ─────────────────────── */
.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="number"],
.wpcf7 input[type="url"],
.wpcf7 textarea {
    width: 100%;
    padding: var(--events-input-padding);
    font-family: inherit;
    font-size: var(--events-input-font-size);
    font-weight: 500;
    color: var(--events-input-text-color);
    background: var(--events-input-bg);
    border: 1px solid var(--events-input-border-color);
    border-radius: var(--events-input-border-radius);
    margin-top: 8px;
    box-sizing: border-box;
    transition: border-color 0.25s ease, background 0.25s ease, box-shadow 0.25s ease;
}

.wpcf7 input[type="text"]:hover:not(:focus),
.wpcf7 input[type="email"]:hover:not(:focus),
.wpcf7 input[type="tel"]:hover:not(:focus),
.wpcf7 input[type="number"]:hover:not(:focus),
.wpcf7 input[type="url"]:hover:not(:focus),
.wpcf7 textarea:hover:not(:focus) {
    border-color: #c9d4e0;
    background: #e8eff2;
}

.wpcf7 input[type="text"]:focus,
.wpcf7 input[type="email"]:focus,
.wpcf7 input[type="tel"]:focus,
.wpcf7 input[type="number"]:focus,
.wpcf7 input[type="url"]:focus,
.wpcf7 textarea:focus {
    border-color: var(--events-input-focus-border);
    outline: none;
    background: #fff;
    box-shadow: 0 0 0 3px rgba(98, 195, 198, 0.12), 0 8px 24px -8px rgba(20, 40, 80, 0.12);
}

.wpcf7 input::placeholder,
.wpcf7 textarea::placeholder {
    color: var(--events-input-placeholder-color);
    font-weight: 400;
}

/* ── Select dropdowns ────────────────────────────────────── */
.wpcf7 select {
    width: 100%;
    padding: var(--events-input-padding);
    font-family: inherit;
    font-size: var(--events-input-font-size);
    font-weight: 500;
    color: var(--events-input-text-color);
    background: var(--events-input-bg);
    border: 1px solid var(--events-input-border-color);
    border-radius: var(--events-input-border-radius);
    margin-top: 8px;
    box-sizing: border-box;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%239aa5b4' d='M1.41 0L6 4.58 10.59 0 12 1.41l-6 6-6-6z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
    transition: border-color 0.25s ease, background 0.25s ease, box-shadow 0.25s ease;
}

.wpcf7 select:hover:not(:focus) {
    border-color: #c9d4e0;
    background-color: #e8eff2;
}

.wpcf7 select:focus {
    border-color: var(--events-input-focus-border);
    outline: none;
    background-color: #fff;
    box-shadow: 0 0 0 3px rgba(98, 195, 198, 0.12), 0 8px 24px -8px rgba(20, 40, 80, 0.12);
}

/* Style the first option as placeholder */
.wpcf7 select option:first-child {
    color: var(--events-input-placeholder-color);
}

/* ── Days attending checkboxes ───────────────────────────── */
.events-form__label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    color: var(--events-label-color);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
}

.events-form__checkboxes {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.events-form__checkbox {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    color: var(--events-input-text-color);
    cursor: pointer;
    padding: 12px 24px;
    background: #fff;
    border: 1px solid var(--events-input-border-color);
    border-radius: 8px;
    transition: all 0.2s ease;
    font-weight: 600;
    line-height: 1.4;
    user-select: none;
}

.events-form__checkbox:hover {
    border-color: var(--events-button-bg);
    transform: translateY(-1px);
    box-shadow: 0 4px 10px rgba(20, 40, 80, 0.06);
}

.events-form__checkbox:active {
    transform: translateY(0);
}

.events-form__checkbox:has(input:checked) {
    background: var(--events-button-bg);
    border-color: var(--events-button-bg);
    color: #fff;
    box-shadow: 0 4px 12px rgba(98, 195, 198, 0.2);
}

.events-form__checkbox input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    margin: 0;
}

.events-form__day-date {
    color: var(--events-input-placeholder-color);
    font-size: 13px;
    font-weight: 500;
}

.events-form__checkbox:has(input:checked) .events-form__day-date {
    color: rgba(255, 255, 255, 0.85);
}

/* ── Textarea ────────────────────────────────────────────── */
.wpcf7 textarea {
    min-height: 120px;
    resize: vertical;
}

/* ── Consents & Radios ───────────────────────────────────── */
.events-form__consent-block {
    display: block;
    margin-bottom: 24px;
}

.events-form__consent-block br {
    display: none;
}

.events-form__consent-block p:not(.events-form__consent-text) {
    margin: 0 !important;
    padding: 0 !important;
}

.events-form__consent-text {
    font-size: 14px;
    line-height: 1.5;
    color: var(--events-label-color);
    margin: 0 0 4px;
    font-weight: 500;
}

.wpcf7-radio .wpcf7-list-item {
    display: inline-flex;
    align-items: center;
    margin: 0 20px 0 0;
}

.wpcf7-radio .wpcf7-list-item-label {
    font-size: 14px;
    font-weight: 500;
    color: var(--events-input-text-color);
}

.wpcf7-radio input[type="radio"] {
    margin: 0 8px 0 0;
    accent-color: var(--events-button-bg);
}

.events-form__gdpr-notice {
    font-size: 12px;
    line-height: 1.6;
    color: var(--events-gdpr-color);
    margin: 0;
}

.events-form__gdpr-body {
    font-size: 13px;
    color: var(--events-gdpr-color);
}

.events-form__honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* ── Footer (GDPR + button) ──────────────────────────────── */
.events-form__footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 24px;
}

.events-form__gdpr {
    margin: 0;
    font-size: 13px;
    color: var(--events-gdpr-color);
    flex: 1;
    line-height: 1.5;
}

/* ── Submit button ───────────────────────────────────────── */
.wpcf7 input[type="submit"] {
    font-family: inherit;
    background: var(--events-button-bg);
    color: var(--events-button-text-color);
    border: none;
    border-radius: var(--events-button-border-radius);
    padding: var(--events-button-padding);
    font-size: var(--events-button-font-size);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    cursor: pointer;
    transition: background 0.25s ease, transform 0.15s ease, box-shadow 0.25s ease;
    white-space: nowrap;
}

.wpcf7 input[type="submit"]:hover:not(:disabled) {
    background: var(--events-button-hover-bg);
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(98, 195, 198, 0.35);
}

.wpcf7 input[type="submit"]:active:not(:disabled) {
    transform: translateY(0);
    box-shadow: none;
}

/* ── Submit button loading state (spinner overlay) ──────────── */
.events-submit-wrap {
    position: relative;
    display: inline-flex;
}

.events-submit-wrap.is-loading input[type="submit"] {
    color: transparent;
    cursor: wait;
    opacity: 1;
}

.events-submit-wrap.is-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 18px;
    height: 18px;
    margin: -9px 0 0 -9px;
    border: 2px solid rgba(255, 255, 255, 0.35);
    border-top-color: #fff;
    border-radius: 50%;
    animation: events-spinner-rotate 0.7s linear infinite;
    pointer-events: none;
}

@keyframes events-spinner-rotate {
    to {
        transform: rotate(360deg);
    }
}

/* ── Validation errors ───────────────────────────────────── */
.wpcf7-not-valid-tip {
    color: var(--events-error-color);
    font-size: 12px;
    margin-top: 4px;
    font-weight: 500;
}

.wpcf7-not-valid {
    border-color: var(--events-error-color) !important;
}

/* ── Instant validation hints (pre-submit) ──────────────────── */
.wpcf7 input.events-is-valid,
.wpcf7 textarea.events-is-valid {
    border-color: var(--events-success-color);
    background-color: #fff;
}

.wpcf7 input.events-is-invalid,
.wpcf7 textarea.events-is-invalid {
    border-color: var(--events-error-color);
    background-color: #fff;
}

/* ── Success / response message ──────────────────────────── */
.wpcf7 .wpcf7-response-output {
    border-radius: var(--events-input-border-radius);
    padding: 14px 18px;
    font-size: 14px;
    margin-top: 20px;
    font-weight: 500;
}

/* When the error banner is moved to the top of the form, flip the margins. */
.wpcf7 form > .wpcf7-response-output:first-child {
    margin-top: 0;
    margin-bottom: 20px;
}

.wpcf7 form.sent .wpcf7-response-output {
    background: var(--events-success-bg);
    color: var(--events-success-color);
    border-color: var(--events-success-color);
}

/* ── CF7 spinner ─────────────────────────────────────────── */
.wpcf7-spinner {
    display: none;
}

/* ── Submit button disabled state ───────────────────────────── */
.wpcf7 input[type="submit"]:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* ── Shake animation for invalid fields ─────────────────────── */
@keyframes events-shake {

    0%,
    100% {
        transform: translateX(0);
    }

    20% {
        transform: translateX(-6px);
    }

    40% {
        transform: translateX(6px);
    }

    60% {
        transform: translateX(-4px);
    }

    80% {
        transform: translateX(4px);
    }
}

.events-field-shake {
    animation: events-shake 0.4s ease-in-out;
}

/* ── Error response message ─────────────────────────────────── */
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output {
    background: #fef2f2;
    color: var(--events-error-color);
    border-color: var(--events-error-color);
}

/* ── Trust badges strip ─────────────────────────────────────── */
.events-reg-badges {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 32px;
    flex-wrap: wrap;
    margin-top: 32px;
    padding-top: 24px;
    border-top: 1px solid var(--events-divider-color);
}

.events-reg-badges__item {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 500;
    color: #5b6b80;
}

.events-reg-badges__icon {
    width: 18px;
    height: 18px;
    color: var(--events-button-bg);
    flex-shrink: 0;
}

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 768px) {
    .events-form__section {
        padding: 24px 20px;
    }

    .events-form__row {
        grid-template-columns: 1fr;
    }

    .events-form__footer {
        flex-direction: column;
        align-items: stretch;
        text-align: center;
    }

    .wpcf7 input[type="submit"] {
        width: 100%;
    }

    .events-submit-wrap {
        width: 100%;
    }

    .events-reg-wrap__title {
        font-size: 22px;
    }

    .events-reg-badges {
        gap: 16px;
    }

    .events-reg-badges__item {
        font-size: 12px;
    }
}

/* ── Waitlist form (rendered when registration is closed/full) ─ */
.events-waitlist-form {
    width: 100%;
    text-align: center;
}

.events-waitlist-form__intro {
    margin-bottom: 18px;
    color: var(--events-label-color);
}

.events-waitlist-form__row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 16px;
    margin-bottom: 14px;
}

.events-waitlist-form__field {
    flex: 1 1 220px;
    margin-bottom: 0;
}

.events-waitlist-form__field--name {
    flex: 0 1 25%;
}

.events-waitlist-form__field--email {
    flex: 0 1 30%;
}

.events-waitlist-form__input {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--events-input-border);
    border-radius: 6px;
    font-size: 15px;
    box-sizing: border-box;
    transition: border-color 0.25s ease, box-shadow 0.25s ease;
}

.events-waitlist-form__input:focus {
    border-color: var(--events-input-focus-border);
    outline: none;
    box-shadow: 0 0 0 3px rgba(98, 195, 198, 0.12);
}

.events-waitlist-form__submit {
    margin-top: 6px;
    padding: 12px 22px;
    border: 0;
    border-radius: 6px;
    background: var(--events-input-focus-border, #62c3c6);
    color: #fff;
    font-weight: 600;
    cursor: pointer;
    transition: opacity 0.2s ease;
}

.events-waitlist-form__submit:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.events-waitlist-form__feedback {
    margin-top: 14px;
    font-size: 14px;
}

.events-waitlist-form__feedback--success {
    color: #1f7a3a;
}

.events-waitlist-form__feedback--error {
    color: #b3261e;
}