@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsExtraBoldItalic.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsExtraBoldItalic.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsExtraBoldItalic.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsExtraBoldItalic.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsExtraBoldItalic.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsExtraBoldItalic.svg#SVN-PoppinsExtraBoldItalic') format('svg');
    font-weight: bold;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsBlackItalic.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsBlackItalic.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsBlackItalic.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsBlackItalic.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsBlackItalic.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsBlackItalic.svg#SVN-PoppinsBlackItalic') format('svg');
    font-weight: 900;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsBoldItalic.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsBoldItalic.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsBoldItalic.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsBoldItalic.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsBoldItalic.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsBoldItalic.svg#SVN-PoppinsBoldItalic') format('svg');
    font-weight: bold;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsExtraBold.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsExtraBold.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsExtraBold.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsExtraBold.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsExtraBold.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsExtraBold.svg#SVN-PoppinsExtraBold') format('svg');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsBold.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsBold.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsBold.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsBold.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsBold.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsBold.svg#SVN-PoppinsBold') format('svg');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsBlack.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsBlack.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsBlack.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsBlack.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsBlack.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsBlack.svg#SVN-PoppinsBlack') format('svg');
    font-weight: 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsLight.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsLight.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsLight.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsLight.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsLight.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsLight.svg#SVN-PoppinsLight') format('svg');
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsItalic.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsItalic.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsItalic.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsItalic.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsItalic.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsItalic.svg#SVN-PoppinsItalic') format('svg');
    font-weight: normal;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsMediumItalic.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsMediumItalic.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsMediumItalic.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsMediumItalic.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsMediumItalic.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsMediumItalic.svg#SVN-PoppinsMediumItalic') format('svg');
    font-weight: 500;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsExtraLightItalic.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsExtraLightItalic.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsExtraLightItalic.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsExtraLightItalic.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsExtraLightItalic.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsExtraLightItalic.svg#SVN-PoppinsExtraLightItalic') format('svg');
    font-weight: 200;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsLightItalic.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsLightItalic.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsLightItalic.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsLightItalic.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsLightItalic.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsLightItalic.svg#SVN-PoppinsLightItalic') format('svg');
    font-weight: 300;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsExtraLight.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsExtraLight.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsExtraLight.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsExtraLight.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsExtraLight.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsExtraLight.svg#SVN-PoppinsExtraLight') format('svg');
    font-weight: 200;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsThin.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsThin.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsThin.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsThin.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsThin.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsThin.svg#SVN-PoppinsThin') format('svg');
    font-weight: 100;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsSemiBold.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsSemiBold.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsSemiBold.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsSemiBold.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsSemiBold.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsSemiBold.svg#SVN-PoppinsSemiBold') format('svg');
    font-weight: 600;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsMedium.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsMedium.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsMedium.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsMedium.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsMedium.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsMedium.svg#SVN-PoppinsMedium') format('svg');
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsThinItalic.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsThinItalic.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsThinItalic.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsThinItalic.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsThinItalic.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsThinItalic.svg#SVN-PoppinsThinItalic') format('svg');
    font-weight: 100;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-Poppins.eot');
    src: url('fonts/SVN-Poppins/SVN-Poppins.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-Poppins.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-Poppins.woff') format('woff'), url('fonts/SVN-Poppins/SVN-Poppins.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-Poppins.svg#SVN-Poppins') format('svg');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'SVN-Poppins';
    src: url('fonts/SVN-Poppins/SVN-PoppinsSemiBoldItalic.eot');
    src: url('fonts/SVN-Poppins/SVN-PoppinsSemiBoldItalic.eot?#iefix') format('embedded-opentype'), url('fonts/SVN-Poppins/SVN-PoppinsSemiBoldItalic.woff2') format('woff2'), url('fonts/SVN-Poppins/SVN-PoppinsSemiBoldItalic.woff') format('woff'), url('fonts/SVN-Poppins/SVN-PoppinsSemiBoldItalic.ttf') format('truetype'), url('fonts/SVN-Poppins/SVN-PoppinsSemiBoldItalic.svg#SVN-PoppinsSemiBoldItalic') format('svg');
    font-weight: 600;
    font-style: italic;
    font-display: swap;
}

