@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,600&family=Montserrat:wght@400;500;600;700&display=swap');

:root{
  --bg:#F7F1E2;
  --bg-2:#EFE6CE;
  --surface:#FFFFFF;
  --text:#241E3A;
  --text-soft:#5B5A78;
  --heading:#1A2456;
  --border:#E3D9BE;
  --accent-blue:#3E5CA8;
  --accent-gold:#B98A2E;
  --accent-gold-strong:#D9A63E;
  --accent-red:#A93A34;
  --state-good:#2E7D4F;
  --emphasis:#1A2456;
  --on-emphasis:#F7F1E2;
  --shadow: 0 1px 2px rgba(26,36,86,.06), 0 8px 24px rgba(26,36,86,.08);
  --radius: 14px;
  --maxw: 1180px;

  --selo-indica-bg:#F2E2B8; --selo-indica-text:#6B4E11;
  --selo-olha-bg:#DCE3F7;   --selo-olha-text:#2A3E86;
  --selo-rolando-bg:#F3D9D6; --selo-rolando-text:#8A342D;

  --cat-restaurante:#B98A2E;
  --cat-cafe:#A9524B;
  --cat-buffet:#6C5CA8;
  --cat-parque-indoor:#2E8B7D;
  --cat-parque-aberto:#3E8E4F;
  --cat-shopping:#3E5CA8;

  --brand-band-bg:#1A2456;
  --brand-band-text:#F7F1E2;
  --brand-band-text-dim:#DCE3F7;
  --brand-band-text-soft:#C9D2EE;
  --brand-band-gold:#E0B75C;
  --brand-band-border:rgba(247,241,226,.28);

  --map-bg:#EFE9D6;
  --map-line:#DCD0AE;
  --map-region:#E4DCC0;
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#141A3D; --bg-2:#1C2450; --surface:#1B234C;
    --text:#EDE9F4; --text-soft:#AFAECF; --heading:#EFE6CE; --border:#2C3568;
    --accent-blue:#9DB2E8; --accent-gold:#E0B75C; --accent-gold-strong:#E8C273; --accent-red:#E08C86;
    --state-good:#6FCF97; --emphasis:#EFE6CE; --on-emphasis:#141A3D;
    --shadow: 0 1px 2px rgba(0,0,0,.3), 0 12px 30px rgba(0,0,0,.35);
    --selo-indica-bg:#4A3A12; --selo-indica-text:#F0CC7E;
    --selo-olha-bg:#22305F;   --selo-olha-text:#B7C6F5;
    --selo-rolando-bg:#4A211D; --selo-rolando-text:#F0B3AC;
    --cat-restaurante:#E0B75C; --cat-cafe:#DE8981; --cat-buffet:#B0A0E8;
    --cat-parque-indoor:#6FD9C7; --cat-parque-aberto:#83D993; --cat-shopping:#9DB2E8;
    --map-bg:#1C2450; --map-line:#2C3568; --map-region:#232D5E;
  }
}
:root[data-theme="dark"]{
  --bg:#141A3D; --bg-2:#1C2450; --surface:#1B234C;
  --text:#EDE9F4; --text-soft:#AFAECF; --heading:#EFE6CE; --border:#2C3568;
  --accent-blue:#9DB2E8; --accent-gold:#E0B75C; --accent-gold-strong:#E8C273; --accent-red:#E08C86;
  --state-good:#6FCF97; --emphasis:#EFE6CE; --on-emphasis:#141A3D;
  --shadow: 0 1px 2px rgba(0,0,0,.3), 0 12px 30px rgba(0,0,0,.35);
  --selo-indica-bg:#4A3A12; --selo-indica-text:#F0CC7E;
  --selo-olha-bg:#22305F;   --selo-olha-text:#B7C6F5;
  --selo-rolando-bg:#4A211D; --selo-rolando-text:#F0B3AC;
  --cat-restaurante:#E0B75C; --cat-cafe:#DE8981; --cat-buffet:#B0A0E8;
  --cat-parque-indoor:#6FD9C7; --cat-parque-aberto:#83D993; --cat-shopping:#9DB2E8;
  --map-bg:#1C2450; --map-line:#2C3568; --map-region:#232D5E;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Montserrat',system-ui,-apple-system,sans-serif;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.display{
  font-family:'Playfair Display',Georgia,serif;
  text-wrap:balance;
  color:var(--heading);
}
button{font-family:inherit;}
::selection{background:var(--accent-gold);color:#fff;}
a{color:inherit;}

header.top{
  background:var(--brand-band-bg);
  color:var(--brand-band-text);
  padding:22px 20px 20px;
}
.top-inner{
  max-width:var(--maxw);
  margin:0 auto;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
}
.brand{display:flex; align-items:center; gap:10px;}
.brand-mark{display:flex; align-items:baseline; gap:2px;}
.brand-mark .word{
  font-family:'Playfair Display',serif;
  font-weight:700;
  font-style:italic;
  font-size:28px;
  color:var(--brand-band-text);
  letter-spacing:.2px;
}
.brand-mark .star{color:var(--brand-band-gold); font-size:16px; margin-left:2px;}
.brand-sub{
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--brand-band-gold);
  font-weight:600;
  margin-top:2px;
}
.brand-tagline{
  font-size:12.5px;
  color:var(--brand-band-text-soft);
  margin-top:6px;
  max-width:360px;
}
.admin-toggle, .admin-link{
  display:flex; align-items:center; gap:8px;
  background:transparent;
  border:1px solid var(--brand-band-border);
  color:var(--brand-band-text-dim);
  padding:8px 12px;
  border-radius:999px;
  font-size:12px;
  font-weight:600;
  cursor:pointer;
  text-decoration:none;
  transition:background .15s, border-color .15s;
}
.admin-toggle:hover, .admin-link:hover{border-color:rgba(247,241,226,.55);}
.admin-toggle.active{background:var(--brand-band-gold); border-color:var(--brand-band-gold); color:#1A2456;}
.admin-toggle svg, .admin-link svg{width:14px;height:14px;flex:none;}

h1.headline{
  font-size:clamp(22px,3.4vw,30px);
  margin:16px 0 0;
  font-weight:600;
  max-width:640px;
  color:var(--brand-band-text);
}
.headline em{font-style:italic; color:var(--brand-band-gold);}

.controls{
  position:sticky; top:0; z-index:20;
  background:var(--bg);
  border-bottom:1px solid var(--border);
  padding:14px 20px;
}
.controls-inner{max-width:var(--maxw); margin:0 auto;}
.search-row{display:flex; gap:10px; align-items:center; flex-wrap:wrap;}
.search-box{
  flex:1 1 200px;
  display:flex; align-items:center; gap:8px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:999px;
  padding:10px 16px;
}
.search-box svg{width:16px;height:16px;color:var(--text-soft);flex:none;}
.search-box input{
  border:none; outline:none; background:transparent;
  font-family:inherit; font-size:14px; color:var(--text); width:100%;
}
.search-box input::placeholder{color:var(--text-soft);}
.pill-btn{
  display:flex; align-items:center; gap:7px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:999px;
  padding:10px 16px;
  font-size:13px; font-weight:600; color:var(--heading);
  cursor:pointer; white-space:nowrap;
}
.pill-btn svg{width:14px;height:14px;}
.pill-btn.active{background:var(--emphasis); border-color:var(--emphasis); color:var(--on-emphasis);}
.pill-btn .count{
  background:var(--accent-gold); color:#fff; border-radius:999px;
  font-size:10.5px; font-weight:700; padding:1px 6px; min-width:16px; text-align:center;
}

.cat-tabs{
  display:flex; gap:8px; overflow-x:auto; margin-top:12px; padding-bottom:2px;
  scrollbar-width:none;
}
.cat-tabs::-webkit-scrollbar{display:none;}
.cat-tab{
  flex:none;
  padding:7px 14px;
  border-radius:999px;
  border:1px solid var(--border);
  background:var(--surface);
  color:var(--text-soft);
  font-size:12.5px; font-weight:600;
  cursor:pointer;
  white-space:nowrap;
}
.cat-tab.active{background:var(--emphasis); border-color:var(--emphasis); color:var(--on-emphasis);}

.filters-panel{
  max-width:var(--maxw); margin:12px auto 0;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:16px 18px;
  box-shadow:var(--shadow);
  display:none;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:16px;
}
.filters-panel.open{display:grid;}
.filter-group.full{grid-column:1/-1;}
.filter-group label.group-label{
  display:block; font-size:11px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--text-soft); margin-bottom:8px;
}
.chip-set{display:flex; flex-wrap:wrap; gap:6px;}
.chip-check{
  display:inline-flex; align-items:center; gap:5px;
  border:1px solid var(--border); border-radius:8px;
  padding:6px 9px; font-size:12px; cursor:pointer; color:var(--text);
  background:var(--bg);
}
.chip-check input{accent-color:var(--accent-gold-strong); margin:0;}
.filters-clear{
  grid-column:1/-1;
  display:flex; justify-content:flex-end;
}
.filters-clear button{
  background:none; border:none; color:var(--accent-red); font-size:12.5px; font-weight:700;
  cursor:pointer; padding:4px 0;
}

