/*
 * Runtime realization of control.form and control.form-field.
 * Consumer presentation is opt-in through .turri-form or an explicit adapter
 * context. Native field rules remain class-scoped to .turri-form.
 */

:where(.turri-form, body.turri-woocommerce-form-context) {
    color: var(--turri-form-foreground);
}

.turri-form,
.turri-form * {
    box-sizing: border-box;
}

.turri-form--standard-fields .turri-form__field {
    display: grid;
    float: none;
    gap: var(--turri-form-field-internal-gap);
    width: 100%;
    margin: 0;
    padding: 0;
}

.turri-form--standard-fields .turri-form__label {
    display: block;
    margin: 0;
    color: var(--turri-form-foreground);
    font-size: var(--turri-form-label-font-size);
    font-weight: var(--turri-form-label-font-weight);
    line-height: var(--turri-label-line-height);
}

.turri-form--standard-fields .optional,
.turri-form--standard-fields .turri-form__hint,
.turri-form--standard-fields .description {
    color: var(--turri-form-secondary);
    font-size: var(--turri-form-help-font-size);
    font-weight: 400;
    line-height: var(--turri-help-line-height);
}

.turri-form--standard-fields .required {
    color: var(--turri-form-error);
    font-weight: 700;
    text-decoration: none;
}

.turri-form--standard-fields .turri-form__control {
    width: 100%;
    min-width: 0;
    min-height: var(--turri-form-control-min-block-size);
    margin: 0;
    padding: var(--turri-control-padding-block) var(--turri-form-control-padding-inline);
    border: var(--turri-form-control-border-width) solid var(--turri-form-border);
    border-radius: var(--turri-form-control-radius);
    background: var(--turri-form-surface);
    color: var(--turri-form-foreground);
    font: inherit;
    font-size: var(--turri-form-control-font-size);
    line-height: var(--turri-label-line-height);
    transition:
        background-color var(--turri-form-motion-duration) ease,
        border-color var(--turri-form-motion-duration) ease,
        box-shadow var(--turri-form-motion-duration) ease;
}

.turri-form--standard-fields textarea.turri-form__control {
    min-height: var(--turri-form-textarea-min-block-size);
    resize: vertical;
}

.turri-form--standard-fields .turri-form__control::placeholder {
    color: var(--turri-form-secondary);
    opacity: 0.72;
}

.turri-form--standard-fields .turri-form__control:hover:not(:disabled) {
    border-color: var(--turri-color-action-secondary-border);
}

.turri-form.turri-form--standard-fields .turri-form__control:focus,
.turri-form.turri-form--standard-fields .turri-form__control:focus-visible {
    border-color: var(--turri-form-focus);
    outline-color: var(--turri-form-focus);
    outline-offset: var(--turri-focus-offset);
    outline-style: solid;
    outline-width: var(--turri-focus-width);
    box-shadow: none;
}

.turri-form--standard-fields .turri-form__control:disabled {
    border-color: var(--turri-form-border);
    background: var(--turri-form-disabled-background);
    color: var(--turri-form-disabled-foreground);
    cursor: not-allowed;
}

.turri-form--standard-fields .woocommerce-invalid .turri-form__control,
.turri-form--standard-fields .turri-form__control[aria-invalid="true"] {
    border-color: var(--turri-form-error);
    background: var(--turri-form-error-background);
}

.turri-form--standard-fields .turri-form__error {
    margin: 0;
    color: var(--turri-form-error);
    font-size: var(--turri-form-help-font-size);
    font-weight: var(--turri-control-label-font-weight);
    line-height: var(--turri-help-line-height);
}

.turri-form--standard-fields .select2-container {
    width: 100%;
    min-width: 0;
}

.turri-form--standard-fields .select2-container .select2-selection--single {
    min-height: var(--turri-form-control-min-block-size);
    border: var(--turri-form-control-border-width) solid var(--turri-form-border);
    border-radius: var(--turri-form-control-radius);
    background: var(--turri-form-surface);
}

.turri-form--standard-fields .select2-container .select2-selection--single .select2-selection__rendered {
    padding: var(--turri-control-padding-block) 3.6rem var(--turri-control-padding-block) var(--turri-form-control-padding-inline);
    color: var(--turri-form-foreground);
    font-size: var(--turri-form-control-font-size);
    line-height: 1.55;
}

.turri-form.turri-form--standard-fields .select2-container--focus .select2-selection--single,
.turri-form.turri-form--standard-fields .select2-container--open .select2-selection--single {
    border-color: var(--turri-form-focus);
    outline-color: var(--turri-form-focus);
    outline-offset: var(--turri-focus-offset);
    outline-style: solid;
    outline-width: var(--turri-focus-width);
}

.turri-form--standard-fields :where(.woocommerce-form__label-for-checkbox, .woocommerce-form__label-for-radio) {
    display: inline-flex;
    gap: 0.8rem;
    align-items: center;
    min-height: var(--turri-form-control-min-block-size);
    color: var(--turri-form-foreground);
    cursor: pointer;
}

.turri-form--standard-fields :where(input[type="checkbox"], input[type="radio"]) {
    flex: 0 0 auto;
    width: var(--turri-form-choice-size);
    height: var(--turri-form-choice-size);
    margin: 0;
    accent-color: var(--turri-color-action-primary-background);
}

.turri-form--standard-fields :where(input[type="checkbox"], input[type="radio"]):focus-visible {
    outline: var(--turri-focus-width) solid var(--turri-form-focus);
    outline-offset: var(--turri-focus-offset);
}

.turri-form__submit {
    display: inline-flex;
    gap: var(--turri-control-content-gap);
    align-items: center;
    justify-content: center;
    min-width: var(--turri-control-min-inline-size);
    min-height: var(--turri-control-min-block-size);
    margin: 0;
    padding: var(--turri-control-padding-block) var(--turri-control-padding-inline);
    border: var(--turri-control-border-width) solid transparent;
    border-radius: var(--turri-control-radius);
    background: var(--turri-color-action-primary-background);
    color: var(--turri-color-action-primary-foreground);
    font-size: var(--turri-control-label-font-size);
    font-weight: var(--turri-control-label-font-weight);
    line-height: 1.2;
    text-align: center;
    text-decoration: none;
    transition:
        background-color var(--turri-control-motion-duration) ease,
        border-color var(--turri-control-motion-duration) ease,
        color var(--turri-control-motion-duration) ease,
        box-shadow var(--turri-control-motion-duration) ease;
}

.turri-form__submit:hover:not(:disabled) {
    background: var(--turri-color-action-primary-hover);
    color: var(--turri-color-action-primary-foreground);
}

.turri-form__submit:focus-visible {
    outline: var(--turri-focus-width) solid var(--turri-form-focus);
    outline-offset: var(--turri-focus-offset);
}

.turri-form__submit:disabled,
.turri-form__submit[aria-disabled="true"] {
    background: var(--turri-form-disabled-background);
    color: var(--turri-form-disabled-foreground);
    cursor: not-allowed;
}

@media (prefers-reduced-motion: reduce) {
    .turri-form--standard-fields .turri-form__control,
    .turri-form__submit {
        transition-duration: var(--turri-motion-reduced-duration);
    }
}
