html,
body {
    margin: 0;
    height: 100%;
    font-family: Arial, sans-serif;
}

:root {
    --main-color: var(--main-color);
    --main-color: #c69863;
}
a {
    text-decoration: none;
}
.icon-home svg {
    height: 32px !important;
    width: 32px !important;
}
.icon-home svg g path {
    fill: var(--main-color) !important;
}
.app {
    display: flex;
    height: 100vh;
}

.sidebar {
    width: 320px;
    border-right: 1px solid #ddd;
    display: flex;
    flex-direction: column;
}

.sidebar input {
    padding: 10px;
    border: none;
    border-bottom: 1px solid #ddd;
    font-size: 14px;
}

#locateBtn {
    margin: 8px;
    padding: 8px;
    cursor: pointer;
    background: #1a73e8;
    color: white;
    border: none;
    border-radius: 6px;
    font-size: 14px;
}

.category-filter,
.radius-filter {
    display: flex;
    gap: 4px;
    padding: 8px;
    flex-wrap: wrap;
}

.category-filter button,
.radius-filter button {
    flex: 1 1 30%;
    padding: 6px;
    border: none;
    cursor: pointer;
    border-radius: 6px;
    font-size: 13px;
    background: #f0f0f0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.category-filter button.active,
.radius-filter button.active {
    background: #1a73e8;
    color: white;
}

#placeList {
    overflow-y: auto;
    overflow-x: hidden;
    flex: 1;
}

.place-item {
    display: flex;
    border-left: 5px solid transparent;
    gap: 8px;
    padding: 8px;
    cursor: pointer;
    border-bottom: 1px solid #eee;
}
.place-item:hover {
    background: #f3f2f2;
}

.place-item img {
    width: 70px;
    height: 60px;
    object-fit: cover;
    border-radius: 6px;
}

.place-item h4 {
    margin: 0;
    font-size: 14px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.place-item span {
    font-size: 12px;
    color: #666;
}

#map {
    flex: 1;
    height: 100vh;
}

/* Popup */
.map-popup {
    width: 220px;
}

.map-popup img {
    width: 100%;
    height: 120px;
    object-fit: cover;
    border-radius: 6px;
}

.map-popup h4 {
    margin: 6px 0;
    font-size: 14px;
}

.map-popup a {
    display: block;
    margin-top: 6px;
    background: #1a73e8;
    color: white;
    text-align: center;
    padding: 6px;
    border-radius: 6px;
    text-decoration: none;
}

/* Modal */
.modal {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .4);
}

.modal-content {
    background: white;
    width: 300px;
    margin: 100px auto;
    padding: 20px;
    border-radius: 8px;
}

.close {
    float: right;
    cursor: pointer;
}

/* Custom Popup Style */
.vietmapgl-popup {
    z-index: 1000;
}

.vietmapgl-popup-content {
    padding: 0;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);
    border: none;
}

.map-popup img {
    width: 100%;
    height: 120px;
    object-fit: cover;
    display: block;
}

.map-popup-info {
    padding: 12px;
}

.map-popup-info h4 {
    margin: 0 0 5px 0;
    font-size: 15px;
    color: #333;
}

.map-popup-info p {
    margin: 0;
    font-size: 13px;
    color: #666;
}

.map-popup-info a {
    display: inline-block;
    margin-top: 8px;
    color: #007bff;
    text-decoration: none;
    font-weight: bold;
    font-size: 13px;
}

/* Hiệu ứng nhấp nháy cho vị trí người dùng */
/* .user-location-marker {
    width: 15px;
    height: 15px;
    background-color: #007bff;
    border: 2px solid #fff;
    border-radius: 50%;
    position: relative;
    box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
} */

.user-location-marker::after {
    content: "";
    width: 15px;
    height: 15px;
    background-color: #007bff;
    border-radius: 50%;
    position: absolute;
    top: 20px;
    left: 5px;
    z-index: -1;
    animation: pulse 2s infinite;
}

@keyframes pulse {
    0% {
        transform: scale(1);
        opacity: 0.8;
    }

    100% {
        transform: scale(4);
        opacity: 0;
    }
}
/* Sidebar: Hiệu ứng Blur và Active */
#placeList {
    transition: all 0.3s ease;
}

/* #placeList.has-active .place-item:not(.active) {
    filter: blur(2px);
    opacity: 0.5;
} */

.place-item.active {
    background: rgba(220, 38, 38, 0.35);
    background-color: #f0f7ff;
    transform: scale(1.02);
    filter: none !important;
    opacity: 1 !important;
}

/* Marker: Hiệu ứng Pulse cho địa điểm được chọn */



/* Tái sử dụng keyframe pulse đã có ở vị trí hiện tại */


/* Badge VIP */
.place-img-container {
    position: relative;
    width: 80px;
    height: 80px;
}


/* Layout item */
.place-item {
    display: flex;
    gap: 12px;
    padding: 12px;
    border-bottom: 1px solid #eee;
}

