:root{
  --primary:#004085; --primary-dark:#002A5C; --primary-light:#3D6FB5;
  --success:#28A745; --warning:#F39C12; --danger:#E74C3C; --info:#17A2B8;
  --n900:#222; --n700:#333; --n500:#888; --n300:#DDD; --n200:#E5E9EF; --n100:#F4F6F9; --white:#fff;
  --radius-card:12px; --radius-btn:8px;
  --shadow-card:0 2px 8px rgba(0,0,0,.05);
  --font:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--font);background:var(--n100);color:var(--n700)}
a{text-decoration:none;color:inherit}
img{max-width:100%}
[hidden]{display:none !important}

/* App bar */
.appbar{position:sticky;top:0;z-index:10;background:var(--primary);color:#fff;
  display:flex;align-items:center;gap:12px;padding:14px 20px;box-shadow:0 2px 5px rgba(0,0,0,.1)}
.appbar{padding:10px 20px}
.appbar .brand{font-weight:700;font-size:17px;display:flex;align-items:center;gap:10px;color:#fff;line-height:1.1}
.appbar .brand img{height:38px;width:auto;flex:0 0 auto;filter:drop-shadow(0 1px 1px rgba(0,0,0,.25))}
.appbar .brand small{display:block;font-weight:400;font-size:11px;opacity:.85;letter-spacing:.3px}
.appbar a.pill,.appbar button.pill{color:#fff;border:0;cursor:pointer;font:inherit;font-size:12px;font-weight:600}
.appbar .spacer{flex:1}
.appbar .pill{background:rgba(255,255,255,.15);padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600}

.container{max-width:1200px;margin:0 auto;padding:16px}

/* Busca + filtros */
.search{display:flex;align-items:center;gap:8px;background:#fff;border-radius:24px;
  padding:10px 16px;box-shadow:var(--shadow-card);color:var(--n500);font-size:14px;margin:12px 0}
.search input{border:0;outline:0;flex:1;font:inherit;color:var(--n700);background:transparent}
.filters{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px}
.chip{padding:6px 14px;background:#fff;border:1px solid var(--n300);border-radius:20px;
  font:inherit;font-size:13px;white-space:nowrap;cursor:pointer;color:var(--n700)}
.chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}

.section-title{font-size:12px;color:var(--n500);text-transform:uppercase;letter-spacing:1px;
  font-weight:600;margin:16px 0 10px}
.notice{background:rgba(0,64,133,.06);color:var(--primary);border-radius:10px;
  padding:10px 14px;font-size:13px;margin:12px 0}
.muted{color:var(--n500);font-size:13px}

/* Grade de cards (responsivo: 1 col mobile -> varias no desktop) */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.card{background:#fff;border-radius:var(--radius-card);overflow:hidden;box-shadow:var(--shadow-card);
  cursor:pointer;transition:transform .15s,box-shadow .15s;display:block}
.card:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.08)}
.card-img{height:170px;position:relative;background-color:var(--primary-light);overflow:hidden}
.card-img img{width:100%;height:100%;object-fit:cover;display:block}
.card-img .noimg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:rgba(255,255,255,.85);font-size:40px}
.badge{position:absolute;top:12px;left:12px;color:#fff;font-size:10px;padding:4px 10px;
  border-radius:12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;background:var(--primary)}
