/* ==========================================================================
   WPForms — CCS Detroit Theme Overrides
   Matches .ccs-input / .ccs-select / .ccs-btn patterns from block-base.css

   WPForms runs in MODERN MARKUP mode (.wpforms-render-modern). Modern markup
   is driven by --wpforms-* CSS variables (defaults live on :root) and ships
   high-specificity `div.wpforms-container-full` rules. The classic-markup
   class overrides further down this file lose that specificity battle, so the
   branding below is applied by REMAPPING the variables on .wpforms-container-full
   (a descendant of :root, so it wins for the whole form subtree). The classic
   rules are kept as a fallback in case a form is switched to classic markup.
   --------------------------------------------------------------------------- */

/* ---------------------------------------------------------------------------
   Modern Markup — CCS variable remap (colors, radius, borders, button)
   Sizes (heights/padding/font-size) are intentionally left to WPForms' per-form
   block settings, which set --wpforms-*-size-* vars at higher (ID) specificity.
   --------------------------------------------------------------------------- */

.wpforms-container.wpforms-container-full {
    /* Fields */
    --wpforms-field-background-color: var(--ccs-color-gray-light, #efefef);
    --wpforms-field-text-color: var(--ccs-color-black, #000);
    --wpforms-field-border-color: transparent;
    --wpforms-field-border-size: 2px;
    --wpforms-field-border-style: solid;
    --wpforms-field-border-radius: var(--ccs-radius-md, 8px);
    --wpforms-field-menu-color: var(--ccs-color-white, #fff);

    /* Labels */
    --wpforms-label-color: var(--ccs-color-black, #000);
    --wpforms-label-sublabel-color: var(--ccs-color-text-muted, #666);
    --wpforms-label-error-color: var(--ccs-color-coral, #FF898B);

    /* Submit / page buttons — primary yellow pill */
    --wpforms-button-background-color: var(--ccs-color-primary, #FFDF1C);
    --wpforms-button-text-color: var(--ccs-color-black, #000);
    --wpforms-button-border-color: var(--ccs-color-primary, #FFDF1C);
    --wpforms-button-border-size: 1px;
    --wpforms-button-border-style: solid;
    --wpforms-button-border-radius: var(--ccs-radius-pill, 100px);

    /* Multi-page progress */
    --wpforms-page-break-color: var(--ccs-color-primary, #FFDF1C);
}

/* Modern markup: roomier vertical rhythm between fields.
   Modern's default is padding:15px 0 (~30px between). Bump to ~40px so labels
   and inputs breathe. Beats the plugin's `.wpforms-container .wpforms-field`
   (0,2,0) via the `div.` element + `-full` class. */
div.wpforms-container-full .wpforms-field {
    padding-top: 0;
    padding-bottom: 2rem;
}

/* Modern markup rows (First/Last name, address, etc.): DO NOT set `gap` here.
   The row already has a 20px gutter — WPForms pads each .wpforms-field-row-block
   by 10px and zeroes the outer edges. And the row carries `::before`/`::after`
   clearfix pseudo-elements which become flex items, so a `gap` is charged three
   times over (before | first | last | after) instead of once. That 48px of
   phantom gutter overflowed the 100% of width the two halves already occupy,
   wrapping "Last" onto its own line and shunting "First" to the end of line one
   via the row's justify-content: space-between. */

/* Modern markup: focus ring on fields (variables don't cover focus state) */
.wpforms-container-full .wpforms-field input:focus,
.wpforms-container-full .wpforms-field textarea:focus,
.wpforms-container-full .wpforms-field select:focus {
    border-color: var(--ccs-color-primary, #FFDF1C);
    background-color: var(--ccs-color-white, #fff);
    box-shadow: 0 0 0 4px rgba(255, 223, 28, 0.15);
    outline: none;
}

/* Modern markup: submit / page buttons match .ccs-btn--primary.
   Type and box are set as properties rather than via the --wpforms-button-size-*
   variables: WPForms re-declares those per form at ID specificity
   (#wpforms-{id}.wpforms-block-{uuid}), which a class selector can't beat.
   Colors and radius still come from the variable remap above. */
div.wpforms-container-full button[type="submit"],
div.wpforms-container-full input[type="submit"],
div.wpforms-container-full .wpforms-page-button {
    height: auto;
    padding: 0.75rem 1.5rem;
    font-family: var(--ccs-font-body, 'interstate', sans-serif);
    font-size: 0.9375rem;
    font-weight: 500;
    line-height: 1.5;
    position: relative;
    overflow: hidden;
    transition: color 0.3s cubic-bezier(0.7, 0, 0.2, 1),
                border-color 0.3s cubic-bezier(0.7, 0, 0.2, 1);
    z-index: 0;
}

/* WPForms draws its focus ring as a `:focus::after` outside the button box —
   `overflow: hidden` (needed for the slide fill) clips it away, and WPForms
   also sets `outline: none`, so without this the button has no visible focus
   indicator at all. Same dashed ring as .ccs-btn. */
div.wpforms-container-full button[type="submit"]:focus-visible,
div.wpforms-container-full input[type="submit"]:focus-visible,
div.wpforms-container-full .wpforms-page-button:focus-visible {
    outline: 2px dashed #999;
    outline-offset: 2px;
}

div.wpforms-container-full button[type="submit"]::before,
div.wpforms-container-full input[type="submit"]::before,
div.wpforms-container-full .wpforms-page-button::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--ccs-color-white, #fff);
    transform: translate3d(0, 100%, 0);
    transition: transform 0.3s cubic-bezier(0.7, 0, 0.2, 1);
    z-index: -1;
}

div.wpforms-container-full button[type="submit"]:hover::before,
div.wpforms-container-full input[type="submit"]:hover::before,
div.wpforms-container-full .wpforms-page-button:hover::before {
    transform: translate3d(0, 0, 0);
}

/* ==========================================================================
   Classic Markup fallback (.wpforms-container, no -full / -modern)
   ========================================================================== */

/* ---------------------------------------------------------------------------
   Layout & Spacing
   --------------------------------------------------------------------------- */

.wpforms-container .wpforms-form {
    font-family: var(--ccs-font-body);
}

/* Structural rules below are scoped to NON-modern (classic) forms only.
   Modern markup owns its own field spacing (padding:15px 0) and row layout
   (flex + space-between + 50/50 blocks + container queries); overriding those
   here breaks the name first/last columns and field rhythm. */
.wpforms-container:not(.wpforms-container-full) .wpforms-field {
    padding: 0;
    margin-bottom: 1.25rem;
}

/* Field rows in multi-column layouts (classic only) */
.wpforms-container:not(.wpforms-container-full) .wpforms-field-row {
    display: flex;
    gap: 1rem;
}

.wpforms-container:not(.wpforms-container-full) .wpforms-field-row .wpforms-field-row-block {
    flex: 1;
}

/* ---------------------------------------------------------------------------
   Labels
   --------------------------------------------------------------------------- */

.wpforms-container .wpforms-field-label {
    font-family: var(--ccs-font-heading);
    font-size: var(--ccs-text-sm);
    font-weight: 600;
    color: var(--ccs-color-black);
    margin-bottom: 0.375rem;
}

.wpforms-container .wpforms-field-sublabel {
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-xs);
    color: var(--ccs-color-text-muted, #666);
    margin-top: 0.25rem;
}

/* Required asterisk */
.wpforms-container .wpforms-required-label {
    color: var(--ccs-color-coral, #FF898B);
    font-weight: 600;
}

/* ---------------------------------------------------------------------------
   Text Inputs, Email, URL, Number, Phone, Date
   --------------------------------------------------------------------------- */

.wpforms-container input[type="text"],
.wpforms-container input[type="email"],
.wpforms-container input[type="url"],
.wpforms-container input[type="number"],
.wpforms-container input[type="tel"],
.wpforms-container input[type="date"],
.wpforms-container input[type="password"] {
    width: 100%;
    height: 40px;
    line-height: 28px;
    padding: 0 1rem;
    border: 2px solid transparent;
    border-radius: var(--ccs-radius-md);
    outline: none;
    background-color: var(--ccs-color-gray-light, #efefef);
    color: var(--ccs-color-black, #000);
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-sm);
    transition: 0.3s ease;
    box-shadow: none;
    -webkit-appearance: none;
}

.wpforms-container input::placeholder {
    color: #9e9ea7;
}

.wpforms-container input[type="text"]:hover,
.wpforms-container input[type="email"]:hover,
.wpforms-container input[type="url"]:hover,
.wpforms-container input[type="number"]:hover,
.wpforms-container input[type="tel"]:hover,
.wpforms-container input[type="date"]:hover,
.wpforms-container input[type="password"]:hover {
    border-color: rgba(0, 0, 0, 0.15);
}

.wpforms-container input[type="text"]:focus,
.wpforms-container input[type="email"]:focus,
.wpforms-container input[type="url"]:focus,
.wpforms-container input[type="number"]:focus,
.wpforms-container input[type="tel"]:focus,
.wpforms-container input[type="date"]:focus,
.wpforms-container input[type="password"]:focus {
    border-color: var(--ccs-color-primary, #FFDF1C);
    background-color: var(--ccs-color-white, #fff);
    box-shadow: 0 0 0 4px rgba(255, 223, 28, 0.15);
}

/* ---------------------------------------------------------------------------
   Textarea
   --------------------------------------------------------------------------- */

.wpforms-container textarea,
.wpforms-container textarea.wpforms-field-medium,
.wpforms-container textarea.wpforms-field-large {
    width: 100%;
    min-height: 8rem;
    line-height: 1.5;
    padding: 0.75rem 1rem;
    border: 2px solid transparent;
    border-radius: var(--ccs-radius-md);
    outline: none;
    background-color: var(--ccs-color-gray-light, #efefef);
    color: var(--ccs-color-black, #000);
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-sm);
    transition: 0.3s ease;
    box-shadow: none;
    resize: vertical;
    -webkit-appearance: none;
}

.wpforms-container textarea::placeholder {
    color: #9e9ea7;
}

.wpforms-container textarea:hover {
    border-color: rgba(0, 0, 0, 0.15);
}

.wpforms-container textarea:focus {
    border-color: var(--ccs-color-primary, #FFDF1C);
    background-color: var(--ccs-color-white, #fff);
    box-shadow: 0 0 0 4px rgba(255, 223, 28, 0.15);
}

/* ---------------------------------------------------------------------------
   Select / Dropdown
   --------------------------------------------------------------------------- */

.wpforms-container select,
.wpforms-container .wpforms-field-select select {
    width: 100%;
    height: 40px;
    line-height: 28px;
    padding: 0 2.5rem 0 1rem;
    border: 2px solid transparent;
    border-radius: var(--ccs-radius-md);
    outline: none;
    background-color: var(--ccs-color-gray-light, #efefef);
    color: var(--ccs-color-black, #000);
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-sm);
    transition: 0.3s ease;
    appearance: none;
    cursor: pointer;
    box-shadow: none;
    background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%239e9ea7' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
}

.wpforms-container select:hover {
    border-color: rgba(0, 0, 0, 0.15);
}

.wpforms-container select:focus {
    border-color: var(--ccs-color-primary, #FFDF1C);
    background-color: var(--ccs-color-white, #fff);
    box-shadow: 0 0 0 4px rgba(255, 223, 28, 0.15);
}

/* ---------------------------------------------------------------------------
   Radio & Checkbox
   --------------------------------------------------------------------------- */

.wpforms-container .wpforms-field-radio,
.wpforms-container .wpforms-field-checkbox {
    padding: 0;
}

.wpforms-container .wpforms-field-radio ul,
.wpforms-container .wpforms-field-checkbox ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.wpforms-container .wpforms-field-radio li,
.wpforms-container .wpforms-field-checkbox li {
    margin: 0;
    padding: 0;
}

.wpforms-container .wpforms-field-radio li label,
.wpforms-container .wpforms-field-checkbox li label {
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-sm);
    color: var(--ccs-color-black);
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
}

/* Custom radio */
.wpforms-container input[type="radio"] {
    -webkit-appearance: none;
    appearance: none;
    width: 1.125rem;
    height: 1.125rem;
    border: 2px solid var(--ccs-color-border, #e0e0e0);
    border-radius: 50%;
    background: var(--ccs-color-white);
    cursor: pointer;
    transition: 0.2s ease;
    flex-shrink: 0;
    margin: 0;
    padding: 0;
}

.wpforms-container input[type="radio"]:checked {
    border-color: var(--ccs-color-primary, #FFDF1C);
    background: var(--ccs-color-primary, #FFDF1C);
    box-shadow: inset 0 0 0 3px var(--ccs-color-white);
}

.wpforms-container input[type="radio"]:focus-visible {
    outline: 2px solid var(--ccs-color-primary, #FFDF1C);
    outline-offset: 2px;
}

/* Custom checkbox */
.wpforms-container input[type="checkbox"] {
    -webkit-appearance: none;
    appearance: none;
    width: 1.125rem;
    height: 1.125rem;
    border: 2px solid var(--ccs-color-border, #e0e0e0);
    border-radius: var(--ccs-radius-sm, 4px);
    background: var(--ccs-color-white);
    cursor: pointer;
    transition: 0.2s ease;
    flex-shrink: 0;
    margin: 0;
    padding: 0;
}

.wpforms-container input[type="checkbox"]:checked {
    border-color: var(--ccs-color-primary, #FFDF1C);
    background: var(--ccs-color-primary, #FFDF1C);
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.5 8.5L6.5 11.5L12.5 4.5' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 14px;
}

.wpforms-container input[type="checkbox"]:focus-visible {
    outline: 2px solid var(--ccs-color-primary, #FFDF1C);
    outline-offset: 2px;
}

/* ---------------------------------------------------------------------------
   Submit Button — Primary style matching .ccs-btn--primary
   --------------------------------------------------------------------------- */

.wpforms-container .wpforms-submit-container {
    padding: 0;
    margin-top: 0.5rem;
}

.wpforms-container button[type="submit"],
.wpforms-container .wpforms-submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.75rem 2rem;
    border-radius: var(--ccs-radius-pill);
    font-family: var(--ccs-font-heading);
    font-size: var(--ccs-text-sm);
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    background: var(--ccs-color-primary, #FFDF1C);
    border: 1px solid var(--ccs-color-primary, #FFDF1C);
    color: var(--ccs-color-black, #000);
    transition: color 0.3s cubic-bezier(0.7, 0, 0.2, 1),
                border-color 0.3s cubic-bezier(0.7, 0, 0.2, 1);
    z-index: 0;
}

/* Slide-fill hover animation matching .ccs-btn */
.wpforms-container button[type="submit"]::before,
.wpforms-container .wpforms-submit::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--ccs-color-white, #fff);
    transform: translate3d(0, 100%, 0);
    transition: transform 0.3s cubic-bezier(0.7, 0, 0.2, 1);
    z-index: -1;
}

.wpforms-container button[type="submit"]:hover::before,
.wpforms-container .wpforms-submit:hover::before {
    transform: translate3d(0, 0, 0);
}

.wpforms-container button[type="submit"]:focus-visible,
.wpforms-container .wpforms-submit:focus-visible {
    outline: 2px dashed #999;
    outline-offset: 2px;
}

/* Spinner / loading state */
.wpforms-container .wpforms-submit-spinner {
    margin-left: 0.5rem;
}

/* ---------------------------------------------------------------------------
   Validation / Errors
   --------------------------------------------------------------------------- */

.wpforms-container .wpforms-error input,
.wpforms-container .wpforms-error textarea,
.wpforms-container .wpforms-error select {
    border-color: var(--ccs-color-coral, #FF898B);
}

.wpforms-container .wpforms-error input:focus,
.wpforms-container .wpforms-error textarea:focus,
.wpforms-container .wpforms-error select:focus {
    box-shadow: 0 0 0 4px rgba(255, 137, 139, 0.15);
}

.wpforms-container label.wpforms-error {
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-xs);
    color: var(--ccs-color-coral, #FF898B);
    margin-top: 0.25rem;
    font-weight: 500;
}

/* Form-level error notice */
.wpforms-container .wpforms-form .wpforms-error-container {
    background: rgba(255, 137, 139, 0.08);
    border: 1px solid var(--ccs-color-coral, #FF898B);
    border-radius: var(--ccs-radius-md);
    padding: 0.75rem 1rem;
    margin-bottom: 1.25rem;
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-sm);
    color: var(--ccs-color-black);
}

/* ---------------------------------------------------------------------------
   Confirmation / Success Message
   --------------------------------------------------------------------------- */

.wpforms-container .wpforms-confirmation-container-full {
    background: rgba(145, 255, 194, 0.1);
    border: 1px solid var(--ccs-color-mint, #91FFC2);
    border-radius: var(--ccs-radius-md);
    padding: 1.5rem;
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-base);
    color: var(--ccs-color-black);
}

.wpforms-container .wpforms-confirmation-container-full p {
    margin: 0;
}

/* ---------------------------------------------------------------------------
   Description / Field Hints
   --------------------------------------------------------------------------- */

.wpforms-container .wpforms-field-description {
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-xs);
    color: var(--ccs-color-text-muted, #666);
    margin-top: 0.25rem;
}

/* ---------------------------------------------------------------------------
   Page Break / Multi-page Progress Bar
   --------------------------------------------------------------------------- */

.wpforms-container .wpforms-page-indicator {
    font-family: var(--ccs-font-heading);
    margin-bottom: 1.5rem;
}

.wpforms-container .wpforms-page-indicator .wpforms-page-indicator-page-title {
    font-family: var(--ccs-font-heading);
    font-weight: 600;
    font-size: var(--ccs-text-sm);
}

.wpforms-container .wpforms-page-indicator .wpforms-page-indicator-page.active .wpforms-page-indicator-page-number {
    background: var(--ccs-color-primary, #FFDF1C);
    color: var(--ccs-color-black);
}

.wpforms-container .wpforms-page-indicator .wpforms-page-indicator-page-progress-bar {
    background: var(--ccs-color-gray-light, #efefef);
}

.wpforms-container .wpforms-page-indicator .wpforms-page-indicator-page-progress-bar span {
    background: var(--ccs-color-primary, #FFDF1C);
}

/* Previous / Next page buttons */
.wpforms-container .wpforms-page-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.625rem 1.5rem;
    font-family: var(--ccs-font-heading);
    font-size: var(--ccs-text-sm);
    font-weight: 700;
    background: transparent;
    color: var(--ccs-color-black);
    border: 2px solid var(--ccs-color-black);
    border-radius: var(--ccs-radius-pill);
    cursor: pointer;
    transition: var(--ccs-transition);
}

.wpforms-container .wpforms-page-button:hover {
    background: var(--ccs-color-black);
    color: var(--ccs-color-white);
}

.wpforms-container .wpforms-page-button:focus-visible {
    outline: 2px dashed #999;
    outline-offset: 2px;
}

/* ---------------------------------------------------------------------------
   File Upload
   --------------------------------------------------------------------------- */

.wpforms-container .wpforms-field-file-upload .wpforms-uploader {
    border: 2px dashed var(--ccs-color-border, #e0e0e0);
    border-radius: var(--ccs-radius-md);
    background: var(--ccs-color-gray-light, #efefef);
    padding: 2rem;
    text-align: center;
    transition: 0.3s ease;
    font-family: var(--ccs-font-body);
    font-size: var(--ccs-text-sm);
    color: var(--ccs-color-text-muted, #666);
}

.wpforms-container .wpforms-field-file-upload .wpforms-uploader:hover {
    border-color: rgba(0, 0, 0, 0.25);
}

.wpforms-container .wpforms-field-file-upload .wpforms-uploader a {
    color: var(--ccs-color-black);
    font-weight: 600;
    text-decoration: underline;
}

/* ---------------------------------------------------------------------------
   Responsive
   --------------------------------------------------------------------------- */

@media (max-width: 768px) {
    /* Classic only — modern stacks its own rows with @container queries on the
       row's inline size, and forcing column here would leave the halves at
       width: 50% while stacked. */
    .wpforms-container:not(.wpforms-container-full) .wpforms-field-row {
        flex-direction: column;
        gap: 0;
    }

    .wpforms-container button[type="submit"],
    .wpforms-container .wpforms-submit {
        width: 100%;
    }

    .wpforms-container .wpforms-page-button {
        width: 100%;
    }
}