:root {
    --ueh-red: #e61017;
    --ueh-gold-alpha: #69460082;
}

.hidden {
    display: none !important;
}

button.btn-round {
    padding: 5px 20px;
    border-radius: 5px;
    font-size: 20px;
    border: none;
}

body {
    background-color: #fcfcfc;
    font-family: 'SVN-Poppins', sans-serif;
}

/* Header Styles */
.custom-header {
    background-color: #ffffff;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
    padding: 10px 0;
    position: sticky;
    top: 0;
    z-index: 1000;
}

.header-logos img {
    height: 60px;
    object-fit: contain;
    margin-right: 15px;
}

.btn-login {
    background-color: var(--ueh-red);
    color: white;
    border-radius: 25px;
    padding: 8px 25px;
    font-weight: 600;
    transition: all 0.3s;
}

    .btn-login:hover {
        background-color: #b30c11;
        color: white;
        transform: translateY(-2px);
    }

/* CSS cho các link trên Header */
.header-link {
    color: #444;
    font-weight: 600;
    text-decoration: none;
    font-size: 1rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: color 0.3s ease;
}

    .header-link:hover {
        color: var(--ueh-red);
        /* Đổi sang màu đỏ UEH khi hover */
    }

/* Banner */
.main-banner {
    width: 100%;
    height: auto;
    border-bottom: 5px solid var(--ueh-red);
}

/* Vòng tròn đếm số lượng lời chúc */
/* ========================================= */
/* CSS CHO BỘ ĐẾM SỐ LƯỢNG LỜI CHÚC          */
/* ========================================= */