.near-me-row{
  display:flex; align-items:center; gap:8px; margin-bottom:12px;
  padding-bottom:12px; border-bottom:1px dashed var(--border);
}
.near-me-row label{display:flex; align-items:center; gap:8px; font-size:13px; font-weight:600; color:var(--heading); cursor:pointer;}
.near-me-row input{accent-color:var(--accent-gold-strong); width:16px; height:16px;}
.near-me-row svg{width:15px;height:15px; color:var(--accent-blue);}
.region-city{border:none; margin-bottom:8px;}
.region-city:last-child{margin-bottom:0;}
.region-city summary{
  cursor:pointer; font-size:13px; font-weight:700; color:var(--heading);
  padding:4px 0; list-style:none; display:flex; align-items:center; gap:6px;
}
.region-city summary::-webkit-details-marker{display:none;}
.region-city summary::before{content:"▸"; font-size:10px; color:var(--text-soft); transition:transform .12s;}
.region-city[open] summary::before{transform:rotate(90deg);}
.region-city summary .n{color:var(--text-soft); font-weight:600;}
.region-bairros{display:flex; flex-wrap:wrap; gap:6px; padding:8px 0 4px 16px;}

.results-line{
  max-width:var(--maxw); margin:14px auto 0; padding:0 0 2px;
  display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap;
}
.results-count{font-size:12.5px; color:var(--text-soft);}
.results-actions{display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
.view-toggle{display:flex; background:var(--surface); border:1px solid var(--border); border-radius:999px; padding:3px;}
.view-toggle button{
  border:none; background:none; padding:6px 13px; border-radius:999px; font-size:12.5px; font-weight:600;
  color:var(--text-soft); cursor:pointer; display:flex; align-items:center; gap:6px;
}
.view-toggle button.active{background:var(--emphasis); color:var(--on-emphasis);}
.view-toggle svg{width:13px;height:13px;}
.add-btn{
  display:flex; align-items:center; gap:6px;
  background:var(--emphasis); color:var(--on-emphasis);
  border:none; border-radius:999px; padding:9px 15px;
  font-size:12.5px; font-weight:700; cursor:pointer;
}
.add-btn svg{width:13px;height:13px;}

main{max-width:var(--maxw); margin:0 auto; padding:18px 20px 80px;}
.grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(270px,1fr));
  gap:16px;
  margin-top:10px;
}
.card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:16px 16px 14px;
  box-shadow:var(--shadow);
  cursor:pointer;
  display:flex; flex-direction:column; gap:10px;
  position:relative;
  transition:transform .12s ease;
}
.card:hover{transform:translateY(-2px);}
.card-top{display:flex; align-items:flex-start; justify-content:space-between; gap:8px;}
.selo{
  font-size:10px; font-weight:700; letter-spacing:.04em;
  padding:3px 8px; border-radius:999px; text-transform:uppercase;
  flex:none;
}
.selo-indica{background:var(--selo-indica-bg); color:var(--selo-indica-text);}
.selo-olha{background:var(--selo-olha-bg); color:var(--selo-olha-text);}
.selo-rolando{background:var(--selo-rolando-bg); color:var(--selo-rolando-text);}
.selo-rascunho{background:var(--bg-2); color:var(--text-soft); border:1px dashed var(--border);}
.cat-icon{width:26px;height:26px;flex:none;}
.cat-icon.c-restaurante{color:var(--cat-restaurante);}
.cat-icon.c-cafe{color:var(--cat-cafe);}
.cat-icon.c-buffet{color:var(--cat-buffet);}
.cat-icon.c-parque-indoor{color:var(--cat-parque-indoor);}
.cat-icon.c-parque-aberto{color:var(--cat-parque-aberto);}
.cat-icon.c-shopping{color:var(--cat-shopping);}
.card h3{font-size:18px; margin:0; line-height:1.25;}
.card .place-cat{font-size:11.5px; color:var(--text-soft); font-weight:600;}
.card .place-loc{font-size:12px; color:var(--text-soft); display:flex; gap:5px; align-items:flex-start;}
.card .place-loc svg{width:12px;height:12px; margin-top:2px; flex:none;}
.tag-row{display:flex; flex-wrap:wrap; gap:6px; margin-top:auto;}
.tag{
  font-size:11px; font-weight:600; padding:3px 8px; border-radius:6px;
  background:var(--bg-2); color:var(--text);
}
.tag.dist{background:transparent; border:1px solid var(--accent-blue); color:var(--accent-blue);}
.amenity-row{display:flex; gap:10px; padding-top:8px; border-top:1px dashed var(--border);}
.amenity{display:flex; align-items:center; gap:4px; font-size:11px; color:var(--text-soft);}
.amenity svg{width:14px;height:14px;}
.amenity.yes{color:var(--state-good);}
.amenity.no{color:var(--text-soft); opacity:.55;}
.amenity.unknown{color:var(--accent-gold);}
.card-admin-row{position:absolute; top:10px; right:10px; display:flex; gap:6px;}
.icon-btn{
  width:26px;height:26px; border-radius:8px; border:1px solid var(--border);
  background:var(--surface); display:flex; align-items:center; justify-content:center;
  cursor:pointer; color:var(--text-soft);
}
.icon-btn svg{width:13px;height:13px;}
.icon-btn.danger:hover{color:var(--accent-red); border-color:var(--accent-red);}

