/* Shared action system. Explicit component membership avoids restyling poster
   cards, navigation rows, switches and clickable content as form buttons.
   The two :is() scopes also cover body-mounted dialogs and legacy ID rules. */
html.liquid-glass.clean-ui {
    --ui-button-bg: #eef1f5;
    --ui-button-hover: #e3e8ee;
    --ui-button-pressed: #dbe2ea;
    --ui-button-border: #d4dce7;
    --ui-button-text: var(--lg-heading);
    --ui-primary: #e8effc;
    --ui-primary-hover: #dce7fb;
    --ui-primary-text: #183f78;
    --ui-primary-border: #cad9f1;
    --ui-save-bg: #e8f4ed;
    --ui-save-hover: #dceee3;
    --ui-save-text: var(--lg-control-success);
    --ui-save-border: #c9e0d1;
    --ui-tool-bg: #f2eafa;
    --ui-tool-hover: #e9ddf5;
    --ui-tool-text: #593079;
    --ui-tool-border: #decee9;
    --ui-transfer-bg: #e7f3f8;
    --ui-transfer-hover: #d7eaf3;
    --ui-transfer-text: #174c64;
    --ui-transfer-border: #c5dee9;
    --ui-choice-text: var(--lg-heading);
    --ui-refresh-bg: #eaf4ee;
    --ui-refresh-hover: #e0eee5;
    --ui-refresh-text: var(--lg-control-success);
    --ui-refresh-border: #d4e6da;
    --ui-global-save-bg: #fff6dc;
    --ui-global-save-hover: #fff0c3;
    --ui-global-save-text: var(--lg-control-warning);
    --ui-global-save-border: #eddfb4;
    --ui-save-emphasis-bg: #2563eb;
    --ui-save-emphasis-hover: #1d4ed8;
    --ui-save-emphasis-text: #fff;
    --ui-save-emphasis-border: #1d4ed8;
    --ui-danger: var(--lg-danger);
    --ui-danger-bg: #fbefef;
    --ui-danger-hover: #f7e4e6;
    --ui-danger-border: #efd8da;
    --ui-selected: #edf2f8;
    --ui-selected-text: #153b70;
    --lg-action-bg: var(--ui-primary);
    --lg-action-text: var(--ui-primary-text);
    --lg-action-border: var(--ui-primary-border);
    --lg-action-shadow: none;
    --lg-control-bg: var(--ui-button-bg);
    --lg-control-border: var(--ui-button-border);
    --lg-control-edge: none;
    --lg-control-blue: var(--ui-primary);
    --lg-control-blue-edge: none;
    --lg-control-danger: var(--ui-danger);
    --primary-gradient: var(--ui-primary);
}
html.liquid-glass.clean-ui[data-theme="dark"] {
    --ui-button-bg: #343a44;
    --ui-button-hover: #414a58;
    --ui-button-pressed: #4a5464;
    --ui-button-border: #4d596a;
    --ui-button-text: var(--lg-heading);
    --ui-primary: #293e5c;
    --ui-primary-hover: #2f4869;
    --ui-primary-text: #d7e7ff;
    --ui-primary-border: #456387;
    --ui-save-bg: #294437;
    --ui-save-hover: #2f4c3b;
    --ui-save-border: #476953;
    --ui-tool-bg: #40304e;
    --ui-tool-hover: #4d3a5f;
    --ui-tool-text: #ebd7ff;
    --ui-tool-border: #695179;
    --ui-transfer-bg: #293f4c;
    --ui-transfer-hover: #2d4b5b;
    --ui-transfer-text: #cdefff;
    --ui-transfer-border: #456576;
    --ui-refresh-bg: #2b4035;
    --ui-refresh-hover: #344d3f;
    --ui-refresh-text: var(--lg-control-success);
    --ui-refresh-border: #425e4d;
    --ui-global-save-bg: #443a26;
    --ui-global-save-hover: #51452b;
    --ui-global-save-text: var(--lg-control-warning);
    --ui-global-save-border: #665633;
    --ui-save-emphasis-bg: #2b5cc5;
    --ui-save-emphasis-hover: #244fae;
    --ui-save-emphasis-text: #fff;
    --ui-save-emphasis-border: #5b8fff;
    --ui-danger: var(--lg-danger);
    --ui-danger-bg: #442e34;
    --ui-danger-hover: #50353d;
    --ui-danger-border: #62414b;
    --ui-selected: #303b4d;
    --ui-selected-text: #d8e8ff;
}