.badge.rural,.badge.hospedagem{background:var(--success)}
.badge.historico{background:var(--primary)}
.badge.ecologico{background:var(--info)}
.badge.cultural{background:#6f42c1}
.badge.lazer{background:var(--warning)}
.badge.gastronomico{background:#a1568b}
.badge.comercio{background:#8b5a5a}
.badge.religioso,.mp-badge.religioso{background:#8a6d1f}
.badge.featured{left:auto;right:12px;background:var(--gold,#e0982e)}
.card-body{padding:14px 16px 16px}
.card-body h3{margin:0 0 4px;font-size:16px;font-weight:600;color:var(--n700)}
.card-body p{margin:0;font-size:13px;color:var(--n500);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Detalhe */
.hero{height:280px;background-size:cover;background-position:center;background-color:var(--primary);position:relative}
.hero .back{position:absolute;top:16px;left:16px;width:40px;height:40px;border-radius:50%;
  background:rgba(0,0,0,.4);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px}
.hero .badges{position:absolute;bottom:16px;left:16px;display:flex;gap:8px}
.hero .badges .badge{position:static;top:auto;left:auto}
.detail{max-width:760px;margin:0 auto;padding:20px}
.detail h1{margin:0 0 4px;font-size:24px}
.detail .sub{color:var(--n500);font-size:14px;margin-bottom:16px}
.panel{background:#fff;border-radius:12px;padding:16px;margin-bottom:14px;box-shadow:var(--shadow-card)}
.panel h2{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--n700)}
.panel p{margin:0;font-size:14px;line-height:1.6;color:#555}
.info-row{display:flex;justify-content:space-between;gap:16px;padding:8px 0;font-size:14px;border-bottom:1px solid var(--n200)}
.info-row:last-child{border:0}
.info-row .l{color:var(--n500);flex:0 0 auto} .info-row .v{font-weight:600;text-align:right;overflow-wrap:anywhere}
.btn{display:inline-block;background:var(--primary);color:#fff;border:0;border-radius:var(--radius-btn);
  padding:14px 20px;font:inherit;font-weight:700;cursor:pointer;text-align:center;width:100%}
.footer{max-width:1200px;margin:24px auto;padding:16px;color:var(--n500);font-size:12px;text-align:center}

@media(max-width:600px){ .grid{grid-template-columns:1fr} }

/* =============== Mapa =============== */
.map-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 12px}
.btn-small{background:var(--primary);color:#fff;border:0;border-radius:var(--radius-btn);
  padding:8px 14px;font:inherit;font-weight:600;font-size:13px;cursor:pointer}
.btn-small:disabled{opacity:.6;cursor:progress}
.btn-outline{display:inline-block;background:#fff;color:var(--primary);border:1px solid var(--primary);
  border-radius:var(--radius-btn);padding:8px 14px;font:inherit;font-weight:600;font-size:13px;
  text-align:center;text-decoration:none;margin-top:8px}

.map-wrap{display:grid;grid-template-columns:1fr 300px;gap:16px;align-items:stretch}
#map{height:70vh;min-height:420px;border-radius:12px;box-shadow:var(--shadow-card);z-index:1}
.map-side{background:#fff;border-radius:12px;box-shadow:var(--shadow-card);padding:12px;
  max-height:70vh;overflow:auto}
.map-side .section-title{margin:4px 0 8px}
.ml{list-style:none;margin:0;padding:0}
.ml-item{display:flex;align-items:center;gap:10px;padding:10px 6px;border-bottom:1px solid var(--n200);
  cursor:pointer;border-radius:6px}
.ml-item:hover{background:var(--n100)}
.ml-item:last-child{border:0}
.ml-dot{width:12px;height:12px;border-radius:50%;flex:0 0 12px;box-shadow:0 0 0 2px #fff, 0 0 0 3px rgba(0,0,0,.1)}
.ml-txt{flex:1;min-width:0}
.ml-txt b{display:block;font-size:13px;color:var(--n700);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.ml-txt .badge{position:static;top:auto;left:auto;display:inline-block;margin-top:3px;font-size:9px}
.ml-dist{font-size:12px;color:var(--n500);font-weight:600;white-space:nowrap}
.ml-sem{margin-top:10px;border-top:1px solid var(--n200);padding-top:8px}
.ml-sem summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--n700);padding:4px 2px}
.ml-sem .ml-txt a{color:inherit;text-decoration:none}
.ml-sem .ml-txt a:hover b{text-decoration:underline}
@media(max-width:820px){
  .map-wrap{grid-template-columns:1fr}
  .map-side{max-height:none;order:2}
  #map{height:60vh;min-height:340px}
}

/* Popup interno */
.leaflet-popup-content{margin:0 !important}
.leaflet-popup-content-wrapper{border-radius:12px !important;padding:0 !important;overflow:hidden}
.mp{width:260px;font-family:var(--font);color:var(--n700)}
.mp-img{height:110px;background-size:cover;background-position:center;background-color:var(--primary-light)}
.mp-body{padding:10px 12px 12px}
.mp-badge{display:inline-block;color:#fff;font-size:9px;padding:3px 8px;border-radius:10px;
  font-weight:700;letter-spacing:.5px;text-transform:uppercase;background:var(--primary)}
.mp-badge.rural{background:var(--success)} .mp-badge.historico{background:var(--primary)}
.mp-badge.ecologico{background:var(--info)} .mp-badge.cultural{background:#6f42c1}
.mp-badge.lazer{background:var(--warning)} .mp-badge.gastronomico{background:#a1568b}
.mp-badge.comercio{background:#8b5a5a}
.mp h3{margin:6px 0 4px;font-size:15px;font-weight:700}
.mp p{margin:0 0 8px;font-size:12.5px;line-height:1.45;color:#555;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.mp-approx{font-size:11px;color:var(--danger);margin:0 0 8px}
.mp-actions{display:flex;gap:6px;flex-wrap:wrap}
.mp-btn{flex:1;text-align:center;background:#fff;color:var(--primary);border:1px solid var(--primary);
  border-radius:6px;padding:6px 10px;font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap}
.mp-btn.primary{background:var(--primary);color:#fff}

/* Mini-mapa no detalhe */
#miniMap{height:260px;border-radius:12px;box-shadow:var(--shadow-card);z-index:1}
@media(max-width:600px){ #miniMap{height:220px} }

/* =============== Vitrine, curadoria e convites =============== */
.badge.servicos,.mp-badge.servicos{background:#5a6b8b}
.mp-badge.hospedagem{background:var(--success)}

.notice-ok{color:#1e7b34;background:rgba(40,167,69,.10)}
.notice-err{color:var(--danger);background:rgba(231,76,60,.08)}
.notice ul{margin:6px 0 0;padding-left:18px}
.notice a{color:inherit;font-weight:700}

.fl{display:block;font-size:13px;color:var(--n500);margin:12px 0 4px}
.fl .count{float:right;font-size:11px}
.fi{width:100%;padding:12px;border:1px solid var(--n300);border-radius:6px;font:inherit;background:#fff;color:var(--n700)}
.fi:focus{outline:2px solid var(--primary-light);outline-offset:0;border-color:var(--primary-light)}
.fi:disabled{background:var(--n100);color:var(--n500)}
select.fi{appearance:auto}
.check{display:flex;align-items:center;gap:8px;font-size:14px;margin:12px 0 0;cursor:pointer}
.check input{width:18px;height:18px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
@media(max-width:600px){ .form-grid{grid-template-columns:1fr} }

.btn-tight{margin-top:0;cursor:pointer}
.btn-link{background:none;border:0;color:var(--danger);font:inherit;font-size:13px;cursor:pointer;text-decoration:underline;padding:8px}
.row-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 4px}

.hours{margin-bottom:12px}
.hours-row{display:grid;grid-template-columns:130px 1fr auto 1fr;align-items:center;gap:8px;
  padding:6px 0;border-bottom:1px solid var(--n200)}
.hours-row .check{margin:0}
.hours-row .fi{padding:8px}
.hours-row .h-sep{font-size:13px;color:var(--n500)}
.hours-row .h-closed{grid-column:2/5;font-size:13px;color:var(--n500)}
.hours-row:has(.h-on:not(:checked)) .fi,.hours-row:has(.h-on:not(:checked)) .h-sep{display:none}
@media(max-width:420px){ .hours-row{grid-template-columns:104px 1fr auto 1fr;gap:4px} }

.photo-preview{height:200px;border-radius:10px;background:var(--n100) center/cover no-repeat;
  display:flex;align-items:center;justify-content:center;border:1px dashed var(--n300)}
.photo-preview span{color:var(--n500);font-size:13px}

#pickMap{height:300px;border-radius:10px;margin-top:8px;z-index:1}

.save-bar{position:sticky;bottom:0;z-index:5;background:linear-gradient(transparent,var(--n100) 30%);
  padding:18px 0 12px;display:flex;flex-direction:column;gap:6px}
.save-bar .btn:disabled{opacity:.7;cursor:progress}
.save-bar .btn-outline{margin-top:0}

.status-box{border-radius:10px;padding:12px 14px;font-size:14px;line-height:1.5;margin:0 0 12px;border-left:4px solid}
.status-box.pending{background:rgba(243,156,18,.10);border-color:var(--warning);color:#8a5a00}
.status-box.ok{background:rgba(40,167,69,.10);border-color:var(--success);color:#1e7b34}
.status-box.err{background:rgba(231,76,60,.08);border-color:var(--danger);color:#a0281b}

.report summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--n700)}
.report[open] summary{margin-bottom:10px}

/* Detalhe: horário, contato, pré-visualização */
.open-now{display:inline-block;font-size:12px;font-weight:700;padding:3px 10px;border-radius:12px;margin-left:6px;
  text-transform:none;letter-spacing:0;vertical-align:middle}
.open-now.yes{background:rgba(40,167,69,.12);color:#1e7b34}
.open-now.no{background:rgba(231,76,60,.10);color:#a0281b}
.hours-list{margin:0;padding:0;list-style:none;font-size:14px}
.hours-list li{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--n200)}
.hours-list li:last-child{border:0}
.hours-list li.today{font-weight:700;color:var(--primary)}
.contact-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.contact-actions a{flex:1;min-width:140px;margin-top:0}
.btn-wa{background:#1f9e55;color:#fff;border-color:#1f9e55}
.preview-banner{background:var(--warning);color:#fff;text-align:center;font-size:13px;font-weight:700;padding:8px 12px}
.preview-banner a{color:#fff}

/* Curadoria */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 14px}
.tab{padding:8px 14px;border-radius:20px;border:1px solid var(--n300);background:#fff;font:inherit;font-size:13px;cursor:pointer}
.tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.tab .n{display:inline-block;min-width:18px;margin-left:4px;padding:0 5px;border-radius:9px;background:rgba(0,0,0,.08);font-size:11px}
.tab.active .n{background:rgba(255,255,255,.25)}
.rv{display:grid;grid-template-columns:120px 1fr;gap:14px;align-items:start}
.rv-img{height:90px;border-radius:8px;background:var(--primary-light) center/cover no-repeat}
.rv h3{margin:0 0 2px;font-size:16px}
.rv .meta{font-size:12px;color:var(--n500);margin-bottom:6px}
.rv .rv-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.rv .rv-actions button,.rv .rv-actions a{margin-top:0}
.btn-danger{background:#fff;color:var(--danger);border:1px solid var(--danger);border-radius:var(--radius-btn);
  padding:8px 14px;font:inherit;font-weight:600;font-size:13px;cursor:pointer}
.log{font-size:13px}
.log .when{color:var(--n500);font-size:12px}
.log pre{white-space:pre-wrap;word-break:break-word;background:var(--n100);padding:8px;border-radius:6px;margin:6px 0 0;font-size:12px}
@media(max-width:520px){ .rv{grid-template-columns:1fr} .rv-img{height:140px} }

/* =============== Guia oficial =============== */
.home-hero{display:flex;align-items:center;gap:18px;background:linear-gradient(120deg,var(--primary) 0%,#0a5bb0 100%);
  color:#fff;border-radius:14px;padding:22px 24px;margin:6px 0 4px;box-shadow:var(--shadow-card)}
.home-hero img{height:86px;width:auto;flex:0 0 auto;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3))}
.home-hero h1{margin:0 0 6px;font-size:24px;line-height:1.2}
.home-hero p{margin:0;font-size:14px;opacity:.92;line-height:1.5}
.home-hero .hero-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.home-hero .hero-actions a{background:#fff;color:var(--primary);border-radius:20px;padding:7px 14px;font-size:13px;font-weight:700}
.home-hero .hero-actions a.ghost{background:rgba(255,255,255,.15);color:#fff}
@media(max-width:600px){ .home-hero{flex-direction:column;text-align:center;padding:18px} .home-hero .hero-actions{justify-content:center} }
.home-section{margin-top:22px}
.home-section > h2{font-size:18px;margin:0 0 10px;color:var(--n700)}
.home-section > h2 small{font-size:13px;font-weight:400;color:var(--n500);margin-left:6px}
.source-note{font-size:12px;color:var(--n500);margin:-6px 0 14px}
.footer a{color:var(--primary)}
.footer .footer-brand{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:6px;color:var(--n700);font-weight:600}
.footer .footer-brand img{height:28px;width:auto}

.cur-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:4px 0 8px}
.cur-toolbar .fi{flex:1;min-width:180px;padding:8px 12px}
.cur-toolbar a.btn-small{text-decoration:none}
.user-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--n200);font-size:14px}
.user-row:last-child{border:0}
.user-row .who{flex:1;min-width:200px}
.user-row .who small{display:block;color:var(--n500)}
.user-row select{width:auto;padding:6px 8px}

/* Páginas legais */
.legal .panel ul{margin:0;padding-left:20px;font-size:14px;line-height:1.65;color:#555}
.legal .panel li{margin:4px 0}
.legal .panel p + p{margin-top:8px}
.legal a{color:var(--primary);text-decoration:underline}
.danger-zone{border:1px solid rgba(231,76,60,.35)}
.danger-zone h2{color:var(--danger)}
.install-tip{font-size:13px;margin-top:10px;opacity:.95}

/* Kit de divulgação */
.kit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.kit-item{margin:0}
.kit-item canvas{width:100%;height:auto;border-radius:8px;border:1px solid var(--n300);background:var(--n100)}
.kit-item figcaption{font-size:13px;color:var(--n700);margin-top:8px;display:flex;flex-direction:column;gap:8px}

/* Histórico de alterações */
.audit .diff{margin:6px 0 0;padding-left:18px;font-size:13px;color:#555}
.audit .diff li{margin:2px 0;overflow-wrap:anywhere}

/* Modo campo */
.campo .campo-progress{font-size:14px;line-height:1.6;margin-bottom:10px}
.campo-bar{height:8px;background:var(--n200);border-radius:4px;overflow:hidden;margin-top:6px}
.campo-bar span{display:block;height:100%;background:var(--success)}
.campo-card h3{margin:0 0 2px;font-size:17px;display:flex;justify-content:space-between;gap:8px}
.campo-dist{font-size:13px;font-weight:600;color:var(--primary);white-space:nowrap}
.campo-tags{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.campo-tags span{font-size:12px;background:rgba(243,156,18,.12);color:#8a5a00;border-radius:12px;padding:3px 10px}
.campo-tags span.ok{background:rgba(40,167,69,.12);color:#1e7b34}
.campo-acoes{display:flex;gap:8px;flex-wrap:wrap}
.campo-acoes .btn-small,.campo-acoes .btn-outline{min-height:40px;display:inline-flex;align-items:center;margin-top:0;text-decoration:none}
.campo-status{margin-top:6px}