.place-info {
    flex: 1;
}

.place-actions {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}

/* Buttons */
.btn-booking,
.btn-contact {
    padding: 4px 8px;
    border: none;
    border-radius: 4px;
    font-size: 11px;
    cursor: pointer;
    font-weight: bold;
}

.btn-booking {
    background: #007bff;
    color: #fff;
}

.btn-contact {
    background: #28a745;
    color: #fff;
}

/* Highlight VIP item */
.place-item.is-vip {
    background: #fffcf0;
}

/* --- MAP MARKERS --- */
/* Sửa lỗi dải trắng bằng cách ép width: fit-content */
.price-marker {
    display: flex !important;
    align-items: center;
    gap: 6px;
    background-color: white;
    border: 2px solid #ccc;
    border-radius: 20px;
    padding: 4px 12px;
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25);
    cursor: pointer;
    transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    white-space: nowrap;
    position: relative;
    width: fit-content !important;
    height: auto !important;
}

.price-marker span {
    font-size: 13px;
    font-weight: 800;
    color: #333;
}

/* Mũi tên nhỏ dưới marker */
.price-marker::after {
    content: "";
    position: absolute;
    bottom: -7px;
    left: 50%;
    transform: translateX(-50%);
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-top: 7px solid white;
}

/* Khi được chọn (Active) */
.price-marker.active-marker {
    transform: scale(1.15) translateY(-5px);
    z-index: 1000 !important;
    color: white !important;
}

.price-marker.active-marker span {
    color: white !important;
}

.price-marker.active-marker::after {
    border-top-color: inherit;
}

/* --- SIDEBAR & LAYOUT --- */
/* #placeList.has-active .place-item:not(.active) {
    filter: blur(1.5px);
    opacity: 0.6;
} */

.place-item {
    display: flex;
    gap: 12px;
    padding: 15px;
    border-bottom: 1px solid #f0f0f0;
    cursor: pointer;
    transition: background 0.3s;
}

.place-item.active {
    background: #f0f7ff;
    border-left: 4px solid #007bff;
}



.price-marker {
    display: inline-flex !important;
    align-items: center;
    gap: 4px;
    background-color: white;
    border: 1.5px solid #ccc;
    border-radius: 20px;
    padding: 4px 10px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
    cursor: pointer;
    white-space: nowrap;
    width: fit-content !important;
}

/* Chấm xanh vị trí người dùng */
/* .user-location-marker {
    width: 15px;
    height: 15px;
    background: #4285F4;
    border: 3px solid white;
    border-radius: 50%;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
} */

/* Badge VIP cho sidebar */
/* Badge VIP với hiệu ứng Shine */
.vip-badge {
    position: absolute;
    top: 10px;
    left: 10px;
    background: linear-gradient(45deg, #FFD700, #FFA500, #FFD700);
    background-size: 200% auto;
    color: #fff;
    padding: 1px;
    border-radius: 2px;
    font-size: 11px;
    font-weight: 800;
    display: flex;
    align-items: center;
    gap: 4px;
    box-shadow: 0 4px 15px rgba(255, 165, 0, 0.4);
    z-index: 2;
    text-transform: uppercase;
    overflow: hidden;
    /* Quan trọng để cắt hiệu ứng lướt sáng */
    border: 1px solid rgba(255, 255, 255, 0.5);
    animation: vipPulse 2s infinite;
    /* Hiệu ứng nhịp đập */
}

/* Tạo dải sáng lướt qua */
.vip-badge::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.8) 50%,
            rgba(255, 255, 255, 0) 100%);
    transform: skewX(-25deg);
    animation: shine 3s infinite;
}

/* Animation nhịp đập nhẹ */
/* @keyframes vipPulse {
    0% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.05);
    }

    100% {
        transform: scale(1);
    }
} */
  .place-info .meta {
    font-size: 12px;
    gap: 3px;
    display: flex;
    align-items: center;
  }
 .place-info .meta span {
    font-size: 14px;
    color: unset;
 }
.custom-marker .material-symbols-outlined {
    font-variation-settings: 'FILL' 1;
}
/* Animation dải sáng chạy qua */
@keyframes shine {
    0% {
        left: -100%;
    }

    20% {
        left: 150%;
    }

    100% {
        left: 150%;
    }
}

/* Hiệu ứng viền vàng cho item VIP trong danh sách */
.place-item.is-vip {
    position: relative;
    background: linear-gradient(to right, #ffffff, #fffdf0) !important;
}

.vip-badge .material-symbols-outlined {
    font-size: 14px;
    color: #fff !important;
    /* Icon vương miện nhỏ */
    font-variation-settings: 'FILL' 1;
    /* Tô đặc icon */
}

/* Hiệu ứng lấp lánh nhẹ cho VIP */
.is-vip {

    background: #fffdf0 !important;
}


/* --- MAP MARKERS --- */
/* Marker hình giọt nước chứa icon */
.custom-marker {

    transform: rotate(-45deg);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.3);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    width: fit-content !important;
    padding: 3px 5px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, .25) !important;
    border-radius: 6px;
    /* Sửa lỗi dải trắng */
}

