/* ============================================================
   SchoolDXP Form Frontend Styles
   Applied to [schooldxp_form] shortcode output.
   Scoped under .schooldxp-form-wrap to avoid conflicts.

   The --schooldxp-form-* custom properties below are written out per-site
   by SchoolDXP_Forms_Builder::get_theme_style_css() from the active theme's
   colours/fonts (see that method for the detection rationale — it mirrors
   SchoolDXP_Popups::get_theme_style_css()). Fields left blank there just
   fall through to the fallback values used in var() below.
   ============================================================ */

.schooldxp-form-wrap {
    max-width: 640px;
    font-family: var(--schooldxp-form-font, inherit);
}

.schooldxp-form-wrap .schooldxp-native-form {
    margin: 0;
}

/* ── Fields ──────────────────────────────────────────────── */
.schooldxp-form-field {
    margin-bottom: 20px;
}

.schooldxp-form-field label {
    display: block;
    font-weight: 600;
    margin-bottom: 6px;
    font-size: 15px;
}

.schooldxp-form-field input[type="text"],
.schooldxp-form-field input[type="email"],
.schooldxp-form-field input[type="tel"],
.schooldxp-form-field textarea,
.schooldxp-form-field select {
    display: block;
    width: 100%;
    padding: 10px 13px;
    border: 1px solid #d1d5db;
    border-radius: 5px;
    font-size: 15px;
    font-family: inherit;
    line-height: 1.5;
    box-sizing: border-box;
    background: #fff;
    color: #111;
    transition: border-color .15s, box-shadow .15s;
}

.schooldxp-form-field input:focus,
.schooldxp-form-field textarea:focus,
.schooldxp-form-field select:focus {
    border-color: var(--schooldxp-form-accent, #2563eb);
    outline: none;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--schooldxp-form-accent, #2563eb) 12%, transparent);
}

.schooldxp-form-field textarea {
    resize: vertical;
    min-height: 100px;
}

/* ── Radio & Checkbox groups ─────────────────────────────── */
.sdxp-radio-group,
.sdxp-checkbox-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.sdxp-option-label {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: normal !important;
    cursor: pointer;
    font-size: 15px;
}

.sdxp-option-label input[type="radio"],
.sdxp-option-label input[type="checkbox"] {
    width: auto;
    margin: 0;
    flex-shrink: 0;
}

/* ── Required asterisk ───────────────────────────────────── */
.sdxp-required {
    color: #dc2626;
    margin-left: 2px;
}

/* ── Help text ───────────────────────────────────────────── */
.sdxp-help-text {
    font-size: 13px;
    color: #6b7280;
    margin: 5px 0 0;
}

/* ── Submit button ───────────────────────────────────────── */
.sdxp-submit-btn {
    display: inline-block;
    background: var(--schooldxp-form-accent, #2563eb);
    color: var(--schooldxp-form-accent-text, #fff);
    border: none;
    border-radius: 5px;
    padding: 11px 32px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: filter .15s;
}

.sdxp-submit-btn:hover  { filter: brightness(90%); }
.sdxp-submit-btn:active { filter: brightness(80%); }
.sdxp-submit-btn:disabled { opacity: .65; cursor: not-allowed; }

/* ── Error message ───────────────────────────────────────── */
.schooldxp-form-error {
    color: #dc2626;
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 5px;
    padding: 10px 14px;
    margin-bottom: 16px;
    font-size: 14px;
}

/* ── Success message ─────────────────────────────────────── */
.schooldxp-form-success {
    padding: 16px 20px;
    background: #f0fdf4;
    border: 1px solid #86efac;
    border-radius: 5px;
    color: #166534;
    font-weight: 500;
    font-size: 15px;
}

.schooldxp-form-success p { margin: 0; }

/* ── File upload field ───────────────────────────────────── */
.schooldxp-form-field input[type="file"].sdxp-file-input {
    display: block;
    width: 100%;
    box-sizing: border-box;
    padding: 10px;
    border: 1px dashed #c3c4c7;
    border-radius: 6px;
    background: #fafafa;
    font-family: inherit;
    font-size: 14px;
    cursor: pointer;
}

.schooldxp-form-field input[type="file"].sdxp-file-input:focus-visible {
    outline: 2px solid var(--schooldxp-form-accent, #2563eb);
    outline-offset: 1px;
}

/* ── Conditional logic ───────────────────────────────────── */
/* forms-logic.js toggles `hidden`; themes sometimes set display on divs. */
.schooldxp-form-field[hidden] {
    display: none !important;
}

.schooldxp-form-field.sdxp-logic-enter {
    animation: sdxp-logic-in .16s ease-out;
}

.schooldxp-form-field.sdxp-logic-leave {
    animation: sdxp-logic-out .16s ease-in forwards;
    pointer-events: none;
}

@keyframes sdxp-logic-in {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: none; }
}

@keyframes sdxp-logic-out {
    from { opacity: 1; }
    to   { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
    .schooldxp-form-field.sdxp-logic-enter,
    .schooldxp-form-field.sdxp-logic-leave {
        animation: none;
    }
}

/* ── Field-level validation ──────────────────────────────── */
.sdxp-field-error {
    color: #b91c1c;
    font-size: 13px;
    font-weight: 500;
    margin: 6px 0 0;
}

.schooldxp-form-field.has-error > label {
    color: #b91c1c;
}

.schooldxp-form-field.has-error input:not([type="radio"]):not([type="checkbox"]),
.schooldxp-form-field.has-error select,
.schooldxp-form-field.has-error textarea {
    border-color: #dc2626;
}

.schooldxp-form-field.has-error .sdxp-radio-group,
.schooldxp-form-field.has-error .sdxp-checkbox-group {
    padding-left: 10px;
    border-left: 3px solid #dc2626;
}
