* { box-sizing: border-box; }

    :root {
      --bg: #060b16;
      --panel: #0b1220;
      --panel2: #101827;
      --line: rgba(255,255,255,.08);
      --muted: rgba(255,255,255,.62);
      --text: #ffffff;
      --orange: #ff9f1c;
      --purple: #7b5a86;
      --green: #22c55e;
      --red: #ef4444;
      --gray: #94a3b8;
      --blue: #1f6fff;
    }

    body {
      margin: 0;
      font-family: 'Inter', sans-serif;
      color: var(--text);
      background:
        radial-gradient(circle at 14% 12%, rgba(31,111,255,.18), transparent 18%),
        radial-gradient(circle at 92% 2%, rgba(255,159,28,.10), transparent 18%),
        radial-gradient(circle at 60% 28%, rgba(123,90,134,.12), transparent 20%),
        linear-gradient(180deg, #050914 0%, #07101e 48%, #050912 100%);
      min-height: 100vh;
    }

    body::before {
      content: "";
      position: fixed;
      inset: 0;
      pointer-events: none;
      opacity: .18;
      background-image:
        radial-gradient(circle, rgba(255,255,255,.42) 1px, transparent 1px),
        radial-gradient(circle, rgba(255,159,28,.28) 1px, transparent 1px);
      background-size: 34px 34px, 58px 58px;
      background-position: 0 0, 18px 12px;
    }

    .app-shell {
      width: 100%;
      max-width: 430px;
      min-height: 100vh;
      margin: 0 auto;
      padding: 22px 16px 96px;
      position: relative;
    }

    .topbar {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 20px;
    }

    .current-time {
      color: rgba(255,255,255,.56);
      font-size: 12px;
      font-weight: 700;
    }

    .user-summary {
      display: flex;
      align-items: flex-end;
      flex-direction: column;
      gap: 5px;
    }

    .points-badge {
      display: flex;
      align-items: center;
      gap: 4px;
      min-height: 28px;
      padding: 0 10px;
      border: 1px solid rgba(255,176,32,.3);
      border-radius: 999px;
      background: rgba(255,176,32,.12);
      color: #ffcf70;
      font-size: 10px;
      font-weight: 700;
      transition: transform .25s ease, box-shadow .25s ease;
    }

    .points-badge strong { color: #fff; font-size: 13px; }

    .points-badge.points-earned {
      transform: scale(1.15);
      box-shadow: 0 0 22px rgba(255,176,32,.38);
    }

    .brand {
      display: flex;
      align-items: center;
      gap: 13px;
      color: #ffffff;
      font-weight: 900;
      font-size: 29px;
      line-height: 1;
      letter-spacing: -.9px;
      text-shadow: 0 0 22px rgba(255,255,255,.06);
    }

    .brand-name {
      font-weight: 900;
      color: #fff;
    }

    .brand-name .map-accent {
      color: #ffa43a;
    }

    .brand-icon {
      width: 58px;
      height: 58px;
      border-radius: 50%;
      display: grid;
      place-items: center;
      background: #765476;
      box-shadow: 0 0 26px rgba(255,164,58,.15);
      position: relative;
      color: transparent;
      font-size: 0;
      flex-shrink: 0;
    }

    .brand-icon::before {
      content: "";
      width: 26px;
      height: 26px;
      background: #ffa43a;
      border-radius: 50% 50% 50% 0;
      transform: rotate(-45deg);
      display: block;
      box-shadow: 0 0 10px rgba(255,164,58,.25);
    }

    .brand-icon::after {
      content: "";
      width: 9px;
      height: 9px;
      border-radius: 50%;
      background: #765476;
      position: absolute;
      top: 20px;
      left: 24px;
    }

    .page-title {
      margin: 0 0 7px;
      font-size: 25px;
      line-height: 1.08;
      font-weight: 900;
      letter-spacing: -.9px;
      text-shadow: 0 10px 24px rgba(0,0,0,.26);
    }

    .subtitle {
      margin: 0 0 16px;
      font-size: 13.5px;
      color: rgba(255,255,255,.72);
    }

    .region-select {
      width: 100%;
      margin-bottom: 10px;
      height: 42px;
      border-radius: 14px;
      border: 1px solid var(--line);
      background: rgba(255,255,255,.055);
      color: rgba(255,255,255,.82);
      padding: 0 12px;
      font-size: 12px;
      outline: none;
    }

    .search-wrap {
      position: relative;
      margin-bottom: 12px;
    }

    .search-icon {
      position: absolute;
      left: 14px;
      top: 50%;
      transform: translateY(-50%);
      color: rgba(255,255,255,.42);
      font-size: 13px;
    }

    .search-input {
      width: 100%;
      height: 46px;
      border-radius: 16px;
      border: 1px solid var(--line);
      background: rgba(255,255,255,.055);
      color: #fff;
      outline: none;
      padding: 0 14px 0 38px;
      font-size: 13px;
      box-shadow: inset 0 0 20px rgba(31,111,255,.06);
    }

    .search-input::placeholder { color: rgba(255,255,255,.38); }

    .category-row, .filtros {
      display: flex;
      gap: 8px;
      overflow-x: auto;
      padding-bottom: 4px;
      scrollbar-width: none;
    }

    .filtros { margin-top: 10px; }

    .category-row::-webkit-scrollbar, .filtros::-webkit-scrollbar { display: none; }

    .category-btn, .filtro-btn {
      white-space: nowrap;
      border: 1px solid var(--line);
      background: rgba(255,255,255,.05);
      color: rgba(255,255,255,.82);
      height: 34px;
      padding: 0 13px;
      border-radius: 999px;
      font-size: 11px;
      font-weight: 700;
      cursor: pointer;
    }

    .category-btn.active, .filtro-btn.ativo {
      background: rgba(255,176,32,.16);
      border-color: rgba(255,176,32,.36);
      color: #ffcf70;
    }

    .section-heading {
      display: flex;
      align-items: end;
      justify-content: space-between;
      margin: 20px 0 12px;
    }

    .section-heading h2 {
      margin: 0;
      font-size: 15px;
      letter-spacing: -.2px;
    }

    .section-heading span {
      color: var(--muted);
      font-size: 11px;
    }

    .cards {
      display: grid;
      gap: 12px;
    }

    .card {
      position: relative;
      min-height: 94px;
      border-radius: 18px;
      overflow: hidden;
      display: grid;
      grid-template-columns: 62px 1fr 78px;
      gap: 11px;
      align-items: center;
      padding: 11px 12px;
      border: 1px solid rgba(255,255,255,.09);
      background: rgba(255,255,255,.045);
      cursor: pointer;
      box-shadow: 0 14px 30px rgba(0,0,0,.28);
    }

    .card:active { transform: scale(.985); }

    .card::before {
      content: "";
      position: absolute;
      inset: 0;
      opacity: .9;
      pointer-events: none;
    }

    .card-pito::before { background: linear-gradient(90deg, rgba(112,0,0,.60), rgba(20,11,13,.70)); }
    .card-aguante::before { background: linear-gradient(90deg, rgba(244,181,168,.55), rgba(30,16,20,.55)); }
    .card-canto::before { background: linear-gradient(90deg, rgba(5,5,5,.92), rgba(31,31,31,.72)); }
    .card-espartano::before { background: linear-gradient(90deg, rgba(11,11,11,.88), rgba(45,45,45,.72)); }
    .card-vitoria::before { background: linear-gradient(90deg, rgba(141,0,0,.78), rgba(34,8,8,.65)); }
    .card-ceu::before { background: linear-gradient(90deg, rgba(34,60,120,.72), rgba(7,15,36,.80)); }
    .card-auma::before { background: linear-gradient(90deg, rgba(75,31,110,.70), rgba(19,9,34,.80)); }
    .card-joaquim::before { background: linear-gradient(90deg, rgba(128,74,21,.72), rgba(35,18,6,.80)); }

    .card > * { position: relative; z-index: 1; }

    .logo-wrap {
      width: 54px;
      height: 54px;
      border-radius: 15px;
      overflow: hidden;
      background: rgba(255,255,255,.12);
      border: 1px solid rgba(255,255,255,.12);
    }

    .logo {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }

    .nome {
      font-size: 15px;
      font-weight: 800;
      line-height: 1.1;
      margin-bottom: 7px;
    }

    .bairro, .meta {
      font-size: 11px;
      color: rgba(255,255,255,.72);
      margin-bottom: 5px;
    }

    .match {
      font-size: 11px;
      color: #ffcf70;
      font-weight: 800;
    }

    .card-right {
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      gap: 10px;
    }

    .status {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      padding: 7px 9px;
      border-radius: 999px;
      font-size: 10.5px;
      font-weight: 800;
      white-space: nowrap;
      border: 1px solid rgba(255,255,255,.06);
    }

    .status-dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      display: inline-block;
    }

    .baixo { background: rgba(34,197,94,.14); color: #bbf7d0; }
    .baixo .status-dot { background: var(--green); box-shadow: 0 0 10px rgba(34,197,94,.8); }

    .medio { background: rgba(245,158,11,.15); color: #fde68a; }
    .medio .status-dot { background: #f59e0b; box-shadow: 0 0 10px rgba(245,158,11,.8); }

    .alto { background: rgba(239,68,68,.16); color: #fecaca; }
    .alto .status-dot { background: var(--red); box-shadow: 0 0 10px rgba(239,68,68,.9); }

    .fechado { background: rgba(148,163,184,.13); color: #e2e8f0; }
    .fechado .status-dot { background: var(--gray); }
    .sem-info { background: rgba(59,130,246,.16); color: #bfdbfe; }
    .sem-info .status-dot { background: #3b82f6; box-shadow: 0 0 9px rgba(59,130,246,.65); }

    .details-link {
      color: #ffb020;
      font-weight: 800;
      font-size: 11px;
    }

    .sem-resultado {
      text-align: center;
      padding: 30px 18px;
      color: rgba(255,255,255,.68);
      background: rgba(255,255,255,.045);
      border: 1px solid var(--line);
      border-radius: 18px;
      font-size: 13px;
    }

    .bottom-nav {
      position: fixed;
      left: 50%;
      bottom: 0;
      transform: translateX(-50%);
      width: 100%;
      max-width: 430px;
      height: 76px;
      background: linear-gradient(180deg, rgba(9,15,27,.90), rgba(5,9,18,.96));
      backdrop-filter: blur(12px);
      border-top: 1px solid var(--line);
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      z-index: 50;
    }

    .nav-item {
      display: grid;
      place-items: center;
      align-content: center;
      gap: 5px;
      color: rgba(255,255,255,.48);
      font-size: 10px;
      font-weight: 700;
    }

    .nav-item.active { color: #ffb020; }
    .nav-icon { font-size: 18px; }

    .modal-overlay {
      position: fixed;
      inset: 0;
      background: rgba(0,0,0,.72);
      display: none;
      align-items: flex-start;
      justify-content: center;
      padding: 12px;
      z-index: 999;
      overflow-y: auto;
      -webkit-overflow-scrolling: touch;
    }

    .modal-overlay.ativo { display: flex; }

    .modal {
      width: 100%;
      max-width: 430px;
      max-height: calc(100dvh - 24px);
      background: #081225;
      border: 1px solid var(--line);
      border-radius: 24px;
      overflow: hidden;
      display: flex;
      flex-direction: column;
      box-shadow: 0 25px 80px rgba(0,0,0,.55);
    }

    .modal-topo {
      min-height: 54px;
      padding: 14px 16px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      border-bottom: 1px solid var(--line);
      background: rgba(8,18,37,.96);
      position: sticky;
      top: 0;
      z-index: 10;
    }

    .modal-titulo {
      font-size: 13px;
      color: rgba(255,255,255,.7);
      font-weight: 800;
    }

    .fechar-btn, .back-btn {
      width: 36px;
      height: 36px;
      border: 0;
      border-radius: 50%;
      color: #fff;
      background: rgba(255,255,255,.08);
      font-size: 18px;
      cursor: pointer;
    }

    .modal-conteudo {
      overflow-y: auto;
      padding-bottom: 22px;
    }

    .hero {
      height: 142px;
      position: relative;
      overflow: hidden;
      background: linear-gradient(135deg, rgba(31,111,255,.18), rgba(255,176,32,.06));
    }

    .hero::before {
      content: "";
      position: absolute;
      inset: 0;
      background-image: var(--hero-img);
      background-size: cover;
      background-position: center;
      opacity: .22;
      filter: blur(1px);
    }

    .hero::after {
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(180deg, transparent, #081225 92%);
    }

    .detail-main {
      padding: 0 18px;
      margin-top: -48px;
      position: relative;
      z-index: 1;
    }

    .modal-imagem-wrap {
      width: 88px;
      height: 88px;
      border-radius: 24px;
      overflow: hidden;
      background: rgba(255,255,255,.1);
      border: 3px solid rgba(255,255,255,.18);
      box-shadow: 0 16px 30px rgba(0,0,0,.35);
      margin-bottom: 14px;
    }

    .modal-imagem {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }

    .modal-nome {
      font-size: 22px;
      font-weight: 900;
      line-height: 1.05;
      margin-bottom: 6px;
    }

    .modal-bairro, .modal-endereco {
      color: rgba(255,255,255,.64);
      font-size: 12.5px;
      margin-bottom: 8px;
      line-height: 1.35;
    }

    .detail-actions {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 10px;
      margin: 14px 0 18px;
    }

    .action-btn {
      height: 42px;
      border-radius: 13px;
      border: 1px solid var(--line);
      background: rgba(255,255,255,.055);
      color: rgba(255,255,255,.88);
      font-weight: 800;
      cursor: pointer;
    }

    .action-btn.primary {
      background: linear-gradient(135deg, #ffb020, #ff7a18);
      color: #1f1300;
      border: 0;
    }

    .review-card {
      max-height: 0;
      padding: 0 15px;
      margin-bottom: 0;
      overflow: hidden;
      border: 1px solid rgba(255,176,32,.2);
      border-radius: 18px;
      background: linear-gradient(145deg, rgba(255,176,32,.09), rgba(123,90,134,.09));
      opacity: 0;
      pointer-events: none;
      transform: translateY(-8px) scale(.98);
      transition: max-height .32s ease, padding .28s ease, margin .28s ease, opacity .2s ease, transform .28s ease;
    }

    .review-card.is-open {
      max-height: 420px;
      padding: 15px;
      margin-bottom: 18px;
      opacity: 1;
      pointer-events: auto;
      transform: none;
    }

    .review-heading {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 13px;
    }

    .review-kicker {
      color: #ffb020;
      font-size: 9px;
      font-weight: 900;
      letter-spacing: .7px;
    }

    .review-heading h3 { margin: 5px 0 0; font-size: 16px; }

    .review-help { margin-top: 5px; padding: 0; border: 0; background: transparent; color: rgba(255,255,255,.56); font-size: 10px; font-weight: 800; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }

    .review-legend { display: grid; gap: 6px; max-height: 0; margin-bottom: 0; overflow: hidden; border-radius: 12px; background: rgba(0,0,0,.16); color: rgba(255,255,255,.68); font-size: 9px; line-height: 1.35; opacity: 0; transition: max-height .25s ease, padding .25s ease, margin .25s ease, opacity .2s ease; }
    .review-legend.is-open { max-height: 130px; margin-bottom: 10px; padding: 9px 10px; opacity: 1; }
    .review-legend span { display: flex; align-items: center; gap: 5px; }
    .review-legend strong { color: rgba(255,255,255,.9); }

    .review-close { display: grid; width: 30px; height: 30px; flex: 0 0 auto; place-items: center; border: 1px solid var(--line); border-radius: 10px; background: rgba(255,255,255,.05); color: rgba(255,255,255,.72); font-size: 19px; cursor: pointer; }

    .review-options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }

    .review-option {
      display: grid;
      align-items: center;
      justify-items: center;
      gap: 5px;
      min-width: 0;
      min-height: 78px;
      padding: 9px 4px;
      border: 1px solid var(--line);
      border-radius: 13px;
      background: rgba(255,255,255,.045);
      color: #fff;
      font-weight: 800;
      cursor: pointer;
      transition: transform .16s ease, border-color .16s ease, background .16s ease;
    }

    .review-option:hover { border-color: currentColor; }
    .review-option:active { transform: scale(.94); }
    .review-option > span { font-size: 24px; line-height: 1; }
    .review-option > strong { max-width: 100%; overflow: hidden; font-size: 10px; text-overflow: ellipsis; }
    .review-option:disabled { cursor: default; opacity: .42; }
    .review-option.selected { opacity: 1; border-color: currentColor; }
    .review-card.is-submitted .review-option:not(.selected) { opacity: .22; transform: scale(.94); }
    .review-card.is-submitted .review-option.selected { background: rgba(255,255,255,.1); transform: scale(1.04); }

    .review-followup { display: none; gap: 10px; text-align: center; }
    .review-card.is-followup .review-options,
    .review-card.is-followup .review-legend,
    .review-card.is-followup .review-help { display: none; }
    .review-card.is-followup .review-followup { display: grid; }
    .followup-check { color: #7CFF58; font-size: 10px; font-weight: 900; text-transform: uppercase; }
    .review-followup > strong { color: #fff; font-size: 14px; }
    .followup-options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
    .followup-options button { min-height: 38px; padding: 0 6px; border: 1px solid var(--line); border-radius: 11px; background: rgba(255,255,255,.05); color: #fff; font-size: 9px; font-weight: 800; cursor: pointer; }
    .followup-options button:active { transform: scale(.95); }
    .followup-options .followup-skip { grid-column: 1 / -1; min-height: 28px; border: 0; background: transparent; color: rgba(255,255,255,.5); }
    .review-bombando { color: #fecaca; }
    .review-esquentando { color: #fde68a; }
    .review-tranquilo { color: #bbf7d0; }

    .review-feedback {
      min-height: 16px;
      margin: 10px 0 0;
      color: rgba(255,255,255,.7);
      font-size: 11px;
      line-height: 1.4;
      text-align: center;
    }

    .card-locked {
      min-height: 110px;
      cursor: default;
      border-style: dashed;
      background: rgba(255,255,255,.025);
    }

    .card-locked::before { background: linear-gradient(90deg, rgba(12,18,32,.95), rgba(20,13,28,.9)); }

    .lock-icon {
      display: grid;
      width: 48px;
      height: 48px;
      place-items: center;
      border-radius: 15px;
      background: rgba(255,176,32,.1);
      font-size: 20px;
    }

    .unlock-progress { color: #ffcf70; font-size: 11px; font-weight: 800; }

    .info-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 10px;
      margin-bottom: 16px;
    }

    .info-box {
      background: rgba(255,255,255,.045);
      border: 1px solid var(--line);
      border-radius: 16px;
      padding: 12px;
    }

    .info-label {
      font-size: 10px;
      color: rgba(255,255,255,.48);
      margin-bottom: 6px;
      font-weight: 800;
      text-transform: uppercase;
      letter-spacing: .7px;
    }

    .info-value {
      font-size: 16px;
      font-weight: 900;
      color: #ffb020;
    }

    .info-value-small { font-size: 14px; }

    .logo-fallback {
      display: grid;
      width: 100%;
      height: 100%;
      place-items: center;
      border-radius: inherit;
      background: linear-gradient(135deg, rgba(255,159,28,.35), rgba(123,90,134,.5));
      color: #fff;
      font-size: 18px;
      font-weight: 800;
    }

    .modal-bloco-titulo {
      font-size: 12px;
      font-weight: 900;
      letter-spacing: 1.4px;
      color: rgba(255,255,255,.50);
      margin: 18px 0 12px;
      text-transform: uppercase;
    }

    .termometro-card {
      background: rgba(255,255,255,.045);
      border: 1px solid var(--line);
      border-radius: 20px;
      padding: 18px;
    }

    .thermo-row {
      display: grid;
      grid-template-columns: 92px 1fr;
      gap: 18px;
      align-items: center;
    }

    .termometro {
      position: relative;
      width: 48px;
      height: 178px;
      display: flex;
      align-items: flex-end;
      justify-content: center;
      margin: 0 auto;
    }

    .termometro-tubo {
      position: absolute;
      bottom: 24px;
      width: 26px;
      height: 130px;
      border-radius: 20px;
      border: 4px solid rgba(122,167,255,.68);
      background: rgba(4,10,24,.75);
      overflow: hidden;
      display: flex;
      align-items: flex-end;
    }

    .termometro-nivel {
      width: 100%;
      height: 18%;
      background: #22c55e;
      transition: .35s ease;
    }

    .termometro-bulbo {
      width: 48px;
      height: 48px;
      border-radius: 50%;
      background: #cbd5e1;
      border: 4px solid rgba(122,167,255,.68);
    }

    .termometro-legenda {
      display: flex;
      flex-direction: column;
      gap: 11px;
      font-weight: 900;
      font-size: 11.5px;
    }

    .legenda-item {
      display: flex;
      align-items: center;
      gap: 9px;
      white-space: nowrap;
    }

    .legenda-dot {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      display: inline-block;
    }

    .vermelho { color: #ef4444; }
    .amarelo { color: #f59e0b; }
    .verde { color: #7CFF58; }
    .cinza { color: #cbd5e1; }

    .vermelho .legenda-dot { background: #ef4444; }
    .amarelo .legenda-dot { background: #f59e0b; }
    .verde .legenda-dot { background: #7CFF58; }
    .cinza .legenda-dot { background: #cbd5e1; }

    .modal-status-grande {
      font-size: 28px;
      font-weight: 900;
      margin: 16px 0 8px;
    }

    .modal-mensagem {
      color: rgba(255,255,255,.70);
      font-size: 13px;
      line-height: 1.45;
    }

    .comments {
      display: grid;
      gap: 10px;
      margin-top: 12px;
    }

    .comment {
      display: flex;
      gap: 10px;
      align-items: flex-start;
      background: rgba(255,255,255,.04);
      border: 1px solid var(--line);
      border-radius: 14px;
      padding: 10px;
    }

    .avatar {
      width: 28px;
      height: 28px;
      border-radius: 50%;
      background: rgba(255,255,255,.12);
      display: grid;
      place-items: center;
      font-size: 12px;
      font-weight: 900;
      flex-shrink: 0;
    }

    .comment strong {
      display: block;
      font-size: 12px;
      margin-bottom: 3px;
    }

    .comment span {
      display: block;
      font-size: 11.5px;
      color: rgba(255,255,255,.60);
      line-height: 1.35;
    }

    @media (min-width: 760px) {
      .app-shell { padding-top: 28px; }
    }


    /* AJUSTE FINAL DO LOGO - usa somente o ícone correto */
    .brand {
      display: flex;
      align-items: center;
      gap: 9px;
      font-size: 17px;
      font-weight: 900;
      letter-spacing: -0.7px;
      line-height: 1;
      color: #fff;
    }

    .brand-icon-img {
      width: 32px;
      height: 32px;
      border-radius: 50%;
      object-fit: cover;
      display: block;
      flex-shrink: 0;
    }

    .brand-text {
      color: #ffffff;
      font-weight: 900;
    }

    .brand-text .map-accent {
      color: #ffa43a;
    }

    /* EVOLUÇÃO VISUAL — atmosfera, profundidade e microinterações */
    body {
      background:
        radial-gradient(circle at 8% 6%, rgba(51,92,255,.28), transparent 28%),
        radial-gradient(circle at 94% 18%, rgba(255,123,31,.18), transparent 25%),
        radial-gradient(circle at 50% 70%, rgba(146,71,255,.13), transparent 34%),
        linear-gradient(155deg, #040711 0%, #081325 48%, #070912 100%);
      background-attachment: fixed;
    }

    body::after {
      content: "";
      position: fixed;
      width: 260px;
      height: 260px;
      top: 42%;
      left: 50%;
      z-index: -1;
      border-radius: 50%;
      background: rgba(119,72,198,.14);
      filter: blur(70px);
      transform: translate(-50%, -50%);
      animation: ambient-glow 8s ease-in-out infinite alternate;
    }

    .topbar {
      position: relative;
      z-index: 2;
      padding: 8px 10px;
      margin: -8px -10px 22px;
      border: 1px solid rgba(255,255,255,.06);
      border-radius: 18px;
      background: rgba(6,11,22,.48);
      box-shadow: 0 14px 34px rgba(0,0,0,.18);
      backdrop-filter: blur(16px);
    }

    .page-title {
      font-size: clamp(27px, 8vw, 34px);
      background: linear-gradient(100deg, #fff 25%, #d9e3ff 65%, #ffca7a);
      -webkit-background-clip: text;
      background-clip: text;
      color: transparent;
    }

    .live-overview {
      position: relative;
      isolation: isolate;
      display: grid;
      grid-template-columns: 1fr auto;
      gap: 14px;
      align-items: center;
      min-height: 102px;
      padding: 16px;
      margin: 17px 0 14px;
      overflow: hidden;
      border: 1px solid rgba(255,176,32,.22);
      border-radius: 22px;
      background: linear-gradient(125deg, rgba(36,46,82,.88), rgba(44,20,58,.78));
      box-shadow: 0 20px 45px rgba(0,0,0,.3), inset 0 1px rgba(255,255,255,.06);
    }

    .live-overview::after {
      content: "";
      position: absolute;
      z-index: -1;
      width: 150px;
      height: 150px;
      right: -55px;
      top: -75px;
      border-radius: 50%;
      background: rgba(255,159,28,.25);
      filter: blur(15px);
    }

    .live-copy { display: grid; gap: 5px; }

    .live-label {
      display: flex;
      align-items: center;
      gap: 6px;
      color: #ffc764;
      font-size: 9px;
      font-weight: 900;
      letter-spacing: .9px;
    }

    .live-label i {
      width: 7px;
      height: 7px;
      border-radius: 50%;
      background: #ff9f1c;
      box-shadow: 0 0 0 0 rgba(255,159,28,.6);
      animation: live-pulse 1.8s infinite;
    }

    .live-copy strong { font-size: 16px; }
    .live-copy > span:last-child { color: rgba(255,255,255,.6); font-size: 11px; }

    .live-score {
      display: grid;
      min-width: 58px;
      place-items: center;
      padding: 11px 8px;
      border: 1px solid rgba(255,255,255,.1);
      border-radius: 16px;
      background: rgba(3,8,18,.35);
    }

    .live-score strong { color: #ffb020; font-size: 24px; line-height: 1; }
    .live-score span { margin-top: 4px; color: rgba(255,255,255,.55); font-size: 9px; }

    .region-select, .search-input {
      border-color: rgba(129,157,255,.15);
      background: rgba(10,19,38,.72);
      box-shadow: inset 0 1px rgba(255,255,255,.04), 0 10px 24px rgba(0,0,0,.12);
      transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
    }

    .search-input:focus {
      border-color: rgba(255,176,32,.55);
      box-shadow: 0 0 0 3px rgba(255,176,32,.09), 0 12px 30px rgba(0,0,0,.2);
      transform: translateY(-1px);
    }

    .category-btn, .filtro-btn {
      transition: transform .2s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
    }

    .category-btn:hover, .filtro-btn:hover { transform: translateY(-2px); border-color: rgba(255,255,255,.2); }
    .category-btn.active, .filtro-btn.ativo { box-shadow: 0 8px 22px rgba(255,159,28,.12); }

    .card {
      min-height: 108px;
      border-color: rgba(128,155,255,.13);
      box-shadow: 0 18px 40px rgba(0,0,0,.3), inset 0 1px rgba(255,255,255,.045);
      transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
      animation: card-enter .4s both;
    }

    .card:hover {
      transform: translateY(-4px) scale(1.01);
      border-color: rgba(255,176,32,.28);
      box-shadow: 0 24px 50px rgba(0,0,0,.38), 0 0 25px rgba(255,159,28,.07);
    }

    .card-status-alto { box-shadow: 0 18px 45px rgba(239,68,68,.12), inset 0 1px rgba(255,255,255,.05); }
    .card-status-medio { box-shadow: 0 18px 45px rgba(245,158,11,.1), inset 0 1px rgba(255,255,255,.05); }
    .card-status-baixo { box-shadow: 0 18px 45px rgba(34,197,94,.08), inset 0 1px rgba(255,255,255,.05); }

    .status-dot { animation: status-breathe 2s ease-in-out infinite; }

    .bottom-nav {
      border-top: 1px solid rgba(129,157,255,.16);
      background: rgba(5,10,21,.86);
      box-shadow: 0 -16px 40px rgba(0,0,0,.35);
      backdrop-filter: blur(22px);
    }

    .nav-item { transition: color .2s ease, transform .2s ease; }
    .nav-item:hover { color: #ffd083; transform: translateY(-2px); }

    .app-toast {
      position: fixed;
      left: 50%;
      bottom: 86px;
      z-index: 100;
      width: min(calc(100% - 32px), 398px);
      padding: 13px 15px;
      border: 1px solid rgba(255,176,32,.3);
      border-radius: 15px;
      background: rgba(15,20,36,.94);
      color: #fff;
      font-size: 12px;
      font-weight: 700;
      text-align: center;
      box-shadow: 0 20px 50px rgba(0,0,0,.45);
      backdrop-filter: blur(18px);
      opacity: 0;
      pointer-events: none;
      transform: translate(-50%, 18px);
      transition: opacity .25s ease, transform .25s ease;
    }

    .app-toast.visible { opacity: 1; transform: translate(-50%, 0); }

    @keyframes live-pulse {
      70% { box-shadow: 0 0 0 8px rgba(255,159,28,0); }
      100% { box-shadow: 0 0 0 0 rgba(255,159,28,0); }
    }

    @keyframes status-breathe { 50% { transform: scale(1.35); filter: brightness(1.25); } }
    @keyframes card-enter { from { opacity: 0; transform: translateY(12px); } }
    @keyframes ambient-glow { to { transform: translate(-45%, -55%) scale(1.2); } }

    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
    }

    /* MAPA — tela principal única */
    html, body { width: 100%; height: 100%; overflow: hidden; }

    .app-shell {
      width: 100%;
      max-width: none;
      height: 100dvh;
      min-height: 0;
      padding: 0;
      overflow: hidden;
    }

    .night-map { position: absolute; inset: 0; z-index: 0; background: #08111f; }
    .map-load-error { display: grid; height: 100%; place-items: center; padding: 30px; color: rgba(255,255,255,.72); text-align: center; }
    .leaflet-container { font-family: 'Inter', sans-serif; }
    .leaflet-tile-pane { filter: brightness(.5) invert(1) contrast(1.25) hue-rotate(180deg) saturate(.45); }
    .leaflet-control-attribution {
      margin: 0 6px 5px 0 !important;
      border-radius: 6px;
      background: rgba(5,10,20,.72) !important;
      color: rgba(255,255,255,.55) !important;
      font-size: 8px !important;
    }
    .leaflet-control-attribution a { color: #a9c2ff !important; }

    .app-shell > .topbar {
      position: absolute;
      z-index: 800;
      top: max(14px, env(safe-area-inset-top));
      left: 14px;
      right: 14px;
      margin: 0;
      padding: 9px 11px;
      border-color: rgba(255,255,255,.1);
      background: rgba(5,10,20,.82);
      box-shadow: 0 16px 36px rgba(0,0,0,.32);
    }

    .map-controls {
      position: absolute;
      z-index: 700;
      top: calc(max(14px, env(safe-area-inset-top)) + 65px);
      left: 14px;
      right: 14px;
      pointer-events: none;
    }

    .map-search {
      display: flex;
      align-items: center;
      gap: 9px;
      height: 46px;
      padding: 0 14px;
      border: 1px solid rgba(255,255,255,.11);
      border-radius: 16px;
      background: rgba(5,10,20,.88);
      box-shadow: 0 16px 36px rgba(0,0,0,.28);
      backdrop-filter: blur(18px);
      pointer-events: auto;
    }

    .map-search > span { color: #ffb020; font-size: 22px; }
    .map-search input { width: 100%; border: 0; outline: 0; background: transparent; color: #fff; font: inherit; font-size: 13px; }
    .map-search input::placeholder { color: rgba(255,255,255,.45); }

    .map-categories {
      display: flex;
      gap: 7px;
      margin-top: 9px;
      overflow-x: auto;
      scrollbar-width: none;
      pointer-events: auto;
    }
    .map-categories::-webkit-scrollbar { display: none; }

    .map-category {
      height: 34px;
      padding: 0 12px;
      flex: 0 0 auto;
      border: 1px solid rgba(255,255,255,.1);
      border-radius: 999px;
      background: rgba(5,10,20,.84);
      color: rgba(255,255,255,.74);
      font-size: 10px;
      font-weight: 800;
      box-shadow: 0 8px 20px rgba(0,0,0,.2);
      backdrop-filter: blur(14px);
      cursor: pointer;
    }
    .map-category.active { border-color: rgba(255,176,32,.48); background: #ff9f1c; color: #1c1100; }

    .map-status-legend {
      position: absolute;
      z-index: 650;
      top: calc(max(14px, env(safe-area-inset-top)) + 160px);
      left: 14px;
      display: flex;
      gap: 10px;
      padding: 8px 10px;
      border: 1px solid rgba(255,255,255,.08);
      border-radius: 12px;
      background: rgba(5,10,20,.7);
      color: rgba(255,255,255,.65);
      font-size: 8px;
      font-weight: 700;
      backdrop-filter: blur(12px);
      pointer-events: none;
      flex-wrap: wrap;
      max-width: calc(100% - 28px);
    }
    .map-status-legend span { display: flex; align-items: center; gap: 4px; }
    .legend-dot { width: 7px; height: 7px; border-radius: 50%; padding: 0; }
    .legend-dot.baixo { background: #22c55e; }
    .legend-dot.medio { background: #f59e0b; }
    .legend-dot.alto { background: #ef4444; }
    .legend-dot.sem-info { background: #3b82f6; }
    .legend-dot.fechado { background: #64748b; }

    .locate-button {
      position: absolute;
      z-index: 700;
      right: 16px;
      bottom: 30px;
      width: 48px;
      height: 48px;
      border: 1px solid rgba(255,255,255,.12);
      border-radius: 16px;
      background: rgba(8,15,28,.92);
      color: #7ba7ff;
      font-size: 26px;
      box-shadow: 0 16px 32px rgba(0,0,0,.34);
      cursor: pointer;
      transition: transform .2s ease, color .2s ease;
    }
    .locate-button:active { transform: scale(.92); }
    .locate-button.locating { color: #ffb020; animation: status-breathe 1s infinite; }

    .night-marker-wrapper { background: transparent; border: 0; }
    .night-marker {
      --status-color: #94a3b8;
      position: relative;
      display: grid;
      width: 44px;
      height: 44px;
      place-items: center;
      border: 3px solid #fff;
      border-radius: 15px 15px 15px 4px;
      background: linear-gradient(145deg, #17243a, #0b1220);
      box-shadow: 0 0 0 4px color-mix(in srgb, var(--status-color) 22%, transparent), 0 12px 25px rgba(0,0,0,.5);
      color: #fff;
      font-size: 18px;
      transform: rotate(-45deg);
      transition: transform .2s ease;
    }
    .night-marker span { transform: rotate(45deg); }
    .night-marker::after {
      content: "";
      position: absolute;
      width: 9px;
      height: 9px;
      top: -6px;
      right: -6px;
      border: 2px solid #fff;
      border-radius: 50%;
      background: var(--status-color);
      box-shadow: 0 0 10px var(--status-color);
    }
    .night-marker.status-baixo { --status-color: #22c55e; }
    .night-marker.status-medio { --status-color: #f59e0b; }
    .night-marker.status-alto { --status-color: #ef4444; animation: marker-hot 1.8s ease-in-out infinite; }
    .night-marker.status-fechado { --status-color: #64748b; opacity: .68; }
    .night-marker.locked { --status-color: #8b5cf6; filter: grayscale(.35); }
    .leaflet-marker-icon:hover .night-marker { transform: rotate(-45deg) scale(1.12); }

    .user-location-marker {
      width: 20px;
      height: 20px;
      border: 4px solid #fff;
      border-radius: 50%;
      background: #287cff;
      box-shadow: 0 0 0 10px rgba(40,124,255,.2), 0 0 24px rgba(40,124,255,.75);
    }

    .place-preview {
      position: absolute;
      z-index: 750;
      left: 14px;
      right: 14px;
      bottom: max(14px, env(safe-area-inset-bottom));
      display: grid;
      grid-template-columns: 52px 1fr;
      gap: 11px;
      padding: 15px;
      border: 1px solid rgba(255,255,255,.12);
      border-radius: 22px;
      background: linear-gradient(145deg, rgba(10,18,34,.97), rgba(20,14,31,.96));
      box-shadow: 0 26px 60px rgba(0,0,0,.55);
      backdrop-filter: blur(24px);
      opacity: 0;
      pointer-events: none;
      transform: translateY(calc(100% + 30px));
      transition: transform .32s cubic-bezier(.2,.8,.2,1), opacity .25s ease;
    }
    .place-preview.visible { opacity: 1; pointer-events: auto; transform: translateY(0); }
    .preview-close { position: absolute; top: 9px; right: 10px; border: 0; background: transparent; color: rgba(255,255,255,.55); font-size: 20px; cursor: pointer; }
    .preview-icon { display: grid; width: 52px; height: 52px; place-items: center; border-radius: 16px; background: linear-gradient(145deg, rgba(255,159,28,.3), rgba(123,90,134,.45)); font-size: 24px; }
    .preview-content { min-width: 0; padding-right: 20px; }
    .preview-eyebrow { color: #ffb020; font-size: 9px; font-weight: 900; letter-spacing: .8px; text-transform: uppercase; }
    .preview-content h2 { margin: 3px 0 4px; overflow: hidden; font-size: 18px; text-overflow: ellipsis; white-space: nowrap; }
    .preview-content p { margin: 0; overflow: hidden; color: rgba(255,255,255,.55); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
    .preview-meta { display: flex; align-items: center; gap: 8px; margin-top: 9px; }
    .preview-distance { color: rgba(255,255,255,.6); font-size: 10px; font-weight: 700; }
    .preview-content .preview-trust {
      margin-top: 8px;
      overflow: visible;
      color: rgba(255,255,255,.76);
      font-size: 10px;
      font-weight: 700;
      line-height: 1.35;
      text-overflow: clip;
      white-space: normal;
    }
    .preview-trust.is-estimate { color: rgba(255,255,255,.45); font-weight: 600; }
    .preview-community {
      grid-column: 1 / -1;
      padding: 11px;
      border: 1px solid rgba(255,176,32,.2);
      border-radius: 14px;
      background: rgba(255,176,32,.07);
      transition: opacity .2s ease;
    }
    .preview-community[hidden] { display: none; }
    .preview-community.is-loading { opacity: .55; }
    .preview-community.has-error { border-color: rgba(239,68,68,.5); background: rgba(239,68,68,.1); }
    .preview-community.has-error p { color: #fecaca; }
    .preview-community p { margin: 0 0 9px; color: rgba(255,255,255,.84); font-size: 11px; font-weight: 700; line-height: 1.4; }
    .preview-confirm-actions,
    .preview-status-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
    .preview-confirm-actions[hidden],
    .preview-status-actions[hidden] { display: none; }
    .preview-community button {
      min-height: 34px;
      padding: 6px 8px;
      border: 1px solid rgba(255,255,255,.12);
      border-radius: 10px;
      background: rgba(255,255,255,.06);
      color: #fff;
      font: inherit;
      font-size: 10px;
      font-weight: 800;
      cursor: pointer;
    }
    .preview-community button:hover { border-color: rgba(255,176,32,.6); background: rgba(255,176,32,.14); }
    .preview-community button:disabled { cursor: wait; }
    .preview-status-actions button { display: flex; align-items: center; justify-content: center; gap: 5px; }
    .review-feedback.has-error { color: #fecaca; font-weight: 800; }
    .preview-details { grid-column: 1 / -1; display: flex; align-items: center; justify-content: center; gap: 7px; height: 42px; border: 0; border-radius: 13px; background: linear-gradient(135deg, #ffb020, #ff7a18); color: #211300; font-weight: 900; cursor: pointer; }
    .preview-details span { font-size: 18px; }

    .map-message {
      position: absolute;
      z-index: 900;
      left: 50%;
      bottom: 92px;
      max-width: calc(100% - 40px);
      padding: 10px 13px;
      border-radius: 12px;
      background: rgba(6,11,22,.92);
      color: #fff;
      font-size: 11px;
      font-weight: 700;
      text-align: center;
      opacity: 0;
      pointer-events: none;
      transform: translate(-50%, 12px);
      transition: .25s ease;
    }
    .map-message.visible { opacity: 1; transform: translate(-50%, 0); }

    .modal-overlay { z-index: 1200; }
    .app-toast { z-index: 1400; }

    @keyframes marker-hot { 50% { filter: drop-shadow(0 0 9px rgba(239,68,68,.7)); } }

    @media (min-width: 700px) {
      .app-shell > .topbar, .map-controls { right: auto; width: 390px; }
      .place-preview { left: 18px; right: auto; width: 390px; }
      .map-status-legend { top: calc(max(14px, env(safe-area-inset-top)) + 160px); }
    }

    /* Leaflet essencial local — mantém os tiles alinhados mesmo se o CDN de CSS falhar */
    .leaflet-pane,
    .leaflet-tile,
    .leaflet-marker-icon,
    .leaflet-marker-shadow,
    .leaflet-tile-container,
    .leaflet-pane > svg,
    .leaflet-pane > canvas,
    .leaflet-zoom-box {
      position: absolute;
      left: 0;
      top: 0;
    }

    .leaflet-container { overflow: hidden; -webkit-tap-highlight-color: transparent; outline-offset: 1px; }
    .leaflet-tile, .leaflet-marker-icon, .leaflet-marker-shadow { user-select: none; -webkit-user-drag: none; }
    .leaflet-tile { visibility: hidden; }
    .leaflet-tile-loaded { visibility: inherit; }
    .leaflet-zoom-animated { transform-origin: 0 0; }
    .leaflet-zoom-hide { visibility: hidden; }
    .leaflet-interactive { cursor: pointer; }
    .leaflet-grab { cursor: grab; }
    .leaflet-dragging .leaflet-grab { cursor: grabbing; }

    .leaflet-pane { z-index: 400; }
    .leaflet-tile-pane { z-index: 200; }
    .leaflet-overlay-pane { z-index: 400; }
    .leaflet-shadow-pane { z-index: 500; }
    .leaflet-marker-pane { z-index: 600; }
    .leaflet-tooltip-pane { z-index: 650; }
    .leaflet-popup-pane { z-index: 700; }
    .leaflet-map-pane canvas { z-index: 100; }
    .leaflet-map-pane svg { z-index: 200; }

    .leaflet-control-container { position: relative; z-index: 800; }
    .leaflet-top, .leaflet-bottom { position: absolute; z-index: 1000; pointer-events: none; }
    .leaflet-top { top: 0; }
    .leaflet-right { right: 0; }
    .leaflet-bottom { bottom: 0; }
    .leaflet-left { left: 0; }
    .leaflet-control { position: relative; z-index: 800; float: left; clear: both; pointer-events: auto; }
    .leaflet-right .leaflet-control { float: right; }
    .leaflet-top .leaflet-control { margin-top: 10px; }
    .leaflet-bottom .leaflet-control { margin-bottom: 10px; }
    .leaflet-left .leaflet-control { margin-left: 10px; }
    .leaflet-right .leaflet-control { margin-right: 10px; }
    .leaflet-control-zoom { margin-bottom: 24px !important; border: 1px solid rgba(255,255,255,.14); border-radius: 16px; overflow: hidden; box-shadow: 0 14px 30px rgba(0,0,0,.36); }
    .leaflet-control-zoom a { display: grid; width: 43px; height: 40px; place-items: center; border-bottom: 1px solid rgba(255,255,255,.1); background: rgba(7,12,25,.9); color: #a68aff; font-size: 22px; font-weight: 500; text-decoration: none; }
    .leaflet-control-zoom a:last-child { border-bottom: 0; }

    /* Composição centrada no usuário */
    .app-shell > .topbar {
      top: max(10px, env(safe-area-inset-top));
      left: 12px;
      right: 12px;
      min-height: 48px;
      padding: 7px 9px;
      border: 0;
      background: transparent;
      box-shadow: none;
      backdrop-filter: none;
      pointer-events: none;
    }
    .app-shell > .topbar .brand,
    .app-shell > .topbar .user-summary { padding: 7px 9px; border: 1px solid rgba(255,255,255,.1); border-radius: 14px; background: rgba(4,8,18,.84); box-shadow: 0 12px 30px rgba(0,0,0,.28); backdrop-filter: blur(16px); pointer-events: auto; }
    .app-shell > .topbar .user-summary { flex-direction: row; align-items: center; }
    .app-shell > .topbar .current-time { display: none; }
    .app-shell > .topbar .brand-icon-img { width: 27px; height: 27px; }

    .map-controls {
      top: calc(max(10px, env(safe-area-inset-top)) + 61px);
      left: 50%;
      right: auto;
      width: min(520px, calc(100% - 28px));
      transform: translateX(-50%);
    }
    .map-search { height: 48px; border-radius: 18px; background: rgba(4,8,18,.9); }
    .map-categories { justify-content: center; }
    .map-status-legend { top: calc(max(10px, env(safe-area-inset-top)) + 157px); left: 50%; transform: translateX(-50%); white-space: nowrap; }

    .night-map::after {
      content: "";
      position: absolute;
      inset: 0;
      z-index: 350;
      background: linear-gradient(180deg, rgba(19,9,55,.12), rgba(5,8,24,.08));
      mix-blend-mode: color;
      pointer-events: none;
    }

    .user-marker-wrapper { background: transparent; border: 0; }
    .user-location-marker {
      position: relative;
      display: grid;
      width: 46px;
      height: 52px;
      place-items: center;
      border: 0;
      border-radius: 50%;
      background: radial-gradient(circle, rgba(139,92,246,.38), rgba(139,92,246,.08) 48%, transparent 70%);
      box-shadow: none;
      filter: drop-shadow(0 0 10px rgba(139,92,246,.7));
    }
    .user-location-marker span {
      width: 28px;
      height: 34px;
      clip-path: polygon(50% 0, 100% 100%, 50% 78%, 0 100%);
      background: linear-gradient(135deg, #f6f1ff 0 20%, #9c66ff 24% 100%);
      filter: drop-shadow(0 3px 3px rgba(0,0,0,.45));
    }

    @media (min-width: 700px) {
      .app-shell > .topbar { right: 12px; width: auto; }
      .map-controls { right: auto; width: min(520px, calc(100% - 28px)); }
      .map-status-legend { top: calc(max(10px, env(safe-area-inset-top)) + 157px); }
    }

    /* Experiência explorável inspirada em jogos de localização */
    body[data-map-theme="night"] {
      --map-ui: rgba(6, 8, 26, .9);
      --map-border: rgba(134, 105, 255, .24);
      --map-accent: #9b6cff;
      --map-accent-2: #45d8ff;
      --map-copy: #f5f2ff;
    }

    body[data-map-theme="day"] {
      --map-ui: rgba(250, 253, 255, .92);
      --map-border: rgba(38, 104, 145, .2);
      --map-accent: #286fe8;
      --map-accent-2: #18b7ae;
      --map-copy: #10253a;
      color: #10253a;
    }

    body[data-map-theme="night"] .leaflet-tile-pane {
      filter: brightness(.58) contrast(1.16) saturate(1.65) hue-rotate(8deg);
      transition: filter .6s ease;
    }

    body[data-map-theme="day"] .leaflet-tile-pane {
      filter: brightness(1.04) saturate(1.18) contrast(1.02);
      transition: filter .6s ease;
    }

    body[data-map-theme="night"] .night-map::before,
    body[data-map-theme="day"] .night-map::before {
      content: "";
      position: absolute;
      inset: 0;
      z-index: 340;
      pointer-events: none;
      transition: background .6s ease;
    }

    body[data-map-theme="night"] .night-map::before {
      background:
        radial-gradient(circle at 22% 28%, rgba(91, 70, 255, .14), transparent 23%),
        radial-gradient(circle at 78% 72%, rgba(0, 194, 255, .12), transparent 25%),
        linear-gradient(180deg, rgba(22, 11, 82, .28), rgba(0, 17, 49, .34));
      mix-blend-mode: multiply;
    }

    body[data-map-theme="day"] .night-map::before {
      background:
        linear-gradient(180deg, rgba(75, 195, 255, .04), rgba(73, 225, 150, .04));
    }

    body[data-map-theme="day"] .night-map::after { display: none; }

    .map-search,
    .map-category,
    .map-status-legend,
    .app-shell > .topbar .brand,
    .app-shell > .topbar .user-summary,
    .locate-button {
      background: var(--map-ui);
      border-color: var(--map-border);
      color: var(--map-copy);
      transition: background .45s ease, border-color .45s ease, color .45s ease, transform .2s ease;
    }

    body[data-map-theme="day"] .map-search input { color: #10253a; }
    body[data-map-theme="day"] .map-search input::placeholder { color: rgba(16, 37, 58, .48); }
    body[data-map-theme="day"] .brand-text { color: #10253a; }
    body[data-map-theme="day"] .points-badge { color: #7a4b00; background: rgba(255, 171, 30, .2); }
    body[data-map-theme="day"] .points-badge strong { color: #10253a; }
    body[data-map-theme="day"] .map-category { color: #294257; }

    .theme-toggle {
      display: flex;
      align-items: center;
      gap: 5px;
      height: 32px;
      padding: 0 9px;
      flex: 0 0 auto;
      border: 1px solid var(--map-border);
      border-radius: 11px;
      background: color-mix(in srgb, var(--map-accent) 14%, transparent);
      color: var(--map-copy);
      cursor: pointer;
    }

    .theme-toggle small { font-size: 9px; font-weight: 900; }
    .theme-toggle:hover { transform: translateY(-1px); }

    .night-marker-wrapper {
      width: 104px !important;
      height: 76px !important;
      overflow: visible !important;
      background: transparent;
      border: 0;
    }

    .venue-marker {
      --venue-status: #94a3b8;
      position: relative;
      display: grid;
      width: 104px;
      height: 76px;
      justify-items: center;
      pointer-events: auto;
      transform-origin: 50% 62%;
      transition: transform .22s ease, filter .22s ease;
    }

    .venue-marker.status-baixo { --venue-status: #22c55e; }
    .venue-marker.status-medio { --venue-status: #f59e0b; }
    .venue-marker.status-alto { --venue-status: #ef4444; }
    .venue-marker.status-fechado { --venue-status: #758298; }
    .venue-marker.status-sem-info { --venue-status: #3b82f6; opacity: .9; }
    .venue-marker.locked { --venue-status: #8b5cf6; }

    .venue-beacon {
      position: absolute;
      top: 29px;
      width: 3px;
      height: 24px;
      border-radius: 99px;
      background: linear-gradient(var(--venue-status), transparent);
      box-shadow: 0 0 10px var(--venue-status);
      opacity: .8;
    }

    .venue-orb {
      position: relative;
      display: grid;
      width: 44px;
      height: 44px;
      place-items: center;
      border: 3px solid rgba(255,255,255,.9);
      border-radius: 50%;
      background: linear-gradient(145deg, color-mix(in srgb, var(--venue-status) 58%, #182238), #0c1220 65%);
      box-shadow:
        0 0 0 5px color-mix(in srgb, var(--venue-status) 20%, transparent),
        0 12px 26px rgba(0,0,0,.42),
        0 0 18px color-mix(in srgb, var(--venue-status) 45%, transparent);
      font-size: 19px;
      z-index: 2;
    }

    .venue-orb::after {
      content: "";
      position: absolute;
      inset: -11px;
      border: 1px solid color-mix(in srgb, var(--venue-status) 50%, transparent);
      border-radius: 50%;
      opacity: .55;
      animation: venue-radar 2.5s ease-out infinite;
    }

    .venue-marker > strong {
      position: absolute;
      top: 50px;
      max-width: 104px;
      padding: 4px 7px;
      overflow: hidden;
      border: 1px solid color-mix(in srgb, var(--venue-status) 35%, transparent);
      border-radius: 8px;
      background: var(--map-ui);
      box-shadow: 0 7px 18px rgba(0,0,0,.28);
      color: var(--map-copy);
      font-size: 9px;
      line-height: 1;
      text-overflow: ellipsis;
      white-space: nowrap;
      opacity: 0;
      transform: translateY(-3px);
      transition: opacity .2s ease, transform .2s ease;
    }

    .show-venue-labels .venue-marker > strong,
    .marker-selected .venue-marker > strong { opacity: 1; transform: translateY(0); }
    .marker-selected .venue-marker { transform: translateY(-5px) scale(1.14); filter: brightness(1.16); }
    .venue-marker.status-alto .venue-orb { animation: hot-venue 1.7s ease-in-out infinite; }

    .user-marker-wrapper {
      width: 56px !important;
      height: 56px !important;
      overflow: visible !important;
    }

    .user-location-marker {
      position: relative;
      display: grid;
      width: 56px;
      height: 56px;
      place-items: center;
      border-radius: 50%;
      background: radial-gradient(circle, color-mix(in srgb, var(--map-accent) 30%, transparent), transparent 68%);
      filter: drop-shadow(0 5px 8px rgba(0,0,0,.28));
    }

    .user-location-marker::before {
      content: "";
      position: absolute;
      inset: 11px;
      border: 3px solid rgba(255,255,255,.95);
      border-radius: 50%;
      background: var(--map-accent);
      box-shadow: 0 0 0 3px color-mix(in srgb, var(--map-accent) 35%, transparent), 0 4px 10px rgba(0,0,0,.3);
      z-index: 1;
    }

    .user-location-marker span {
      position: absolute;
      top: 16px;
      left: 18px;
      width: 20px;
      height: 24px;
      clip-path: polygon(50% 0, 100% 100%, 50% 76%, 0 100%);
      background: #fff;
      filter: drop-shadow(0 2px 2px rgba(0,0,0,.4));
      z-index: 2;
    }

    .user-location-marker::after {
      content: "";
      position: absolute;
      inset: 7px;
      border: 2px solid color-mix(in srgb, var(--map-accent) 60%, transparent);
      border-radius: 50%;
      animation: user-range 2.7s ease-out infinite;
    }

    body[data-map-theme="day"] .venue-marker > strong,
    body[data-map-theme="day"] .place-preview { color: #10253a; }
    body[data-map-theme="day"] .preview-content .preview-trust,
    body[data-map-theme="day"] .preview-community p { color: rgba(16,37,58,.78); }
    body[data-map-theme="day"] .preview-trust.is-estimate { color: rgba(16,37,58,.5); }
    body[data-map-theme="day"] .preview-community button { color: #10253a; border-color: rgba(16,37,58,.16); }

    @keyframes venue-radar {
      0% { opacity: .6; transform: scale(.7); }
      75%, 100% { opacity: 0; transform: scale(1.45); }
    }

    @keyframes user-range {
      0% { opacity: .65; transform: scale(.55); }
      80%, 100% { opacity: 0; transform: scale(1.9); }
    }

    @keyframes hot-venue {
      50% { transform: translateY(-3px); box-shadow: 0 0 0 7px rgba(239,68,68,.12), 0 16px 30px rgba(0,0,0,.46), 0 0 26px rgba(239,68,68,.65); }
    }

    @media (max-width: 560px) {
      .theme-toggle small { display: none; }
      .theme-toggle { width: 34px; padding: 0; justify-content: center; }
      .map-categories { justify-content: flex-start; }
      .map-status-legend { top: calc(max(10px, env(safe-area-inset-top)) + 157px); }
    }

    /* Camada de descoberta e retenção */
    .discovery-dock {
      position: absolute;
      z-index: 720;
      left: 50%;
      bottom: max(14px, env(safe-area-inset-bottom));
      width: min(420px, calc(100% - 28px));
      padding: 10px 14px 13px;
      border: 1px solid var(--map-border);
      border-radius: 23px;
      background: var(--map-ui);
      box-shadow: 0 24px 60px rgba(0,0,0,.42), inset 0 1px rgba(255,255,255,.06);
      color: var(--map-copy);
      backdrop-filter: blur(24px);
      transform: translateX(-50%);
      transition: opacity .25s ease, transform .3s ease, background .45s ease;
    }

    .discovery-dock.is-hidden {
      opacity: 0;
      pointer-events: none;
      transform: translate(-50%, calc(100% + 30px));
    }

    .discoveries-button {
      position: absolute;
      z-index: 710;
      right: 16px;
      bottom: 20px;
      display: flex;
      align-items: center;
      gap: 6px;
      min-height: 48px;
      padding: 0 10px;
      border: 1px solid var(--map-border);
      border-radius: 16px;
      background: var(--map-ui);
      box-shadow: 0 16px 32px rgba(0,0,0,.34);
      color: var(--map-copy);
      font-size: 10px;
      cursor: pointer;
      opacity: 0;
      pointer-events: none;
      transform: translateY(8px);
      transition: opacity .2s ease, transform .2s ease;
    }
    .discoveries-button.is-ready { opacity: 1; pointer-events: auto; transform: none; }
    .discoveries-button:active { transform: scale(.94); }
    .discoveries-button i {
      display: grid;
      min-width: 22px;
      height: 22px;
      padding: 0 4px;
      place-items: center;
      border-radius: 8px;
      background: color-mix(in srgb, var(--map-accent) 18%, transparent);
      color: var(--map-accent);
      font-style: normal;
      font-weight: 900;
    }
    body:not(.discovery-collapsed) .discoveries-button { opacity: 0; pointer-events: none; transform: translateY(8px); }
    body.discovery-collapsed .locate-button { bottom: 78px; }

    body.preview-open .discovery-dock {
      opacity: 0;
      pointer-events: none;
      transform: translate(-50%, calc(100% + 30px));
    }

    .dock-handle { width: 34px; height: 4px; margin: 0 auto 8px; border-radius: 99px; background: color-mix(in srgb, var(--map-copy) 22%, transparent); }
    .dock-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
    .dock-kicker { display: flex; align-items: center; gap: 6px; color: var(--map-accent); font-size: 8px; font-weight: 900; letter-spacing: .9px; }
    .dock-kicker i { width: 7px; height: 7px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 10px #22c55e; animation: live-pulse 1.8s infinite; }
    .dock-heading h2 { margin: 4px 0 0; font-size: 15px; color: var(--map-copy); }
    .nearby-count { display: grid; min-width: 38px; height: 38px; place-items: center; border: 1px solid color-mix(in srgb, var(--map-accent) 35%, transparent); border-radius: 13px; background: color-mix(in srgb, var(--map-accent) 13%, transparent); color: var(--map-accent); font-size: 17px; font-weight: 900; }
    .discovery-dock > p { margin: 7px 0 10px; color: color-mix(in srgb, var(--map-copy) 62%, transparent); font-size: 10px; line-height: 1.4; }

    .dock-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
    .dock-actions button { min-height: 38px; border: 1px solid var(--map-border); border-radius: 12px; background: color-mix(in srgb, var(--map-accent) 12%, transparent); color: var(--map-copy); font-size: 10px; font-weight: 900; cursor: pointer; transition: transform .18s ease, background .18s ease; }
    .dock-actions button:last-child { border: 0; background: linear-gradient(135deg, var(--map-accent), var(--map-accent-2)); color: #fff; }
    .dock-actions button:active { transform: scale(.96); }

    .mini-mission { display: flex; align-items: center; gap: 8px; margin-top: 9px; padding-top: 9px; border-top: 1px solid var(--map-border); }
    .mini-mission > span { display: grid; width: 29px; height: 29px; place-items: center; border-radius: 10px; background: rgba(255,159,28,.14); }
    .mini-mission div { display: grid; gap: 2px; }
    .mini-mission strong { color: var(--map-copy); font-size: 10px; }
    .mini-mission small { color: color-mix(in srgb, var(--map-copy) 55%, transparent); font-size: 8px; }

    .locate-button { bottom: 220px; }

    @media (min-width: 700px) {
      .discovery-dock { left: 18px; transform: none; width: 390px; }
      .discovery-dock.is-hidden { transform: translateY(calc(100% + 30px)); }
      body.preview-open .discovery-dock { transform: translateY(calc(100% + 30px)); }
      .locate-button { bottom: 30px; }
      body.discovery-collapsed .locate-button { bottom: 30px; }
      .discoveries-button { right: 76px; bottom: 30px; }
    }

    @media (max-height: 680px) {
      .mini-mission { display: none; }
      .locate-button { bottom: 180px; }
    }

    /* Busca compacta: categorias e movimento aparecem somente sob demanda */
    .map-status-legend { display: none; }

    .search-filters {
      display: grid;
      gap: 14px;
      max-height: 0;
      margin-top: 0;
      padding: 0 14px;
      overflow: hidden;
      border: 1px solid transparent;
      border-radius: 18px;
      background: var(--map-ui);
      box-shadow: 0 18px 38px rgba(0,0,0,.28);
      opacity: 0;
      pointer-events: none;
      transform: translateY(-8px) scale(.98);
      transform-origin: top center;
      transition: max-height .28s ease, margin .22s ease, padding .28s ease, opacity .2s ease, transform .28s ease;
    }

    .filters-open .search-filters {
      max-height: 210px;
      margin-top: 7px;
      padding: 13px 14px 15px;
      border-color: var(--map-border);
      opacity: 1;
      pointer-events: auto;
      transform: none;
    }

    .filter-group { display: grid; gap: 7px; min-width: 0; }
    .filter-label {
      color: color-mix(in srgb, var(--map-copy) 55%, transparent);
      font-size: 9px;
      font-weight: 900;
      letter-spacing: .65px;
      text-transform: uppercase;
    }

    .search-filters .map-categories,
    .map-status-filters {
      display: flex;
      gap: 6px;
      justify-content: center;
      margin: 0;
      overflow-x: auto;
      scrollbar-width: none;
    }

    .map-status-filters::-webkit-scrollbar { display: none; }
    .search-filters .map-category,
    .status-filter {
      display: flex;
      flex: 0 0 auto;
      align-items: center;
      justify-content: center;
      gap: 5px;
      height: 34px;
      padding: 0 11px;
      border: 1px solid var(--map-border);
      border-radius: 999px;
      background: color-mix(in srgb, var(--map-accent) 7%, transparent);
      box-shadow: none;
      color: color-mix(in srgb, var(--map-copy) 76%, transparent);
      font-size: 10px;
      font-weight: 800;
      cursor: pointer;
    }

    .search-filters .map-category.active,
    .status-filter.active {
      border-color: color-mix(in srgb, var(--map-accent) 55%, transparent);
      background: var(--map-accent);
      color: #fff;
    }

    .search-filters .filter-clear {
      order: 99;
      width: 34px;
      padding: 0;
      border-radius: 50%;
      font-size: 17px;
      line-height: 1;
    }

    @media (max-width: 560px) {
      .filters-open .search-filters { max-height: 205px; }
      .search-filters .map-categories { justify-content: flex-start; }
      .map-search input { font-size: 16px; }
    }
