/*
 * Alertify portal theme — light/dark via .portal-page-themed[data-bs-theme].
 * Uses --portal-c-* tokens from portal-components.css.
 */

/* ── Alertify-specific tokens (inherit portal component palette) ─── */
body:has(.portal-page-themed[data-bs-theme="dark"]) {
    --portal-alert-dimmer-opacity: 0.65;
    --portal-alert-input-bg: rgba(0, 0, 0, 0.25);
}

body:has(.portal-page-themed[data-bs-theme="light"]) {
    --portal-alert-dimmer-opacity: 0.35;
    --portal-alert-input-bg: #fff;
}

/* ── Dimmer ───────────────────────────────────────────────────────── */
body:has(.portal-page-themed) .alertify .ajs-dimmer {
    background-color: #000;
    opacity: var(--portal-alert-dimmer-opacity);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

/* ── Dialog shell ─────────────────────────────────────────────────── */
body:has(.portal-page-themed) .alertify .ajs-dialog {
    background-color: var(--portal-c-surface);
    border: 1px solid var(--portal-c-border);
    border-radius: 0.5rem;
    box-shadow: var(--portal-c-shadow);
    color: var(--portal-c-text);
    overflow: hidden;
    padding: 0 !important;
    max-width: 32rem;
}

body:has(.portal-page-themed) .alertify .ajs-header {
    color: var(--portal-c-text);
    background-color: var(--portal-c-surface-header);
    border-bottom: 1px solid var(--portal-c-border);
    border-left: 3px solid var(--portal-c-accent-stripe);
    border-radius: 0;
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    padding: 1rem 1.25rem;
    margin: 0;
}

body:has(.portal-page-themed) .alertify .ajs-body {
    color: var(--portal-c-text-muted);
    background-color: var(--portal-c-surface);
    padding: 0;
}

body:has(.portal-page-themed) .alertify .ajs-body .ajs-content {
    color: var(--portal-c-text-muted);
    background-color: var(--portal-c-surface);
    padding: 1rem 1.25rem;
}

/* ── Close (X) button ────────────────────────────────────────────── */
body:has(.portal-page-themed) .alertify .ajs-commands {
    position: absolute;
    top: 0;
    right: 0;
    margin: 0;
    padding: 0;
    z-index: 2;
}

body:has(.portal-page-themed) .alertify .ajs-commands button.ajs-close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    margin: 0.35rem 0.35rem 0 0;
    padding: 0;
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    cursor: pointer;
    transition: background-color 0.15s ease;
}

body:has(.portal-page-themed) .alertify .ajs-commands button.ajs-close {
    background-image: none;
    font-size: 0;
    line-height: 1;
}

body:has(.portal-page-themed) .alertify .ajs-commands button.ajs-close::after {
    content: '\00d7';
    font-size: 1.5rem;
    font-weight: 300;
    line-height: 1;
}

body:has(.portal-page-themed[data-bs-theme="dark"]) .alertify .ajs-commands button.ajs-close {
    filter: none;
    color: #fff;
    opacity: 0.65;
}

body:has(.portal-page-themed[data-bs-theme="dark"]) .alertify .ajs-commands button.ajs-close:hover {
    opacity: 1;
    background-color: rgba(255, 255, 255, 0.08);
}

body:has(.portal-page-themed[data-bs-theme="light"]) .alertify .ajs-commands button.ajs-close {
    filter: none;
    color: #000;
    opacity: 0.45;
}

body:has(.portal-page-themed[data-bs-theme="light"]) .alertify .ajs-commands button.ajs-close:hover {
    opacity: 0.75;
    background-color: rgba(0, 0, 0, 0.06);
}

/* ── Footer ──────────────────────────────────────────────────────── */
body:has(.portal-page-themed) .alertify .ajs-footer {
    background-color: var(--portal-c-surface-header);
    border-top: 1px solid var(--portal-c-border);
    border-radius: 0 0 0.5rem 0.5rem;
    padding: 0.875rem 1.25rem;
    margin: 0 !important;
}

body:has(.portal-page-themed) .alertify .ajs-footer .ajs-auxiliary {
    display: none;
}

body:has(.portal-page-themed) .alertify .ajs-footer .ajs-buttons {
    padding: 0;
    margin: 0;
}

body:has(.portal-page-themed) .alertify .ajs-footer .ajs-buttons .ajs-button {
    margin: 0;
}

