/*
 * Responsive form composition contract.
 * Loaded last so current UI SOT layout decisions override historical CSS.
 */

:is(.tww-admin-body, .tww-public-body) :is(
    .tww-form-grid,
    [data-tww-form-grid]:not([data-tww-form-grid="stacked"]),
    [data-tww-form-layout="responsive-grid"]
) {
    display: grid !important;
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
    align-items: start;
    gap: clamp(0.75rem, 1.3vw, 1rem) !important;
    min-width: 0;
}

:is(.tww-admin-body, .tww-public-body) :is(
    .tww-form-grid,
    [data-tww-form-grid]:not([data-tww-form-grid="stacked"]),
    [data-tww-form-layout="responsive-grid"]
) > * {
    grid-column: 1 / -1 !important;
    min-width: 0;
}

:is(.tww-admin-body, .tww-public-body) :is(
    .tww-form-grid,
    [data-tww-form-grid]:not([data-tww-form-grid="stacked"]),
    [data-tww-form-layout="responsive-grid"]
) > :is(
    [data-tww-field-span="full"],
    .tww-field-full,
    .tww-form-actions,
    [data-tww-form-actions],
    [role="alert"],
    .tww-validation-summary,
    [class*="col-span-full"]
) {
    grid-column: 1 / -1 !important;
}

@media (min-width: 48rem) {
    :is(.tww-admin-body, .tww-public-body) :is(
        .tww-form-grid,
        [data-tww-form-grid]:not([data-tww-form-grid="stacked"]),
        [data-tww-form-layout="responsive-grid"]
    ) > :not(
        [data-tww-field-span="full"],
        .tww-field-full,
        .tww-form-actions,
        [data-tww-form-actions],
        [role="alert"],
        .tww-validation-summary,
        [class*="col-span-"],
        [class*="tww-invoice-field-"]
    ) {
        grid-column: span 6 / span 6 !important;
    }
}

@media (min-width: 64rem) {
    body[data-tww-form-columns="2"] :is(.tww-form-grid, [data-tww-form-grid]) > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ),
    :is(.tww-admin-body, .tww-public-body) :is(.tww-form-grid, [data-tww-form-grid], [data-tww-form-layout="responsive-grid"]):is([data-tww-grid-columns="2"], [class*="grid-cols-2"]) > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ) {
        grid-column: span 6 / span 6 !important;
    }

    body[data-tww-form-columns="3"] :is(.tww-form-grid, [data-tww-form-grid]) > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ),
    :is(.tww-admin-body, .tww-public-body) :is(.tww-form-grid, [data-tww-form-grid], [data-tww-form-layout="responsive-grid"]):is([data-tww-grid-columns="3"], [class*="grid-cols-3"]) > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ) {
        grid-column: span 4 / span 4 !important;
    }

    body[data-tww-form-columns="4"] :is(.tww-form-grid, [data-tww-form-grid]) > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ),
    :is(.tww-admin-body, .tww-public-body) :is(.tww-form-grid, [data-tww-form-grid], [data-tww-form-layout="responsive-grid"]):is([data-tww-grid-columns="4"], [class*="grid-cols-4"], [class*="grid-cols-5"], [class*="grid-cols-6"]) > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ) {
        grid-column: span 3 / span 3 !important;
    }

    body[data-tww-auto-layout="false"] :is(.tww-form-grid, [data-tww-form-grid]):not([data-tww-grid-columns]) > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ) {
        grid-column: span 6 / span 6 !important;
    }

    :is(.tww-admin-body, .tww-public-body) [data-tww-grid-columns="2"] > [class*="col-span-2"] {
        grid-column: 1 / -1 !important;
    }

    :is(.tww-admin-body, .tww-public-body) [data-tww-grid-columns="3"] > [class*="col-span-2"],
    :is(.tww-admin-body, .tww-public-body) [data-tww-grid-columns="3"] > [data-tww-field-span="2"] {
        grid-column: span 8 / span 8 !important;
    }

    :is(.tww-admin-body, .tww-public-body) [data-tww-grid-columns="4"] > [class*="col-span-2"],
    :is(.tww-admin-body, .tww-public-body) [data-tww-grid-columns="4"] > [data-tww-field-span="2"] {
        grid-column: span 6 / span 6 !important;
    }
}

/* Preserve explicit invoice composition classes from the invoice workspace. */
@media (min-width: 64rem) {
    :is(.tww-admin-body, .tww-public-body) :is(.tww-form-grid, [data-tww-form-grid]) > .tww-invoice-field-full {
        grid-column: 1 / -1 !important;
    }

    :is(.tww-admin-body, .tww-public-body) :is(.tww-form-grid, [data-tww-form-grid]) > .tww-invoice-field-half {
        grid-column: span 6 / span 6 !important;
    }

    :is(.tww-admin-body, .tww-public-body) :is(.tww-form-grid, [data-tww-form-grid]) > .tww-invoice-field-third {
        grid-column: span 4 / span 4 !important;
    }

    :is(.tww-admin-body, .tww-public-body) :is(.tww-form-grid, [data-tww-form-grid]) > .tww-invoice-field-two-thirds {
        grid-column: span 8 / span 8 !important;
    }
}

/* Long-form editors remain full-row while compact fields share rows. */
@supports selector(:has(*)) {
    :is(.tww-admin-body, .tww-public-body) :is(.tww-form-grid, [data-tww-form-grid]) > :has(
        textarea[data-tww-richtext],
        textarea[data-tww-html-richtext],
        [data-tww-richtext-editor]
    ) {
        grid-column: 1 / -1 !important;
    }
}

/* Public filters are compact on wide screens and stacked on narrow screens. */
@media (min-width: 48rem) {
    .tww-public-filter-bar[data-tww-form-layout="filter-row"] {
        display: grid !important;
        grid-template-columns: minmax(16rem, 2fr) repeat(3, minmax(10rem, 1fr)) auto auto;
        align-items: end;
        gap: 0.75rem;
    }

    .tww-public-filter-bar[data-tww-form-layout="filter-row"] > * {
        min-width: 0;
    }
}

@media (max-width: 47.999rem) {
    .tww-public-filter-bar[data-tww-form-layout="filter-row"] {
        display: grid !important;
        grid-template-columns: 1fr !important;
    }

    .tww-public-filter-bar[data-tww-form-layout="filter-row"] > * {
        width: 100%;
    }
}

/* Authoritative explicit column spans; specificity intentionally exceeds the tablet fallback. */
@media (min-width: 64rem) {
    body.tww-admin-body [data-tww-grid-columns="2"].tww-form-grid > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ),
    body.tww-public-body [data-tww-grid-columns="2"].tww-form-grid > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ) {
        grid-column: span 6 / span 6 !important;
    }

    body.tww-admin-body [data-tww-grid-columns="3"].tww-form-grid > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ),
    body.tww-public-body [data-tww-grid-columns="3"].tww-form-grid > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ) {
        grid-column: span 4 / span 4 !important;
    }

    body.tww-admin-body [data-tww-grid-columns="4"].tww-form-grid > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ),
    body.tww-public-body [data-tww-grid-columns="4"].tww-form-grid > :not(
        [data-tww-field-span="full"], .tww-field-full, .tww-form-actions, [data-tww-form-actions],
        [role="alert"], .tww-validation-summary, [class*="col-span-"], [class*="tww-invoice-field-"]
    ) {
        grid-column: span 3 / span 3 !important;
    }
}
