*{box-sizing:border-box}
body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:#07121f;color:#eef6ff}
.app{height:100vh;display:grid;grid-template-columns:minmax(0,1.55fr) minmax(360px,.8fr);overflow:hidden}
.map{position:relative;min-height:100%}
#map{height:100%;width:100%}
.brand{position:absolute;z-index:1000;top:18px;left:18px;background:rgba(5,17,29,.86);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:12px 15px;box-shadow:0 12px 35px #0007}
.brand b{font-size:18px;letter-spacing:.3px}
.brand span{display:block;color:#9cc8e8;font-size:11px;margin-top:2px}
.filters{position:absolute;z-index:1000;bottom:18px;left:18px;right:18px;display:flex;gap:8px;flex-wrap:wrap}
.chip{border:1px solid rgba(255,255,255,.16);background:rgba(5,17,29,.82);color:#dcefff;padding:9px 13px;border-radius:999px;cursor:pointer;font-weight:700;font-size:12px;backdrop-filter:blur(12px)}
.chip.active{background:#fff;color:#07121f}
.panel{padding:25px;overflow:auto;background:linear-gradient(180deg,#0b1b2c,#07121f)}
.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px}
.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:2px;color:#7ec7ff;font-weight:800}
.panel h1{font-size:29px;line-height:1.05;margin:5px 0 0}
.count{font-size:12px;color:#91abc0}
.hero{height:230px;border-radius:20px;overflow:hidden;position:relative;background:#10283d;margin-bottom:16px}
.text-hero{background:radial-gradient(circle at 80% 15%,#164a70 0,#0d263d 34%,#081522 75%);border:1px solid #ffffff10}
.hero-orb{display:none}
.map-orb{position:absolute;z-index:1001;right:18px;top:18px;width:68px;height:68px;border-radius:50%;display:grid;place-items:center;font-size:29px;color:#7edbff;background:rgba(7,18,31,.58);backdrop-filter:blur(10px);border:1px solid rgba(126,219,255,.24);box-shadow:0 0 34px rgba(63,200,255,.24),inset 0 0 22px rgba(126,219,255,.06);pointer-events:none;transition:transform .25s ease,box-shadow .25s ease,opacity .25s ease}
.map-orb:after{content:"";position:absolute;inset:-9px;border-radius:50%;border:1px solid rgba(82,156,255,.16);box-shadow:0 0 22px rgba(82,156,255,.12)}
.hero:after{content:"";position:absolute;inset:35% 0 0;background:linear-gradient(transparent,#07121f)}
.info{position:relative;margin-top:-58px;z-index:2;padding:0 18px 14px}
.tag{display:inline-block;padding:6px 9px;border-radius:999px;background:#fff;color:#0b1b2c;font-size:10px;font-weight:900}
.desc{color:#c0d2e2;font-size:13px;line-height:1.6;margin:9px 0 15px}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.fact{background:#0e2437;border:1px solid #ffffff12;border-radius:13px;padding:11px}
.fact small{display:block;color:#7f9bb0;font-size:10px}
.fact b{font-size:12px}
.list{margin-top:20px}
.list h2{font-size:13px;margin:0 0 10px}
.place{display:flex;gap:10px;padding:10px;border:1px solid #ffffff0e;border-radius:13px;margin-bottom:7px;background:#0a1a2a;cursor:pointer}
.place:hover{background:#10263a}
.dot{width:10px;height:10px;border-radius:50%;margin-top:5px;flex:0 0 auto}
.place b{font-size:12px}
.place small{display:block;color:#829db2;font-size:10px;margin-top:2px}
.leaflet-control-attribution{font-size:9px}
.custom-marker{width:46px;height:46px;border-radius:0;display:grid;place-items:center;background:transparent;border:0;box-shadow:none;transition:transform .2s ease,filter .2s ease,box-shadow .2s ease}
.custom-marker img{width:38px;height:38px;display:block;filter:drop-shadow(0 3px 7px rgba(0,0,0,.35))}
.custom-marker.selected{transform:scale(1.18);box-shadow:0 0 22px rgba(45,118,221,.42)}
.custom-marker.selected img{filter:drop-shadow(0 3px 8px rgba(0,0,0,.4)) drop-shadow(0 0 7px rgba(82,156,255,.35))}
.naut{background:#59d0ff}
.beach{background:#ffe08a}
.recife{background:#b9a2ff}
.selected{transform:scale(1.22);box-shadow:0 0 0 7px #ffffff33,0 8px 24px #0009}
@media(max-width:900px){.app{grid-template-columns:1fr;grid-template-rows:52vh auto}
.panel{padding:18px}
.hero{height:190px}
.filters{bottom:12px}
.brand{top:12px;left:12px}
}
.place:focus-visible{outline:2px solid #7ec7ff}.place.on{background:#10263a;border-color:#7ec7ff55}