.custom-marker .material-symbols-outlined {
    font-size: 16px;
    margin-right: 3px;
}


/* Khi được chọn (Active) */
.custom-marker.active-marker {
    transform: rotate(-45deg) scale(1.2) translateY(-5px);
    z-index: 1000 !important;
}

/* --- DETAIL MODAL (Google Maps Style) --- */


.detail-content {
    position: fixed;
    z-index: 99;
    bottom: 0;
    background-color: white;
    width: 100%;
    max-width: 550px;
    height: calc(100vh - 20px);
    border-radius: 10px;
    overflow-y: auto;
    left: 330px;
    top: 65px;
    bottom: 10px;
    box-shadow: 0 6px 16px rgba(0, 0, 0, .35);
    animation: slideUp 0.4s ease-out;
}

@keyframes slideUp {
    from {
        bottom: -100%;
    }

    to {
        bottom: 0;
    }
}

.close-modal {
    position: absolute;
    right: 20px;
    top: 15px;
    font-size: 35px;
    color: white;
    text-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
    cursor: pointer;
    z-index: 100;
}

.detail-banner {
    width: 100%;
    height: 280px;
    object-fit: cover;
}

.detail-info-wrapper {
    padding: 25px;
}

.detail-actions {
    display: flex;
    gap: 15px;
    margin: 20px 0;
}

.btn-action {
    flex: 1;
    padding: 12px;
    border-radius: 12px;
    border: 1px solid #eee;
    background: #f8f9fa;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    font-size: 13px;
}

.btn-action i {
    font-size: 20px;
    margin-bottom: 5px;
    color: #1a73e8;
}

