.modal-overlay { transition: opacity 0.3s ease; }

/* Price Badge Marker */
.price-badge { display: inline-flex; align-items: center; gap: 3px; background: white; border: 1.5px solid #d1d5db; border-radius: 9999px; padding: 4px 8px 4px 6px; box-shadow: 0 1px 5px rgba(0,0,0,0.15); white-space: nowrap; cursor: pointer; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; transition: background 0.15s, border-color 0.15s; }
.price-badge:hover, .price-badge.active { background: #2563eb; border-color: #2563eb; }
.price-badge .badge-emoji { font-size: 13px; line-height: 1; }
.price-badge .badge-name { font-size: 11px; font-weight: 600; color: #374151; }
.price-badge .badge-price { font-size: 11px; font-weight: 700; color: #ef4444; }
.price-badge:hover .badge-name, .price-badge.active .badge-name { color: white; }
.price-badge:hover .badge-price, .price-badge.active .badge-price { color: rgba(255,255,255,0.9); }

#search-results-list:empty { display: none; }

/* Stacked / Merged Marker — 동일 좌표 복수 식당 */
.stacked-marker-wrap { position: relative; display: inline-block; }
.stacked-marker-wrap::before { content: ''; position: absolute; inset: 0; transform: translate(3px, 3px); background: white; border: 1.5px solid #d1d5db; border-radius: 9999px; z-index: 1; }
.stacked-marker-wrap::after  { content: ''; position: absolute; inset: 0; transform: translate(5px, 5px); background: #f3f4f6; border: 1.5px solid #e5e7eb; border-radius: 9999px; z-index: 0; }
.price-badge.stacked-marker { position: relative; z-index: 2; }
.badge-stack-count { display: inline-flex; align-items: center; justify-content: center; background: #ef4444; color: white; font-size: 9px; font-weight: 800; border-radius: 9999px; padding: 1px 5px; min-width: 16px; line-height: 1.4; margin-left: 2px; }

.fav-btn { cursor: pointer; background: none; border: none; padding: 0; font-size: 18px; line-height: 1; color: #d1d5db; transition: color 0.2s, transform 0.15s; will-change: transform; }
.fav-btn.favorited { color: #ef4444; }

@keyframes heart-pop { 0% { transform: scale(1); } 50% { transform: scale(1.35); } 100% { transform: scale(1); } }
.fav-btn.pop { animation: heart-pop 0.2s ease-out forwards; }

.toast-popup { position: fixed; bottom: 2rem; left: 50%; transform: translateX(-50%) translateY(80px); background: #1f2937; color: white; padding: 0.75rem 1.5rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 500; z-index: 9999; transition: transform 0.3s ease, opacity 0.3s ease; opacity: 0; white-space: nowrap; box-shadow: 0 4px 12px rgba(0,0,0,0.35); pointer-events: none; }
.toast-popup.show { transform: translateX(-50%) translateY(0); opacity: 1; }

/* Chat Modal animation */
#chat-modal { transition: transform 0.3s cubic-bezier(0.4,0,0.2,1), opacity 0.2s ease; }

/* TUI Editor toolbar overflow fix inside modal */
.toastui-editor-toolbar { flex-wrap: wrap; }
.toastui-editor-defaultUI { border-radius: 0.75rem; overflow: hidden; }

/* Dual price range slider */
.dual-range-input {
    -webkit-appearance: none; appearance: none;
    position: absolute; top: 50%; left: 0;
    width: 100%; height: 4px;
    background: transparent; outline: none;
    pointer-events: none; transform: translateY(-50%);
    margin: 0; padding: 0;
}
.dual-range-input::-webkit-slider-thumb {
    -webkit-appearance: none; pointer-events: auto;
    width: 14px; height: 14px; border-radius: 50%;
    background: var(--thumb-color, #3b82f6); cursor: pointer;
    border: 2px solid #fff;
    box-shadow: 0 0 0 1.5px var(--thumb-color, #3b82f6), 0 1px 4px rgba(0,0,0,.2);
}
.dual-range-input::-moz-range-thumb {
    pointer-events: auto; width: 14px; height: 14px; border-radius: 50%;
    background: var(--thumb-color, #3b82f6); cursor: pointer; border: 2px solid #fff;
    box-shadow: 0 0 0 1.5px var(--thumb-color, #3b82f6), 0 1px 4px rgba(0,0,0,.2);
}

/* 스크롤바 숨김 유틸 */
.hide-scrollbar::-webkit-scrollbar { display: none; }
.hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }

/* Speed Dial submenu — Tailwind utility classes toggled by JS */
#speed-dial-submenu {
    transform-origin: bottom center;
}

/* Sidebar / Bottom Sheet: CSS-driven responsive positioning */
#sidebar { transition: height 0.3s cubic-bezier(0.4,0,0.2,1), transform 0.3s cubic-bezier(0.4,0,0.2,1); }
@media (max-width: 767px) {
    #sidebar {
        position: fixed;
        inset-x: 0;
        bottom: 0;
        z-index: 2000;
        height: 65px;
        border-radius: 1.5rem 1.5rem 0 0;
        box-shadow: 0 -4px 6px -1px rgba(0,0,0,0.1);
    }
    #sidebar.bs-expanded { height: 85vh; }
    #sidebar-restaurant-list { overscroll-behavior: contain; }
}
@media (min-width: 768px) {
    #sidebar {
        position: fixed;
        top: 1rem;
        left: 0;
        height: calc(100vh - 2rem);
        width: 20rem;
        border-radius: 0;
        box-shadow: 4px 0 16px rgba(0,0,0,0.08);
    }
    #sidebar.desktop-closed { transform: translateX(-100%); }
}
