/* ============================================================
   ACEFLYT GLOBAL NOTIFICATION ENGINE
   Shared enterprise notification presentation.
   ============================================================ */

:root {
    --aceflyt-notify-success: #277a4b;
    --aceflyt-notify-success-soft: #edf8f1;
    --aceflyt-notify-success-border: #b9dfc8;

    --aceflyt-notify-info: #246a92;
    --aceflyt-notify-info-soft: #edf6fb;
    --aceflyt-notify-info-border: #bddbec;

    --aceflyt-notify-warning: #9a5c0a;
    --aceflyt-notify-warning-soft: #fff7e8;
    --aceflyt-notify-warning-border: #edd19d;

    --aceflyt-notify-error: #a43c3c;
    --aceflyt-notify-error-soft: #fff0f0;
    --aceflyt-notify-error-border: #ebbbbb;

    --aceflyt-notify-text: #243240;
    --aceflyt-notify-muted: #647381;
    --aceflyt-notify-surface: #ffffff;
    --aceflyt-notify-shadow:
        0 24px 60px rgba(25, 43, 58, 0.24),
        0 8px 20px rgba(25, 43, 58, 0.12);
}

body.aceflyt-notification-open {
    overflow: hidden;
}

.aceflyt-notification-source {
    display: none !important;
}

.aceflyt-toast-region {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 2147483000;
    display: flex;
    width: min(390px, calc(100vw - 32px));
    flex-direction: column;
    gap: 12px;
    pointer-events: none;
}

.aceflyt-toast {
    --aceflyt-notify-tone: var(--aceflyt-notify-info);
    --aceflyt-notify-soft: var(--aceflyt-notify-info-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-info-border);

    position: relative;
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr) 34px;
    gap: 12px;
    align-items: start;
    overflow: hidden;
    padding: 15px 14px;
    border: 1px solid var(--aceflyt-notify-border);
    border-radius: 14px;
    background: var(--aceflyt-notify-surface);
    box-shadow:
        0 14px 34px rgba(25, 43, 58, 0.18),
        0 4px 12px rgba(25, 43, 58, 0.09);
    color: var(--aceflyt-notify-text);
    pointer-events: auto;
    animation: aceflyt-toast-enter 180ms ease-out both;
}

.aceflyt-toast::before {
    position: absolute;
    inset: 0 auto 0 0;
    width: 5px;
    background: var(--aceflyt-notify-tone);
    content: "";
}

.aceflyt-toast.is-success {
    --aceflyt-notify-tone: var(--aceflyt-notify-success);
    --aceflyt-notify-soft: var(--aceflyt-notify-success-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-success-border);
}

.aceflyt-toast.is-info {
    --aceflyt-notify-tone: var(--aceflyt-notify-info);
    --aceflyt-notify-soft: var(--aceflyt-notify-info-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-info-border);
}

.aceflyt-toast.is-warning {
    --aceflyt-notify-tone: var(--aceflyt-notify-warning);
    --aceflyt-notify-soft: var(--aceflyt-notify-warning-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-warning-border);
}

.aceflyt-toast.is-error {
    --aceflyt-notify-tone: var(--aceflyt-notify-error);
    --aceflyt-notify-soft: var(--aceflyt-notify-error-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-error-border);
}

.aceflyt-toast.is-leaving {
    animation: aceflyt-toast-leave 160ms ease-in both;
}

.aceflyt-toast-icon,
.aceflyt-notification-icon {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    border-radius: 50%;
    background: var(--aceflyt-notify-soft);
    color: var(--aceflyt-notify-tone);
    font-weight: 800;
    line-height: 1;
}

.aceflyt-toast-icon {
    width: 42px;
    height: 42px;
    font-size: 23px;
}

.aceflyt-toast-content {
    min-width: 0;
}

.aceflyt-toast-title {
    margin: 1px 0 5px;
    color: var(--aceflyt-notify-tone);
    font-size: 0.94rem;
    font-weight: 750;
    letter-spacing: 0.01em;
}

.aceflyt-toast-message {
    overflow-wrap: anywhere;
    color: var(--aceflyt-notify-text);
    font-size: 0.91rem;
    line-height: 1.46;
    white-space: pre-line;
}

