/* Base styles for the entire site */

/* Google Fonts */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@500;700&family=Roboto:wght@400;500&display=swap');

/* CSS Variables */
:root {
    --primary-color: #301C50;
    --primary-hover: #9747FF;
    --text-color: #4C4C4C;
    --padding-standard: 30px;
    --max-width: 1920px;
    --card-width-1440: 360px;
    --card-width-1920: 384px;
    --card-height: 312px;

    /* Notification colors */
    --success-color: #4CAF50;
    --info-color: #2196F3;
    --warning-color: #FF9800;
    --error-color: #F44336;

    /* Footer colors */
    --footer-bg: #F8F8F8;
    --footer-text: #333333;
    --footer-link-hover: var(--primary-hover);
}

/* Reset and global styles */
html {
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
}

*,
*:before,
*:after {
    box-sizing: inherit;
}

body {
    margin: 0;
    padding: 0;
    font-family: 'Roboto', sans-serif;
    overflow-x: hidden;
    width: 100%;
    max-width: 100%;
    color: var(--text-color);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

img {
    max-width: 100%;
    height: auto;
}

/* Typography */
h1,
h2,
h3 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    margin: 0;
}

h4,
h5,
h6 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 500;
    margin: 0;
}

p,
span,
li,
a {
    font-family: 'Roboto', sans-serif;
    font-weight: 400;
}

/* Main container */
.container {
    max-width: var(--max-width);
    width: 100%;
    margin: 0 auto;
    padding: 0 var(--padding-standard);
    box-sizing: border-box;
    overflow: hidden;
}

/* Notification Container */
#notification-container {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 9999;
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: 350px;
}

/* Notification Styles */
.notification {
    display: flex;
    background-color: white;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    overflow: hidden;
    cursor: pointer;
    min-width: 280px;
    max-width: 100%;
    animation: slideIn 0.3s ease forwards;
    position: relative;
}

.notification.fade-out {
    animation: fadeOut 0.3s ease forwards;
}

@keyframes slideIn {
    from {
        opacity: 0;
        transform: translateX(50px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes fadeOut {
    from {
        opacity: 1;
        transform: translateX(0);
    }

    to {
        opacity: 0;
        transform: translateX(50px);
    }
}

/* Notification Type Bar */
.notification-bar {
    width: 4px;
    margin: 5px 0 5px 5px;
    border-radius: 2px;
}

.notification-bar.success {
    background-color: var(--success-color);
}

.notification-bar.info {
    background-color: var(--info-color);
}

.notification-bar.warning {
    background-color: var(--warning-color);
}

.notification-bar.error {
    background-color: var(--error-color);
}

/* Notification Content */
.notification-content {
    padding: 5px 15px 5px 10px;
    flex: 1;
}

.notification-title {
    font-family: 'Montserrat', sans-serif;
    font-weight: 500;
    font-size: 16px;
    margin: 0;
    margin-bottom: 5px;
}

.notification-text {
    font-family: 'Roboto', sans-serif;
    font-size: 14px;
    color: var(--text-color);
    margin: 0;
    margin-bottom: 5px;
    line-height: 1.4;
}

/* Animations */

/* Fade-in animation */
@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

/* Lift-down animation for header */
@keyframes liftDown {
    from {
        transform: translateY(-100%);
    }

    to {
        transform: translateY(0);
    }
}

/* Scroll-up animation */
@keyframes scrollUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }

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

/* Animation classes */
.animate-header {
    opacity: 0;
}

.animate-header.visible {
    animation: fadeIn 0.5s ease forwards, liftDown 0.5s ease forwards;
}

.animate-fade-in {
    opacity: 0;
    animation: fadeIn 1s ease forwards;
}

.scroll-animation {
    opacity: 0;
}

.scroll-animation.visible {
    animation: scrollUp 0.8s ease forwards;
}

/* Media Queries */

/* Tablet (768px - 1439px) */
@media (min-width: 768px) and (max-width: 1439px) {
    .main-content {
        padding-top: 70px;
        /* Adjusted for smaller header on tablet */
    }
}

/* Mobile (320px - 767px) */
@media (max-width: 767px) {
    :root {
        --padding-standard: 15px;
    }

    .main-content {
        padding-top: 60px;
        /* Adjusted for smaller header on mobile */
    }

    .container {
        padding: 0 15px;
        max-width: 100%;
    }
}

@media (max-width: 480px) {
    .container {
        padding: 0 10px;
    }
}