html.liquid-glass.clean-ui:root :is(body, #env-sections) :is(
    #save-btn, .save-btn, .login-btn, .lg-ssh-page .btn, .ui-refresh-btn,
    .emby-setup-btn, .emby-config-btn, .emby-refresh-btn, .emby-live-btn,
    .proxy-settings-btn, .emby-proxy-btn, .emby-proxy-mini-btn,
    .emby-proxy-records-close, .restart-cancel-btn,
    .kv-test-btn, .kv-add-btn, .vl-add-btn, .kv-delete-btn, .vl-delete-btn,
    .emby-strm-path-mapping-add, .emby-strm-path-mapping-remove,
    .organize-wash-detail-button, .organize-wash-add-button, .organize-wash-icon-button,
    .qr115-action-btn, .qr115-stop-btn, .hdhive-auth-btn, .hdhive-sub-account-btn,
    .directory-selector-mini-btn, .directory-selector-inline-btn,
    .directory-selector-refresh-btn, .directory-selector-action-btn,
    .directory-selector-pick-btn, .directory-selector-enter-btn,
    .notify-bot-inline-btn, .notify-bot-add-btn, .notify-bot-btn, .notify-bot-remove-btn,
    .pttransfer-db-inline-btn, .pttransfer-records-refresh-btn, .pttransfer-records-close-btn,
    .log-action-btn, .log-tail-button, .transfer-history-refresh-btn,
    .transfer-history-recognize-btn, .transfer-history-danger-btn,
    .organize-stop-btn, .transfer-page-btn, .transfer-source-tab-btn,
    .organize-recognize-submit-btn, .organize-recognize-link-btn,
    .organize-detail-action-btn, .organize-retag-select-btn,
    .organize-clear-calendar-action, .organize-clear-calendar-nav-btn,
    .organize-clear-cancel-btn, .organize-inline-confirm-btn,
    .ssh-save, .ssh-connect, .ssh-profile-chip, .ssh-profile-clear,
    .vf-inline-open-btn, .vf-inline-copy-btn, .vf-btn,
    .vf-scene-tab-btn, .utility-cover-mini-btn, .utility-cover-action-btn, .oa-button,
    .utility-cover-tab-btn, .utility-cover-choice-btn, .tbp-button,
    .vfp-primary-btn, .vfp-secondary-btn, .vfp-add-btn, .vfp-header-action,
    .vfp-back-btn, .vfp-result-add, .vfp-delete-btn, .vfp-scene-chip,
    .md-btn, .md-icon-btn, .md-rule-remove, .md-work-detail-monitor-btn, .md-work-detail-back,
    .md-library-filter-reset,
    .md-tab, .md-source-tab, .md-filter-chip, .md-library-filter-chip,
    .md-resource-filter-chip, .md-ranking-type, .md-calendar-kind,
    .md-streaming-tab, .emby-trend-btn,
    .directory-selector-close-btn, .notify-bot-close-btn, .vf-close-btn,
    .vfp-dialog-close, .utility-modal-close, .organize-recognize-close-btn,
    .organize-clear-close-btn, .organize-detail-close-btn, .organize-inline-confirm-dialog-close
) {
    --button-bg: var(--ui-button-bg);
    --button-hover: var(--ui-button-hover);
    --button-pressed: var(--ui-button-pressed);
    --button-text: var(--ui-button-text);
    --button-border: var(--ui-button-border);
    box-sizing: border-box !important;
    min-height: 40px !important;
    height: auto !important;
    padding: 9px 14px !important;
    gap: 7px;
    border: 1px solid var(--button-border) !important;
    border-radius: 10px !important;
    background: var(--button-bg) !important;
    color: var(--button-text) !important;
    box-shadow: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    filter: none !important;
    transform: none !important;
    text-shadow: none !important;
    font-family: var(--lg-font-ui) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 20px !important;
    letter-spacing: 0 !important;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, opacity .15s ease !important;

    /* Tinted actions remain distinct from borderless choices and plain help. */
    &:is(.primary, .is-primary, .save-btn, .login-btn, .lg-ssh-page .btn,
        #emby-setup-save-btn, .log-action-btn-primary, .qr115-action-btn,
        .tg-scheduled-save-btn, .ssh-save, .transfer-history-refresh-btn[id$="-save-btn"],
        .vf-btn-primary, .organize-retag-select-btn,
        .organize-recognize-submit-btn, .directory-selector-action-btn.primary,
        .utility-cover-mini-btn-primary, .tbp-button-primary, .oa-primary,
        .vfp-primary-btn, .vfp-add-btn, .vfp-result-add,
        .ssh-connect:not(.connected), #organize-run-now-btn,
        #share-strm-invalid-cleaner-run-btn, #share-strm-invalid-cleaner-save-btn,
        #emby-metadata-cleaner-clean-btn) {
        --button-bg: var(--ui-primary);
        --button-hover: var(--ui-primary-hover);
        --button-pressed: var(--ui-button-pressed);
        --button-border: var(--ui-primary-border);
        --button-text: var(--ui-primary-text);
    }
    &:is(.kv-add-btn, .vl-add-btn, .notify-bot-add-btn, .emby-strm-path-mapping-add,
        .organize-wash-add-button, .emby-config-btn, #emby-proxy-add-btn, #oa-token-create,
        #emby-cover-generator-generate-btn, [data-tg-scheduled-action="add-card"]) {
        --button-bg: var(--ui-primary);
        --button-hover: var(--ui-primary-hover);
        --button-pressed: var(--ui-primary-hover);
        --button-border: var(--ui-primary-border);
        --button-text: var(--ui-primary-text);
    }
    &:is([id$="-save-btn"], [id$="-save"], #vf-save-modal-btn,
        .tg-scheduled-save-btn, .ssh-save, [data-action="save-one"], [data-action="save"],
        [data-tg-scheduled-action="save"], [data-md-action^="save-"], [data-ui-tone="save"]) {
        --button-bg: var(--ui-save-bg);
        --button-hover: var(--ui-save-hover);
        --button-pressed: var(--ui-save-hover);
        --button-border: var(--ui-save-border);
        --button-text: var(--ui-save-text);
    }
    &:is(.transfer-history-recognize-btn, .organize-recognize-submit-btn,
        [id$="-test-btn"], [id$="-test"], [id*="-test-"],
        [data-action="test"], [data-action^="test-"], [data-md-action^="test-"], [data-md-action$="-test"],
        [data-tg-scheduled-action="test"], [data-ui-tone="tool"], .tbp-button-tool) {
        --button-bg: var(--ui-tool-bg);
        --button-hover: var(--ui-tool-hover);
        --button-pressed: var(--ui-tool-hover);
        --button-border: var(--ui-tool-border);
        --button-text: var(--ui-tool-text);
    }
    &:is(.vf-inline-copy-btn, [id$="-copy-btn"], [id$="-import-btn"], [id$="-export-btn"],
        [data-action^="import-"], [data-action^="export-"], [data-md-action^="copy-"],
        [data-ui-tone="transfer"], .tbp-button-transfer) {
        --button-bg: var(--ui-transfer-bg);
        --button-hover: var(--ui-transfer-hover);
        --button-pressed: var(--ui-transfer-hover);
        --button-border: var(--ui-transfer-border);
        --button-text: var(--ui-transfer-text);
    }
    &:is(#emby-refresh-btn, .ui-refresh-btn, .directory-selector-refresh-btn,
        .pttransfer-records-refresh-btn, .emby-refresh-btn,
        [id$="-refresh-btn"], [id$="-refresh"],
        [data-md-action^="refresh-"], [data-tg-scheduled-action="refresh"],
        .tbp-button-refresh):not(#emby-cover-generator-refresh-btn) {
        --button-bg: var(--ui-refresh-bg);
        --button-hover: var(--ui-refresh-hover);
        --button-pressed: var(--ui-refresh-hover);
        --button-border: var(--ui-refresh-border);
        --button-text: var(--ui-refresh-text);
    }
    &:is(#proxy-settings-save-btn, .proxy-settings-save-btn) {
        --button-bg: var(--ui-global-save-bg);
        --button-hover: var(--ui-global-save-hover);
        --button-pressed: var(--ui-global-save-hover);
        --button-border: var(--ui-global-save-border);
        --button-text: var(--ui-global-save-text);
    }
    /* The persistent page save is easy to find beside the neutral search box. */
    &#save-btn {
        --button-bg: var(--ui-save-emphasis-bg);
        --button-hover: var(--ui-save-emphasis-hover);
        --button-pressed: var(--ui-save-emphasis-hover);
        --button-border: var(--ui-save-emphasis-border);
        --button-text: var(--ui-save-emphasis-text);
        font-size: 14px !important;
        font-weight: 650 !important;
    }
    &:is(.danger, .is-danger, .vf-btn-danger, .tbp-button-danger, .oa-danger,
        .transfer-history-danger-btn, .organize-stop-btn, .notify-bot-remove-btn,
        .kv-delete-btn, .vl-delete-btn, .md-rule-remove, .emby-strm-path-mapping-remove,
        .emby-music-map-remove, .vfp-delete-btn, .ssh-connect.connected, .ssh-profile-clear,
        #emby-setup-clear-btn, #share-strm-invalid-cleaner-stop-btn,
        [data-action="delete-rule"], [data-action="remove-cover-server"]) {
        --button-bg: var(--ui-danger-bg);
        --button-hover: var(--ui-danger-hover);
        --button-pressed: var(--ui-danger-hover);
        --button-border: var(--ui-danger-border);
        --button-text: var(--ui-danger);
    }
    /* Compact choices share one treatment; active state is a quiet blue-gray. */
    &:is(.transfer-source-tab-btn, .vf-scene-tab-btn, .vfp-scene-chip, .ssh-profile-chip,
        .utility-cover-tab-btn, .utility-cover-choice-btn, .emby-trend-btn,
        .md-tab, .md-source-tab, .md-filter-chip, .md-library-filter-chip,
        .md-resource-filter-chip, .md-ranking-type, .md-calendar-kind, .md-streaming-tab) {
        min-height: 34px !important;
        padding: 6px 12px !important;
        border-radius: 8px !important;
        --button-bg: transparent;
        --button-border: transparent;
        --button-text: var(--ui-choice-text);
        font-weight: 550 !important;
        & :is(strong, b, .md-streaming-tab-label) { font-weight: inherit !important; }
        &:is(.active, .is-active, [aria-selected="true"], [aria-pressed="true"]) {
            --button-bg: var(--ui-selected);
            --button-hover: var(--ui-selected);
            --button-pressed: var(--ui-selected);
            --button-text: var(--ui-selected-text);
            font-weight: 650 !important;
            & :is(strong, b, .md-streaming-tab-label) { font-weight: 650 !important; }
        }
    }
    /* Text actions stay horizontal; icon-only hit areas remain square. */
    &:is(.emby-config-btn, .emby-refresh-btn) {
        display: inline-flex !important;
        flex-direction: row !important;
        align-items: center;
        justify-content: center;
        width: auto !important;
        flex: 0 0 auto;
        white-space: nowrap !important;
        & > svg { flex-shrink: 0; margin: 0 !important; }
    }
    &.emby-live-btn {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        width: 40px !important;
        min-width: 40px !important;
        height: 40px !important;
        padding: 9px !important;
        flex-shrink: 0;
    }
    &:is(.organize-wash-icon-button, .kv-delete-btn, .vl-delete-btn,
        .emby-strm-path-mapping-remove, .vfp-delete-btn, .md-icon-btn,
        .notify-bot-close-btn, .vf-close-btn,
        .vfp-dialog-close, .tbp-button-close, .utility-modal-close, .emby-proxy-records-close,
        .organize-recognize-close-btn, .organize-clear-close-btn,
        .organize-detail-close-btn, .organize-inline-confirm-dialog-close,
        [data-action="toggle-key"], [data-action="toggle-cover-server-key"]) {
        width: 36px !important;
        min-width: 36px !important;
        height: 36px !important;
        min-height: 36px !important;
        padding: 7px !important;
        flex-shrink: 0;
    }
    &.login-btn {
        min-height: 46px !important;
        font-size: 14px !important;
    }
    /* The rule-row remove action uses an accessible label plus a visual ×. */
    &.vfp-delete-btn { font-size: 0 !important; }
    &:hover:not(:disabled):not([aria-disabled="true"]) {
        background: var(--button-hover) !important;
        border-color: var(--button-border) !important;
        color: var(--button-text) !important;
        box-shadow: none !important;
        transform: none !important;
        filter: none !important;
    }
    &:active:not(:disabled):not([aria-disabled="true"]) {
        background: var(--button-pressed) !important;
        box-shadow: none !important;
        transform: none !important;
    }
    &:focus-visible {
        outline: var(--ui-focus-width) solid var(--ui-focus-border) !important;
        outline-offset: var(--ui-focus-offset) !important;
        box-shadow: 0 0 0 3px var(--ui-focus-halo) !important;
    }
    &:is(:disabled, [aria-disabled="true"]) {
        opacity: 1 !important;
        border-style: dashed !important;
        cursor: not-allowed !important;
        box-shadow: none !important;
        filter: none !important;
    }
    @media (max-width: 768px), (pointer: coarse) {
        min-height: 44px !important;
        &.emby-live-btn { width: 44px !important; min-width: 44px !important; height: 44px !important; }
        &:is(.organize-wash-icon-button, .kv-delete-btn, .vl-delete-btn,
            .emby-strm-path-mapping-remove, .vfp-delete-btn, .md-icon-btn,
            .notify-bot-close-btn, .vf-close-btn,
            .vfp-dialog-close, .tbp-button-close, .utility-modal-close, .emby-proxy-records-close,
            .organize-recognize-close-btn, .organize-clear-close-btn,
            .organize-detail-close-btn, .organize-inline-confirm-dialog-close,
            [data-action="toggle-key"], [data-action="toggle-cover-server-key"]) {
            width: 44px !important;
            min-width: 44px !important;
            height: 44px !important;
        }
    }
    @media (prefers-reduced-motion: reduce) { transition: none !important; }
}

