/* OpenStreetMap 판: 실제 지도 위에 도트 그림만 얹는다 */
.osm-app #map{position:absolute;inset:0;z-index:0;background:#f6f0df;cursor:pointer}
.osm-app .leaflet-tile-pane{filter:grayscale(1) contrast(.5) brightness(1.22) sepia(.3);opacity:.55}
.osm-app .leaflet-container{font-family:'Noto Sans KR',sans-serif}
.osm-app .leaflet-control-zoom{border:0;margin:0 18px 150px 0;box-shadow:-3px 0 0 #40302d,3px 0 0 #40302d,0 -3px 0 #40302d,0 3px 0 #40302d,0 7px 0 #40302d40}
.osm-app .leaflet-control-zoom a{border-radius:0;background:#fff8e3;color:#40302d;font-weight:800;border-bottom:2px solid #40302d;width:38px;height:38px;line-height:38px}
.osm-app .leaflet-control-zoom a:last-child{border-bottom:0}
.osm-app .leaflet-control-attribution{font-size:10px;background:#fff8e3cc}
.dot-icon{background:none;border:0}
.dot-icon img{display:block;image-rendering:pixelated;filter:drop-shadow(0 2px 0 #40302d30)}
.dot-icon span{position:absolute;left:50%;top:100%;transform:translate(-50%,2px);white-space:nowrap;background:#fffbed;color:#3c583b;font-weight:700;font-size:12px;padding:2px 7px;box-shadow:-2px 0 0 #40302d,2px 0 0 #40302d,0 -2px 0 #40302d,0 2px 0 #40302d}
.dot-icon.visited span{background:#dff0c8}.dot-icon.listened span::after{content:' ●';color:#e0a52f}
.dot-icon.target span{background:#f7d38e}
.me-icon{background:none;border:0;pointer-events:none}
.me-icon canvas{display:block;image-rendering:pixelated}
.osm-app .map-actions button{white-space:nowrap}
.osm-app .search-box{display:flex;gap:6px;margin:0 0 12px}
.osm-app .search-box input{flex:1;min-width:0;font:inherit;font-size:14px;padding:8px 10px;border:2px solid #40302d;border-radius:0;background:#fff}
.osm-app .district-picker{grid-template-columns:repeat(4,1fr)}
.osm-app .district-picker button{padding:7px 2px;font-size:12px}
.osm-app .place-photo{display:block;width:100%;height:auto;border:2px solid #40302d;margin:0 0 12px}
.osm-app .story-list button{text-align:left;justify-content:flex-start}
.osm-app .story-list .current-story{background:#f7d38e}
.osm-app .audio-first .audio-track-title{padding:8px 10px 0;margin:0 0 8px;font-weight:700;background:none;border:0}
.osm-app #side-content{padding-top:14px}
@media(max-width:600px){.osm-app .leaflet-control-zoom{display:none}}
/* 해설 재생 위치: 패널 폭 전체를 쓰는 긴 막대 */
.osm-app .audio-block audio{display:none}
.osm-app .seek{-webkit-appearance:none;appearance:none;display:block;width:calc(100% - 20px);margin:14px 10px 6px;height:14px;background:linear-gradient(to right,#3a9173 var(--p,0%),#fff var(--p,0%));border:2px solid #40302d;border-radius:0;cursor:pointer;touch-action:none}
.osm-app .seek::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:26px;background:#f2c24f;border:2px solid #40302d;border-radius:0;cursor:grab}
.osm-app .seek::-moz-range-thumb{width:14px;height:22px;background:#f2c24f;border:2px solid #40302d;border-radius:0;cursor:grab}
.osm-app .seek-row{display:flex;align-items:center;gap:6px;padding:4px 10px 10px}
.osm-app .seek-time{flex:1;font-weight:700;font-size:14px;font-variant-numeric:tabular-nums;color:#40302d}
.osm-app .seek-row button{font:inherit;font-size:12px;font-weight:700;padding:5px 8px;background:#fff;color:#40302d;border:2px solid #40302d;border-radius:0;cursor:pointer;white-space:nowrap}
.osm-app .seek-row button:active{background:#f7d38e}
.osm-app .seek-row .audio-speed-btn{width:auto;min-width:64px;height:auto;padding:5px 8px;text-align:center;box-shadow:none;overflow:visible;white-space:nowrap;font-variant-numeric:tabular-nums}
/* 찜 */
.osm-app .save-btn{font:inherit;font-weight:700;font-size:14px;padding:9px 12px;background:#fff;color:#c2493b;border:2px solid #40302d;border-radius:0;box-shadow:0 3px 0 #40302d;cursor:pointer;white-space:nowrap}
.osm-app .save-btn.on{background:#d2543f;color:#fff}
.osm-app .place-card .heart,.dot-icon.saved span{color:#c2493b}
.osm-app .place-card .heart{font-style:normal}
.osm-app #arrival{max-width:min(86vw,360px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;padding:8px 14px}
.osm-app #to-nation{display:none}
/* 위치 카드: 글자가 길어도 상자 안에서 줄임표로 끝난다 */
.osm-app .current-location{width:auto;min-width:0;max-width:min(calc(100vw - 90px),340px);box-sizing:border-box}
.osm-app .current-location>div{min-width:0;flex:1 1 auto;overflow:hidden}
.osm-app .current-location h1,.osm-app .current-location #walk-status,.osm-app .current-location .location-caption{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 해설 원문: 카드 안쪽 여백과 문단 간격 */
.osm-app .place-information{padding:0}
.osm-app .place-information summary{padding:12px 14px;cursor:pointer}
.osm-app .place-information[open] summary{border-bottom:2px dashed #d9c9a0}
.osm-app .place-information .place-photo{width:calc(100% - 28px);margin:14px 14px 0}
.osm-app .place-information .full-transcript{padding:14px 16px 4px;margin:0;color:#4a3f38;font-size:15px;line-height:1.75;word-break:keep-all}
.osm-app .place-information .full-transcript p{margin:0 0 12px;font-size:inherit;line-height:inherit;color:inherit}
.osm-app .place-information .source{padding:0 16px 14px;margin:0}
/* 설정 */
#open-settings{position:absolute;z-index:60;right:14px;top:14px;width:44px;height:44px;font-size:22px;line-height:1;background:#fff8e3;color:#40302d;border:0;border-radius:0;cursor:pointer;box-shadow:-3px 0 0 #40302d,3px 0 0 #40302d,0 -3px 0 #40302d,0 3px 0 #40302d,0 7px 0 #40302d40}
#open-settings:hover{background:#f7d38e}
.osm-app .set-group{margin:0 0 20px}
.osm-app .set-group h4{margin:0 0 8px;font-size:14px;color:#40302d}
.osm-app .set-row{display:flex;flex-wrap:wrap;gap:8px}
.osm-app .set-row button{flex:1 1 auto;min-width:64px;font:inherit;font-weight:700;font-size:14px;padding:9px 10px;background:#fff;color:#40302d;border:2px solid #40302d;border-radius:0;cursor:pointer;white-space:nowrap}
.osm-app .set-row button.on{background:#3a9173;color:#fff}
.osm-app .set-link{display:flex;justify-content:space-between;width:100%;font:inherit;font-weight:700;font-size:15px;padding:12px 14px;margin:0 0 8px;background:#fff;color:#40302d;border:2px solid #40302d;border-radius:0;cursor:pointer;text-align:left}
.osm-app .legal h3{margin:14px 0 12px;font-size:18px}
.osm-app .legal p{margin:0 0 14px;font-size:15px;line-height:1.75;color:#4a3f38;word-break:keep-all}
/* 상단 전국 검색 */
#search{position:absolute;z-index:60;left:17px;top:14px;width:min(340px,calc(100vw - 92px));height:44px;box-sizing:border-box;font:inherit;font-size:16px;font-weight:600;padding:0 12px;background:#fff;color:#40302d;border:0;border-radius:0;outline:0;box-shadow:-3px 0 0 #40302d,3px 0 0 #40302d,0 -3px 0 #40302d,0 3px 0 #40302d,0 7px 0 #40302d40}
#search:focus{background:#fffbe6}
#search::placeholder{color:#9a8f80;font-weight:500}
.osm-app .current-location{top:74px}

/* ── 평범한 화면: 도트는 지도 위 그림에만 쓰고, 글자와 상자는 보통 모양으로 ── */
.osm-app{--line:#d9d4c7;--ink:#2f2a26;--sub:#7a7268;--accent:#2f7d62}
.osm-app #search,.osm-app #open-settings,.osm-app .current-location,.osm-app .map-actions,.osm-app .walk-tip,.osm-app #arrival,.osm-app #toast,.osm-app .leaflet-control-zoom{box-shadow:0 2px 10px #0000001f!important;border:1px solid var(--line)!important;border-radius:12px!important;background:#fff!important;color:var(--ink)!important}
.osm-app #search{left:12px;top:12px;height:42px;width:min(340px,calc(100vw - 78px));font-weight:500;font-size:15px;padding:0 14px}
.osm-app #open-settings{right:12px;top:12px;width:42px;height:42px;font-size:19px}
.osm-app .current-location{top:62px!important;left:12px!important;padding:5px 12px 5px 6px!important;gap:6px!important;max-width:min(calc(100vw - 24px),340px);min-height:0;align-items:center}
.osm-app .current-location .location-pin{width:24px;height:24px;min-width:24px;padding:0;border:0!important;background:none!important;box-shadow:none!important;display:grid;place-items:center;overflow:hidden}
.osm-app .current-location .location-pin canvas{width:24px;height:24px;image-rendering:pixelated}
.osm-app .current-location>div{display:flex;align-items:baseline;gap:6px;white-space:nowrap}
.osm-app .current-location h1{font-size:14px!important;font-weight:700;margin:0;line-height:1.5;color:var(--ink)}
.osm-app .current-location .location-caption{font-size:12px!important;color:var(--sub)!important;font-weight:500;flex:0 0 auto;max-width:45%}
.osm-app .current-location #walk-status{display:none!important}
.osm-app .map-actions{overflow:hidden!important}
.osm-app .map-actions button{background:#fff!important;border:0!important;border-left:1px solid var(--line)!important;border-radius:0!important;box-shadow:none!important;color:var(--ink)!important;font-weight:600;font-size:14px;padding:11px 14px}
.osm-app .map-actions button:first-child{border-left:0!important}
.osm-app .walk-tip{font-size:13px;padding:6px 12px;font-weight:500}
.osm-app #arrival{background:#2f7d62!important;color:#fff!important;border-color:#2f7d62!important;font-weight:600}
.osm-app #toast{background:#2f2a26!important;color:#fff!important;border-color:#2f2a26!important}
.osm-app .leaflet-control-zoom{overflow:hidden}
.osm-app .leaflet-control-zoom a{background:#fff;border-bottom:1px solid var(--line);font-weight:500;width:36px;height:36px;line-height:36px}
.dot-icon span{background:#fff;color:var(--ink,#2f2a26);font-weight:600;font-size:12px;padding:2px 8px;border:1px solid #cfc9bb;border-radius:999px;box-shadow:0 1px 4px #00000022}
.dot-icon.visited span{background:#eef6e6}.dot-icon.target span{background:#fff3c4;border-color:#e0b84a}
/* 안내 패널 */
.osm-app .sidebar{background:#fff!important;border:1px solid var(--line)!important;border-radius:16px!important;box-shadow:0 6px 30px #00000026!important;color:var(--ink)!important}
.osm-app .sheet-handle{background:none!important;box-shadow:none!important;border:0!important;height:14px;position:relative}
.osm-app .sheet-handle::before,.osm-app .sheet-handle::after{content:none!important}
.osm-app .sheet-heading b{font-size:15px;font-weight:700}
.osm-app .sheet-heading b::before,.osm-app .section-title h3::before,.osm-app .nearby h4::before{content:none!important}
.osm-app #close-sheet,.osm-app .back-btn{background:#f3f1ea!important;border:0!important;border-radius:999px!important;box-shadow:none!important;color:var(--ink)!important;width:34px;height:34px;font-size:18px;line-height:1}
.osm-app #side-content{background:none}
.osm-app .section-title h3{font-size:15px;font-weight:700;color:var(--ink)}
.osm-app .section-title span{font-size:12px;color:var(--sub)}
.osm-app .place-card{background:none!important;border:0!important;border-bottom:1px solid #eeeae0!important;border-radius:0!important;box-shadow:none!important;padding:10px 2px!important}
.osm-app .place-card .card-art{border:0!important;border-radius:10px!important;box-shadow:none!important;background:#eef4e2!important}
.osm-app .place-card strong{font-size:15px;font-weight:700;color:var(--ink)}
.osm-app .place-card small{font-size:12.5px;color:var(--sub)}
.osm-app .district-picker button,.osm-app .nearby button,.osm-app .set-row button,.osm-app .set-link,.osm-app .seek-row button,.osm-app .save-btn,.osm-app .seek-row .audio-speed-btn{background:#fff!important;border:1px solid var(--line)!important;border-radius:10px!important;box-shadow:none!important;color:var(--ink)!important;font-weight:600}
.osm-app .district-picker button:hover,.osm-app .nearby button:hover{background:#f6f4ee!important}
.osm-app .set-row button.on{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}
.osm-app .story-list .current-story{background:#eaf4ee!important;border-color:var(--accent)!important;color:var(--accent)!important}
.osm-app .save-btn{color:#c2493b!important}.osm-app .save-btn.on{background:#c2493b!important;border-color:#c2493b!important;color:#fff!important}
.osm-app .audio-block{background:#f6f8f2!important;border:1px solid var(--line)!important;border-radius:14px!important;box-shadow:none!important;overflow:hidden}
.osm-app .audio-play-btn{background:var(--accent)!important;border:0!important;border-radius:0!important;box-shadow:none!important;color:#fff!important;font-weight:700}
.osm-app .seek{height:8px;border:0;border-radius:999px;background:linear-gradient(to right,var(--accent) var(--p,0%),#dcd8cc var(--p,0%))}
.osm-app .seek::-webkit-slider-thumb{width:20px;height:20px;border-radius:50%;background:#fff;border:2px solid var(--accent);box-shadow:0 1px 4px #0003}
.osm-app .seek::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid var(--accent)}
.osm-app .place-information{background:#fff!important;border:1px solid var(--line)!important;border-radius:12px!important;box-shadow:none!important}
.osm-app .place-information[open] summary{border-bottom:1px solid #eeeae0}
.osm-app .place-information .place-photo{border:0;border-radius:10px}
.osm-app .place-detail-head .detail-title{font-weight:700}
.osm-app .nearby h4,.osm-app .set-group h4{font-size:14px;font-weight:700;color:var(--ink)}
.osm-app .source{color:var(--sub)}
/* 설정은 화면을 넓게 쓴다 */
.osm-app.sheet-tall .sidebar{max-height:calc(100dvh - 20px)!important;height:calc(100dvh - 20px)}
.osm-app.sheet-tall .sidebar #side-content{max-height:none!important;height:calc(100% - 70px);overflow:auto}
.osm-app details.legal{border:1px solid var(--line);border-radius:10px;margin:0 0 8px;background:#fff}
.osm-app details.legal summary{padding:12px 14px;font-weight:600;font-size:15px;cursor:pointer}
.osm-app details.legal p{margin:0;padding:0 14px 12px;font-size:14px;line-height:1.7;color:#4a433c;word-break:keep-all}
@media(max-width:600px){.osm-app .sidebar{border-radius:16px 16px 0 0!important;max-height:62dvh}.osm-app .sidebar.place-open #side-content{max-height:calc(62dvh - 70px)}.osm-app.sheet-tall .sidebar{height:calc(100dvh - 12px);max-height:calc(100dvh - 12px)!important}}

/* 상단: 왼쪽에 위치, 오른쪽에 설정과 검색 아이콘 */
.osm-app .current-location{top:12px!important;max-width:calc(100vw - 78px)}
.osm-app #open-settings,.osm-app #open-search{position:absolute;z-index:60;right:12px;width:42px;height:42px;display:grid;place-items:center;padding:0;cursor:pointer;background:#fff;color:#2f2a26;border:1px solid #d9d4c7;border-radius:12px;box-shadow:0 2px 10px #0000001f}
.osm-app #open-settings{top:12px}.osm-app #open-search{top:62px}
.osm-app #open-search:hover,.osm-app #open-settings:hover{background:#f6f4ee!important}
/* 검색: 검색창 아래로 결과가 화면 가득 */
#search-panel{position:fixed;z-index:200;inset:0;background:#fff;display:flex;flex-direction:column;font-family:'Noto Sans KR',sans-serif;color:#2f2a26}
#search-panel[hidden]{display:none}
#search-panel .sp-head{display:flex;gap:8px;padding:12px;border-bottom:1px solid #e6e1d5;flex:0 0 auto}
#search-panel #search{position:static!important;flex:1;min-width:0;width:auto!important;height:46px;font:inherit;font-size:16px;padding:0 14px;border:1px solid #d9d4c7!important;border-radius:12px!important;box-shadow:none!important;background:#f8f6f0!important;outline:0}
#search-panel #search:focus{border-color:#2f7d62!important;background:#fff!important}
#search-panel #close-search{flex:0 0 46px;height:46px;border:0;border-radius:12px;background:#f3f1ea;color:#2f2a26;font-size:24px;line-height:1;cursor:pointer}
#search-panel #search-results{flex:1 1 auto;overflow-y:auto;padding:6px 14px 24px;-webkit-overflow-scrolling:touch}
#search-panel .section-title{display:flex;justify-content:space-between;align-items:baseline;margin:12px 0 4px}
#search-panel .section-title h3{margin:0;font-size:15px;font-weight:700}
#search-panel .section-title span{font-size:12px;color:#7a7268}
#search-panel .place-card{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font:inherit;background:none;border:0;border-bottom:1px solid #eeeae0;padding:10px 2px;cursor:pointer;color:inherit}
#search-panel .place-card .card-art{width:52px;height:50px;border-radius:10px;image-rendering:pixelated;flex:0 0 auto}
#search-panel .place-card>div{flex:1;min-width:0}
#search-panel .place-card strong{display:block;font-size:15px;font-weight:700}
#search-panel .place-card small{display:block;font-size:12.5px;color:#7a7268;margin-top:2px}
#search-panel .place-card .heart{font-style:normal;color:#c2493b}
#search-panel .source{color:#7a7268;font-size:14px;padding:18px 2px}
@media(min-width:601px){#search-panel{inset:12px 12px 12px auto;width:380px;border:1px solid #d9d4c7;border-radius:16px;box-shadow:0 6px 30px #00000026;overflow:hidden}}
/* 안내 패널: 위쪽 빈 공간을 없애고 화면 가운데까지 올린다 */
.osm-app .sheet-handle{display:none!important}
.osm-app .sheet-heading{padding:8px 12px 0 16px!important;min-height:0!important;height:auto!important;margin:0!important;border:0!important}
.osm-app .sheet-heading b{font-size:13px;font-weight:600;color:#7a7268}
.osm-app #close-sheet{width:32px;height:32px}
.osm-app #side-content{padding:4px 16px 16px!important}
.osm-app .place-detail-head{margin-top:0!important;padding-top:0!important}
@media(max-width:600px){.osm-app .sidebar{max-height:56dvh!important}.osm-app .sidebar #side-content,.osm-app .sidebar.place-open #side-content{max-height:calc(56dvh - 44px)!important}.osm-app.sheet-tall .sidebar{max-height:calc(100dvh - 12px)!important}.osm-app.sheet-tall .sidebar #side-content{max-height:none!important}}
/* 옆 장소·이야기 목록: 이름은 왼쪽, 거리는 오른쪽 */
.osm-app .nearby button{display:flex!important;justify-content:space-between!important;align-items:center;gap:10px;text-align:left!important;padding-left:14px;padding-right:14px}
.osm-app .nearby button span{flex:0 0 auto;margin-left:auto;font-weight:500;color:#7a7268;white-space:nowrap}
.osm-app .story-list button{justify-content:flex-start!important}
/* 찜하기는 장소 이름 줄의 오른쪽 끝 */
.osm-app .place-detail-head{display:flex!important;align-items:flex-start;gap:10px}
.osm-app .place-detail-head>div{flex:1 1 auto;min-width:0}
.osm-app .place-detail-head .save-btn{flex:0 0 auto;margin-left:auto;padding:7px 11px;font-size:13px;border-radius:999px!important}
/* 상단 한 줄: 위치 표시 · 설정 · 검색 */
.osm-app #open-settings{top:12px!important;right:62px!important}
.osm-app #open-search{top:12px!important;right:12px!important}
.osm-app .current-location{max-width:calc(100vw - 130px)!important}
/* 벡터 지도는 원래 옅은 색이라 살짝만 누그러뜨린다 */
.osm-app.vector-map .leaflet-tile-pane,.osm-app.vector-map .leaflet-pane>.leaflet-gl-layer{filter:sepia(.22) saturate(.9);opacity:.9}
.osm-app.vector-map .leaflet-tile-pane{filter:none;opacity:1}

.osm-app .about{margin:2px 0 14px;padding:12px 14px;border-radius:12px;background:#f4f6f1;text-align:left}
.osm-app .about b{font-size:16px}
.osm-app .about p{margin:4px 0 0;font-size:13px;line-height:1.5;color:#555}

/* ── 축제 ── */
.dot-icon.fest span{border-color:#e8a0b0;background:#fff5f7;color:#a3344d}
.dot-icon.fest.soon img{opacity:.8}
.dot-icon.fest.target span{background:#ffe3ea;border-color:#e8607a}
.osm-app .fest-thumb{width:52px;height:50px;object-fit:cover;border-radius:10px!important;flex:0 0 auto;image-rendering:auto;background:#f3efe6!important}
.osm-app .place-card .fest-thumb{width:104px;height:auto;aspect-ratio:104/100}
#search-panel .place-card .fest-thumb{width:52px;height:50px}
.fbadge{font-style:normal;display:inline-block;font-size:11px;font-weight:700;line-height:1;padding:3px 6px;border-radius:6px;background:#f1eee6;color:#6b645a;margin-right:2px;vertical-align:1px}
.fbadge.on{background:#fde3e8;color:#b8344f}
.osm-app .fest-photo{display:block;width:100%;max-height:230px;object-fit:cover;border-radius:12px;margin:0 0 12px;background:#f3efe6}
.osm-app .finfo{margin:0 0 14px;border:1px solid var(--line,#e3ded2);border-radius:12px;overflow:hidden}
.osm-app .frow{display:flex;gap:12px;padding:10px 14px;border-top:1px solid #eeeae0;font-size:14px;line-height:1.5}
.osm-app .frow:first-child{border-top:0}
.osm-app .frow dt{flex:0 0 4.2em;color:#7a7268;font-weight:600}
.osm-app .frow dd{margin:0;flex:1;min-width:0;overflow-wrap:anywhere;text-align:left}
.osm-app .fest-ov{text-align:left;margin:0 0 14px}
.osm-app .fest-ov p{margin:0 0 10px;font-size:14.5px;line-height:1.7}
.osm-app .fhome{display:block;text-align:center;text-decoration:none;font-weight:700;font-size:14px;color:#fff;background:#2e7d63;border-radius:10px;padding:12px;margin:0 0 18px}
.osm-app .fnote{margin:0 0 10px;text-align:left}
@media (max-width:600px){.osm-app .map-actions button{padding:11px 10px;font-size:13.5px}}