.empty-state, .load-state{
  text-align:center; padding:60px 20px; color:var(--text-soft);
}
.empty-state h3{color:var(--heading); margin-bottom:6px;}

.map-wrap{margin-top:10px;}
.map-panel{
  position:relative;
  background:var(--map-bg);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  overflow:hidden;
}
.map-panel svg{display:block; width:100%; height:auto;}
.map-pin{cursor:pointer;}
.map-pin circle.dot{stroke:var(--surface); stroke-width:2;}
.map-pin text{font-family:'Montserrat',sans-serif; font-size:9px; font-weight:700; fill:var(--surface);}
.map-pin:hover circle.dot{stroke:var(--accent-gold-strong);}
.map-legend{
  display:flex; flex-wrap:wrap; gap:12px 18px; margin-top:12px;
  font-size:11.5px; color:var(--text-soft);
}
.map-legend .item{display:flex; align-items:center; gap:6px;}
.map-legend .dot{width:10px;height:10px;border-radius:999px; flex:none;}
.map-note{
  font-size:11.5px; color:var(--text-soft); margin-top:8px;
  display:flex; gap:6px; align-items:flex-start;
}
.map-note svg{width:13px;height:13px; flex:none; margin-top:1px;}
.map-empty{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding:60px 24px; gap:10px;
}
.map-empty svg{width:40px;height:40px; color:var(--text-soft); opacity:.6;}
.map-empty h3{color:var(--heading); font-size:17px; margin:0;}
.map-empty p{color:var(--text-soft); font-size:13px; max-width:360px; margin:0;}

