/* ══════════════════════════════════════════════════════
 *  place/map.php 전용 스타일
 *  /place/css/place-map.css
 *  ※ 원본 인라인 규칙 그대로 이관 (시각 동일성 우선)
 * ══════════════════════════════════════════════════════ */

        * { margin:0; padding:0; box-sizing:border-box; }
        html, body {
            width:100%; height:100%;
            overflow:hidden;
            font-family:-apple-system,BlinkMacSystemFont,'Pretendard','Noto Sans KR',sans-serif;
        }

        /* ══ 전체화면 지도 ══ */
        #mapWrap {
            position:absolute; top:0; left:0; right:0; bottom:0;
            z-index:1;
        }
        #kakaoMapWrap, #naverMapWrap {
            width:100%; height:100%;
            position:absolute; top:0; left:0;
        }

        /* ══ 로드뷰 ══ */
        #roadviewWrap {
            position:absolute; top:0; left:0; right:0; bottom:0;
            z-index:80;
            display:none;
            background:#1a1a2e;
        }
        #roadviewWrap.active { display:block; }
        #roadviewContainer {
            width:100%; height:100%;
        }
        .rv-close-btn {
            position:absolute; top:16px; left:50%; transform:translateX(-50%);
            z-index:85;
            display:flex; align-items:center; gap:6px;
            padding:10px 20px;
            background:rgba(0,0,0,.7); color:var(--paper);
            border:none; border-radius:24px;
            font-size:var(--fs-13); font-weight:600;
            cursor:pointer; transition:background .2s;
            backdrop-filter:blur(4px);
        }
        .rv-close-btn:hover { background:rgba(0,0,0,.85); }
        .rv-close-btn svg { flex-shrink:0; }

        /* 로드뷰 내 미니맵 */
        #rvMiniMap {
            position:absolute; bottom:24px; right:24px;
            width:200px; height:150px;
            border-radius:12px;
            box-shadow:0 4px 16px rgba(0,0,0,.4);
            border:3px solid var(--paper);
            z-index:85;
            overflow:hidden;
        }
        @media (max-width:768px) {
            #rvMiniMap {
                width:140px; height:105px;
                bottom:16px; right:16px;
                border-radius:8px;
            }
            .rv-close-btn {
                top:12px; padding:8px 16px; font-size:var(--fs-12);
            }
        }

        /* 로드뷰 토글 활성화 — 아래 .map-ctrl-btn 뒤에서 재정의 */

        /* ══ 좌측 사이드 패널 (PC) ══ */
        .side-panel {
            position:absolute; top:0; left:0; bottom:0;
            width:400px; z-index:100;
            background:var(--paper);
            box-shadow:4px 0 20px rgba(0,0,0,.1);
            display:flex; flex-direction:column;
            transition:transform .3s ease;
        }
        .side-panel.collapsed { transform:translateX(-400px); }

        /* 패널 토글 버튼 */
        .panel-toggle {
            position:absolute; top:50%; right:-32px;
            transform:translateY(-50%);
            width:32px; height:64px;
            background:var(--paper); border:none;
            border-radius:0 10px 10px 0;
            box-shadow:4px 2px 10px rgba(0,0,0,.1);
            cursor:pointer; z-index:101;
            display:flex; align-items:center; justify-content:center;
            color:var(--ink-60);
            transition:all .2s;
        }
        .panel-toggle:hover { background:var(--ink-10); color:var(--ink-70); }
        .panel-toggle svg { width:16px; height:16px; transition:transform .3s; }
        .side-panel.collapsed .panel-toggle svg { transform:rotate(180deg); }

        /* 패널 헤더 */
        .panel-header {
            padding:16px 16px 0;
            border-bottom:1px solid var(--ink-10);
            flex-shrink:0;
        }
        .panel-top-bar {
            display:flex; align-items:center; gap:10px; margin-bottom:12px;
        }
        .panel-back {
            width:36px; height:36px; border:none; background:none;
            cursor:pointer; display:flex; align-items:center; justify-content:center;
            color:var(--ink-70); border-radius:8px; flex-shrink:0;
        }
        .panel-back:hover { background:var(--ink-10); }
        .panel-search {
            flex:1; position:relative;
        }
        .panel-search input {
            width:100%; padding:9px 36px 9px 14px;
            border:1.5px solid var(--border-input); border-radius:10px;
            font-size:var(--fs-14); color:var(--ink);
            background:var(--ink-05); outline:none;
            transition:border-color .2s;
        }
        .panel-search input:focus { border-color:#6366f1; background:var(--paper); }
        .panel-search input::placeholder { color:var(--ink-hint); }
        .panel-search-btn {
            position:absolute; right:4px; top:50%; transform:translateY(-50%);
            width:30px; height:30px; border:none; background:var(--terracotta);
            border-radius:8px; cursor:pointer;
            display:flex; align-items:center; justify-content:center;
        }
        .panel-search-btn svg { width:16px; height:16px; color:var(--paper); }

        /* 카테고리 필터 칩 */
        .filter-chips-wrap {
            position:relative;
        }
        .filter-chips {
            display:flex; gap:6px; padding:10px 0;
            overflow-x:auto;
            -webkit-overflow-scrolling:touch;
            scrollbar-width:none;
        }
        .filter-chips::-webkit-scrollbar { display:none; }
        .f-chip {
            flex-shrink:0; padding:6px 14px;
            font-size:var(--fs-12); font-weight:600;
            border:1px solid var(--ink-15); border-radius:20px;
            background:var(--paper); color:var(--ink-60);
            cursor:pointer; transition:all .2s;
            white-space:nowrap;
        }
        .f-chip.active { background:var(--terracotta); color:var(--paper); border-color:var(--terracotta); }
        .f-chip:hover:not(.active) { border-color:#a5b4fc; color:var(--terracotta); }

        /* 필터 좌우 스크롤 버튼 (PC) */
        .filter-scroll-btn {
            display:none; position:absolute; top:50%; transform:translateY(-50%);
            width:28px; height:28px; border-radius:50%;
            background:rgba(255,255,255,.95); border:1px solid var(--ink-15);
            box-shadow:0 2px 6px rgba(0,0,0,.1);
            cursor:pointer; z-index:5;
            align-items:center; justify-content:center;
            transition:opacity .2s, box-shadow .2s;
        }
        .filter-scroll-btn:hover { box-shadow:0 2px 10px rgba(0,0,0,.18); border-color:#a5b4fc; }
        .filter-scroll-btn svg { width:14px; height:14px; color:var(--terracotta); }
        .filter-scroll-btn.show { display:flex; }
        .filter-scroll-left { left:-2px; }
        .filter-scroll-right { right:-2px; }

        /* 결과 서브바 */
        .result-bar {
            display:flex; align-items:center; justify-content:space-between;
            padding:10px 16px 8px;
            border-bottom:1px solid var(--ink-10);
            flex-shrink:0;
        }
        .result-count { font-size:var(--fs-13); font-weight:600; color:var(--ink-70); }
        .result-count em { font-style:normal; color:var(--terracotta); }
        .result-sort {
            padding:5px 10px; font-size:var(--fs-12);
            border:1px solid var(--ink-15); border-radius:8px;
            background:var(--paper); color:var(--ink-70); cursor:pointer;
        }

        /* 업체 목록 */
        .place-list {
            flex:1; overflow-y:auto; overflow-x:hidden;
            -webkit-overflow-scrolling:touch;
        }
        .place-list::-webkit-scrollbar { width:4px; }
        .place-list::-webkit-scrollbar-thumb { background:var(--ink-30); border-radius:4px; }

        .place-card {
            display:flex; gap:12px;
            padding:14px 16px;
            border-bottom:1px solid var(--ink-10);
            cursor:pointer; transition:background .15s;
        }
        .place-card:hover { background:var(--ink-05); }
        .place-card.highlight { background:var(--terra-lt); }
        .place-card .pc-img {
            width:88px; height:88px; flex-shrink:0;
            border-radius:10px; object-fit:cover; background:var(--ink-15);
        }
        .place-card .pc-info { flex:1; min-width:0; }
        .place-card .pc-top { display:flex; align-items:center; gap:6px; margin-bottom:3px; }
        .place-card .pc-name {
            font-size:var(--fs-14); font-weight:700; color:var(--ink);
            overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
        }
        .pc-badge {
            flex-shrink:0; padding:1px 6px; font-size:var(--fs-10); font-weight:700;
            border-radius:4px; background:var(--terracotta); color:var(--paper);
        }
        .pc-badge.premium { background:linear-gradient(135deg,var(--warning-500),var(--gold)); }
        .place-card .pc-cat { font-size:var(--fs-11); color:var(--ink-hint); margin-bottom:3px; }
        .place-card .pc-loc { font-size:var(--fs-12); color:var(--ink-60); margin-bottom:4px; }
        .pc-dist {
            display:inline-block; padding:1px 7px;
            font-size:var(--fs-10); font-weight:600; color:var(--terracotta);
            background:var(--terra-lt); border-radius:8px;
            margin-left:4px;
        }
        .place-card .pc-bottom {
            display:flex; align-items:center; gap:8px;
        }
        .pc-star { font-size:var(--fs-12); color:var(--warning-500); font-weight:600; }
        .pc-review { font-size:var(--fs-11); color:var(--ink-hint); }
        .pc-price { font-size:var(--fs-13); font-weight:700; color:var(--ink); margin-left:auto; }

        .no-results {
            text-align:center; padding:60px 20px; color:var(--ink-hint);
        }
        .loading-more {
            text-align:center; padding:16px; font-size:var(--fs-12); color:var(--ink-hint);
            display:none;
        }

        /* ══ 지도 위 오버레이 컨트롤 (우측) ══ */
        .map-controls {
            position:absolute; top:16px; right:16px; z-index:50;
            display:flex; flex-direction:column; gap:8px;
        }
        .map-ctrl-btn {
            width:40px; height:40px;
            background:var(--paper); border:none; border-radius:10px;
            box-shadow:0 2px 8px rgba(0,0,0,.15);
            cursor:pointer; display:flex; align-items:center; justify-content:center;
            color:var(--ink-70); transition:all .2s;
        }
        .map-ctrl-btn:hover { background:var(--ink-10); box-shadow:0 4px 12px rgba(0,0,0,.2); }
        .map-ctrl-btn.active { background:var(--terracotta); color:var(--paper); }
        .map-ctrl-btn.rv-active,
        .map-ctrl-btn.rv-active:hover {
            background:var(--info-dk); color:var(--paper);
            box-shadow:0 2px 8px rgba(59,127,255,.4);
        }
        .map-ctrl-btn svg { width:18px; height:18px; }

        /* 로드뷰 모드 활성시 지도 커서 → 커스텀 위치 핀 아이콘 (PNG 교체만으로 변경 가능) */
        #kakaoMapWrap.rv-mode,
        #kakaoMapWrap.rv-mode * {
            cursor: url('/place/assets/img/rv-cursor.png') 16 27, crosshair !important;
        }

        /* 지도 유형 전환 */
        .map-type-switch {
            position:absolute; top:16px; right:68px; z-index:50;
            display:flex; gap:0;
            background:var(--paper); border-radius:10px;
            box-shadow:0 2px 8px rgba(0,0,0,.15);
            overflow:hidden;
        }
        .mt-btn {
            padding:8px 14px; font-size:var(--fs-12); font-weight:600;
            border:none; background:var(--paper); color:var(--ink-60);
            cursor:pointer; transition:all .2s;
        }
        .mt-btn.active-kakao { background:#fee500; color:#3c1e1e; }
        .mt-btn.active-naver { background:#03c75a; color:var(--paper); }
        .mt-btn:hover:not([class*="active"]) { background:var(--ink-10); }

        /* ══ 지도 인포윈도우 ══ */
        .map-iw {
            padding:12px 16px; font-size:var(--fs-13);
            background:var(--paper); border-radius:12px;
            box-shadow:0 4px 16px rgba(0,0,0,.18);
            max-width:240px; min-width:180px;
        }
        .map-iw .iw-name { font-weight:700; color:var(--ink); margin-bottom:3px; font-size:var(--fs-14); }
        .map-iw .iw-cat { font-size:var(--fs-11); color:var(--ink-hint); margin-bottom:4px; }
        .map-iw .iw-price { font-size:var(--fs-13); font-weight:600; color:var(--terracotta); }
        .map-iw .iw-dist { font-size:var(--fs-11); color:var(--terracotta); }
        .map-iw .iw-link {
            display:inline-block; margin-top:8px; padding:5px 12px;
            font-size:var(--fs-11); font-weight:600; color:var(--paper); background:var(--terracotta);
            border-radius:6px; text-decoration:none;
        }
        .map-iw .iw-link:hover { background:#4338ca; }

        /* 지도 로딩 */
        .map-loading {
            position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
            z-index:60; background:rgba(255,255,255,.9);
            padding:20px 32px; border-radius:12px;
            box-shadow:0 4px 20px rgba(0,0,0,.1);
            text-align:center; font-size:var(--fs-13); color:var(--ink-60);
        }
        .map-loading.hidden { display:none; }

        /* ══ 모바일 바텀시트 (카카오맵 스타일) ══ */
        @media (max-width:768px) {
            /* 검색+필터를 지도 위 상단에 오버레이 */
            .side-panel {
                width:100%; top:auto; bottom:0; left:0; right:0;
                height:40vh;
                border-radius:16px 16px 0 0;
                box-shadow:0 -4px 20px rgba(0,0,0,.12);
                transition:height .3s cubic-bezier(.4,0,.2,1);
                transform:none !important;
            }
            .side-panel.collapsed {
                transform:none !important;
            }
            .panel-toggle { display:none; }

            /* 검색+필터를 패널 밖으로 이동시키는 대신, 패널 내부에서 검색바를 숨기고 상단 오버레이 사용 */
            .panel-header { display:none; }

            /* 모바일 드래그 핸들 */
            .mobile-handle {
                display:flex; justify-content:center; padding:14px 0 10px;
                cursor:grab; flex-shrink:0; touch-action:none;
            }
            .mobile-handle-bar {
                width:44px; height:5px; background:#c9cdd3;
                border-radius:4px;
            }

            /* 결과바 모바일 */
            .result-bar {
                padding:4px 16px 8px; touch-action:none; cursor:grab;
            }

            /* 지도 위 컨트롤 위치 조정 */
            .map-type-switch { right:12px; top:auto; bottom:calc(40vh + 12px); transition:bottom .3s cubic-bezier(.4,0,.2,1); }
            .map-controls { top:auto; bottom:calc(40vh + 56px); right:12px; transition:bottom .3s cubic-bezier(.4,0,.2,1); }

            .place-card .pc-img { width:72px; height:72px; }

            /* 바텀시트 peek 상태 (최소화) */
            .side-panel.sheet-peek {
                height:80px;
            }
            .side-panel.sheet-peek .result-bar { border-bottom:none; }
            .side-panel.sheet-peek .place-list,
            .side-panel.sheet-peek .loading-more,
            .side-panel.sheet-peek .no-results { display:none !important; }

            /* 바텀시트 full 상태 */
            .side-panel.sheet-full {
                height:calc(100vh - 130px);
                border-radius:0;
            }
        }

        /* ═══ 모바일 상단 검색 오버레이 ═══ */
        .mobile-search-overlay {
            display:none;
            position:absolute; top:0; left:0; right:0;
            z-index:90;
            background:var(--paper);
            box-shadow:0 2px 12px rgba(0,0,0,.1);
            padding:10px 12px 6px;
        }
        @media (max-width:768px) {
            .mobile-search-overlay { display:block; }
        }
        .mob-search-row {
            display:flex; align-items:center; gap:8px; margin-bottom:8px;
        }
        .mob-back-btn {
            width:36px; height:36px; border:none; background:none;
            cursor:pointer; display:flex; align-items:center; justify-content:center;
            color:var(--ink-70); flex-shrink:0;
        }
        .mob-search-input {
            flex:1; position:relative;
        }
        .mob-search-input input {
            width:100%; padding:9px 36px 9px 14px;
            border:1.5px solid var(--border-input); border-radius:10px;
            font-size:var(--fs-14); color:var(--ink);
            background:var(--ink-05); outline:none;
        }
        .mob-search-input input:focus { border-color:#6366f1; background:var(--paper); }
        .mob-search-btn {
            position:absolute; right:4px; top:50%; transform:translateY(-50%);
            width:30px; height:30px; border:none; background:var(--terracotta);
            border-radius:8px; cursor:pointer;
            display:flex; align-items:center; justify-content:center;
        }
        .mob-search-btn svg { width:16px; height:16px; color:var(--paper); }
        .mob-filter-chips {
            display:flex; gap:6px;
            overflow-x:auto; -webkit-overflow-scrolling:touch;
            scrollbar-width:none; padding-bottom:2px;
        }
        .mob-filter-chips::-webkit-scrollbar { display:none; }
        .mob-f-chip {
            flex-shrink:0; padding:5px 12px;
            font-size:var(--fs-12); font-weight:600;
            border:1px solid var(--ink-15); border-radius:18px;
            background:var(--paper); color:var(--ink-60);
            cursor:pointer; transition:all .2s;
            white-space:nowrap;
        }
        .mob-f-chip.active { background:var(--terracotta); color:var(--paper); border-color:var(--terracotta); }

        @media (min-width:769px) {
            .mobile-handle { display:none; }
            .mobile-search-overlay { display:none !important; }
        }

        /* 모바일에서 지도 인포윈도우 상세보기 버튼 터치 개선 */
        @media (max-width:768px) {
            .map-iw .iw-link { padding:8px 16px; font-size:var(--fs-13); }
        }

        /* ══════════════════════════════════════════════
         *  상세 레이어 패널 (사이드패널 위에 슬라이드)
         * ══════════════════════════════════════════════ */
        .detail-layer {
            position:absolute; top:12px; left:412px; bottom:12px;
            width:400px; z-index:200;
            background:var(--paper);
            box-shadow:0 8px 32px rgba(0,0,0,.18);
            border-radius:16px;
            display:none; flex-direction:column;
            overflow:hidden;
        }
        .detail-layer.open { display:flex; }

        /* 사이드패널이 접혀있으면 상세레이어도 왼쪽으로 */
        .side-panel.collapsed ~ #mapWrap ~ .detail-layer,
        .detail-layer.panel-collapsed {
            left:12px;
        }

        .dl-header {
            display:flex; align-items:center; justify-content:space-between;
            padding:14px 16px; border-bottom:1px solid var(--ink-10);
            flex-shrink:0; background:var(--paper);
            border-radius:16px 16px 0 0;
        }
        .dl-back {
            display:flex; align-items:center; gap:6px;
            background:none; border:none; cursor:pointer;
            font-size:var(--fs-14); font-weight:600; color:var(--terracotta);
        }
        .dl-back:hover { color:var(--terra-dk); }
        .dl-back svg { width:18px; height:18px; }
        .dl-actions { display:flex; gap:8px; }
        .dl-btn {
            padding:6px 14px; font-size:var(--fs-12); font-weight:600;
            border:1px solid var(--ink-15); border-radius:8px;
            background:var(--paper); color:var(--ink-70); cursor:pointer; transition:all .2s;
        }
        .dl-btn:hover { border-color:var(--terracotta); color:var(--terracotta); }
        .dl-btn.wish-active { border-color:var(--danger); color:var(--danger-700); background:var(--danger-50); }
        .dl-btn-full {
            padding:6px 14px; font-size:var(--fs-12); font-weight:600;
            background:var(--terracotta); color:var(--paper); border:none; border-radius:8px;
            cursor:pointer; transition:all .2s;
        }
        .dl-btn-full:hover { background:var(--terra-dk); }

        .dl-body {
            flex:1; overflow-y:auto; overflow-x:hidden;
            -webkit-overflow-scrolling:touch;
        }
        .dl-body::-webkit-scrollbar { width:4px; }
        .dl-body::-webkit-scrollbar-thumb { background:var(--ink-30); border-radius:4px; }

        /* 갤러리 슬라이더 */
        .dl-gallery { position:relative; background:var(--ink-10); overflow:hidden; }
        .dl-gallery-track {
            display:flex; transition:transform .35s ease;
        }
        .dl-gallery-track img {
            width:400px; height:260px; flex-shrink:0;
            object-fit:cover;
        }
        .dl-gal-nav {
            position:absolute; top:50%; transform:translateY(-50%);
            width:32px; height:32px; border-radius:50%;
            background:rgba(255,255,255,.85); border:none;
            cursor:pointer; font-size:var(--fs-14); color:var(--ink-70);
            display:flex; align-items:center; justify-content:center;
            box-shadow:0 2px 6px rgba(0,0,0,.15);
        }
        .dl-gal-nav:hover { background:var(--paper); }
        .dl-gal-prev { left:8px; }
        .dl-gal-next { right:8px; }
        .dl-gal-counter {
            position:absolute; bottom:10px; right:12px;
            background:rgba(0,0,0,.55); color:var(--paper); font-size:var(--fs-11);
            padding:3px 10px; border-radius:12px;
        }

        /* 프로필 헤더 */
        .dl-profile { padding:20px 20px 16px; }
        .dl-badges { display:flex; gap:6px; margin-bottom:6px; }
        .dl-badge {
            padding:2px 8px; border-radius:5px; font-size:var(--fs-10); font-weight:700;
        }
        .dl-badge-verified { background:var(--terra-lt); color:var(--terracotta); }
        .dl-badge-premium { background:#f3e8ff; color:var(--terracotta); }
        .dl-name { font-size:var(--fs-20); font-weight:800; color:var(--ink); }
        .dl-cat { font-size:var(--fs-13); color:var(--terracotta); font-weight:600; margin-top:2px; }
        .dl-loc { font-size:var(--fs-13); color:var(--ink-60); margin-top:2px; }
        .dl-rating {
            display:flex; align-items:center; gap:6px;
            margin-top:8px; font-size:var(--fs-14);
        }
        .dl-rating .star { color:var(--warning-500); }
        .dl-rating .cnt { color:var(--ink-40); font-size:var(--fs-12); }
        .dl-views { font-size:var(--fs-12); color:var(--ink-hint); margin-top:4px; }

        /* 탭 네비게이션 */
        .dl-tabs {
            display:flex; border-bottom:2px solid var(--ink-10);
            padding:0 20px; flex-shrink:0;
            position:sticky; top:0; background:var(--paper); z-index:5;
        }
        .dl-tab {
            padding:10px 14px; font-size:var(--fs-13); font-weight:600;
            color:var(--ink-hint); cursor:pointer; border-bottom:2px solid transparent;
            margin-bottom:-2px; transition:all .2s; white-space:nowrap;
        }
        .dl-tab:hover { color:var(--ink-70); }
        .dl-tab.active { color:var(--terracotta); border-bottom-color:var(--terracotta); }

        /* 섹션 */
        .dl-section { padding:16px 20px; border-bottom:1px solid var(--ink-10); }
        .dl-section:last-child { border-bottom:none; }
        .dl-section h3 {
            font-size:var(--fs-15); font-weight:700; color:var(--ink);
            margin-bottom:10px;
        }
        .dl-text { font-size:var(--fs-13); color:var(--ink-70); line-height:1.7; white-space:pre-line; }

        /* 패키지 */
        .dl-pkg {
            border:1px solid var(--ink-15); border-radius:10px;
            padding:12px; margin-bottom:8px; transition:all .2s;
        }
        .dl-pkg:hover { border-color:var(--terracotta); }
        .dl-pkg.popular { border-color:var(--warning-500); background:var(--gold-lt); }
        .dl-pkg-head { display:flex; justify-content:space-between; align-items:center; }
        .dl-pkg-name { font-size:var(--fs-13); font-weight:700; color:var(--ink); }
        .dl-pkg-price { font-size:var(--fs-14); font-weight:800; color:var(--terracotta); }
        .dl-pkg-pop { font-size:var(--fs-10); background:var(--warning-500); color:var(--ink); padding:2px 6px; border-radius:8px; font-weight:600; }
        .dl-pkg-desc { font-size:var(--fs-12); color:var(--ink-60); margin-top:3px; }
        .dl-pkg-items { margin-top:6px; list-style:none; padding:0; }
        .dl-pkg-items li { font-size:var(--fs-12); color:var(--ink-70); padding:1px 0; }
        .dl-pkg-items li::before { content:'\2713 '; color:var(--terracotta); font-weight:600; }

        /* 영업시간 */
        .dl-hour-row { display:flex; justify-content:space-between; padding:4px 0; font-size:var(--fs-13); }
        .dl-hour-day { font-weight:600; color:var(--ink); width:40px; }
        .dl-hour-day.sun { color:var(--danger-700); }
        .dl-hour-day.sat { color:#3b82f6; }
        .dl-hour-time { color:var(--ink-70); }
        .dl-hour-closed { color:var(--danger-700); }

        /* 태그 */
        .dl-tags { display:flex; flex-wrap:wrap; gap:5px; }
        .dl-tag { padding:3px 10px; background:var(--ink-10); border-radius:14px; font-size:var(--fs-12); color:var(--ink-70); }

        /* 리뷰 */
        .dl-review { padding:10px 0; border-bottom:1px solid var(--ink-10); }
        .dl-review:last-child { border-bottom:none; }
        .dl-rev-head { display:flex; justify-content:space-between; align-items:center; }
        .dl-rev-author { font-weight:600; color:var(--ink); font-size:var(--fs-13); }
        .dl-rev-stars { color:var(--warning-500); font-size:var(--fs-13); }
        .dl-rev-text { font-size:var(--fs-13); color:var(--ink-70); margin-top:4px; line-height:1.5; }
        .dl-rev-date { font-size:var(--fs-11); color:var(--ink-hint); margin-top:3px; }
        .dl-rev-reply {
            margin-top:6px; padding:8px 10px; background:var(--ink-05);
            border-radius:6px; border-left:3px solid var(--terracotta);
        }
        .dl-rev-reply-label { font-size:var(--fs-11); color:var(--terracotta); font-weight:600; margin-bottom:2px; }
        .dl-rev-reply-text { font-size:var(--fs-12); color:var(--ink-70); }

        /* 프로모션 */
        .dl-promo { display:flex; gap:8px; padding:8px; border:1px solid var(--ink-15); border-radius:8px; margin-bottom:6px; }
        .dl-promo-badge { flex-shrink:0; padding:2px 8px; border-radius:5px; font-size:var(--fs-10); font-weight:700; }
        .dl-promo-green { background:var(--terra-lt); color:var(--terracotta); }
        .dl-promo-red { background:var(--danger-50); color:var(--danger-700); }
        .dl-promo-amber { background:var(--gold-lt); color:var(--warning-700); }
        .dl-promo-info { flex:1; }
        .dl-promo-info strong { font-size:var(--fs-12); color:var(--ink); }
        .dl-promo-val { font-size:var(--fs-14); font-weight:800; color:var(--terracotta); margin-left:6px; }
        .dl-promo-meta { font-size:var(--fs-11); color:var(--ink-hint); margin-top:2px; }

        /* 연락처/문의 */
        .dl-contact p { font-size:var(--fs-13); color:var(--ink-60); margin:3px 0; }
        .dl-contact strong { color:var(--ink); }
        .dl-inquiry-btn {
            display:block; width:100%; padding:12px;
            background:var(--terracotta); color:var(--paper); border:none; border-radius:8px;
            font-size:var(--fs-14); font-weight:600; cursor:pointer;
            text-align:center; margin-top:12px;
        }
        .dl-inquiry-btn:hover { background:var(--terra-dk); }

        /* 로딩 스피너 */
        .dl-loading {
            display:flex; align-items:center; justify-content:center;
            height:300px; color:var(--ink-hint); font-size:var(--fs-13);
        }

        /* 모바일 상세 레이어 */
        @media (max-width:768px) {
            .detail-layer {
                width:100%; top:0; left:0; right:0; bottom:0;
                border-radius:0;
                display:none;
                visibility:hidden;
            }
            .detail-layer.open {
                display:flex;
                visibility:visible;
            }
            .dl-gallery-track img {
                width:100vw; height:250px;
            }
        }
    

/* ══════════════════════════════════════════════════════
 *  iOS 입력 확대 방지 (2026-09-23)
 *  iOS Safari 는 input 폰트가 16px 미만이면 포커스 시 화면을 자동 확대하고
 *  되돌아오지 않아 레이아웃이 깨진 채 남는다. 모바일 폭에서만 16px 을 강제.
 *  → PC 레이아웃에는 전혀 영향 없음.
 * ══════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="hidden"]),
  select,
  textarea {
    font-size: var(--fs-16) !important;
  }
}

/* ══════════════════════════════════════════════════════
 *  모바일 터치 타겟 보정 (2026-09-23)
 *
 *  패딩이 작아 실제 높이가 24~28px 인 버튼들의 **터치 영역만** 44px 로 넓힌다.
 *  ::after 투명 레이어를 겹쳐 잡으므로 **버튼의 보이는 크기·레이아웃은 그대로**.
 *  가로는 100% 유지(세로만 확장) — 옆 버튼과 터치 영역이 겹치지 않게 하기 위함.
 *  대상 선정: cursor:pointer 보유 + padding ≤6px + 기존 ::after/overflow:hidden 없음.
 * ══════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  .av-btn,
  .bp-cal-clear-btn,
  .bp-cal-title,
  .bp-cal-today-btn,
  .btn-open-reply,
  .cal-more,
  .cal-today-btn,
  .cc-btn,
  .cpt-btn,
  .delete-btn,
  .dl-btn,
  .dl-btn-full,
  .f-chip,
  .filter-reset-link,
  .hero-qtag,
  .hero-quick-link,
  .inq-btn,
  .inv-copy-btn,
  .inv-tpl-zoom,
  .m-filter-close,
  .m-nav-close,
  .m-nav-search-btn,
  .m-search-recent-tag,
  .map-tab-btn,
  .mob-f-chip,
  .modal-close,
  .nav-hamburger,
  .noti-bulk-btn,
  .page-btn,
  .pe-suggest-chip,
  .pkg-delete-btn,
  .pkg-item-add,
  .place-admin-table-action-btn,
  .place-table-action-btn,
  .port-chip,
  .pw-toggle,
  .rc-action-btn,
  .rc-reply-del,
  .result-sort,
  .sb-rank-item,
  .sb-tag,
  .social-btn-link,
  .social-btn-unlink,
  .tag-chip,
  .unread-read-all {
    position: relative;
  }
  .av-btn::after,
  .bp-cal-clear-btn::after,
  .bp-cal-title::after,
  .bp-cal-today-btn::after,
  .btn-open-reply::after,
  .cal-more::after,
  .cal-today-btn::after,
  .cc-btn::after,
  .cpt-btn::after,
  .delete-btn::after,
  .dl-btn::after,
  .dl-btn-full::after,
  .f-chip::after,
  .filter-reset-link::after,
  .hero-qtag::after,
  .hero-quick-link::after,
  .inq-btn::after,
  .inv-copy-btn::after,
  .inv-tpl-zoom::after,
  .m-filter-close::after,
  .m-nav-close::after,
  .m-nav-search-btn::after,
  .m-search-recent-tag::after,
  .map-tab-btn::after,
  .mob-f-chip::after,
  .modal-close::after,
  .nav-hamburger::after,
  .noti-bulk-btn::after,
  .page-btn::after,
  .pe-suggest-chip::after,
  .pkg-delete-btn::after,
  .pkg-item-add::after,
  .place-admin-table-action-btn::after,
  .place-table-action-btn::after,
  .port-chip::after,
  .pw-toggle::after,
  .rc-action-btn::after,
  .rc-reply-del::after,
  .result-sort::after,
  .sb-rank-item::after,
  .sb-tag::after,
  .social-btn-link::after,
  .social-btn-unlink::after,
  .tag-chip::after,
  .unread-read-all::after {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 100%;
    height: 100%;
    min-height: 44px;
    pointer-events: auto;
  }
}
