/*
 * Shared form-control interaction layer.
 * Loaded after scoped page styles so every input/select receives one calm,
 * tenant-aware focus treatment instead of stacked native, MudBlazor and page rings.
 */

:root {
    --portal-control-focus-border: var(--tenant-focus-ring, #315f86);
    --portal-control-focus-ring: 0 0 0 3px var(--tenant-focus-ring, #315f86);
}

/* The visual focus indication is drawn on the complete field, not the inner input slot. */
:where(.portal-page, .portal-auth, .mud-dialog-container)
    :is(input, textarea, select, .mud-select-input):is(:focus, :focus-visible) {
    outline: none !important;
    outline-offset: 0 !important;
}

/* One shared focus surface for MudBlazor text fields, searches and selects. */
:where(.portal-page, .portal-auth, .mud-dialog-container)
    :is(.mud-input-root, .mud-input.mud-input-outlined, .mud-select)
    :is(:focus-within, .mud-input-focused):not(.mud-input-error) {
    transform: none !important;
    background: var(--color-surface) !important;
    box-shadow: var(--portal-control-focus-ring) !important;
}

:where(.portal-page, .portal-auth, .mud-dialog-container)
    :is(.mud-input-root, .mud-input.mud-input-outlined, .mud-select)
    :is(:focus-within, .mud-input-focused):not(.mud-input-error)
    .mud-input-outlined-border,
:where(.portal-page, .portal-auth, .mud-dialog-container)
    .mud-input-outlined.mud-input-focused:not(.mud-input-error)
    .mud-input-outlined-border {
    border-width: 1px !important;
    border-color: var(--portal-control-focus-border) !important;
    box-shadow: none !important;
}

/* Native page controls keep the same single-ring language. */
:where(.portal-page, .portal-auth, .mud-dialog-container)
    :is(input, textarea, select):not(.mud-input-slot):not(.mud-select-input):not([aria-invalid="true"])
    :is(:focus, :focus-visible) {
    border-color: var(--portal-control-focus-border) !important;
    box-shadow: var(--portal-control-focus-ring) !important;
}

/* Error state remains purposeful and is never recoloured as a normal focus. */
:where(.portal-page, .portal-auth, .mud-dialog-container)
    :is(.mud-input-root, .mud-input.mud-input-outlined, .mud-select).mud-input-error
    :is(:focus-within, .mud-input-focused) {
    transform: none !important;
}

@media (prefers-contrast: more) {
    :root {
        --portal-control-focus-border: var(--tenant-focus-ring, #315f86);
        --portal-control-focus-ring: 0 0 0 4px var(--tenant-focus-ring, #315f86);
    }
}