.wish-counter-wrapper {
    margin: 2rem auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.wish-counter-circle {
    /* Tăng kích thước quả cầu to hơn hẳn */
    width: 250px;
    height: 250px;
    background: linear-gradient(135deg, #e61017, #cc0e14);
    /* Đổ bóng đỏ nhẹ tạo chiều sâu */
    border: 6px solid #fff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    /* Hiệu ứng phát sáng mặc định */
    box-shadow: 0 0 20px rgba(230, 16, 23, 0.5), inset 0 0 15px rgba(0, 0, 0, 0.1);
    /* Gọi animation nhịp đập */
    animation: pulseGlow 2s infinite alternate ease-in-out;
    z-index: 1;
}

    /* Hiệu ứng sóng lan tỏa (Ripple) để tạo độ "Lung linh" */
    .wish-counter-circle::before {
        content: '';
        position: absolute;
        top: -6px;
        right: -6px;
        bottom: -6px;
        left: -6px;
        /* Bám sát viền trắng */
        border-radius: 50%;
        border: 2px solid rgba(230, 16, 23, 0.6);
        z-index: -1;
        /* Gọi animation sóng tỏa ra */
        animation: rippleRing 2s infinite ease-out;
    }

#total-wishes-count {
    color: #fff;
    /* Phóng to font chữ */
    font-size: 3rem;
    font-weight: 900;
    /* Đổ bóng chữ để số nổi bật lên trên nền đỏ */
    text-shadow: 2px 3px 5px rgba(0, 0, 0, 0.3);
    line-height: 1;
    letter-spacing: 1px;
    margin-bottom: 0;
}

.wish-counter-label {
    margin-top: 50px;
    font-size: 1.8rem;
    font-weight: 800;
    color: #444;
    text-transform: uppercase;
    letter-spacing: 1.5px;
}

/* ================== KEYFRAMES ================== */

/* Animation: Nhịp đập hào quang */
@keyframes pulseGlow {
    0% {
        box-shadow: 0 0 15px rgba(230, 16, 23, 0.4);
        transform: scale(1);
    }

    100% {
        /* Sáng rực lên và to ra 3% */
        box-shadow: 0 0 40px rgba(230, 16, 23, 0.8), 0 0 15px rgba(255, 255, 255, 0.6);
        transform: scale(1.03);
    }
}

/* Animation: Sóng đỏ tỏa ra xung quanh */
@keyframes rippleRing {
    0% {
        transform: scale(1);
        opacity: 0.8;
    }

    100% {
        /* Lan rộng ra 1.4 lần và mờ dần */
        transform: scale(1.4);
        opacity: 0;
    }
}


/* Nav Tabs */
.nav-pills .nav-link {
    background-color: #e5ded082;
    color: #555;
    font-weight: bold;
    border-radius: 30px;
    padding: 10px 30px;
    margin: 0 5px;
    transition: all 0.3s;
}

    .nav-pills .nav-link.active {
        background-color: var(--ueh-red);
        color: white;
        box-shadow: 0 4px 10px rgba(230, 16, 23, 0.4);
    }

/* Mô tả tab - tiêu đề ngắn căn giữa */
.tab-desc-title {
    text-align: center;
    font-size: 1.15rem;
    font-weight: 600;
    font-style: italic;
    color: #444;
    margin: 0 auto 1.5rem;
}

/* Mô tả tab - card dài có thể mở rộng */
.tab-desc-box {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    background: linear-gradient(135deg, rgba(230,16,23,0.04), rgba(255,215,0,0.05));
    border-left: 3px solid var(--ueh-red);
    border-radius: 0 8px 8px 0;
    padding: 0.85rem 1.25rem;
    margin: 0 auto 1.5rem;
    max-width: 860px;
    color: #555;
    font-style: italic;
    font-size: 0.93rem;
    line-height: 1.75;
}

.tab-desc-icon {
    color: var(--ueh-red);
    opacity: 0.45;
    font-size: 1.1rem;
    margin-top: 3px;
    flex-shrink: 0;
}

.tab-desc-body {
    flex: 1;
}

.tab-desc-collapsible .tab-desc-content {
    max-height: 3.3em;
    overflow: hidden;
    transition: max-height 0.4s ease;
}

.tab-desc-collapsible.expanded .tab-desc-content {
    max-height: 500px;
}

.tab-desc-toggle {
    background: none;
    border: none;
    color: var(--ueh-red);
    font-style: normal;
    font-size: 0.82rem;
    cursor: pointer;
    padding: 5px 0 0;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: opacity 0.2s;
}

    .tab-desc-toggle:hover {
        opacity: 0.7;
    }

/* Cấu trúc Ảnh Lời Chúc (Vuông) */
ul.list-congratulations {
    list-style: none;
    padding: 0;
    margin: 0;
}

ul.list-congratulations {
    padding: 10px;
    max-height: 888px;
    overflow-y: auto;
}

    ul.list-congratulations li {
        margin-bottom: 20px;
    }

        ul.list-congratulations li .cr-detail-box img {
            width: 100%;
            border-radius: 25px;
            border: 1px solid var(--ueh-red);
            position: absolute;
            top: 0;
            left: 0;
            z-index: 1;
        }

/* Custom scrollbar styles */
.custom-scrollbar::-webkit-scrollbar {
    width: 5px;
    /* Adjust width of the scrollbar */
}

.custom-scrollbar::-webkit-scrollbar-track {
    background: #f1f1f1;
    /* Track color */
}

.custom-scrollbar::-webkit-scrollbar-thumb {
    background: #888;
    /* Handle color */
}

    .custom-scrollbar::-webkit-scrollbar-thumb:hover {
        background: #555;
        /* Handle color on hover */
    }

.slide-in {
    animation: slideIn 1s ease-out forwards;
}

.slide-up {
    animation: slideOut 1s ease-in forwards;
}

/* Lời chúc của người đang login trong cluster modal */
.cluster-my-wish {
    box-shadow: 0 0 0 3px #ffd700, 0 8px 24px rgba(255, 215, 0, 0.35) !important;
}

.cluster-my-badge {
    position: absolute;
    z-index: 2;
    right: 1px;
    top: 1px;
    background: #ffd700;
    color: #333;
    padding: 6px 10px;
    font-size: 11px;
    font-weight: 700;
    border-top-right-radius: 20px;
    border-bottom-left-radius: 20px;
}

/* Modal lời chúc theo cụm */
#lst_cluster_wishes .cr-detail-box img {
    border: 1px solid var(--ueh-red);
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
    border-radius: 25px;
}