/* ── Footer buttons — shared ─────────────────────────────────────── */
body:has(.portal-page-themed) .alertify .ajs-footer .btn {
    font-weight: 600;
    font-size: 0.8125rem;
    letter-spacing: 0.01em;
    border-radius: 0.5rem;
    padding: 0.45rem 1rem;
    transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

body:has(.portal-page-themed) .alertify .ajs-footer .btn:not(:disabled):hover {
    transform: translateY(-1px);
}

body:has(.portal-page-themed) .alertify .ajs-footer .btn:not(:disabled):active {
    transform: translateY(0);
}

/* Primary (used for alert OK, non-destructive confirms) */
body:has(.portal-page-themed) .alertify .ajs-footer .btn-primary {
    background-color: var(--portal-c-btn-primary-bg);
    background-image: none;
    border-color: var(--portal-c-btn-primary-border);
    box-shadow: var(--portal-c-btn-primary-shadow);
    color: #fff;
}

body:has(.portal-page-themed) .alertify .ajs-footer .btn-primary:hover:not(:disabled),
body:has(.portal-page-themed) .alertify .ajs-footer .btn-primary:focus:not(:disabled) {
    background-color: var(--portal-c-btn-primary-bg-hover);
    border-color: var(--portal-c-btn-primary-border-hover);
    box-shadow: var(--portal-c-btn-primary-shadow-hover);
    color: #fff;
}

/* Outline secondary (cancel buttons) */
body:has(.portal-page-themed) .alertify .ajs-footer .btn-outline-secondary {
    background-color: transparent;
    background-image: none;
    border-color: var(--portal-c-btn-outline-border);
    color: var(--portal-c-btn-outline-color);
    box-shadow: none;
}

body:has(.portal-page-themed) .alertify .ajs-footer .btn-outline-secondary:hover:not(:disabled),
body:has(.portal-page-themed) .alertify .ajs-footer .btn-outline-secondary:focus:not(:disabled) {
    background-color: var(--portal-c-btn-outline-hover-bg);
    border-color: var(--portal-c-btn-outline-hover-border);
    color: var(--portal-c-btn-outline-hover-color);
}

/* Danger (destructive confirms — revoke, delete, unregister) */
body:has(.portal-page-themed) .alertify .ajs-footer .btn-danger {
    background-color: var(--portal-c-btn-danger-bg);
    background-image: none;
    border-color: var(--portal-c-btn-danger-border);
    box-shadow: var(--portal-c-btn-danger-shadow);
    color: #fff;
}

body:has(.portal-page-themed) .alertify .ajs-footer .btn-danger:hover:not(:disabled),
body:has(.portal-page-themed) .alertify .ajs-footer .btn-danger:focus:not(:disabled) {
    background-color: var(--portal-c-btn-danger-bg-hover);
    border-color: var(--portal-c-btn-danger-border-hover);
    box-shadow: var(--portal-c-btn-danger-shadow-hover);
    color: #fff;
}

/* Outline info (used inside alert body — copy button, etc.) */
body:has(.portal-page-themed) .alertify .ajs-body .btn-outline-info {
    border-color: var(--portal-c-accent);
    color: var(--portal-c-accent);
    background: transparent;
    font-size: 0.8125rem;
    font-weight: 600;
    border-radius: 0.375rem;
    padding: 0.3rem 0.75rem;
}

body:has(.portal-page-themed) .alertify .ajs-body .btn-outline-info:hover {
    background-color: var(--portal-c-accent-muted);
    color: var(--portal-c-accent);
}

/* ── Form inputs in prompts ───────────────────────────────────────── */
body:has(.portal-page-themed) .alertify .ajs-body .form-control {
    background-color: var(--portal-alert-input-bg);
    border-color: var(--portal-c-border);
    color: var(--portal-c-text);
    border-radius: 0.5rem;
    font-size: 0.875rem;
}

body:has(.portal-page-themed) .alertify .ajs-body .form-control:focus {
    background-color: var(--portal-alert-input-bg);
    border-color: var(--portal-c-accent-border);
    color: var(--portal-c-text);
    box-shadow: 0 0 0 0.2rem var(--portal-c-accent-muted);
}

/* ── Toast / notifier messages ────────────────────────────────────── */
body:has(.portal-page-themed) .alertify-notifier .ajs-message {
    background: var(--portal-c-surface);
    color: var(--portal-c-text);
    border: 1px solid var(--portal-c-border);
    border-radius: 0.5rem;
    box-shadow: var(--portal-c-shadow);
    text-shadow: none;
    font-weight: 500;
    font-size: 0.875rem;
    padding: 0.75rem 1rem;
}

body:has(.portal-page-themed) .alertify-notifier .ajs-message.ajs-success {
    background-color: #198754;
    border-color: rgba(25, 135, 84, 0.5);
    color: #fff;
    box-shadow: 0 2px 10px rgba(25, 135, 84, 0.25);
}

body:has(.portal-page-themed) .alertify-notifier .ajs-message.ajs-error {
    background-color: var(--portal-c-btn-danger-bg);
    border-color: var(--portal-c-btn-danger-border);
    color: #fff;
    box-shadow: var(--portal-c-btn-danger-shadow);
}

body:has(.portal-page-themed) .alertify-notifier .ajs-message.ajs-warning {
    background-color: #e67700;
    border-color: rgba(230, 119, 0, 0.45);
    color: #fff;
    box-shadow: 0 2px 10px rgba(230, 119, 0, 0.2);
}

body:has(.portal-page-themed[data-bs-theme="light"]) .alertify-notifier .ajs-message.ajs-warning {
    color: #fff;
}