.overlay{
  position:fixed; inset:0; background:rgba(10,12,28,.55);
  display:none; align-items:flex-start; justify-content:center;
  padding:40px 16px; overflow-y:auto; z-index:100;
}
.overlay.open{display:flex;}
.modal{
  background:var(--surface); border-radius:18px; max-width:560px; width:100%;
  box-shadow:var(--shadow); padding:26px 26px 24px; position:relative;
}
.modal-close{
  position:absolute; top:16px; right:16px;
  width:30px;height:30px; border-radius:999px; border:none;
  background:var(--bg-2); color:var(--text); cursor:pointer;
  display:flex; align-items:center; justify-content:center;
}
.modal-close svg{width:14px;height:14px;}
.modal h2{font-size:24px; margin:0 0 4px; padding-right:30px;}
.modal .place-cat{font-size:12.5px; color:var(--text-soft); font-weight:600; margin-bottom:14px;}
.modal .place-loc{font-size:13px; color:var(--text-soft); display:flex; gap:6px; margin-bottom:16px;}
.modal .place-loc svg{width:13px;height:13px; margin-top:2px; flex:none;}
.modal-tags{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:16px;}
.modal-obs{
  font-size:13.5px; line-height:1.6; color:var(--text);
  background:var(--bg); border-radius:10px; padding:12px 14px; margin-bottom:16px;
}
.amenity-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:8px 14px; margin-bottom:20px;
}
.amenity-grid .amenity{font-size:13px;}
.amenity-grid .amenity svg{width:16px;height:16px;}
.maps-btn{
  display:flex; align-items:center; justify-content:center; gap:8px;
  width:100%;
  background:var(--accent-gold-strong); color:#241C08;
  border:none; border-radius:12px; padding:13px; font-size:14px; font-weight:700;
  cursor:pointer; text-decoration:none;
}
.maps-btn svg{width:16px;height:16px;}