.cluster-modal-content {
    background: #fff;
    color: #333;
}

.cluster-modal-header {
    border-bottom: 1px solid #dee2e6;
}

.cluster-wish-item {
    aspect-ratio: 1;
    overflow: hidden;
    border-radius: 6px;
    cursor: pointer;
    background: #111;
}

    .cluster-wish-item img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform 0.25s;
        display: block;
    }

    .cluster-wish-item:hover img {
        transform: scale(1.06);
    }

/* Nút Fullscreen */
.fullscreen-btn {
    position: absolute;
    top: 15px;
    right: 15px;
    background: rgba(0, 0, 0, 0.3);
    border: 2px solid rgba(255, 255, 255, 0.4);
    color: #fff;
    border-radius: 8px;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 20;
    transition: all 0.3s ease;
}

    .fullscreen-btn:hover {
        background: rgba(255, 255, 255, 0.3);
        transform: scale(1.1);
        border-color: #fff;
    }

/* ========================================= */
/* CSS GIAO DIỆN POPUP ẢNH CHUẨN KÍCH THƯỚC  */
/* ========================================= */
#tree-wish-display {
    position: absolute !important;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.65);
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
    z-index: 50;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 30px;
    box-sizing: border-box;
}

/* Thẻ bọc ôm sát rịt vào bức ảnh */
.wish-popup-content {
    position: relative;
    display: inline-block;
    margin: 0 auto;
}

    .wish-popup-content img {
        display: block;
        max-width: 100%;
        /* CỐT LÕI: Ép ảnh lùn hơn Canvas (600px) để không bị tràn */
        max-height: 500px;
        width: auto;
        height: auto;
        border-radius: 15px;
        box-shadow: 0 15px 50px rgba(0, 0, 0, 0.8);
        border: none !important;
    }

/* KHI VÀO FULLSCREEN: Tự động cho phép ảnh cao lên 85% màn hình */
#tree-container.is-fullscreen .wish-popup-content img {
    max-height: 85vh;
}

/* Nút đóng Popup FontAwesome */
.close-popup-btn {
    position: absolute;
    top: -15px;
    right: -15px;
    /* Ghìm chặt vào góc thẻ bọc */
    background: #222;
    color: #fff;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    cursor: pointer;
    z-index: 60;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.5);
    border: 2px solid #fff;
    pointer-events: auto;
    transition: all 0.3s ease;
}

    .close-popup-btn:hover {
        background: var(--ueh-red);
        border-color: #fff;
        transform: scale(1.15);
    }

