* { box-sizing: border-box; letter-spacing: 0; }
main { padding-block: 28px; }
h1 { font-size: 28px; margin: 0 0 24px; }
.explore-tools { display: flex; flex-wrap: wrap; align-items: end; gap: 12px; border-bottom: 1px solid #dce1e4; padding-bottom: 20px; }
.explore-tools label { flex: 1 1 140px; }
label { display: block; font-size: 14px; font-weight: 600; }
input, select, textarea { display: block; width: 100%; min-width: 0; min-height: 44px; margin-top: 6px; padding: 10px; border: 1px solid #bcc4c9; border-radius: 6px; font: inherit; background: white; color: #192321; }
.explore-results { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 16px; padding-block: 20px; }
.place-card { border: 1px solid #dce1e4; border-radius: 8px; overflow: hidden; background: #fff; }
.place-body { padding: 20px; }
.place-card h2 { font-size: 20px; line-height: 1.4; margin: 0 0 8px; overflow-wrap: anywhere; }
.place-card p { margin: 8px 0; overflow-wrap: anywhere; }
.place-card img { display: block; width: 100%; aspect-ratio: 16/9; object-fit: cover; }
.place-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 16px; }
.place-actions .btn { min-height: 44px; white-space: normal; }
.price-label { color: #176144; font-weight: 800; }
.source { font-size: 12px; color: #56645e; }
dialog { width: min(460px, calc(100% - 32px)); max-height: 90dvh; overflow-y: auto; padding: 24px; border: 1px solid #dce1e4; border-radius: 8px; color: #192321; }
dialog::backdrop { background: #0008; }
dialog label, dialog button { margin-bottom: 14px; }
button:disabled { opacity: .55; cursor: wait; }
.btn svg { width: 18px; height: 18px; vertical-align: middle; }
[hidden] { display: none !important; }
@media (max-width: 480px) { .explore-tools > .btn { flex: 1 1 auto; } .place-body { padding: 16px; } }