.aceflyt-toast-time {
    display: block;
    margin-top: 7px;
    color: var(--aceflyt-notify-muted);
    font-size: 0.73rem;
}

.aceflyt-toast-close {
    display: grid;
    width: 32px;
    height: 32px;
    place-items: center;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--aceflyt-notify-muted);
    cursor: pointer;
    font-size: 22px;
    line-height: 1;
}

.aceflyt-toast-close:hover,
.aceflyt-toast-close:focus-visible {
    background: var(--aceflyt-notify-soft);
    color: var(--aceflyt-notify-tone);
    outline: none;
}

.aceflyt-notification-dialog {
    --aceflyt-notify-tone: var(--aceflyt-notify-info);
    --aceflyt-notify-soft: var(--aceflyt-notify-info-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-info-border);

    position: fixed;
    inset: 0;
    z-index: 2147483600;
    display: grid;
    place-items: center;
    padding: 24px;
}

.aceflyt-notification-dialog[hidden] {
    display: none !important;
}

.aceflyt-notification-dialog.is-success {
    --aceflyt-notify-tone: var(--aceflyt-notify-success);
    --aceflyt-notify-soft: var(--aceflyt-notify-success-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-success-border);
}

.aceflyt-notification-dialog.is-info {
    --aceflyt-notify-tone: var(--aceflyt-notify-info);
    --aceflyt-notify-soft: var(--aceflyt-notify-info-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-info-border);
}

.aceflyt-notification-dialog.is-warning {
    --aceflyt-notify-tone: var(--aceflyt-notify-warning);
    --aceflyt-notify-soft: var(--aceflyt-notify-warning-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-warning-border);
}

.aceflyt-notification-dialog.is-error {
    --aceflyt-notify-tone: var(--aceflyt-notify-error);
    --aceflyt-notify-soft: var(--aceflyt-notify-error-soft);
    --aceflyt-notify-border: var(--aceflyt-notify-error-border);
}

.aceflyt-notification-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(20, 31, 42, 0.48);
    backdrop-filter: blur(3px);
    animation: aceflyt-backdrop-enter 180ms ease-out both;
}

.aceflyt-notification-modal {
    position: relative;
    display: grid;
    width: min(540px, calc(100vw - 32px));
    max-height: min(760px, calc(100vh - 48px));
    grid-template-columns: 74px minmax(0, 1fr);
    overflow: auto;
    border: 1px solid var(--aceflyt-notify-border);
    border-radius: 18px;
    background: var(--aceflyt-notify-surface);
    box-shadow: var(--aceflyt-notify-shadow);
    color: var(--aceflyt-notify-text);
    animation: aceflyt-modal-enter 180ms ease-out both;
}

.aceflyt-notification-modal:focus {
    outline: none;
}

.aceflyt-notification-modal-accent {
    position: absolute;
    inset: 0 0 auto;
    height: 6px;
    background: var(--aceflyt-notify-tone);
}

.aceflyt-notification-icon {
    width: 54px;
    height: 54px;
    margin: 34px 0 0 24px;
    font-size: 31px;
}

.aceflyt-notification-content {
    min-width: 0;
    padding: 30px 28px 18px 18px;
}

.aceflyt-notification-context {
    margin: 0 0 5px;
    color: var(--aceflyt-notify-muted);
    font-size: 0.75rem;
    font-weight: 750;
    letter-spacing: 0.09em;
    text-transform: uppercase;
}

.aceflyt-notification-title {
    margin: 0 0 14px;
    color: var(--aceflyt-notify-tone);
    font-size: clamp(1.28rem, 3vw, 1.62rem);
    font-weight: 780;
    line-height: 1.2;
}

.aceflyt-notification-message {
    overflow-wrap: anywhere;
    color: var(--aceflyt-notify-text);
    font-size: 1rem;
    line-height: 1.62;
    white-space: pre-line;
}

.aceflyt-notification-technical {
    margin-top: 18px;
    padding: 12px 14px;
    border: 1px solid #d9e0e5;
    border-radius: 10px;
    background: #f7f9fa;
}