.cr-detail-box {
    position: relative;
    width: 100%;
    aspect-ratio: 1 / 1;
    border-radius: 25px;
    overflow: hidden;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.06);
    transition: all 0.5s cubic-bezier(0.25, 0.8, 0.25, 1);
    background: #fff;
    margin-bottom: 24px;
    z-index: 1;
}

    .cr-detail-box:hover {
        transform: translateY(-10px) scale(1.03);
        box-shadow: 0 20px 40px rgba(230, 16, 23, 0.25), 0 10px 15px rgba(0, 0, 0, 0.1);
        z-index: 10;
    }

    .cr-detail-box::before {
        content: "";
        position: absolute;
        top: 0;
        left: -100%;
        width: 50%;
        height: 100%;
        background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0) 100%);
        transform: skewX(-25deg);
        transition: all 0.75s ease;
        z-index: 2;
        pointer-events: none;
    }

    .cr-detail-box:hover::before {
        left: 125%;
    }

    .cr-detail-box img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform 0.6s ease;
    }

    .cr-detail-box:hover img {
        transform: scale(1.1);
    }

    .cr-detail-box span {
        position: absolute;
        z-index: 2;
        right: 1px;
        top: 1px;
        background: var(--ueh-red);
        padding: 6px 10px;
        color: #fff;
        font-size: 11px;
        border: 1px solid var(--ueh-red);
        border-top-right-radius: 20px;
        border-bottom-left-radius: 20px;
        transition: all 0.4s ease;
    }

    .cr-detail-box:hover span {
        transform: translateY(-3px);
    }