/* --- SIDEBAR ACTIVE --- */
.place-item.active {
    background: linear-gradient(to top, #fff, #eedc62) !important;
    border: 1px solid #d7ca74;
    transform: scale(1);
}

/* Ép Marker luôn nhận sự kiện click */
.custom-marker {
    pointer-events: auto !important;
    cursor: pointer !important;
    z-index: 10;
}

/* Đảm bảo modal không che khuất khi đang ẩn */
.detail-modal {
    display: none;
    /* Phải là none khi không dùng, nếu để opacity:0 sẽ bị cản click */
}



/* .vietmapgl-marker::before,
.vietmapgl-marker::after {
    display: none !important;
} */

.vietmapgl-marker .custom-marker {

    background: #fff;
    border: 3px solid currentColor;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    cursor: pointer;
    border-radius: 10px;
}

/* icon svg */
.vietmapgl-marker .custom-marker img {
    width: 22px;
    height: 22px;
    display: block;
    pointer-events: none;
}

/* active */
.vietmapgl-marker .custom-marker.active-marker {
    transform: scale(1.15);
    box-shadow: 0 6px 16px rgba(0, 0, 0, .35);
}

.vietmapgl-marker .custom-marker {
    position: relative;
    z-index: 2;
}

/* vòng lan toả */
.vietmapgl-marker .custom-marker.active-marker::after {
    content: "";
    position: absolute;
    inset: -8px;
    border-radius: 50%;
    display: block !important;
    background: rgba(220, 38, 38, 0.35);
    /* đỏ */
    animation: markerPulse 1.6s ease-out infinite;
    z-index: -1;
}

/* animation */
@keyframes markerPulse {
    0% {
        transform: scale(0.6);
        opacity: 0.8;
    }

    70% {
        transform: scale(1.6);
        opacity: 0;
    }

    100% {
        opacity: 0;
    }
}

/* Tắt animation khi map đang drag */
.map-dragging .custom-marker.active-marker::after {
    animation: none !important;
    opacity: 0 !important;
}

/* marker gốc */
.vietmapgl-marker .custom-marker {
    position: relative;
    width: 44px;
    height: 44px;
    background: #fff;
    border-radius: 50%;
    border: 3px solid currentColor;
    display: flex;
    align-items: center;
    isolation: isolate;
    justify-content: center;
    cursor: pointer;
}
.custom-marker::before {
    content: "";
    position: absolute;
    bottom: -3px;
    left: 50%;
    transform: translateX(-50%) rotate(45deg);
    width: 8px;
    height: 8px;
    background: var(--marker-color, #4285f4);
    border-radius: 0 0 4px 0;
    z-index: 1;
}
/* icon */
.vietmapgl-marker .custom-marker img {
    width: 20px;
    height: 20px;
    pointer-events: none;
}

/* giá tiền */
.vietmapgl-marker .marker-price {
    color: #fff;
    font-size: 10px;
    padding-right: 5px;
    font-weight: 700;
    white-space: nowrap;
  
    pointer-events: none;
}

/* active */
.vietmapgl-marker.custom-marker.active-marker {
    transform: scale(1.15);
    z-index: 999;
}

/* pulse vẫn giữ */
.vietmapgl-marker.custom-marker.active-marker::after {
    content: "";
    position: absolute;
    inset: -8px;
    border-radius: 50%;
    background: currentColor;
    opacity: .35;
    animation: markerPulse 1.6s ease-out infinite;
    z-index: 1;
}

.category-filter {
    display: flex;
    gap: 10px;
    position: fixed;
    top: 10px;
    flex-wrap: nowrap;
    left: 330px;
    z-index: 999;
    overflow-x: auto;
}

.category-filter button {
    display: inline-flex;
    flex: unset;
    align-items: center;
    gap: 3px;
    padding: 5px 10px;
    backdrop-filter: blur(12px);
    border-radius: 999px;
    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.08);
    background: #fff;
    font-size: 13px;
    cursor: pointer;
    background: rgba(255, 255, 255, 0.5);
    white-space: nowrap;
    transition: all .2s ease;
}

.detail-modal .meta {
    display: flex;
    align-items: center;
    gap: 5px;
}
.category-filter button .material-symbols-outlined {
    font-size: 18px;
}
/* icon */
.category-filter .cat-icon {
    width: 16px;
    height: 16px;
    display: block;
}

/* active */
.category-filter button.active {
    background: var(--marker-color, #e53935);
    color: #fff;
    border-color: transparent;
}

.place-item img {
    height: 100%;
    width: 100%;
    object-fit: cover;
}
.place-item .primary-btn {
    height: 26px;
    font-size: 12px;
    padding-left: 10px;
    padding-right: 10px;
    background: #e53935;
    display: inline-flex;
    align-items: center;
    color: #fff;
    border-radius: 6px;
}
.place-item .second-btn {
    height: 26px;
    font-size: 12px;
    padding-left: 10px;
    padding-right: 10px;
    background: #ffc107;
    display: inline-flex;
    align-items: center;
    color: #fff;
    border-radius: 6px;
}
.place-item .place-info {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.vietmapgl-popup-tip {
    display: none !important;
}
/* icon trắng khi active */


.ratting .place-rating-box{
    display: flex;
    align-items: center;
    gap: 5px;
}
.ratting .stars-row {
    display: flex;
    gap: 5px;

    align-items: center;
}
.place-rating {
    font-size: 12px;
    color: #fbbc05;
}

.stars .material-symbols-outlined {
    font-size: 18px;
    color: #ccc;
}

.stars .active {
    color: #fbbc05;
}

.rating-distribution {
    margin-top: 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    font-size: 13px;
    color: #333;
}

.rating-row {
    display: grid;
    grid-template-columns: 24px 1fr 40px;
    align-items: center;
    gap: 8px;
}

.star-label {
    text-align: right;
    font-weight: 600;
    color: #666;
}

.star-label::after {
    content: "★";
    font-size: 10px;
    margin-left: 2px;
    color: #fbbc04;
}

.bar {
    position: relative;
    height: 8px;
    background: #eee;
    border-radius: 6px;
    overflow: hidden;
}

.bar-fill {
    height: 100%;
    background: linear-gradient(90deg,
            #fbbc04,
            #f29900);
    border-radius: 6px;
    transition: width 0.4s ease;
}

.count {
    text-align: right;
    font-size: 12px;
    color: #777;
}

.rating-row {
    display: flex;
    align-items: center;
    margin-bottom: 4px;
    font-size: 12px;
}



.bar {
    flex: 1;
    height: 8px;
    background: #eee;
    margin: 0 10px;
    border-radius: 4px;
    overflow: hidden;
}

.bar-fill {
    height: 100%;
    background: #ffc107;
}

.count {
    width: 20px;
    text-align: right;
}

.rating-avg {
    font-size: 32px;
    font-weight: bold;
    color: #333;
}

/* Form đánh giá */
.add-review-form {
    margin-top: 25px;
    padding: 15px;
    background: #f9f9f9;
    border-radius: 8px;
}

.rating-input {
    margin: 10px 0;
    font-size: 20px;
    cursor: pointer;
    color: #ccc;
}

.rating-input .star.active {
    color: #ffc107;
}

.review-textarea {
    width: 100%;
    height: 80px;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 5px;
    resize: none;
}

.image-upload-wrapper {
    margin: 10px 0;
}

#imagePreview {
    display: flex;
    gap: 10px;
    margin-top: 10px;
    flex-wrap: wrap;
}

.preview-img {
    width: 60px;
    height: 60px;
    object-fit: cover;
    border-radius: 4px;
}

.btn-submit-review {
    background: #28a745;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    width: 100%;
}

.btn-login {
    background: #007bff;
    color: white;
    border: none;
    padding: 8px 16px;
    border-radius: 4px;
    cursor: pointer;
    margin-top: 10px;
}

.add-review-form h3 {
    font-size: 16px;
    margin-bottom: 10px;
    color: #444;
}
.star-rating-wrapper {
    display: flex;
    align-items: center;
    gap: 2px;
    color: #ccc;
    /* Màu mặc định cho sao trống */
    font-size: 16px;
}

.star-icon.full {
    color: #ffc107;
    /* Vàng chuẩn Google/TripAdvisor */
}

.star-icon.partial {
    position: relative;
    display: inline-block;
}

.star-icon.partial::before {
    content: "★";
    position: absolute;
    left: 0;
    top: 0;
    width: var(--percent);
    overflow: hidden;
    color: #ffc107;
}

.place-rating {
    display: flex;
    flex-direction: column;
    /* Để sao ở trên, số ở dưới hoặc cạnh nhau */
    gap: 2px;
    margin-top: 5px;
}

.rating-number {
    font-weight: bold;
    color: #444;
    font-size: 13px;
    margin-left: 5px;
}

.review-count {
    color: #888;
    font-size: 11px;
}

.place-item .top {
    display: flex;
    gap: 10px;
    margin-bottom: 10px;
}

.amenities-list {
    list-style: none;
    padding: 0;
    margin: 10px 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    /* Chia làm 2 cột cho gọn */
    gap: 8px;
}

.amenities-list li {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #555;
}

.amenities-list li .material-symbols-outlined {
    font-size: 18px;
    color: #28a745;
    /* Màu xanh lá cho icon tiện ích */
}

.user-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #eee;
}

.user-info {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}

.open-status {
    font-size: 11px;
    padding: 2px 6px;
    border-radius: 4px;
    font-weight: bold;
    margin-left: 8px;
}

/* Đang mở cửa */
.status-open {
    background-color: #e8f5e9;
    color: #2e7d32;
    border: 1px solid #c8e6c9;
}

/* Sắp đóng cửa (Cảnh báo) */
.status-warning {
    background-color: #fff3e0;
    color: #ef6c00;
    border: 1px solid #ffe0b2;
    animation: blinkStatus 1.5s infinite;
    /* Nhấp nháy nhẹ để chú ý */
}

/* Đã đóng cửa */
.status-closed {
    background-color: #ffeef0;
    color: #d32f2f;
    border: 1px solid #ffcdd2;
}

@keyframes blinkStatus {
    0% {
        opacity: 1;
    }

    50% {
        opacity: 0.6;
    }

    100% {
        opacity: 1;
    }
}

.review-section h3 {
    margin-bottom: 20px;
    font-size: 18px;
    border-bottom: 2px solid #f0f0f0;
    padding-bottom: 10px;
}

.review-item {
    margin-bottom: 25px;
    padding-bottom: 15px;
    border-bottom: 1px solid #eee;
}

.review-user-box {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
}

.review-avatar {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    object-fit: cover;
    background: #f0f0f0;
}

.review-user-info {
    display: flex;
    flex-direction: column;
}

.review-user {
    font-weight: bold;
    color: #333;
    margin-right: 8px;
}

.review-date {
    color: #888;
    font-size: 12px;
}

.review-content {
    padding-left: 57px;
    /* Căn lề thẳng với tên user, dưới avatar */
}

.review-text {
    margin: 0;
    line-height: 1.5;
    color: #444;
}

.review-imgs {
    display: flex;
    gap: 8px;
    margin-top: 10px;
}

.review-photo {
    width: 80px;
    height: 80px;
    object-fit: cover;
    border-radius: 6px;
    cursor: pointer;
    transition: transform 0.2s;
}

.review-photo:hover {
    transform: scale(1.05);
}

.status-group {
    display: flex;
    gap: 8px;
    margin-bottom: 8px;
    flex-wrap: wrap;
}

.status-badge {
    font-size: 11px;
    padding: 3px 10px;
    border-radius: 20px;
    /* Bo tròn kiểu viên thuốc nhìn hiện đại hơn */
    font-weight: 600;
}

/* Đang mở: Xanh lá */
.status-open {
    background: #e8f5e9;
    color: #1b5e20;
    border: 1px solid #c8e6c9;
}

/* Luôn mở: Xanh dương */
.status-always {
    background: #e3f2fd;
    color: #0d47a1;
    border: 1px solid #bbdefb;
}

/* Đã đóng: Đỏ (hiện rõ giờ để khách quay lại) */
.status-closed {
    background: #fbe9e7;
    color: #b71c1c;
    border: 1px solid #ffccbc;
}

/* Sắp đóng: Cam */
.status-warning {
    background: #fff3e0;
    color: #e65100;
    border: 1px solid #ffe0b2;
}

/* Trạng thái phòng: Tím */
.status-room-ok {
    background: #f3e5f5;
    color: #4a148c;
    border: 1px solid #e1bee7;
}

.status-room-full {
    background: #f5f5f5;
    color: #616161;
    border: 1px solid #e0e0e0;
    opacity: 0.5;
    cursor: not-allowed;
}

/* Xám */


/* Tùy chỉnh giao diện cuộn Rolldate */
.rolldate-container {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

.rolldate-header {
    background-color: #f8f8f8 !important;
    color: #007aff !important;
    /* Màu xanh đặc trưng iOS */
}

.rolldate-content {
    background-color: #ffffff !important;
}

.rolldate-mask {
    background: linear-gradient(to bottom, #fff 0%, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0) 60%, #fff 100%) !important;
}

.rolldate-wrapper {
    border-top: 1px solid #eee;
    border-bottom: 1px solid #eee;
}

/* Fix lỗi input readonly không bị xám */
#datePicker,
#timePicker {
    background-color: #fff;
    cursor: pointer;
    caret-color: transparent;
    /* Ẩn con trỏ nhập liệu */
}

/* Nút bấm nổi bật */
.btn-booking {
    display: flex;
    align-items: center;
    gap: 8px;
    background: #ff5722;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 8px;
    font-weight: bold;
    cursor: pointer;
    width: 100%;
    margin: 20px auto;
    flex: 1;
    justify-content: center;
}

.btn-hotel {
    background: #2196f3;
}

/* Màu xanh cho khách sạn */
.btn-restaurant {
    background: #4caf50;
}

/* Màu xanh lá cho nhà hàng */

/* Modal Overlay */
.modal-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    z-index: 9999;
    justify-content: center;
    align-items: center;
}
.rolldate-container .fadeIn {
    box-shadow: 0 6px 16px rgba(0, 0, 0, .35);
    z-index: 9999;
}
.booking-content {
    background: white;
    width: 90%;
    max-width: 400px;
    border-radius: 15px;
    padding: 20px;
    animation: slideUp 0.3s ease-out;
}

.booking-form .form-group {
    margin-bottom: 15px;
}

.booking-form label {
    display: block;
    font-size: 13px;
    margin-bottom: 5px;
    color: #666;
}

.booking-form input {
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    box-sizing: border-box;
}

.btn-confirm-booking {
    width: 100%;
    padding: 12px;
    background: #333;
    color: white;
    border: none;
    border-radius: 8px;
    font-weight: bold;
    margin-top: 10px;
    cursor: pointer;
}
/* Giao diện Picker kiểu iPhone thuần CSS */
/* Khung nền mờ phía sau */
.time-picker-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    z-index: 10000;
    align-items: flex-end;
}

/* Khung chứa vòng quay */
.time-picker-container {
    background: white;
    width: 100%;
    border-radius: 20px 20px 0 0;
    padding-bottom: env(safe-area-inset-bottom);
    /* Hỗ trợ iPhone đời mới */
    animation: slideUp 0.3s ease-out;
}

.time-picker-header {
    display: flex;
    justify-content: space-between;
    padding: 15px 20px;
    border-bottom: 1px solid #eee;
    font-family: sans-serif;
}

.time-picker-wheels {
    display: flex;
    height: 200px;
    position: relative;
    background: #fff;
    overflow: hidden;
}

/* Thước ngắm nằm giữa */
.time-picker-selection {
    position: absolute;
    top: 80px;
    height: 40px;
    width: 100%;
    border-top: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
    pointer-events: none;
    z-index: 10;
}

.wheel-col {
    flex: 1;
    overflow-y: scroll;
    scroll-snap-type: y mandatory;
    height: 100%;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.wheel-col::-webkit-scrollbar {
    display: none;
}

.wheel-col div {
    height: 40px;
    line-height: 40px;
    text-align: center;
    font-size: 20px;
    scroll-snap-align: center;
    color: #333;
}

@keyframes slideUp {
    from {
        transform: translateY(100%);
    }

    to {
        transform: translateY(0);
    }
}

@keyframes slideUp {
    from {
        transform: translateY(100%);
    }

    to {
        transform: translateY(0);
    }
}

.wheel-col {
    flex: 1;
    overflow-y: scroll;
    scroll-snap-type: y mandatory;
    /* Quan trọng để Mac/iPhone hít đúng số */
    height: 100%;
    scrollbar-width: none;
    -ms-overflow-style: none;
    cursor: ns-resize;
}

.wheel-col::-webkit-scrollbar {
    display: none;
    /* Ẩn thanh cuộn để giống iPhone */
}

.wheel-col div {
    height: 40px;
    /* Chiều cao cố định ITEM_HEIGHT */
    line-height: 40px;
    text-align: center;
    font-size: 22px;
    scroll-snap-align: center;
    /* Hít phần tử vào giữa thước ngắm */
    color: #333;
    user-select: none;
}

/* Container chính cho vòng quay */
.time-picker-wheels {
    display: flex;
    height: 220px;
    /* Tăng nhẹ chiều cao để hiệu ứng 3D rõ hơn */
    position: relative;
    background: #ffffff;
    overflow: hidden;
    /* Hiệu ứng mờ dần cực mạnh ở 2 đầu */
    -webkit-mask-image: linear-gradient(to bottom,
            transparent 0%,
            black 45%,
            black 55%,
            transparent 100%);
    mask-image: linear-gradient(to bottom,
            transparent 0%,
            black 45%,
            black 55%,
            transparent 100%);
}

/* Cột chứa số */
.wheel-col {
    flex: 1;
    overflow-y: scroll;
    scroll-snap-type: y mandatory;
    height: 100%;
    scrollbar-width: none;
    perspective: 1000px;
    /* Tạo độ sâu 3D */
}

.wheel-col::-webkit-scrollbar {
    display: none;
}

/* Từng con số */
.wheel-col div {
    height: 44px;
    /* Khớp với thước ngắm */
    line-height: 44px;
    text-align: center;
    font-size: 22px;
    font-weight: 500;
    color: #888;
    /* Mặc định các số khác sẽ mờ (màu xám) */
    scroll-snap-align: center;
    transition: all 0.2s ease-out;
    transform: rotateX(0deg);
    /* Sẽ được điều chỉnh để cong hơn nếu muốn */
}

/* Thước ngắm cố định ở giữa (iOS Style) */
.time-picker-selection {
    position: absolute;
    top: 88px;
    /* (220px / 2) - (44px / 2) */
    height: 44px;
    width: 90%;
    left: 5%;
    border-top: 0.5px solid rgba(0, 0, 0, 0.1);
    border-bottom: 0.5px solid rgba(0, 0, 0, 0.1);
    background: rgba(0, 0, 0, 0.03);
    /* Highlight nhẹ vùng chọn */
    pointer-events: none;
    z-index: 10;
    border-radius: 8px;
}

.time-picker-wheels {
    display: flex;
    height: 200px;
    /* Chiều cao tổng */
    position: relative;
    background: #fff;
    overflow: hidden;
}

.wheel-col {
    flex: 1;
    overflow-y: scroll;
    scroll-snap-type: y mandatory;
    height: 100%;
    scrollbar-width: none;
    -ms-overflow-style: none;
    /* Loại bỏ padding mặc định nếu có */
    padding: 0;
}

.wheel-col::-webkit-scrollbar {
    display: none;
}

.wheel-col div {
    height: 40px;
    /* Chiều cao cố định */
    line-height: 40px;
    text-align: center;
    font-size: 24px;
    cursor: pointer;
    user-select: none;
    scroll-snap-align: center;
    font-weight: 500 !important;
    transition: transform 0.1s ease-out, opacity 0.1s ease-out;
    color: #333;
    /* Đảm bảo transform diễn ra từ tâm */
    transform-origin: center center;
}

/* Thước ngắm cố định */
.time-picker-selection {
    position: absolute;
    top: 80px;
    /* (200 - 40) / 2 */
    height: 40px;
    width: 100%;
    border-top: 1px solid rgba(0, 0, 0, 0.1);
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
    pointer-events: none;
    z-index: 10;
}

.time-picker-wheels {
    display: flex;
    height: 200px;
    /* Chiều cao cố định */
    background: #fff;
    position: relative;
    overflow: hidden;
}

.wheel-col {
    flex: 1;
    height: 100%;
    overflow-y: scroll;
    scroll-snap-type: y mandatory;
    scrollbar-width: none;
    position: relative;
}

/* Ẩn scrollbar */
.wheel-col::-webkit-scrollbar {
    display: none;
}

/* Quan trọng: Tạo khoảng trống ở trên và dưới bằng phần tử giả */
.wheel-col::before,
.wheel-col::after {
    content: "";
    display: block;
    height: 80px;
    /* (200px chiều cao khung - 40px chiều cao số) / 2 */
    flex-shrink: 0;
}

.wheel-col div {
    height: 40px !important;
    line-height: 40px !important;
    scroll-snap-align: center;
    text-align: center;
    font-size: 20px;
    cursor: pointer;
    box-sizing: border-box;
}

/* Thước ngắm cố định */
.time-picker-selection {
    position: absolute;
    top: 80px;
    height: 40px;
    width: 100%;
    border-top: 1px solid rgba(0, 0, 0, 0.1);
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
    background: rgba(0, 0, 0, 0.02);
    pointer-events: none;
    z-index: 5;
}

.booking-content {
    position: relative;
    box-shadow: 0 6px 16px rgba(0, 0, 0, .35);
}

.booking-header .close-booking {
    position: absolute;
    top: -10px;
    right: -10px;
    border-radius: 50%;
    height: 24px;
    width: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    cursor: pointer;
    border: 1px solid #b71c1c;
    background: #b71c1c;
    color: #fff;
}

.search-box {
    position: relative;
}

.search-suggest {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .15);
    display: none;
    z-index: 999;
    overflow: hidden;
}

.search-suggest .item {
    padding: 12px 16px;
    cursor: pointer;
    font-size: 14px;
}

.search-suggest .item:hover {
    background: #f5f5f5;
}

.search-item {
    padding: 10px;
    border-bottom: 1px solid #eee;
    cursor: pointer;
}

.search-item.vip {
    background: #fff8e1;
}

.search-item strong {
    color: #d32f2f;
}

.search-box {
    text-align: center;
    display: flex;
    padding-left: 5px;
    position: relative;
    margin-bottom: 10px;
    padding-right: 10px;
    align-items: center;
    justify-content: space-between;
}
.search-box input {
    width: calc(100% - 40px);
    border-radius: 9999px;
    margin-bottom: 10px;
    margin-left: auto;
    margin-top: 20px;
    margin-right: auto;
    margin-bottom: 0;
    border: 1px solid #ddd;
}
.search-box button {
    display: flex;
    height: 38px;
    width: 38px;
    margin-top: 20px;
    align-items: center;
    background: transparent;
    border: 0;
    cursor: pointer;
}

.search-suggest {
    position: absolute;
    background: #fff;
    width: 100%;
    max-height: 300px;
    overflow-y: auto;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .12);
    border-radius: 8px;
    z-index: 999;
    display: none;
}

