/*$Id$*/
:root {
    /* Color Variables */
    --primary-color: #236db4;
    --primary-hover: #1e5a9a;
    --text-color: white;
    --background-color: #f5f5f5;
    --loader-border: rgba(255, 255, 255, 0.3);
    --loader-active: white;
    --shadow-color: rgba(35, 109, 180, 0.3);

    /* Spacing Variables */
    --spacing-xs: 4px;
    --spacing-sm: 8px;
    --spacing-md: 12px;
    --spacing-lg: 16px;
    --spacing-xl: 20px;
    --spacing-xxl: 24px;

    /* Border Radius Variables */
    --border-radius-sm: 6px;
    --border-radius-md: 8px;
    --border-radius-full: 50%;

    /* Typography Variables */
    --font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --font-size-sm: 14px;
    --font-size-md: 16px;
    --font-weight-normal: 400;
    --font-weight-medium: 500;

    /* Size Variables */
    --loader-size: 20px;
    --loader-border-width: 2px;
    --toast-min-width: 250px;
    --snackbar-min-width: 200px;

    /* Position Variables */
    --toast-top: 20px;
    --toast-right: 20px;
    --snackbar-bottom: var(--h-navbar);
    --z-index: 1000;

    /* Animation Variables */
    --transition-duration: 0.3s;
    --transition-easing: ease-in-out;
    --spin-duration: 1s;
    --button-transition: 0.2s;

    /* Shadow Variables */
    --shadow-blur: 12px;
    --shadow-offset-x: 0;
    --shadow-offset-y: 4px;

    /* Transform Variables */
    --transform-hide-x: 100%;
    --transform-hide-y: 20px;
    --transform-show: 0;
    --opacity-hide: 0;
    --opacity-show: 1;
    --button-active-transform: translateY(1px);
}

.toast-container {
    position: fixed;
    top: var(--toast-top);
    right: var(--toast-right);
    z-index: var(--z-index);
}

.toast {
    background-color: var(--primary-color);
    color: var(--text-color);
    padding: var(--spacing-lg) var(--spacing-xl);
    border-radius: var(--border-radius-md);
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    box-shadow: var(--shadow-offset-x) var(--shadow-offset-y) var(--shadow-blur) var(--shadow-color);
    min-width: var(--toast-min-width);
    transform: translateX(var(--transform-hide-x));
    opacity: var(--opacity-hide);
    transition: all var(--transition-duration) var(--transition-easing);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
}

.toast.show {
    transform: translateX(var(--transform-show));
    opacity: var(--opacity-show);
}

.loader {
    width: var(--loader-size);
    height: var(--loader-size);
    border: var(--loader-border-width) solid var(--loader-border);
    border-top: var(--loader-border-width) solid var(--loader-active);
    border-radius: var(--border-radius-full);
    animation: spin var(--spin-duration) linear infinite;
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }

    100% {
        transform: rotate(360deg);
    }
}

.toast-text {
    flex: 1;
}

/* Alternative snack bar style (bottom position) */
.snackbar {
    position: fixed;
    top: var(--snackbar-bottom);
    left: 50%;
    z-index: 1500;
    transform: translateX(-50%) translateY(var(--transform-hide-y));
    background-color: var(--primary-color);
    color: var(--text-color);
    padding: var(--spacing-lg) var(--spacing-xxl);
    border-radius: var(--border-radius-md);
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    box-shadow: var(--shadow-offset-x) var(--shadow-offset-y) var(--shadow-blur) var(--shadow-color);
    min-width: var(--snackbar-min-width);
    opacity: var(--opacity-hide);
    transition: all var(--transition-duration) var(--transition-easing);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
}

.snackbar.show {
    transform: translateX(-50%) translateY(var(--transform-show));
    opacity: var(--opacity-show);
}

.snackbar.success {
    background-color: #298512;
    text-align: center;
}

.snackbar.alert {
    background-color: #BD9700;
    text-align: center;
}

.snackbar.failure {
    background-color: #820202;
    text-align: center;
}

.snackbar.failure .loader,
.snackbar.success .loader,
.snackbar.alert .loader {
    display: none;
}