/* Final Explore layout: source composition, real geographic canvas. */
#app:has(.explore){height:100dvh;min-height:0;overflow:hidden}
.explore.screen{height:calc(100dvh - 74px - env(safe-area-inset-bottom));min-height:0;padding:0;display:flex;flex-direction:column;background:#faf8ec}
.explore-top{flex:0 0 104px;padding:17px 19px 0;border-bottom:3px solid #242820;z-index:3;background:#faf8ec url('assets/design/paper.png') repeat}
.explore .city-line{min-height:43px;align-items:center}
.explore .city-button{font-size:23px;line-height:1.2;font-weight:900;max-width:58%}
.explore .ticket{font-size:15px;width:127px;min-height:36px;height:36px;padding:5px 8px;justify-content:center;gap:5px;white-space:nowrap}
.explore .ticket .icon{width:18px;height:18px}
.explore .tabs{height:41px;gap:6px;margin:0;border:0}
.explore .tabs button{font-size:14px;font-weight:900;min-height:40px;position:relative;background:none;border:0;white-space:nowrap}
.explore .tabs .on:after{height:6px;bottom:1px;width:80%;left:10%;background:#74823a;border-radius:60% 35% 60% 20%;transform:rotate(-3deg)}
.explore .map-area{position:relative;flex:1;min-height:0;height:auto;overflow:hidden;border:0}
.explore .map{position:absolute;inset:0;height:100%;width:100%;filter:none}
.explore .map-tools{right:10px!important;bottom:22px;gap:9px;z-index:430;align-items:flex-end;max-height:calc(100% - 50px)}
.explore .map-tools button{width:54px;height:54px;min-height:54px;border-radius:17px;padding:6px 5px;font-size:14px;font-weight:900}
.explore .map-tools button:first-child{width:70px;height:72px;min-height:72px;padding:8px 4px;font-size:13px}
.explore .map-tools button:first-child .icon{width:32px;height:32px}
.explore .map-tools .icon{width:25px;height:25px}
.explore .map-card{left:14px;right:14px;bottom:12px;width:auto;padding:10px 12px;gap:13px;max-height:46%;min-height:185px;border-radius:26px;align-items:stretch;background:#faf8ec url('assets/design/paper.png') repeat;z-index:440}
.explore .map-card:after{inset:-3px}
.explore .map-card>img:not(.original-icon){width:37%;flex:0 0 37%;height:auto;min-height:170px;max-height:230px;object-fit:cover;border-radius:19px}
.explore .map-card>div{max-height:none;overflow-y:auto;min-width:0;flex:1;padding:2px 8px 0 0;scrollbar-width:thin}
.explore .map-card h2{font-size:21px;line-height:1.18;letter-spacing:-.5px;margin:0 0 6px}
.explore .map-card p{font-size:13px;line-height:1.5;margin:3px 0}
.explore .map-card p span{display:block;color:#65685c}
.explore .map-card .place-play{font-size:15px;font-weight:900;color:#20251b;margin:7px 0 3px}
.explore .place-collection{display:flex;align-items:center;gap:4px;color:#68752f;font-size:13px;font-weight:900;padding:2px 0;text-align:left;min-height:28px}
.explore .place-collection .icon{width:14px;height:17px}
.explore .map-card .light-link{font-size:14px;font-weight:900;min-height:30px;text-decoration:none;margin-top:auto;padding:5px 0}
.explore .map-card .close{right:2px;top:0;width:24px;min-width:24px;height:24px;min-height:24px;font-size:23px;line-height:1;padding:0;z-index:2}
.vector-pin{width:42px;height:55px;padding:0;overflow:visible}.vector-pin img{width:42px;height:55px;max-width:none;object-fit:contain;filter:drop-shadow(1px 2px #faf8ec)}
.vector-label{position:absolute;left:37px;top:13px;width:max-content;max-width:130px;background:#faf8ec url('assets/design/explore-pin-label-frame.png') center/100% 100% no-repeat;padding:7px 12px;font-size:12px;font-weight:900;line-height:1.2;pointer-events:none;color:#22271c}
.vector-count{width:34px;height:39px;font-size:13px}
.maplibregl-ctrl-top-right{right:4px;top:0;max-width:calc(100% - 60px)}.maplibregl-ctrl-attrib{font-size:8px;line-height:14px;margin:2px!important;padding:1px 4px!important;white-space:normal;opacity:.86}
.maplibregl-ctrl-top-left .maplibregl-ctrl{margin:8px}.maplibregl-ctrl-group button{width:28px;height:28px}
#app:has(.explore)>.nav{height:calc(74px + env(safe-area-inset-bottom));border-top:2px solid #30362a;background:#faf8ec url('assets/design/paper.png') repeat}
#app:has(.explore)>.nav button{font-size:14px;gap:4px;font-weight:900;padding-bottom:7px}
#app:has(.explore)>.nav .icon{width:31px;height:31px}
#app:has(.explore)>.nav .active:after{bottom:6px;width:24px;height:4px}
.explore .map-list{padding:15px 92px 24px 14px;background:#faf8ec;display:block}
.explore .map-list>.panel,.explore .map-list>.wish-item{margin-bottom:14px}
.explore .showing-list .map-tools{bottom:20px!important;top:auto;flex-direction:column}
.explore .showing-list .map-tools button:first-child{height:72px;min-height:72px}
@media(max-width:350px){.explore-top{padding-left:13px;padding-right:13px}.explore .city-button{font-size:20px}.explore .ticket{width:115px;font-size:13px}.explore .tabs button{font-size:12px}.explore .map-card{left:10px;right:10px;gap:10px;padding:9px;min-height:170px}.explore .map-card h2{font-size:18px}.explore .map-card>img:not(.original-icon){min-height:155px;flex-basis:34%;width:34%}.explore .map-card .place-play{font-size:14px}.explore .place-collection{font-size:11px}}
@media(min-width:760px){#app:has(.explore){max-width:900px}.explore .map-card{width:420px;left:20px;right:auto;bottom:20px}#app:has(.explore)>.nav{max-width:900px}.explore .map-tools{right:20px!important}.explore-top{padding-left:26px;padding-right:26px}.explore .city-button{max-width:70%}.explore .tabs{max-width:550px;margin:auto}.explore .map-list{padding-right:110px}.vector-label{max-width:180px}}

.explore .map-card{height:218px;min-height:185px}.explore .map-card>img:not(.original-icon){min-height:0;max-height:none;height:100%}.explore .map-card .place-card-copy{overflow-y:auto}.explore .map-card h2{font-size:20px}.explore .map-card p{margin:2px 0;line-height:1.4}.explore .map-card .place-play{margin-top:4px}.explore .map-tools button:first-child svg{fill:currentColor;stroke:none}.explore .place-collection{min-height:25px}.explore .map-card .light-link{min-height:27px;padding:3px 0}
@media(max-height:700px){.explore .map-card{height:190px}.explore .map-card h2{font-size:18px}.explore .map-tools{gap:5px}.explore .map-tools button{width:46px;height:46px;min-height:46px}.explore .map-tools button:first-child{width:61px;height:62px;min-height:62px}.explore .map-card .place-play{font-size:13px}.explore .map-card p{font-size:12px}}

/* Source card is 816 × 440; keep its photo's full portrait crop. */
.explore .map-card{height:202px;min-height:202px;padding:10px 12px;gap:14px;border-radius:29px}
.explore .map-card:after{background-image:url('assets/design/map-card-frame-clean.png');inset:-3px}
.explore .map-card>img.place-art{flex-basis:37%;width:37%;height:100%;object-fit:fill;border-radius:18px}
.explore .map-card .place-card-copy{padding:1px 2px 0 0;overflow-y:auto;gap:0;line-height:1.2}
.explore .map-card h2{font-size:22px;line-height:1.18;letter-spacing:-.6px;margin:0 0 5px;flex-shrink:0}
.explore .place-collection{font-size:14px;line-height:1.3;min-height:26px;padding:1px 0;flex-shrink:0;text-decoration:underline;text-underline-offset:5px}
.collection-mark{font-size:19px;line-height:1;color:#74813d;transform:rotate(90deg);display:inline-block;margin-right:3px}
.explore .map-card .place-play{font-size:16px;line-height:1.2;margin:7px 0 4px;flex-shrink:0}
.explore .map-card p{font-size:14px;line-height:1.35;margin:0;flex-shrink:0}
.explore .map-card p span{display:block;font-weight:700;color:#66685e}
.explore .map-card .muted{margin-top:9px;font-size:12px}
.explore .map-card .light-link{font-size:14px;min-height:24px;margin-top:auto;padding:3px 0 0;align-self:flex-end;flex-shrink:0}
.explore .photo-grade-hit{position:absolute;left:17px;bottom:15px;width:74px;height:26px;background:transparent;z-index:3;border-radius:20px}
@media(max-width:350px){.explore .map-card{height:190px;min-height:190px;padding:9px;gap:10px}.explore .map-card h2{font-size:18px}.explore .map-card .place-play{font-size:13px}.explore .map-card p{font-size:12px}.explore .place-collection{font-size:11px}.explore .map-card .muted{margin-top:5px}.explore .map-card .light-link{font-size:12px}.explore .map-card>img.place-art{width:37%;flex-basis:37%}.explore .photo-grade-hit{width:63px;height:23px}}

.city-data-entry{position:absolute;left:12px;top:75px;z-index:420;background:#faf8ec;border:2px solid #30362a;border-radius:12px;padding:7px 11px;font-size:12px;color:#68752f;font-weight:900}.showing-list .city-data-entry{display:none}.imported-place{text-align:left;width:100%;padding:13px}.imported-place h2{font-size:18px;line-height:1.35}.imported-place p{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5;margin-top:7px}.imported-place small{display:block;margin-top:6px}
/* Shared venue cards: product fields, separated from evidence prose. */
.venue-card{display:flex;gap:13px;position:relative;background:#faf8ec url('assets/design/paper.png') repeat;border-radius:25px}
.explore .map-card>.venue-media{flex:0 0 34%;width:34%;padding:0;overflow:hidden;min-height:0;border-radius:16px;position:relative;display:flex;align-items:center;justify-content:center}
.venue-media>img{width:100%;height:100%;object-fit:cover;max-width:none;border-radius:16px}
.venue-no-photo{background:#e9edda;flex-direction:column;gap:8px;color:#69763e;font-size:13px}
.venue-no-photo>img{width:48px;height:58px;object-fit:contain;border-radius:0}
.venue-no-photo small{font-size:10px;font-weight:400;color:#7a7e70}
.explore .map-card>.venue-copy{flex:1;min-width:0;overflow:auto;padding:0 4px 0 0;display:flex;flex-direction:column;gap:0}
.venue-kind{font-size:10px;color:#69763e;line-height:1.4;margin-bottom:2px}
.explore .venue-copy h2{font-size:19px;line-height:1.2;min-height:0;margin:0 0 4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.explore .venue-play{font-size:14px;font-weight:900;line-height:1.35;margin:5px 0!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.venue-restrictions p{font-size:12px!important;font-weight:600;line-height:1.4!important;color:#656a5b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.explore .venue-cost{font-size:11px;line-height:1.45;margin-top:5px!important;color:#747568;white-space:normal;overflow-wrap:anywhere;flex-shrink:0}
.venue-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:auto}
.venue-actions>button{color:#69763e;font-size:12px;font-weight:900;padding:5px 0;min-height:29px}
.venue-grade{position:absolute;left:7px;bottom:7px;font-size:12px;font-weight:900;padding:4px 8px;border:2px solid #30362a;border-radius:18px;background:#ddef79;z-index:2;color:#202619}
.original-grade-hit{left:4%;bottom:3%;height:25px;width:65%;border:0;background:none}
.venue-list-card{margin-bottom:14px;padding:12px;border:2px solid #30362a;min-height:190px;box-shadow:2px 3px 0 #c5cbb5}
.venue-list-card>.venue-media{flex:0 0 33%;width:33%;height:166px;position:relative;border-radius:15px;overflow:hidden;display:flex;align-items:center;justify-content:center}
.venue-list-card>.venue-copy{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}
.venue-list-card h2{font-size:18px;line-height:1.25;margin-bottom:5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.explore .map-list{padding-right:85px}.venue-list-card .place-collection{font-size:11px}.venue-list-card .venue-play{font-size:13px}
.city-data-tools{position:absolute;left:8px;top:76px;z-index:420;display:flex;flex-direction:column;gap:5px;align-items:flex-start}
.city-data-tools button{background:#faf8ec;border:1.5px solid #30362a;border-radius:10px;padding:5px 9px;font-size:11px;color:#69763e;font-weight:900}
.showing-list .city-data-tools{display:none}.type-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.type-options button{padding:14px 8px;background:#f4f3e5;border:1.5px solid #69763e;border-radius:13px}.type-options button[aria-pressed=true]{background:#ddefa6;font-weight:900}
@media(max-width:350px){.explore .venue-copy h2{font-size:16px}.explore .venue-play{font-size:12px}.venue-restrictions p{font-size:11px!important}.venue-kind{font-size:9px}.venue-card{gap:9px}.venue-list-card{padding:8px;gap:7px}.venue-list-card>.venue-media{height:150px}.venue-list-card h2{font-size:15px}.venue-list-card .venue-play{font-size:12px}.venue-list-card .place-collection{font-size:10px}.venue-actions{gap:5px}}
/* Keep shared cards anchored in the map; list cards remain in document flow. */
.explore .venue-card.map-card{position:absolute}
.explore .venue-restrictions p{white-space:normal;overflow:visible;text-overflow:clip}
.explore .venue-copy h2{flex-shrink:0}
.explore .venue-card.map-card{height:230px;min-height:230px}
.explore .venue-actions{flex-shrink:0}
@media(max-width:350px){.explore .venue-card.map-card{height:240px;min-height:240px}}
.place-detail-photo{margin:16px 0}.place-detail-photo img{display:block;width:100%;max-height:260px;object-fit:cover;border-radius:15px}.place-detail-photo figcaption{font-size:11px;color:#6a705f;line-height:1.5;margin-top:7px}

.venue-media>img[hidden]{display:none}.venue-photo-error{padding:12px;text-align:center;font-size:12px;line-height:1.5}

.venue-admission-status{font-weight:700;color:#703e2d;border-left:3px solid currentColor;padding-left:6px;margin:4px 0;font-size:12px;line-height:1.4}

/* Keep long place names clear of the close control. */
#modal .sheet-title { padding-right: 30px; }