.suggest-item {
    padding: 10px 14px;
    cursor: pointer;
    display: flex;
    align-items: center;
    font-size: 14px;
    color: #555;
    gap: 5px;

}
.suggest-item .material-symbols-outlined {
    font-size: 20px;
}

.suggest-item:hover {
    background: #f5f5f5;
}

.suggest-vip {
    color: #FFD700;
    font-size: 14px;
}

/* .voice-btn.listening {
    animation: pulse 1.4s infinite;
}
.voice-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .45);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 9999;
}

.voice-box {
    background: #fff;
    padding: 24px 32px;
    border-radius: 20px;
    text-align: center;
}

.voice-wave {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 6px;
    height: 50px;
    margin-bottom: 12px;
}

.voice-wave span {
    width: 6px;
    height: 12px;
    background: #4285f4;
    border-radius: 4px;
    animation: wave 1.2s infinite ease-in-out;
}

.voice-wave span:nth-child(1) {
    animation-delay: 0s
}

.voice-wave span:nth-child(2) {
    animation-delay: .1s
}

.voice-wave span:nth-child(3) {
    animation-delay: .2s
}

.voice-wave span:nth-child(4) {
    animation-delay: .3s
}

.voice-wave span:nth-child(5) {
    animation-delay: .4s
}

.voice-wave span:nth-child(6) {
    animation-delay: .3s
}

.voice-wave span:nth-child(7) {
    animation-delay: .2s
}

.voice-wave span:nth-child(8) {
    animation-delay: .1s
}

.voice-wave span:nth-child(9) {
    animation-delay: 0s
}

@keyframes wave {

    0%,
    100% {
        height: 12px
    }

    50% {
        height: 46px
    }
}

.hidden {
    display: none;
} */