.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px;}
.form-grid .full{grid-column:1/-1;}
.field label{display:block; font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--text-soft); margin-bottom:5px;}
.field input[type=text], .field input[type=number], .field input[type=email], .field input[type=password], .field select, .field textarea{
  width:100%; font-family:inherit; font-size:13.5px; color:var(--text);
  background:var(--bg); border:1px solid var(--border); border-radius:8px;
  padding:9px 10px; outline:none;
}
.field textarea{resize:vertical; min-height:70px;}
.field .chip-set{margin-top:2px;}
.field-hint{font-size:11px; color:var(--text-soft); margin-top:5px; display:flex; align-items:center; gap:5px; flex-wrap:wrap;}
.field-hint a{color:var(--accent-blue); font-weight:600; text-decoration:none;}
.field-hint a:hover{text-decoration:underline;}
.form-actions{display:flex; justify-content:space-between; align-items:center; margin-top:18px; flex-wrap:wrap; gap:10px;}
.save-btn{
  background:var(--emphasis); color:var(--on-emphasis); border:none; border-radius:10px;
  padding:11px 20px; font-size:13.5px; font-weight:700; cursor:pointer;
}
.save-btn:disabled{opacity:.5; cursor:default;}
.form-note{font-size:11.5px; color:var(--text-soft);}
.banner{
  max-width:var(--maxw); margin:14px auto 0; padding:11px 16px; border-radius:10px;
  background:var(--bg-2); border:1px solid var(--border); font-size:12.5px; color:var(--text);
  display:flex; gap:8px; align-items:flex-start;
}
.banner svg{width:15px;height:15px; flex:none; margin-top:1px; color:var(--accent-gold);}
.toast{
  position:fixed; bottom:20px; left:50%; transform:translateX(-50%);
  background:var(--emphasis); color:var(--on-emphasis); padding:11px 18px; border-radius:999px;
  font-size:12.5px; font-weight:600; box-shadow:var(--shadow); z-index:200;
  opacity:0; pointer-events:none; transition:opacity .2s, transform .2s;
  max-width:80vw; text-align:center;
}
.toast.show{opacity:1; transform:translateX(-50%) translateY(-6px);}

@media (prefers-reduced-motion: reduce){
  .card, .toast{transition:none;}
}
@media (max-width:600px){
  .form-grid{grid-template-columns:1fr;}
  .amenity-grid{grid-template-columns:1fr;}
}

/* ---------- Admin-only additions ---------- */
.login-wrap{
  max-width:380px; margin:70px auto; padding:0 20px;
}
.login-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:28px 26px;
}
.login-card h2{margin:0 0 6px; font-size:22px;}
.login-card p{font-size:13px; color:var(--text-soft); margin:0 0 20px;}
.login-card .field{margin-bottom:14px;}
.login-error{font-size:12.5px; color:var(--accent-red); margin-top:10px; min-height:16px;}
.admin-bar{
  max-width:var(--maxw); margin:16px auto 0; padding:0 20px;
  display:flex; gap:10px; flex-wrap:wrap; align-items:center; justify-content:space-between;
}
.admin-bar .left{display:flex; gap:10px; flex-wrap:wrap;}
.admin-bar .right{display:flex; gap:10px; align-items:center; font-size:12.5px; color:var(--text-soft);}
.admin-bar button.logout{background:none; border:none; color:var(--accent-red); font-weight:700; font-size:12.5px; cursor:pointer;}
.draft-badge{
  font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  padding:2px 7px; border-radius:999px; background:var(--bg-2); color:var(--text-soft);
  border:1px dashed var(--border);
}