@keyframes slideInFade {
    from {
        opacity: 0;
        transform: translateY(-30px) scale(0.95);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.slide-in {
    animation: slideInFade 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

/* Khung mặc định */
.canvas-container {
    width: 100%;
    height: 600px;
    border-radius: 20px;
    overflow: hidden;
    background-color: #000;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
    position: relative;
}

    /* KHẮC PHỤC LỖI VIỀN ĐEN KHI FULLSCREEN TRÊN PC */
    .canvas-container:fullscreen,
    .canvas-container:-webkit-full-screen,
    .canvas-container:-moz-full-screen {
        width: 100vw !important;
        height: 100vh !important;
        border-radius: 0 !important;
        /* Xóa bo góc khi phóng to toàn màn hình */
        margin: 0 !important;
    }

/* Popup hiển thị Card Ảnh lời chúc trong cây 3D */
#tree-wish-display {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: transparent;
    padding: 0;
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
    max-width: 90%;
    max-height: 85vh;
    z-index: 10;
    display: flex;
    justify-content: center;
    align-items: center;
}

    #tree-wish-display img {
        border-radius: 20px;
        object-fit: contain;
        box-shadow: 0 15px 40px rgba(0, 0, 0, 0.6);
    }

/* ==========================================================================
   Footer
   ========================================================================== */

footer {
    position: relative;
    overflow: hidden;
    background-image: url('../images/footer_background.png');
    background-size: cover;
    background-position: center;
}

.footer-main {
    max-width: 1400px;
    margin: 0 auto;
    padding: 60px 20px 0px;
}

.footer-top {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: flex-start;
    gap: 48px;
    margin-bottom: 30px;
}

.footer-logo {
    display: flex;
    align-items: center;
    gap: 20px;
}

    .footer-logo img {
        height: 60px;
        width: auto;

        @media (width >=40rem) {
            height: 80px;
        }
    }

.footer-title {
    font-size: clamp(24px, 1.5vw, 28px);
    font-weight: 400;
    color: #000;
    width: fit-content;
    padding-bottom: 8px;
    margin: 0 0 50px 0;
    border-bottom: 1px solid #333;
}

.footer-contact {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 15px;
    font-size: 16px;
    color: #333;
}

.footer-dot {
    font-size: 10px;
    color: #999;
}

.footer-links {
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
    font-size: 14px;
}

    .footer-links a {
        color: #333;
        text-decoration: none;
        transition: color 0.3s ease;
    }

        .footer-links a:hover {
            color: #e61017;
        }

.footer-social {
    display: flex;
    gap: 15px;
    align-items: flex-start;
}

    .footer-social a {
        color: #000;
        font-size: 24px;
        transition: color 0.3s ease;
    }

        .footer-social a:hover {
            color: #e61017;
        }

.footer-bottom {
    text-align: center;
    padding: 20px 0;
}

.footer-copyright {
    font-size: 16px;
    color: #666;
    margin: 0 0 10px 0;
    font-weight: 700;
}

.footer-divider {
    width: 120px;
    height: 12px;
    background-color: #bda47b;
    margin: 0 auto 30px;
}

.footer-illustration {
    position: relative;
    width: 100%;
    margin-top: -6rem;
    overflow: hidden;
}

    .footer-illustration img {
        width: 100%;
        height: 100%;
        margin-bottom: -45px;
    }

/* Kế hoạch B cho điện thoại (Đặc biệt là iOS Safari) không hỗ trợ Fullscreen */
.mobile-fullscreen {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    z-index: 9999 !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: 0 !important;
    background-color: #000 !important;
}

/* ==========================================================================
   Responsive Styles
   ========================================================================== */

@media (max-width: 1024px) {

    .footer-top {
        grid-template-columns: 1fr;
        gap: 30px;
    }

    .footer-social {
        justify-content: center;
    }
}

@media (max-width: 768px) {

    .title {
        padding: 10px 30px;
    }

    .footer-main {
        padding: 30px 20px 0px;
    }

    .footer-logo {
        flex-direction: row;
        align-items: center;
    }

    .footer-title {
        font-size: 20px;
        margin-bottom: 30px;
    }

    .footer-contact {
        gap: 10px;
        font-size: 14px;
    }

    .footer-illustration img {
        margin-bottom: 0px;
    }

    .footer-copyright {
        font-size: 14px;
    }

    .footer-illustration {
        margin-top: -3rem;
    }

    .footer-bottom {
        padding: 0;
    }

    .footer-links {
        flex-direction: row;
        align-items: center;
    }
}

/*Review image*/
.main-content img.img-render {
    width: 100%;
    margin-top: 50px;
    border-radius: 25px;
    border: 2px solid #ffd200;
}

/* Chữ LETTER TO FUTURE GENERATIONS */

div.main-content .chatbox {
    padding: 50px 0px 30px 0px;
}

    div.main-content .chatbox .chatbox-title {
        color: #f26f33;
        text-align: center;
        text-transform: uppercase;
    }


    /* Hình tam giác */
    div.main-content .chatbox .triangle-box {
        position: relative;
        left: 50%;
        transform: translateX(-50%);
        width: 100px;
        display: inline-block;
        height: 77px;
        cursor: pointer;
        margin-top: 50px;
    }

        div.main-content .chatbox .triangle-box .arrow-down {
            width: 0;
            height: 0;
            border-left: 50px solid transparent;
            border-right: 50px solid transparent;
        }

        div.main-content .chatbox .triangle-box .top-triangle {
            border-top: 50px solid rgba(0, 95, 105, 0.7);
            position: absolute;
            z-index: 1;
        }

        div.main-content .chatbox .triangle-box .bottom-triangle {
            border-top: 50px solid rgba(0, 95, 105, 1);
            position: absolute;
            z-index: 2;
            top: 24px;
        }

    /* Nội dung chính chatbox */

    div.main-content .chatbox .chatbox-content {
        width: 90%;
    }

        div.main-content .chatbox .chatbox-content .left-chatbox-content {
            margin-bottom: 30px;
        }

.center-elements {
    display: flex;
    justify-content: center;
}

/* ==========================================
           CSS CHO TRANG TẠO LỜI CHÚC
           ========================================== */

/* 1. KHUNG PREVIEW ẢNH (Hình vuông 1:1) */
.wish-preview-box {
    position: relative;
    width: 100%;
    max-width: 450px;
    aspect-ratio: 1 / 1;
    /* Ép tỷ lệ vuông */
    border-radius: 16px;
    overflow: hidden;
    background-color: #f8f9fa;
}

/* Lớp 1: Ảnh người dùng tải lên (nằm dưới) */
#preview-uploaded-img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    /* Cắt ảnh lấp đầy khung */
    z-index: 1;
}

/* Lớp 2: Khung PNG trong suốt của UEH (nằm trên) */
#preview-frame-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    z-index: 2;
    pointer-events: none;
    /* Không bắt sự kiện click */
}

