body {
    background-color: #fdfbf7;
    overflow: hidden; 
}

.bg-pattern {
    position: fixed;
    inset: 0;
    background-image: url('https://inuvdp.com/wp-content/uploads/2024/04/chim-lac-vector-3.jpg');
    background-size: 300px;
    opacity: 0.02; 
    filter: grayscale(100%); 
    mix-blend-mode: multiply;
    z-index: -2;
    pointer-events: none;
}

.bg-star {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 80vh;
    height: 80vh;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpolygon fill='%23ffcd00' points='50,5 61,38 95,38 68,59 78,92 50,71 22,92 32,59 5,38 39,38'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.04;
    z-index: -1;
    pointer-events: none;
}

.modal-header-pattern {
    background-image: url('https://inuvdp.com/wp-content/uploads/2024/04/chim-lac-vector-3.jpg');
    background-size: 160px;
    opacity: 0.15;
    mix-blend-mode: multiply;
    filter: grayscale(100%) contrast(150%);
}

.bubble-node {
    cursor: pointer;
    transition: filter 0.3s ease;
}

.bubble-node:hover {
    filter: drop-shadow(0 15px 25px rgba(0,0,0,0.25));
}

.modal-overlay {
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
    backdrop-filter: blur(5px);
}
.modal-overlay.active {
    opacity: 1;
    visibility: visible;
}
.modal-content {
    transform: scale(0.95) translateY(20px);
    opacity: 0;
    transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    max-height: 95vh;
}
.modal-overlay.active .modal-content {
    transform: scale(1) translateY(0);
    opacity: 1;
}

.region-label {
    font-family: 'Be Vietnam Pro', sans-serif;
    pointer-events: none;
    letter-spacing: 2px;
}
.region-label-bg {
    font-family: 'Be Vietnam Pro', sans-serif;
    pointer-events: none;
    letter-spacing: 2px;
}
.bubble-node circle.bg {
    transition: all 0.3s;
}

.hull-path {
    filter: drop-shadow(0px 0px 6px rgba(255, 255, 255, 0.9));
}