html.liquid-glass.clean-ui:root body .emby-dashboard-actions {
    flex-wrap: wrap;
    max-width: 100%;
}

/* In-field reveal controls and disclosure/navigation controls keep their
   component geometry, but use the same quiet material and focus treatment. */
html.liquid-glass.clean-ui:root :is(body, #env-sections) :is(.emby-setup-toggle-key,
    .config-subgroup-toggle, .md-calendar-rail-arrow) {
    background: var(--ui-button-bg) !important;
    color: var(--ui-button-text) !important;
    border: 1px solid var(--ui-button-border) !important;
    border-radius: 8px !important;
    box-shadow: none !important;
    filter: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    font-weight: 600 !important;
}
html.liquid-glass.clean-ui:root :is(body, #env-sections) .emby-setup-toggle-key {
    background: var(--ui-button-bg) !important;
    border-color: var(--ui-button-border) !important;
}
html.liquid-glass.clean-ui:root :is(body, #env-sections) :is(.emby-setup-toggle-key,
    .config-subgroup-toggle, .md-calendar-rail-arrow):hover:not(:disabled) {
    background: var(--ui-button-hover) !important;
    color: var(--ui-button-text) !important;
    box-shadow: none !important;
    filter: none !important;
}
html.liquid-glass.clean-ui:root :is(body, #env-sections) :is(.emby-setup-toggle-key,
    .config-subgroup-toggle, .md-calendar-rail-arrow):focus-visible {
    outline: var(--ui-focus-width) solid var(--ui-focus-border) !important;
    outline-offset: var(--ui-focus-offset) !important;
    box-shadow: 0 0 0 3px var(--ui-focus-halo) !important;
}