.bottom-nav {
    z-index: 99;
    position: fixed;
    bottom: 0;
    left: 50%;
    transform: translate(-50%);
    width: 100%;
    background: #fff;
    display: none;
    justify-content: space-around;
    align-items: flex-end;
    box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.0784313725);
}

@media (max-width: 996px) {
    .bottom-nav {
        display: flex;
        padding: 8px 0;
        bottom: -1px;
    }
}

.bottom-nav .nav-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    cursor: pointer;
    padding: 3px 8px;
    transition: all 0.2s;
    flex: 1;
    position: relative;
}

.bottom-nav .nav-item:not(.nav-center).active::before {
    content: "";
    position: absolute;
    top: -8px;
    left: 50%;
    transform: translate(-50%);
    width: 67px;
    height: 3px;
    background: var(--main-color);
    border-radius: 0 0 3px 3px;
}

.bottom-nav .nav-item.nav-center {
    margin-top: -25px;
}

.bottom-nav .nav-item.nav-center .nav-icon {
    width: 50px;
    height: 48px;
    background: #fff;
    border-radius: 50%;
    font-size: 32px;
    color: var(--main-color);
}

.bottom-nav .nav-item .nav-icon {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    color: #888;
    transition: all 0.3s;
}

.bottom-nav .nav-item .nav-text {
    font-size: 11px;
    font-weight: 400;
    color: #888;
    transition: all 0.2s;
    white-space: nowrap;
}

@media (max-width:996px) {
    .sidebar {
        display: none;
    }

    .category-filter {
        left: 0;
    }

    .detail-content {
        width: calc(100% - 20px);
        left: 10px;
        right: 10px;
        z-index: 9999;
    }
    .detail-info-wrapper {
        padding: 25px;
        padding-bottom: 75px;
    }
    .detail-info-wrapper   .detail-title  {
        margin-top: 0;
    }
}