.aceflyt-notification-technical summary {
    color: #435563;
    cursor: pointer;
    font-size: 0.86rem;
    font-weight: 700;
}

.aceflyt-notification-technical-content {
    margin-top: 10px;
    overflow-wrap: anywhere;
    color: #53636f;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.78rem;
    line-height: 1.5;
    white-space: pre-wrap;
}

.aceflyt-notification-copy {
    margin-top: 10px;
    padding: 7px 10px;
    border: 1px solid #bdc9d1;
    border-radius: 7px;
    background: #ffffff;
    color: #344754;
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 700;
}

.aceflyt-notification-copy:hover,
.aceflyt-notification-copy:focus-visible {
    border-color: var(--aceflyt-notify-tone);
    color: var(--aceflyt-notify-tone);
    outline: none;
}

.aceflyt-notification-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    align-items: center;
    margin-top: 18px;
    color: var(--aceflyt-notify-muted);
    font-size: 0.74rem;
}

.aceflyt-notification-reference {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

.aceflyt-notification-actions {
    display: flex;
    grid-column: 1 / -1;
    justify-content: flex-end;
    padding: 16px 24px 22px;
    border-top: 1px solid #e5eaee;
    background: #fbfcfd;
}

.aceflyt-notification-ok {
    min-width: 106px;
    padding: 10px 22px;
    border: 1px solid var(--aceflyt-notify-tone);
    border-radius: 9px;
    background: var(--aceflyt-notify-tone);
    color: #ffffff;
    cursor: pointer;
    font-size: 0.92rem;
    font-weight: 750;
    letter-spacing: 0.01em;
}

.aceflyt-notification-ok:hover {
    filter: brightness(0.94);
}

.aceflyt-notification-ok:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--aceflyt-notify-tone) 30%, transparent);
    outline-offset: 3px;
}

.aceflyt-notification-dialog.is-leaving .aceflyt-notification-backdrop {
    animation: aceflyt-backdrop-leave 160ms ease-in both;
}

.aceflyt-notification-dialog.is-leaving .aceflyt-notification-modal {
    animation: aceflyt-modal-leave 160ms ease-in both;
}

@keyframes aceflyt-toast-enter {
    from {
        opacity: 0;
        transform: translateY(10px) scale(0.98);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes aceflyt-toast-leave {
    from {
        opacity: 1;
        transform: translateY(0) scale(1);
    }

    to {
        opacity: 0;
        transform: translateY(8px) scale(0.98);
    }
}

@keyframes aceflyt-backdrop-enter {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes aceflyt-backdrop-leave {
    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

@keyframes aceflyt-modal-enter {
    from {
        opacity: 0;
        transform: translateY(8px) scale(0.97);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes aceflyt-modal-leave {
    from {
        opacity: 1;
        transform: translateY(0) scale(1);
    }

    to {
        opacity: 0;
        transform: translateY(6px) scale(0.98);
    }
}

@media (max-width: 640px) {
    .aceflyt-toast-region {
        right: 16px;
        bottom: 16px;
        left: 16px;
        width: auto;
    }

    .aceflyt-notification-dialog {
        padding: 16px;
    }

    .aceflyt-notification-modal {
        grid-template-columns: 58px minmax(0, 1fr);
        width: 100%;
        max-height: calc(100vh - 32px);
        border-radius: 15px;
    }

    .aceflyt-notification-icon {
        width: 42px;
        height: 42px;
        margin: 30px 0 0 16px;
        font-size: 25px;
    }

    .aceflyt-notification-content {
        padding: 27px 18px 16px 12px;
    }

    .aceflyt-notification-actions {
        padding: 14px 18px 18px;
    }

    .aceflyt-notification-ok {
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .aceflyt-toast,
    .aceflyt-toast.is-leaving,
    .aceflyt-notification-backdrop,
    .aceflyt-notification-modal,
    .aceflyt-notification-dialog.is-leaving .aceflyt-notification-backdrop,
    .aceflyt-notification-dialog.is-leaving .aceflyt-notification-modal {
        animation-duration: 1ms !important;
    }
}