/* Lớp 3: Chữ hiện lên ảnh (Căn chỉnh theo thiết kế mẫu của bạn) */
.preview-text-layer {
    position: absolute;
    bottom: 10%;
    /* Nằm ở nửa dưới bức ảnh */
    left: 0;
    width: 100%;
    text-align: center;
    z-index: 3;
    padding: 0 20px;
}

.text-wish-name {
    color: #be0008;
    /* Vàng kim */
    font-weight: bold;
    font-size: 1.2rem;
    margin-top: 5px;
}

.text-wish-content {
    color: #3a3a3a;
    font-size: 0.95rem;
    font-weight: 500;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* 2. TEXTAREA KẺ SỌC (Giống giấy vở) */
.ruled-textarea {
    resize: none;
    background-color: transparent;
    /* Phép thuật tạo dòng kẻ ngang */
    background-image: repeating-linear-gradient(transparent, transparent 31px, #d1d5db 31px, #d1d5db 32px);
    line-height: 32px;
    /* Phải khớp với khoảng cách kẻ sọc (32px) */
    padding: 4px 10px;
    font-size: 1.1rem;
    color: #333;
}

    .ruled-textarea:focus {
        box-shadow: none;
        /* Bỏ viền xanh mặc định của Bootstrap */
        outline: none;
    }

div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box {
    width: 480px;
    height: 480px;
    position: relative;
}

    div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box img.image-background {
        width: 450px;
        height: 450px;
        border-radius: 25px;
        position: absolute;
        top: 0;
        left: 0;
        z-index: 2;
        border: 2px solid #ffd200;
    }

    div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box img.image-overview {
        width: 324px;
        height: 239px;
        position: absolute;
        top: 53px;
        left: 63px;
        z-index: 1;
    }

    div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box p.text-description {
        position: absolute;
        top: 300px;
        left: 0px;
        z-index: 3;
        font-size: 14px;
        line-height: 1.3;
        width: 450px;
        padding: 0px 39px;
        color: #3a3a3a;
        text-align: center;
        word-wrap: break-word;
    }

    div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box .student-info {
        position: absolute;
        top: 363px;
        left: 0px;
        z-index: 3;
        width: 450px;
        text-align: center;
        padding: 0px 10px;
        color: #be0008;
    }

        div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box .student-info span.mssv {
            font-size: 13px;
            display: block;
            font-weight: 400;
            margin-top: 5px;
        }

        div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box .student-info span.student-name {
            font-size: 15px;
            display: block;
            font-weight: 600;
        }

div.main-content .chatbox .chatbox-content .left-chatbox-content .btn-upload {
    background: var(--ueh-red);
    cursor: pointer;
    color: #fff;
    margin-top: 20px;
    margin-left: -30px;
}

    div.main-content .chatbox .chatbox-content .left-chatbox-content .btn-upload:hover {
        background: #bd252a;
    }

div.main-content .btn-create {
    background: var(--ueh-red);
    cursor: pointer;
    color: #fff;
}

    div.main-content .btn-create:hover {
        background: #bd252a;
    }

div.main-content .btn-back {
    background: #7a7674;
    cursor: pointer;
    color: #fff;
}

    div.main-content .btn-back:hover {
        background: var(--ueh-red);
    }

.email-box {
    width: 90%;
    margin: 0 auto;
    max-width: 800px;
    min-width: 220px;
}

/* Viết lời chúc */
.paper {
    position: relative;
    width: 90%;
    max-width: 800px;
    min-width: 220px;
    height: 375px;
    margin: 0 auto;
    background: #fafafa;
    border-radius: 10px;
    overflow: hidden;
    border: 2px solid var(--ueh-red);
}

.fullname-box {
    width: 90%;
    max-width: 800px;
    min-width: 220px;
    margin: 0 auto;
}

.doi-tuong-chip {
    border: 1.5px solid var(--ueh-red);
    color: var(--ueh-red);
    border-radius: 20px;
    padding: 5px 16px;
    font-size: 0.88rem;
    background: white;
    transition: background 0.18s, color 0.18s;
    line-height: 1.4;
}

    .doi-tuong-chip.active,
    .doi-tuong-chip:hover {
        background: var(--ueh-red);
        color: white;
    }

    .doi-tuong-chip:focus {
        outline: none;
        box-shadow: 0 0 0 2px rgba(230, 16, 23, 0.18);
    }

.paper:before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 60px;
    background-size: 30px 30px;
    box-sizing: border-box;
}

#input-name {
    box-shadow: none;
    background: none;
    border-bottom: 1px solid var(--ueh-red) !important;
}

