/**
 * Unavailable controls: muted “dimmed” look + fully non-interactive.
 *
 * Best practice (Material / GOV.UK / Ant Design style):
 * - lower opacity and soften fill/border/text so the control reads as inactive
 * - pointer-events: none so hover never switches to pointer / focus rings
 * - cursor: default on the control chrome (no not-allowed “hand slap”)
 * - no hover / active / focus-visible affordances while disabled
 */

:root {
    --panel-control-disabled-opacity: 0.58;
    --panel-control-disabled-fg: #98a2b3;
    --panel-control-disabled-bg: #f2f4f7;
    --panel-control-disabled-border: #e4e7ec;
}

html.panel-theme-dark {
    --panel-control-disabled-opacity: 0.5;
    --panel-control-disabled-fg: rgba(255, 255, 255, 0.42);
    --panel-control-disabled-bg: rgba(255, 255, 255, 0.045);
    --panel-control-disabled-border: rgba(255, 255, 255, 0.12);
}

/* Hit-testing off for whole custom widgets / disabled groups (no hover cursor). */
.admin-interface #content-main :is(
    .panel-single-select.is-disabled,
    .checkbox-search-select.is-disabled,
    .panel-file-input.is-disabled,
    .semicolon-tags.is-disabled,
    .panel-perm-matrix.is-disabled,
    .ug-factor-disabled,
    .related-widget-wrapper:has(select:disabled)
),
body.panel-view-only .admin-interface #content-main form :is(
    .panel-single-select,
    .checkbox-search-select,
    .panel-file-input,
    .semicolon-tags,
    .panel-perm-matrix,
    .related-widget-wrapper,
    .auto-growing-table,
    a.deletelink
),
body.panel-view-only .admin-interface #content-main :is(
    .admin-directory-role-mapping-section,
    .keycloak-radius-mapping-section,
    .sync-connectors.module
) {
    pointer-events: none !important;
    cursor: default !important;
}

/* Leaf control chrome: dim once (do not also dim a parent wrapper).
 * Skip error-log journals / readonly textareas — already non-editable. */
.admin-interface #content-main :is(
    input:disabled,
    select:disabled,
    textarea:disabled:not(.error-log-journal):not([readonly]),
    button:disabled,
    .panel-single-select.is-disabled .panel-ss-toggle,
    .checkbox-search-select.is-disabled .css-toggle-btn,
    .panel-file-input.is-disabled .panel-file-input__button,
    .semicolon-tags.is-disabled .semicolon-tags__chip,
    .semicolon-tags.is-disabled .semicolon-tags__input,
    .ug-factor-disabled input
),
body.panel-view-only .admin-interface #content-main form :is(
    input:not([type="hidden"]),
    select,
    textarea:not(.error-log-journal):not([readonly]),
    button:not(.closelink),
    .panel-ss-toggle,
    .css-toggle-btn,
    .panel-file-input__button,
    .semicolon-tags__chip,
    .semicolon-tags__input,
    .auto-growing-row-add,
    .auto-growing-row-btn,
    input[type="submit"],
    input[type="button"]
),
body.panel-view-only .admin-interface #content-main :is(
    .admin-directory-role-mapping-section,
    .keycloak-radius-mapping-section,
    .sync-connectors.module
) :is(input, select, textarea:not(.error-log-journal):not([readonly]), button, .panel-ss-toggle) {
    opacity: var(--panel-control-disabled-opacity) !important;
    pointer-events: none !important;
    cursor: default !important;
    box-shadow: none !important;
    outline: none !important;
    -webkit-user-select: none;
    user-select: none;
}

/* Soft fill for typical text/select chrome (skip naked checkboxes/radios). */
.admin-interface #content-main :is(
    input:disabled:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]):not([type="submit"]):not([type="button"]),
    select:disabled,
    textarea:disabled:not(.error-log-journal):not([readonly]),
    .panel-single-select.is-disabled .panel-ss-toggle,
    .checkbox-search-select.is-disabled .css-toggle-btn,
    .panel-file-input.is-disabled .panel-file-input__button
),
body.panel-view-only .admin-interface #content-main form :is(
    input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]):not([type="submit"]):not([type="button"]),
    select,
    textarea:not(.error-log-journal):not([readonly]),
    .panel-ss-toggle,
    .css-toggle-btn,
    .panel-file-input__button
) {
    color: var(--panel-control-disabled-fg) !important;
    background-color: var(--panel-control-disabled-bg) !important;
    border-color: var(--panel-control-disabled-border) !important;
    -webkit-text-fill-color: var(--panel-control-disabled-fg);
}

/* No hover / focus polish while unavailable. */
.admin-interface #content-main :is(
    input:disabled,
    select:disabled,
    textarea:disabled:not(.error-log-journal):not([readonly]),
    button:disabled,
    .panel-single-select.is-disabled .panel-ss-toggle,
    .checkbox-search-select.is-disabled .css-toggle-btn,
    .panel-file-input.is-disabled .panel-file-input__button
):is(:hover, :focus, :focus-visible, :active),
body.panel-view-only .admin-interface #content-main form :is(
    input,
    select,
    textarea:not(.error-log-journal):not([readonly]),
    button,
    .panel-ss-toggle,
    .css-toggle-btn,
    .panel-file-input__button
):is(:hover, :focus, :focus-visible, :active) {
    color: var(--panel-control-disabled-fg) !important;
    background-color: var(--panel-control-disabled-bg) !important;
    border-color: var(--panel-control-disabled-border) !important;
    box-shadow: none !important;
    outline: none !important;
    cursor: default !important;
}

/* Keep navigation / close / history usable and undimmed. */
body.panel-view-only .admin-interface #content-main :is(
    a.closelink,
    a.historylink,
    a.viewsitelink,
    .object-tools a,
    .breadcrumbs a,
    .error-log-submit-right a.closelink
),
body.panel-view-only .admin-interface #header a,
body.panel-view-only .admin-interface #nav-sidebar a {
    opacity: 1 !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    color: inherit;
    background: unset;
    border-color: unset;
    -webkit-text-fill-color: unset;
    -webkit-user-select: auto;
    user-select: auto;
    box-shadow: unset;
}

/* Readonly journals stay interactive; do not override theme colors/borders
 * (unset !important was forcing a light/white focus ring in dark theme). */
.admin-interface #content-main form textarea.error-log-journal,
.admin-interface #content-main form textarea[readonly],
.admin-interface #content-main .field-journal_display .readonly,
.admin-interface #content-main .field-journal_display textarea,
body.panel-view-only .admin-interface #content-main form textarea.error-log-journal,
body.panel-view-only .admin-interface #content-main form textarea[readonly],
body.panel-view-only .admin-interface #content-main .readonly {
    pointer-events: auto !important;
    cursor: text !important;
    opacity: 1 !important;
    -webkit-user-select: text;
    user-select: text;
}