html.liquid-glass.clean-ui:root body .sidebar-footer :is(.theme-toggle-btn, .logout-btn),
html.liquid-glass.clean-ui:root body .menu-toggle {
    background: var(--ui-button-bg) !important;
    border: 1px solid var(--ui-button-border) !important;
    color: var(--ui-button-text) !important;
    font-weight: 600 !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

/* Link actions and date choices keep their existing shape, with a clear label. */
html.liquid-glass.clean-ui:root body :is(.global-alert-settings-btn,
    .global-alert-disclosure) {
    font-weight: 600 !important;
}
html.liquid-glass.clean-ui:root body .global-alert-settings-btn {
    color: var(--ui-primary-text) !important;
    background: var(--ui-primary) !important;
    border: 1px solid var(--ui-primary-border) !important;
    border-radius: 8px;
    padding: 7px 10px;
}
html.liquid-glass.clean-ui:root body .global-alert-disclosure {
    color: var(--ui-button-text) !important;
    background: var(--ui-button-bg) !important;
    border: 1px solid var(--ui-button-border) !important;
    border-radius: 8px;
    padding: 7px 10px;
}
/* Filter labels stay regular; actual choices use the stronger choice weight. */
html.liquid-glass.clean-ui:root body :is(.md-library-filter-label,
    .md-filter-label, .md-ranking-country-label) {
    color: var(--ui-choice-text) !important;
}
html.liquid-glass.clean-ui:root body .md-calendar-date:not(.is-active),
html.liquid-glass.clean-ui:root body .md-calendar-date:not(.is-active) :is(span, strong, em) {
    color: var(--ui-choice-text) !important;
    font-weight: 550 !important;
}
html.liquid-glass.clean-ui:root body .md-calendar-date.is-active,
html.liquid-glass.clean-ui:root body .md-calendar-date.is-active :is(span, strong, em) {
    font-weight: 650 !important;
    color: var(--ui-selected-text) !important;
}