.paper-content {
    position: absolute;
    top: 0px;
    right: 0;
    bottom: 0px;
    left: 0px;
    background: linear-gradient(transparent, transparent 29px, #000 29px);
    background-size: 30px 30px;
    margin: 26px;
}

    .paper-content textarea {
        width: 100%;
        max-width: 100%;
        height: 100%;
        max-height: 100%;
        line-height: 30px;
        padding: 0 10px;
        border: 0;
        outline: 0;
        background: transparent;
        color: #3a3a3a;
        font-size: 18px;
        box-sizing: border-box;
        z-index: 1;
        resize: none;
    }


@media only screen and (max-width: 480px) {
    div.main-content .chatbox .chatbox-content {
        width: 100%;
        padding: 0px 10px;
    }

        div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box {
            width: 350px;
            height: 350px;
        }

            div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box img.image-background {
                width: 350px;
                height: 350px;
            }

            div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box img.image-overview {
                width: 252px;
                height: 184px;
                top: 42px;
                left: 48px;
            }

            div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box p.text-description {
                width: 350px;
                top: 238px;
                font-size: 10px;
                line-height: 1.3;
            }

            div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box .student-info {
                position: absolute;
                top: 288px;
                left: 0px;
                z-index: 3;
                width: 350px;
                text-align: center;
                padding: 0px 10px;
                color: #ffd200;
            }

                div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box .student-info span.mssv {
                    font-size: 10px;
                    display: block;
                }

                div.main-content .chatbox .chatbox-content .left-chatbox-content .image-ov-box .student-info span.student-name {
                    font-size: 11px;
                    display: block;
                }
}

@media only screen and (max-width: 569px) {
    .main-content .congratulation-content .gr-header h3 {
        font-size: 22px;
    }

    .main-content .btn-create-mobile {
        display: inline-block;
    }

    .main-content .congratulation-content .cr-content-detail .btn-create-box {
        display: none;
    }

    div.main-content .chatbox .chatbox-content {
        margin-top: 80px;
    }

    div.main-content .chatbox .chatbox-title {
        font-size: 30px;
    }
}


@media only screen and (max-width: 382px) {

    div.main-content .btn-back,
    div.main-content .btn-create {
        font-size: 15px;
    }
}

@media (max-width: 767px) {
    .main-content .congratulation-content .cr-content-detail ul.list-congratulations li .cr-detail-box {
        width: 100% !important;
        height: auto !important;
    }

        .main-content .congratulation-content .cr-content-detail ul.list-congratulations li .cr-detail-box img {
            position: relative !important;
        }
}

gmp-place-autocomplete {
    width: 100%;
}

    gmp-place-autocomplete input {
        width: 100% !important;
        height: calc(1.5em + 1rem + 2px) !important; /* form-control-lg */
        padding: 0.5rem 1rem !important;
        font-size: 1.25rem !important;
        border-radius: 0.5rem !important;
        border: 1px solid #ced4da !important;
    }

@media only screen and (max-width: 480px) {
    div.main-content .chatbox .chatbox-content .left-chatbox-content .btn-upload {
        margin-left: 0px;
    }
}
