    /* ── THEME VARIABLES ── */
    :root {
      --bg: #020617;
      --bg-surface: #0f172a;
      --bg-elevated: #1e293b;
      --border: #1e293b;
      --border-soft: #334155;
      --text: #f1f5f9;
      --text-muted: #94a3b8;
      --verde: #16a34a;
      --verde-dark: #15803d;
      --verde-soft: rgba(22,163,74,.15);
      --shadow: rgba(0,0,0,.5);
      --cor-buraco: #ef4444;
      --cor-drenagem: #0ea5e9;
      --cor-calcada: #f97316;
      --cor-iluminacao: #facc15;
      --cor-sinalizacao: #a855f7;
      --cor-estrutura: #22c55e;
      --cor-outro: #9ca3af;
      --via-sem: #f97316;
      --via-paralelepipedo: #4b5563;
      --via-intertravado: #00f5ff;
      --via-asfalto: #2563eb;
      /* Dashboard dark theme (default — neutro) */
      --dash-bg: #020617;
      --dash-hdr-bg: #0f172a;
      --dash-hdr-border: #1e293b;
      --dash-title-color: #f1f5f9;
      --dash-subtitle-color: #94a3b8;
      --dash-section-color: var(--verde);
      --dash-section-border: #1e293b;
      --dash-kpi-bg: #0f172a;
      --dash-kpi-border: #1e293b;
      --dash-kpi-lbl: #94a3b8;
      --dash-kpi-val: #f1f5f9;
      --dash-chart-bg: #0f172a;
      --dash-chart-border: #1e293b;
      --dash-chart-lbl: #94a3b8;
      --dash-road-bg: #0f172a;
      --dash-road-border: #1e293b;
      --dash-road-name: #f1f5f9;
      --dash-road-meta: #94a3b8;
    }
    [data-theme="light"] {
      --bg: #f8fafc;
      --bg-surface: #ffffff;
      --bg-elevated: #f1f5f9;
      --border: #e2e8f0;
      --border-soft: #cbd5e1;
      --text: #0f172a;
      --text-muted: #64748b;
      --shadow: rgba(0,0,0,.15);
      /* Dashboard light theme (neutro) */
      --dash-bg: #f8fafc;
      --dash-hdr-bg: #ffffff;
      --dash-hdr-border: #e2e8f0;
      --dash-title-color: #0f172a;
      --dash-subtitle-color: #64748b;
      --dash-section-color: var(--verde);
      --dash-section-border: #e2e8f0;
      --dash-kpi-bg: #ffffff;
      --dash-kpi-border: #e2e8f0;
      --dash-kpi-lbl: #64748b;
      --dash-kpi-val: #0f172a;
      --dash-chart-bg: #ffffff;
      --dash-chart-border: #e2e8f0;
      --dash-chart-lbl: #64748b;
      --dash-road-bg: #ffffff;
      --dash-road-border: #e2e8f0;
      --dash-road-name: #0f172a;
      --dash-road-meta: #64748b;
    }

    /* ── RESET ── */
    *, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
    body {
      font-family: system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
      overflow: hidden;
      height: 100vh;
      width: 100vw;
      background: var(--bg);
      color: var(--text);
    }
    a { color: var(--verde); text-decoration: none; }
    a:hover { text-decoration: underline; }

    /* ── MAP (full screen behind everything) ── */
    #map-wrap {
      position: fixed;
      inset: 0;
      z-index: 1;
    }
    #map { width:100%; height:100%; }

    /* ── SIDEBAR ── */
    #sidebar {
      position: fixed;
      left: 0; top: 0;
      height: 100vh;
      width: 330px;
      background: var(--bg-surface);
      border-right: 1px solid var(--border);
      box-shadow: 4px 0 24px var(--shadow);
      display: flex;
      flex-direction: column;
      z-index: 500;
      transform: translateX(0);
      transition: transform .28s cubic-bezier(.4,0,.2,1);
    }
    #sidebar.collapsed { transform: translateX(-100%); }

    /* ── SIDEBAR HEADER ── */
    .sb-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 14px 14px 10px;
      border-bottom: 1px solid var(--border);
      flex-shrink: 0;
    }
    .logo { font-weight:800; font-size:1.1rem; letter-spacing:.04em; color:var(--text); }
    .logo span:first-of-type { color: var(--verde); }
    .mini-logo { color:var(--text); }
    .mini-logo span { color: var(--verde); }
    #city-label { font-size:.75rem; color:var(--text-muted); font-weight:400; margin-left:6px; }

    .btn-collapse {
      width:28px; height:28px; border-radius:6px;
      border:1px solid var(--border-soft);
      background:var(--bg-elevated); color:var(--text-muted);
      font-size:.9rem; cursor:pointer; display:flex; align-items:center; justify-content:center;
      flex-shrink:0;
    }
    .btn-collapse:hover { color:var(--text); border-color:var(--verde); }

    /* ── USER SECTION ── */
    .sb-user {
      padding: 12px 14px;
      border-bottom: 1px solid var(--border);
      display: flex;
      align-items: center;
      gap: 10px;
      flex-shrink: 0;
      min-height: 66px;
    }
    .user-avatar-btn {
      cursor: pointer;
      flex-shrink: 0;
      position: relative;
    }
    .user-avatar {
      width: 40px; height: 40px; border-radius: 50%;
      object-fit: cover;
      border: 2px solid var(--verde);
      display: block;
    }
    .user-avatar-placeholder {
      width: 40px; height: 40px; border-radius: 50%;
      background: var(--verde);
      color: #fff;
      font-weight: 700;
      font-size: 1rem;
      display: flex; align-items:center; justify-content:center;
      border: 2px solid var(--verde-dark);
    }
    .user-avatar-edit-hint {
      position:absolute; bottom:-2px; right:-2px;
      width:16px; height:16px; border-radius:50%;
      background: var(--bg-elevated);
      border: 1px solid var(--border-soft);
      font-size:.6rem; display:flex; align-items:center; justify-content:center;
    }
    .user-details { flex:1; min-width:0; }
    .user-name { font-weight:600; font-size:.85rem; truncate; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
    .user-city { font-size:.72rem; color:var(--text-muted); margin-top:1px; }
    .user-role-badge {
      display:inline-block; font-size:.65rem; padding:1px 6px; border-radius:999px;
      background:var(--verde-soft); color:var(--verde); font-weight:600; margin-top:3px;
    }
    .btn-logout {
      flex-shrink:0; border:1px solid var(--border-soft);
      background:var(--bg-elevated); color:var(--text-muted);
      border-radius:6px; padding:4px 7px; font-size:.72rem; cursor:pointer;
    }
    .btn-logout:hover { border-color:#ef4444; color:#fecaca; }

    /* ── SIDEBAR TABS ── */
    .sb-tabs {
      display: flex;
      gap: 4px;
      padding: 8px 10px;
      border-bottom: 1px solid var(--border);
      flex-shrink: 0;
    }
    .tab-btn {
      flex: 1;
      padding: 6px 4px;
      border-radius: 8px;
      border: 1px solid transparent;
      background: transparent;
      color: var(--text-muted);
      font-size: .72rem;
      cursor: pointer;
      display: flex; flex-direction: column; align-items: center; gap: 2px;
      transition: background .15s;
    }
    .tab-btn .tab-icon { font-size: 1rem; }
    .tab-btn:hover { background: var(--bg-elevated); color: var(--text); }
    .tab-btn.active {
      background: var(--verde-soft);
      border-color: var(--verde);
      color: var(--verde);
      font-weight: 600;
    }

    /* ── SIDEBAR CONTENT ── */
    .sb-content {
      flex: 1;
      overflow-y: auto;
      overflow-x: hidden;
      padding: 10px 12px;
    }
    .sb-content::-webkit-scrollbar { width:5px; }
    .sb-content::-webkit-scrollbar-thumb { background:var(--border-soft); border-radius:3px; }

    .tab-pane h2 { font-size:.95rem; margin-bottom:3px; }
    .tab-pane > p { font-size:.78rem; color:var(--text-muted); margin-bottom:8px; }

    /* ── SIDEBAR FOOTER ── */
    .sb-footer {
      padding: 10px 14px;
      border-top: 1px solid var(--border);
      flex-shrink: 0;
      display: flex;
      flex-direction: column;
      gap: 6px;
    }
    .btn-theme {
      width:100%; padding:7px 10px; border-radius:8px;
      border:1px solid var(--border-soft); background:var(--bg-elevated);
      color:var(--text); font-size:.78rem; cursor:pointer; text-align:left;
    }
    .btn-theme:hover { border-color:var(--verde); }
    .sb-links { font-size:.7rem; color:var(--text-muted); }
    .sb-links a { color:var(--text-muted); }
    .sb-links a:hover { color:var(--verde); }
    .sb-credit { font-size:.65rem; color:var(--text-muted); opacity:.6; }

    /* ── EXPAND BUTTON — agora dentro do mini-sidebar, sem override de posição ── */
    #btn-expand {
      /* herda tudo de .mini-btn; apenas garante display flex */
      display: flex !important;
    }
    #btn-expand:hover { border-color: var(--verde); color: var(--verde); }

    /* ── RIGHT PANEL ── */
    .right-panel {
      position: fixed;
      right: 14px;
      top: 50%;
      transform: translateY(-50%);
      z-index: 500;
      display: flex;
      flex-direction: column;
      gap: 6px;
      background: var(--bg-surface);
      border: 1px solid var(--border-soft);
      border-radius: 12px;
      padding: 8px;
      box-shadow: 0 4px 20px var(--shadow);
    }
    .rp-btn {
      width: 40px; height: 40px; border-radius: 8px;
      border: 1px solid transparent;
      background: var(--bg-elevated);
      color: var(--text);
      font-size: 1.1rem; cursor: pointer;
      display: flex; align-items: center; justify-content: center;
      transition: background .15s, border-color .15s;
    }
    .rp-btn:hover { border-color: var(--verde); background: var(--verde-soft); }
    .rp-btn.active { background: var(--verde); color: #fff; border-color: var(--verde-dark); }
    .rp-sep { height: 1px; background: var(--border); margin: 2px 0; }

    /* ── FORMS ── */
    form { display:flex; flex-direction:column; gap:9px; margin-top:8px; }
    .field { display:flex; flex-direction:column; gap:4px; }
    label { font-size:.78rem; }
    input, select, textarea {
      border-radius:8px; border:1px solid var(--border-soft);
      padding:7px 9px;
      background:var(--bg); color:var(--text);
      font-size:.83rem; resize:vertical;
    }
    [data-theme="light"] input,
    [data-theme="light"] select,
    [data-theme="light"] textarea {
      background: var(--bg-elevated);
    }
    input:focus, select:focus, textarea:focus {
      outline:none; border-color:var(--verde);
      box-shadow:0 0 0 2px var(--verde-soft);
    }
    input[type="file"] { padding:4px 0; font-size:.78rem; }
    .coords-row { display:grid; grid-template-columns:1fr 1fr; gap:8px; width:100%; }
    .coords-row input { min-width:0; width:100%; }
    .help-text { font-size:.72rem; color:var(--text-muted); }
    .small-note { font-size:.72rem; color:var(--text-muted); margin-top:2px; }
    .btn-small {
      margin-top:3px; font-size:.72rem; padding:5px 9px; border-radius:999px;
      border:1px solid var(--verde); background:transparent; color:var(--verde); cursor:pointer;
    }
    .btn-small:hover { background:var(--verde-soft); }
    .btn-submit {
      margin-top:4px; background:var(--verde); border-radius:999px; border:none;
      padding:9px 16px; color:#fff; font-size:.88rem; font-weight:600; cursor:pointer;
    }
    .btn-submit:hover { background:var(--verde-dark); }

    /* ── SECTION DIVIDER ── */
    .section-divider { margin:12px 0 8px; border-top:1px solid var(--border); padding-top:10px; }

    /* ── ROAD TOOLS ── */
    .road-tools-box {
      margin-top:10px; padding:10px; border-radius:10px;
      border:1px solid var(--border); background:var(--bg);
    }
    .road-drawing-status { font-size:.72rem; color:#cbd5e1; margin-top:6px; }
    .road-btn-row { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
    .btn-road {
      border-radius:999px; border:1px solid var(--border-soft);
      background:var(--bg-elevated); color:var(--text);
      font-size:.74rem; padding:5px 10px; cursor:pointer;
    }
    .btn-road:hover { border-color:var(--verde); }
    .btn-road.active { background:var(--verde); color:#fff; border-color:var(--verde); font-weight:600; }

    /* ── FILTERS ── */
    .filters {
      margin-top:10px; padding:8px; border-radius:8px;
      border:1px solid var(--border); background:var(--bg);
    }
    .filters-header { display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:6px; }
    .filters h3 { font-size:.82rem; }
    .export-buttons { display:flex; flex-wrap:wrap; gap:4px; justify-content:flex-end; }
    .btn-export {
      font-size:.68rem; padding:4px 8px; border-radius:999px;
      border:1px solid var(--border-soft); background:var(--bg); color:var(--text); cursor:pointer;
    }
    .btn-export:hover { border-color:var(--verde); }
    .filter-group {
      display:grid; grid-template-columns:1fr 1fr; gap:3px 6px; margin-bottom:8px;
    }
    .filter-item {
      display:flex; align-items:center; gap:5px; font-size:.72rem; cursor:pointer;
      padding:4px 6px; border-radius:7px; transition:background .12s; color:var(--text);
      white-space:nowrap; overflow:hidden;
    }
    .filter-item:hover { background:var(--bg-elevated); }
    .filter-item input { width:auto; flex-shrink:0; accent-color:var(--verde); }
    .filter-icon { width:13px; height:13px; flex-shrink:0; stroke-width:2; display:inline-block; }
    /* colored dots (via legend) */
    .color-dot { display:inline-block; width:9px; height:9px; border-radius:999px; flex-shrink:0; }
    .dot-buraco{background:var(--cor-buraco)}.dot-drenagem{background:var(--cor-drenagem)}.dot-calcada{background:var(--cor-calcada)}.dot-iluminacao{background:var(--cor-iluminacao)}.dot-sinalizacao{background:var(--cor-sinalizacao)}.dot-estrutura{background:var(--cor-estrutura)}.dot-outro{background:var(--cor-outro)}
    .dot-via-sem{background:var(--via-sem)}.dot-via-paralelepipedo{background:var(--via-paralelepipedo)}.dot-via-intertravado{background:var(--via-intertravado)}.dot-via-asfalto{background:var(--via-asfalto)}

    /* ── LEGEND ── */
    .legend { margin-top:8px; border-top:1px solid var(--border); padding-top:8px; }
    .legend-section { margin-bottom:6px; }
    .legend-section-label {
      font-size:.6rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em;
      color:var(--text-muted); margin-bottom:4px;
    }
    .legend-items { display:flex; flex-wrap:wrap; gap:4px 10px; }
    .legend-item { display:flex; align-items:center; gap:4px; font-size:.7rem; color:var(--text); }
    .legend-status-icon { display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px; border-radius:999px; font-size:.6rem; color:#111827; font-weight:800; flex-shrink:0; }
    .legend-open{background:#ef4444}.legend-resolved{background:#22c55e}

    /* ── PROBLEM LIST ── */
    .list { margin-top:8px; border-top:1px solid var(--border); padding-top:6px; }
    .list h3 { font-size:.82rem; margin-bottom:6px; }
    .problem-item {
      font-size:.76rem; padding:6px 8px; border-radius:8px;
      border:1px solid var(--border); background:var(--bg);
      margin-bottom:6px; transition:background .15s, border-color .15s, transform .05s;
    }
    .problem-item:hover { background:var(--bg-elevated); border-color:var(--verde); transform:translateY(-1px); }
    .problem-item-selected { border-color:var(--verde)!important; background:var(--verde-soft)!important; box-shadow:0 0 0 1px rgba(22,163,74,.5); }
    .problem-header { display:flex; align-items:center; gap:4px; flex-wrap:wrap; }
    .problem-title { font-weight:500; }
    .badge { padding:1px 6px; border-radius:999px; font-size:.68rem; }
    .badge-aberto { background:rgba(239,68,68,.18); color:#fecaca; }
    .badge-resolvido { background:rgba(22,163,74,.18); color:#bbf7d0; }
    .badge-defesa { background:rgba(249,115,22,.18); color:#fed7aa; }
    .problem-meta { font-size:.68rem; color:var(--text-muted); margin-top:2px; }
    .problem-actions { margin-top:6px; display:flex; flex-wrap:wrap; gap:5px; }
    .btn-action {
      border-radius:999px; border:1px solid var(--border-soft);
      padding:3px 8px; font-size:.68rem; cursor:pointer;
      background:var(--bg); color:var(--text);
    }
    .btn-action:hover { border-color:var(--verde); }
    .btn-delete { border-color:#ef4444; color:#fecaca; }
    .btn-delete:hover { background:#450a0a; }
    .pagination { margin-top:6px; display:flex; align-items:center; justify-content:space-between; gap:6px; font-size:.72rem; }
    .pagination button {
      border-radius:999px; border:1px solid var(--border-soft);
      padding:3px 8px; font-size:.72rem; cursor:pointer;
      background:var(--bg); color:var(--text);
    }
    .pagination button:disabled { opacity:.4; cursor:default; }
    .pagination button:hover:not(:disabled) { border-color:var(--verde); }

    /* ── DEFESA CIVIL ── */
    .btn-defesa-toggle {
      border-radius:999px; border:1px solid #f97316;
      padding:6px 10px; font-size:.78rem; cursor:pointer;
      background:var(--bg-elevated); color:#fed7aa; font-weight:600;
    }
    .btn-defesa-toggle.active { background:#f97316; color:#111827; box-shadow:0 0 0 1px rgba(248,171,77,.6); }

    /* ── AI VISION BUTTON ── */
    .btn-ai-analyze { display:none; align-items:center; gap:6px; margin-top:7px; padding:8px 14px; border-radius:9px; border:1px solid var(--verde); background:var(--verde-soft); color:var(--verde); font-size:.78rem; font-weight:700; cursor:pointer; transition:background .15s,color .15s; width:100%; justify-content:center; }
    .btn-ai-analyze:hover { background:var(--verde); color:#fff; }
    .btn-ai-analyze:disabled { opacity:.5; cursor:not-allowed; }
    .btn-ai-analyze.visible { display:flex; }
    .ai-analyze-result { margin-top:8px; padding:10px 12px; border-radius:9px; background:var(--bg-elevated); border:1px solid var(--verde-soft); font-size:.77rem; line-height:1.55; color:var(--text); display:none; }
    .ai-analyze-result.visible { display:block; }
    /* ── AI DASHBOARD MODAL ── */
    #ai-dash-modal { position:fixed; inset:0; z-index:4500; background:rgba(0,0,0,.7); display:none; align-items:center; justify-content:center; padding:20px; }
    #ai-dash-modal.active { display:flex; }
    .ai-dash-modal-box { background:var(--bg-surface); border:1px solid var(--border); border-radius:18px; max-width:680px; width:100%; max-height:85vh; display:flex; flex-direction:column; overflow:hidden; }
    .ai-dash-modal-hdr { display:flex; align-items:center; justify-content:space-between; padding:18px 22px 14px; border-bottom:1px solid var(--border); flex-shrink:0; }
    .ai-dash-modal-title { font-size:.95rem; font-weight:700; color:var(--text); display:flex; align-items:center; gap:8px; }
    .ai-dash-modal-close { background:none; border:none; color:var(--text-muted); cursor:pointer; font-size:1.2rem; padding:4px 8px; border-radius:6px; }
    .ai-dash-modal-close:hover { background:var(--bg-elevated); }
    .ai-dash-modal-body { flex:1; overflow-y:auto; padding:20px 22px; font-size:.83rem; line-height:1.7; color:var(--text); white-space:pre-wrap; }
    .ai-dash-modal-loading { display:flex; align-items:center; gap:10px; color:var(--text-muted); font-size:.85rem; }
    .ai-dash-modal-spinner { width:18px; height:18px; border:2px solid var(--verde-soft); border-top-color:var(--verde); border-radius:50%; animation:spin .7s linear infinite; }
    @keyframes spin { to { transform:rotate(360deg); } }
    /* ── WEATHER WIDGET ── */
    #weather-wrap {
      display:none !important; /* barra horizontal removida — botão circular no mapa substitui */
    }
    #weather-rain-alert {
      display:none; align-items:center; justify-content:center; gap:5px;
      background:rgba(239,68,68,.88); color:#fff;
      border-radius:6px; padding:3px 12px; font-size:.67rem; font-weight:700;
      letter-spacing:.03em; text-transform:uppercase;
      box-shadow:0 1px 8px rgba(239,68,68,.35); pointer-events:auto;
      text-align:center; cursor:pointer; transition:background .15s;
    }
    #weather-rain-alert::before { content:""; width:5px; height:5px; border-radius:50%; background:#fff; flex-shrink:0; }
    #weather-rain-alert:hover { background:rgba(220,38,38,.97); }
    #weather-rain-alert.visible { display:flex; }

    /* Drainage events modal */
    #drainage-modal {
      display:none; position:fixed; inset:0; z-index:9000;
      background:rgba(0,0,0,.55); backdrop-filter:blur(4px);
      align-items:center; justify-content:center; padding:16px;
    }
    #drainage-modal.open { display:flex; }
    #drainage-modal-box {
      background:var(--bg-surface); border:1px solid var(--border);
      border-radius:16px; padding:20px; max-width:420px; width:100%;
      max-height:80vh; display:flex; flex-direction:column; gap:12px;
      box-shadow:0 8px 40px var(--shadow);
    }
    #drainage-modal-header {
      display:flex; align-items:center; justify-content:space-between;
    }
    #drainage-modal-title {
      font-size:.88rem; font-weight:700; color:var(--text); display:flex; align-items:center; gap:8px;
    }
    #drainage-modal-close {
      background:none; border:none; color:var(--text-muted); cursor:pointer;
      font-size:1.1rem; padding:2px 6px; border-radius:6px;
    }
    #drainage-modal-close:hover { background:var(--bg-elevated); }
    #drainage-modal-list {
      overflow-y:auto; display:flex; flex-direction:column; gap:8px; flex:1;
    }
    .drainage-item {
      background:var(--bg-elevated); border:1px solid var(--border);
      border-radius:10px; padding:10px 12px; display:flex;
      align-items:center; gap:10px;
    }
    .drainage-item-dot {
      width:8px; height:8px; border-radius:50%; background:var(--cor-drenagem); flex-shrink:0;
    }
    .drainage-item-info { flex:1; min-width:0; }
    .drainage-item-title {
      font-size:.8rem; font-weight:600; color:var(--text);
      white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    }
    .drainage-item-meta { font-size:.7rem; color:var(--text-muted); margin-top:2px; }
    .drainage-item-btn {
      background:rgba(14,165,233,.15); border:1px solid rgba(14,165,233,.35);
      color:#38bdf8; border-radius:8px; padding:5px 10px;
      font-size:.72rem; font-weight:700; cursor:pointer; white-space:nowrap; flex-shrink:0;
    }
    .drainage-item-btn:hover { background:rgba(14,165,233,.28); }
    #weather-widget {
      display:none; flex-direction:row; align-items:center; gap:0;
      background:var(--bg-surface); border:1px solid var(--border);
      border-radius:8px; padding:0;
      box-shadow:0 2px 12px var(--shadow); backdrop-filter:blur(10px);
      overflow:hidden; white-space:nowrap;
    }
    .wx-city-label {
      font-size:.64rem; font-weight:700; color:var(--text-muted);
      text-transform:uppercase; letter-spacing:.07em;
      padding:5px 10px; border-right:1px solid var(--border);
      background:var(--bg-elevated); flex-shrink:0;
    }
    .wx-days-row { display:flex; align-items:center; gap:0; }
    .wx-day {
      display:flex; flex-direction:row; align-items:center; gap:6px;
      padding:5px 10px;
    }
    .wx-day-label { font-size:.65rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:.05em; flex-shrink:0; }
    .wx-day-icon { display:none; } /* hide emoji icon */
    .wx-current-temp {
      font-size:.78rem; font-weight:700; color:var(--text);
      padding:5px 12px; border-right:1px solid var(--border);
      white-space:nowrap; flex-shrink:0; letter-spacing:-.01em;
    }
    .wx-day-cond { font-size:.64rem; font-weight:600; color:var(--text); flex-shrink:0; }
    .wx-day-temp { font-size:.65rem; color:var(--text-muted); font-weight:500; white-space:nowrap; }
    .wx-day-rain { font-size:.62rem; color:#38bdf8; font-weight:600; flex-shrink:0; }
    .wx-sep { width:1px; height:18px; background:var(--border); flex-shrink:0; }
    /* Mobile/desktop weather button */
    #weather-mobile-btn {
      display:flex; position:fixed; top:12px; left:12px; z-index:900;
      width:46px; height:46px; border-radius:50%;
      background:var(--bg-surface); backdrop-filter:blur(8px);
      border:1px solid var(--border); box-shadow:0 2px 10px var(--shadow);
      flex-direction:column; align-items:center; justify-content:center;
      cursor:pointer; gap:1px;
    }
    #weather-mobile-btn svg { flex-shrink:0; }
    #weather-mobile-btn .wx-btn-temp {
      font-size:.6rem; font-weight:700; color:var(--text); line-height:1;
    }
    #weather-mobile-panel {
      display:none; position:fixed; top:58px; left:10px; z-index:899;
      background:var(--bg-surface); backdrop-filter:blur(12px);
      border:1px solid var(--border); border-radius:12px;
      padding:12px 14px; box-shadow:0 4px 20px var(--shadow); min-width:210px;
    }
    #weather-mobile-panel.open { display:block; }
    .wx-panel-city {
      font-size:.62rem; font-weight:700; color:var(--text-muted);
      text-transform:uppercase; letter-spacing:.07em;
      padding-bottom:8px; border-bottom:1px solid var(--border); margin-bottom:8px;
    }
    .wx-panel-day { display:flex; align-items:center; gap:10px; padding:5px 0; border-bottom:1px solid var(--border); }
    .wx-panel-day:last-child { border-bottom:none; }
    .wx-panel-icon { display:none; } /* remove emojis */
    .wx-panel-cond-dot { width:7px; height:7px; border-radius:50%; flex-shrink:0; }
    .wx-panel-info { flex:1; }
    .wx-panel-label { font-size:.7rem; color:var(--text-muted); font-weight:500; }
    .wx-panel-temp { font-size:.78rem; font-weight:700; color:var(--text); }
    .wx-panel-rain { font-size:.66rem; color:#38bdf8; }
    #weather-mobile-rain-alert {
      display:none; margin-top:8px; background:rgba(239,68,68,.12);
      border:1px solid rgba(239,68,68,.4); border-radius:7px;
      padding:6px 10px; font-size:.68rem; color:#f87171; font-weight:700;
      cursor:pointer; transition:background .15s;
    }
    #weather-mobile-rain-alert:hover { background:rgba(239,68,68,.22); }
    #weather-mobile-rain-alert.visible { display:block; }
    /* Desktop: botão do clima abaixo do zoom (–), coluna direita, right:14px */
    @media (min-width:769px) {
      #weather-mobile-btn {
        top: 285px;   /* logo abaixo do zoom (–) que termina em ~269px */
        left: auto;
        right: 14px;
      }
      #weather-mobile-panel {
        top: 343px;   /* 285px + 46px botão + 12px gap */
        left: auto;
        right: 14px;
        max-width: 230px;
      }
    }
    @media (max-width: 768px) {
      #weather-wrap { display:none !important; }
    }
    /* ── AI CHAT ── */
    .ai-chat-wrapper { display:flex; flex-direction:column; height:calc(100vh - 260px); min-height:320px; }
    .ai-key-setup { display:flex; flex-direction:column; gap:10px; background:var(--bg-surface); border-radius:14px; border:1px solid var(--border); padding:18px 16px; }
    .ai-key-icon { font-size:2rem; text-align:center; }
    .ai-key-title { font-size:.9rem; font-weight:700; color:var(--text); text-align:center; }
    .ai-key-desc { font-size:.76rem; color:var(--text-muted); text-align:center; line-height:1.5; }
    .ai-key-link { font-size:.76rem; color:var(--verde); text-align:center; text-decoration:none; font-weight:600; }
    .ai-key-link:hover { text-decoration:underline; }
    .ai-key-field { background:var(--bg-elevated); border:1px solid var(--border); border-radius:8px; padding:9px 12px; font-size:.8rem; color:var(--text); outline:none; width:100%; box-sizing:border-box; }
    .ai-key-field:focus { border-color:var(--verde); }
    .ai-key-btn { background:var(--verde); color:#fff; border:none; border-radius:9px; padding:10px; font-size:.82rem; font-weight:700; cursor:pointer; transition:background .15s; }
    .ai-key-btn:hover { background:var(--verde-dark); }
    .ai-chat-active { display:flex; flex-direction:column; flex:1; overflow:hidden; }
    .ai-chat-header { display:flex; align-items:center; justify-content:space-between; padding:8px 4px; border-bottom:1px solid var(--border); margin-bottom:6px; flex-shrink:0; }
    .ai-chat-title { font-size:.8rem; font-weight:700; color:var(--text); }
    .ai-key-reset { background:none; border:none; color:var(--text-muted); cursor:pointer; padding:4px; border-radius:6px; display:flex; align-items:center; }
    .ai-key-reset:hover { color:var(--verde); background:var(--verde-soft); }
    .ai-chat-messages { flex:1; overflow-y:auto; display:flex; flex-direction:column; gap:8px; padding:4px 2px; }
    .ai-msg { display:flex; }
    .ai-msg-bot { justify-content:flex-start; }
    .ai-msg-user { justify-content:flex-end; }
    .ai-msg-bubble { max-width:85%; padding:9px 13px; border-radius:12px; font-size:.78rem; line-height:1.55; white-space:pre-wrap; }
    .ai-msg-bot .ai-msg-bubble { background:var(--bg-elevated); color:var(--text); border-radius:4px 12px 12px 12px; }
    .ai-msg-user .ai-msg-bubble { background:var(--verde); color:#fff; border-radius:12px 4px 12px 12px; }
    .ai-msg-thinking .ai-msg-bubble { opacity:.6; font-style:italic; }
    .ai-chat-input-row { display:flex; gap:6px; align-items:flex-end; padding-top:8px; border-top:1px solid var(--border); flex-shrink:0; margin-top:6px; flex-direction:column; }
    .ai-chat-input-controls { display:flex; gap:6px; align-items:flex-end; width:100%; }
    .ai-chat-textarea { flex:1; background:var(--bg-elevated); border:1px solid var(--border); border-radius:10px; padding:9px 12px; font-size:.8rem; color:var(--text); resize:none; outline:none; font-family:inherit; line-height:1.4; }
    .ai-chat-textarea:focus { border-color:var(--verde); }
    .ai-chat-send-btn { background:var(--verde); border:none; border-radius:10px; padding:9px 12px; color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:background .15s; }
    .ai-chat-send-btn:hover { background:var(--verde-dark); }
    .ai-chat-send-btn:disabled { opacity:.5; cursor:not-allowed; }
    .ai-chat-img-btn { background:var(--bg-elevated); border:1px solid var(--border); border-radius:10px; padding:9px 10px; color:var(--text-muted); cursor:pointer; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:border-color .15s, color .15s; }
    .ai-chat-img-btn:hover { border-color:var(--verde); color:var(--verde); }
    .ai-chat-img-btn.has-image { border-color:var(--verde); color:var(--verde); background:var(--verde-soft); }
    .ai-cam-gps-btn { background:var(--bg-elevated); border:1px solid var(--border); border-radius:10px; padding:9px 10px; color:var(--text-muted); cursor:pointer; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:border-color .15s,color .15s,background .15s; position:relative; }
    .ai-cam-gps-btn:hover { border-color:#f59e0b; color:#f59e0b; }
    .ai-cam-gps-btn:disabled { opacity:.5; cursor:not-allowed; }
    .ai-cam-gps-btn .gps-dot { position:absolute; top:4px; right:4px; width:6px; height:6px; border-radius:50%; background:#f59e0b; display:none; }
    .ai-cam-gps-btn.gps-ready .gps-dot { display:block; background:#22c55e; }
    .ai-float-cam-btn { background:var(--bg-elevated); border:1px solid var(--border-soft); border-radius:9px; padding:7px 9px; color:var(--text-muted); cursor:pointer; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:border-color .15s,color .15s; }
    .ai-float-cam-btn:hover { border-color:#f59e0b; color:#f59e0b; }
    .ai-float-cam-btn:disabled { opacity:.5; cursor:not-allowed; }
    .ai-chat-img-preview { display:none; align-items:center; gap:8px; background:var(--bg-elevated); border:1px solid var(--verde-soft); border-radius:9px; padding:6px 10px; width:100%; font-size:.74rem; color:var(--text-muted); }
    .ai-chat-img-preview.visible { display:flex; }
    .ai-chat-img-preview img { width:36px; height:36px; border-radius:6px; object-fit:cover; border:1px solid var(--border); flex-shrink:0; }
    .ai-chat-img-preview-name { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .ai-chat-img-remove { background:none; border:none; color:var(--text-muted); cursor:pointer; font-size:1rem; line-height:1; padding:0 2px; flex-shrink:0; }
    .ai-chat-img-remove:hover { color:var(--cor-buraco); }
    .ai-msg-img { max-width:100%; border-radius:8px; margin-top:6px; display:block; max-height:180px; object-fit:cover; }
    .ai-admin-key-row { display:flex; gap:6px; align-items:center; margin-top:6px; }
    .ai-admin-key-row input { flex:1; }
    .ai-admin-key-row button { white-space:nowrap; padding:7px 12px; font-size:.75rem; }

    /* ── ADMIN / DASHBOARD ── */
    .admin-panel-intro { font-size:.78rem; color:var(--text-muted); margin-bottom:8px; }
    .dashboard-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:6px; margin-bottom:10px; }
    .metric-card { border-radius:10px; border:1px solid var(--border); background:var(--bg); padding:8px 10px; }
    .metric-label { color:var(--text-muted); font-size:.72rem; }
    .metric-value { font-size:1rem; font-weight:600; margin-top:2px; }
    .metric-highlight { color:#facc15; }
    .admin-charts { display:grid; grid-template-columns:1fr; gap:10px; margin-top:8px; }
    .chart-box { border-radius:10px; border:1px solid var(--border); background:var(--bg); padding:8px 10px; min-height:220px; }
    .chart-box h3 { font-size:.82rem; margin-bottom:6px; }
    .chart-box canvas { width:100%!important; max-width:100%; height:180px!important; }
    .admin-critical { margin-top:10px; }
    .admin-critical h3 { font-size:.82rem; margin-bottom:4px; }
    .critical-list-empty { font-size:.78rem; color:var(--text-muted); }
    .problem-critical { border-color:#ef4444!important; background:#450a0a!important; }
    .problem-critical-title-icon { color:#fbbf24; margin-right:4px; }

    /* ── MARKER ── */
    /* ── MAP MARKERS ── */
    .marker-wrap { position:relative; width:30px; height:30px; }
    .marker-icon-bg {
      width:30px; height:30px; border-radius:50%;
      display:flex; align-items:center; justify-content:center;
      box-shadow:0 2px 8px rgba(0,0,0,.35);
    }
    .marker-icon-bg svg { display:block; flex-shrink:0; }
    .marker-badge {
      position:absolute; top:-3px; right:-3px;
      width:13px; height:13px; border-radius:50%;
      display:flex; align-items:center; justify-content:center;
      font-size:.52rem; font-weight:900; color:#fff; line-height:1;
      border:1.5px solid var(--bg); flex-shrink:0;
    }
    .marker-badge-open { background:#ef4444; }
    .marker-badge-resolved { background:#22c55e; }

    /* ── Pulsing rain alert on drainage markers ── */
    @keyframes drain-pulse {
      0%   { box-shadow: 0 2px 8px rgba(0,0,0,.35), 0 0 0 0 rgba(239,68,68,0); }
      40%  { box-shadow: 0 2px 8px rgba(0,0,0,.35), 0 0 0 6px rgba(239,68,68,.35); }
      70%  { box-shadow: 0 2px 8px rgba(0,0,0,.35), 0 0 0 10px rgba(239,68,68,.08); }
      100% { box-shadow: 0 2px 8px rgba(0,0,0,.35), 0 0 0 0 rgba(239,68,68,0); }
    }
    body.infraok-rain-alert .marker-drenagem {
      animation: drain-pulse 2.4s ease-in-out infinite;
    }

    /* ── POPUP ── */
    .leaflet-popup-content-wrapper { max-width:230px!important; border-radius:14px; }
    .leaflet-popup-content { margin:6px!important; width:210px!important; }
    .popup-status-badge { display:inline-block; background:#fff; border:1px solid #d1d5db; padding:2px 10px; border-radius:999px; font-size:.75rem; font-weight:600; margin-top:6px; }
    .popup-status-aberto{color:#d97706}.popup-status-resolvido{color:#16a34a}
    .popup-link-btn { display:inline-block; margin-top:6px; padding:5px 10px; border-radius:8px; border:1px solid #16a34a; background:#16a34a; color:#fff!important; text-decoration:none; font-size:.72rem; font-weight:600; }
    .popup-link-btn:hover{background:#15803d;border-color:#15803d}
    .leaflet-popup.popup-defesa-civil .leaflet-popup-content-wrapper { background:#fbbf24; color:#111827; border:1px solid #d97706; }
    .leaflet-popup.popup-defesa-civil .leaflet-popup-tip { background:#fbbf24; }
    .leaflet-popup.popup-defesa-civil button { background:#1f2937!important; color:#fbbf24!important; border:1px solid #1f2937!important; }

    /* ── MODALS ── */
    .modal-backdrop {
      position:fixed; inset:0;
      background:rgba(15,23,42,.85);
      display:none; align-items:center; justify-content:center; z-index:999;
    }
    .modal {
      width:100%; max-width:430px; max-height:90vh; overflow-y:auto;
      background:var(--bg-surface); border-radius:14px;
      border:1px solid var(--border-soft); padding:16px 18px 14px;
      box-shadow:0 20px 50px rgba(0,0,0,.6);
    }
    .modal h3 { font-size:1rem; margin-bottom:4px; }
    .modal p { font-size:.78rem; color:var(--text-muted); margin-bottom:8px; }
    .modal .field { margin-bottom:8px; }
    .modal-actions { margin-top:10px; display:flex; justify-content:flex-end; gap:8px; }
    .btn-modal-cancel { border-radius:999px; border:1px solid var(--border-soft); padding:6px 12px; font-size:.78rem; cursor:pointer; background:var(--bg); color:var(--text); }
    .btn-modal-cancel:hover { border-color:#f97316; }
    .btn-modal-confirm { border-radius:999px; border:none; padding:6px 14px; font-size:.78rem; cursor:pointer; background:var(--verde); color:#fff; font-weight:600; }
    .btn-modal-confirm:hover { background:var(--verde-dark); }
    .btn-modal-danger { border-radius:999px; border:1px solid #ef4444; padding:6px 14px; font-size:.78rem; cursor:pointer; background:transparent; color:#ef4444; font-weight:600; display:none; }
    .btn-modal-danger:hover { background:#ef4444; color:#fff; }
    body.infraok-admin .btn-modal-danger { display:inline-flex; align-items:center; gap:6px; }

    /* ── IMAGE MODAL ── */
    .image-modal-box { max-width:90vw; max-height:90vh; background:var(--bg-surface); border-radius:14px; border:1px solid var(--border-soft); padding:8px 10px 10px; display:flex; flex-direction:column; gap:6px; }
    .image-modal-header { display:flex; justify-content:space-between; align-items:center; font-size:.85rem; }
    .image-modal-close { border:none; background:transparent; color:var(--text-muted); cursor:pointer; font-size:1rem; }
    .image-modal-close:hover { color:#f97316; }
    .image-modal-content { display:flex; justify-content:center; align-items:center; }
    .image-modal-content img { max-width:100%; max-height:80vh; border-radius:8px; }

    /* ── PROFILE MODAL ── */
    .profile-avatar-preview-wrap { display:flex; justify-content:center; margin-bottom:10px; }
    #profile-avatar-preview { width:80px; height:80px; border-radius:50%; object-fit:cover; border:3px solid var(--verde); display:none; }
    .profile-avatar-placeholder-big {
      width:80px; height:80px; border-radius:50%;
      background:var(--verde); color:#fff;
      font-weight:700; font-size:2rem;
      display:flex; align-items:center; justify-content:center;
    }

    /* ── AUTH OVERLAY ── */
    .auth-overlay {
      position:fixed; inset:0;
      background:radial-gradient(circle at top,rgba(56,189,248,.08),transparent),radial-gradient(circle at bottom,rgba(22,163,74,.12),rgba(15,23,42,.95));
      display:flex; align-items:center; justify-content:center; z-index:1000;
    }
    .auth-card { width:100%; max-width:380px; background:var(--bg-surface); border-radius:14px; border:1px solid var(--border-soft); padding:18px 20px 16px; box-shadow:0 20px 40px rgba(0,0,0,.6); }
    .auth-card h2 { font-size:1.1rem; margin-bottom:2px; }
    .auth-card > p { font-size:.78rem; color:var(--text-muted); margin-bottom:10px; }
    .auth-tabs { display:flex; border-radius:999px; border:1px solid var(--border-soft); padding:2px; margin-bottom:10px; }
    .auth-tab-btn { flex:1; border-radius:999px; border:none; background:transparent; color:var(--text-muted); font-size:.78rem; padding:6px 8px; cursor:pointer; }
    .auth-tab-btn.active { background:var(--verde); color:#fff; font-weight:600; }
    .auth-form { display:none; flex-direction:column; gap:8px; }
    .auth-form.active { display:flex; }
    .auth-footer { margin-top:10px; font-size:.72rem; color:var(--text-muted); }
    .auth-footer p { margin-bottom:4px; }

    /* ── PUBLIC PANEL TOGGLE ── */
    .public-panel-mode {
      position:fixed!important; inset:16px; z-index:1002;
      overflow:auto; display:none; max-width:none!important;
      width:auto!important; padding:14px;
      box-shadow:0 20px 50px rgba(0,0,0,.55);
    }
    .public-panel-mode.active { display:flex!important; }
    .public-panel-close {
      position:sticky; top:0; margin-left:auto; margin-bottom:10px;
      border:1px solid var(--border-soft); background:var(--bg-surface);
      color:var(--text); border-radius:999px; padding:6px 12px;
      font-size:.74rem; cursor:pointer; z-index:2; display:block;
    }
    .public-panel-close:hover { border-color:#ef4444; color:#fecaca; }

    /* ── ICONS ── */
    .icon { display:inline-block; vertical-align:middle; }
    .icon svg, [data-lucide] { width:15px; height:15px; stroke-width:2; display:inline-block; vertical-align:middle; }
    .icon-sm svg, .icon-sm { width:13px; height:13px; }
    .icon-md svg, .icon-md { width:16px; height:16px; }
    .icon-lg svg, .icon-lg { width:18px; height:18px; }

    /* ── TYPOGRAPHY UPGRADE ── */
    body { font-family:'Inter',system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; }

    /* ── SIDEBAR REFINEMENTS ── */
    #sidebar { width:340px; backdrop-filter:blur(0px); }
    .sb-header { padding:16px 16px 12px; }
    .logo { font-weight:700; font-size:1.05rem; letter-spacing:.04em; }

    /* ── METRIC CARD UPGRADE ── */
    .metric-card { border-left:3px solid var(--verde); }
    .metric-value { font-size:1.35rem; font-weight:700; }

    /* ── BUTTON UPGRADE ── */
    .btn-submit { font-weight:700; letter-spacing:.02em; transition:background .18s,transform .1s; }
    .btn-submit:active { transform:scale(.98); }
    .btn-collapse { border-radius:8px; }

    /* ── PROFESSIONAL PROBLEM ITEMS ── */
    .problem-item { border-radius:10px; }

    /* ── FULL-SCREEN DASHBOARD ── */
    #dashboard-fullscreen {
      position:fixed; inset:0; z-index:4000;
      background:var(--dash-bg);
      display:none; flex-direction:column; overflow-y:auto;
    }
    #dashboard-fullscreen.active { display:flex; }
    .dash-header {
      display:flex; align-items:center; justify-content:space-between;
      padding:20px 28px 16px; flex-shrink:0;
      background:var(--dash-hdr-bg); border-bottom:1px solid var(--dash-hdr-border);
    }
    .dash-title { font-size:1.3rem; font-weight:700; color:var(--dash-title-color); letter-spacing:.04em; }
    .dash-subtitle { font-size:.75rem; color:var(--dash-subtitle-color); margin-top:2px; }
    .dash-close {
      width:36px; height:36px; border-radius:10px;
      border:1px solid var(--dash-hdr-border); background:var(--dash-hdr-bg);
      color:var(--dash-title-color); cursor:pointer; display:flex; align-items:center; justify-content:center;
    }
    .dash-close:hover { background:rgba(239,68,68,.15); border-color:#ef4444; color:#fca5a5; }
    .dash-body { flex:1; padding:22px 26px 30px; display:flex; flex-direction:column; gap:22px; }
    .dash-section-hdr {
      font-size:.72rem; font-weight:700; color:var(--dash-section-color); letter-spacing:.1em;
      text-transform:uppercase; border-bottom:1px solid var(--dash-section-border); padding-bottom:7px; margin-bottom:14px;
    }
    .dash-kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(155px,1fr)); gap:12px; }
    .dash-kpi {
      border-radius:13px; border:1px solid var(--dash-kpi-border);
      background:var(--dash-kpi-bg);
      padding:15px 16px; position:relative; overflow:hidden;
    }
    .dash-kpi::before {
      content:''; position:absolute; top:0; left:0; width:3px; height:100%;
      background:var(--verde);
    }
    .dash-kpi-lbl { font-size:.68rem; color:var(--dash-kpi-lbl); font-weight:600; letter-spacing:.05em; text-transform:uppercase; margin-bottom:4px; }
    .dash-kpi-val { font-size:1.85rem; font-weight:700; color:var(--dash-kpi-val); line-height:1; }
    .dash-kpi-val.sm { font-size:1.1rem; }
    .dash-kpi.danger { border-color:rgba(239,68,68,.28); background:linear-gradient(135deg,rgba(239,68,68,.09),rgba(239,68,68,.04)); }
    .dash-kpi.danger::before { background:linear-gradient(to bottom,#ef4444,#fca5a5); }
    .dash-kpi.danger .dash-kpi-lbl { color:#fca5a5; }
    .dash-kpi.danger .dash-kpi-val { color:var(--dash-kpi-val); }
    .dash-kpi.warn { border-color:rgba(234,179,8,.28); background:linear-gradient(135deg,rgba(234,179,8,.09),rgba(234,179,8,.04)); }
    .dash-kpi.warn::before { background:linear-gradient(to bottom,#ca8a04,#fde047); }
    .dash-kpi.warn .dash-kpi-lbl { color:#ca8a04; }
    .dash-kpi.warn .dash-kpi-val { color:var(--dash-kpi-val); }
    .dash-kpi.blue { border-color:rgba(56,189,248,.28); background:linear-gradient(135deg,rgba(56,189,248,.09),rgba(56,189,248,.04)); }
    .dash-kpi.blue::before { background:linear-gradient(to bottom,#0284c7,#38bdf8); }
    .dash-kpi.blue .dash-kpi-lbl { color:#0284c7; }
    .dash-kpi.blue .dash-kpi-val { color:var(--dash-kpi-val); }
    .dash-charts-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; }
    .dash-chart-box {
      border-radius:13px; border:1px solid var(--dash-chart-border);
      background:var(--dash-chart-bg); padding:16px; position:relative;
    }
    .dash-chart-lbl { font-size:.7rem; font-weight:700; color:var(--dash-chart-lbl); letter-spacing:.06em; text-transform:uppercase; margin-bottom:10px; }
    .dash-chart-wrap { position:relative; height:200px; width:100%; overflow:hidden; }
    .dash-chart-wrap canvas { display:block; width:100%!important; height:100%!important; }
    /* Wrappers de pizza/donut: altura auto para o gráfico circular não distorcer */
    .dash-chart-wrap.pie { height:auto !important; overflow:visible; }
    .dash-chart-wrap.pie canvas { height:auto !important; }
    .dash-roads-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px; }
    .dash-road-card {
      border-radius:11px; border:1px solid var(--dash-road-border);
      background:var(--dash-road-bg); padding:13px 15px; display:flex; align-items:center; gap:11px;
    }
    .dash-road-dot { width:11px; height:11px; border-radius:50%; flex-shrink:0; }
    .dash-road-name { font-size:.82rem; font-weight:600; color:var(--dash-road-name); }
    .dash-road-meta { font-size:.7rem; color:var(--dash-road-meta); margin-top:2px; }
    /* Weather banner inside dashboard */
    #dash-weather-banner {
      display:none; border-radius:9px; padding:10px 15px;
      font-size:.79rem; font-weight:600; align-items:center;
      gap:9px; margin-bottom:4px;
    }
    #dash-weather-banner.rain {
      background:rgba(239,68,68,.12); border:1px solid rgba(239,68,68,.3); color:#f87171;
    }
    #dash-weather-banner.clear {
      background:rgba(22,163,74,.1); border:1px solid rgba(22,163,74,.3); color:#4ade80;
    }
    .dash-crit-item {
      border-radius:10px; border:1px solid rgba(239,68,68,.28);
      background:rgba(127,29,29,.15); padding:10px 14px;
      margin-bottom:8px; display:flex; align-items:center; gap:12px;
    }
    [data-theme="light"] .dash-crit-item { background:rgba(254,226,226,.5); }
    .dash-crit-days { min-width:44px; font-size:1.05rem; font-weight:700; color:#dc2626; border-right:1px solid rgba(239,68,68,.28); padding-right:12px; text-align:center; }
    .dash-crit-days small { display:block; font-size:.6rem; color:#ef4444; font-weight:400; }
    .dash-crit-info {}
    .dash-crit-title { font-size:.82rem; font-weight:600; color:var(--dash-kpi-val); }
    .dash-crit-meta { font-size:.7rem; color:#ef4444; margin-top:2px; }

    /* ── SIDEBAR ADMIN PANEL — estilo igual à dashboard ── */
    .metric-card {
      border-radius:12px; border:1px solid var(--verde-soft);
      background:linear-gradient(135deg,rgba(22,163,74,.08),rgba(22,163,74,.02));
      padding:12px 14px; position:relative; overflow:hidden;
      border-left:3px solid var(--verde) !important;
    }
    .metric-label { font-size:.65rem; font-weight:700; color:var(--verde); letter-spacing:.05em; text-transform:uppercase; margin-bottom:3px; }
    .metric-value { font-size:1.5rem; font-weight:700; color:var(--text); line-height:1.1; }
    .metric-highlight { color:var(--verde); }
    .chart-box {
      border-radius:12px; border:1px solid var(--border);
      background:var(--bg); padding:12px 14px;
      border-left:3px solid var(--verde);
    }
    .chart-box h3 { font-size:.72rem; font-weight:700; color:var(--verde); letter-spacing:.05em; text-transform:uppercase; margin-bottom:10px; }
    .chart-box canvas { width:100%!important; max-width:100%; height:180px!important; }
    .btn-open-fullscreen {
      width:100%; margin-top:8px; padding:10px; border-radius:10px;
      border:1px solid var(--verde); background:var(--verde-soft);
      color:var(--verde); font-size:.82rem; font-weight:700;
      cursor:pointer; display:flex; align-items:center; justify-content:center; gap:6px;
      letter-spacing:.02em;
    }
    .btn-open-fullscreen:hover { background:var(--verde); color:#fff; }

    /* ── TOOLTIP ── */
    .infraok-tooltip {
      background:rgba(2,6,23,.92)!important; border:1px solid rgba(22,163,74,.5)!important;
      color:#86efac!important; font-size:.74rem!important; font-weight:600!important;
      border-radius:6px!important; padding:4px 9px!important; white-space:nowrap!important;
      box-shadow:0 4px 12px rgba(0,0,0,.4)!important;
    }
    .infraok-tooltip.leaflet-tooltip-top::before { border-top-color:rgba(22,163,74,.5)!important; }
    .infraok-tooltip.leaflet-tooltip-bottom::before { border-bottom-color:rgba(22,163,74,.5)!important; }

    /* ── POPUP EDIT BTN ── */
    .popup-edit-btn {
      display:inline-flex; align-items:center; padding:5px 12px;
      border-radius:7px; border:1px solid #16a34a; background:transparent;
      color:#16a34a; font-size:.72rem; font-weight:600; cursor:pointer; white-space:nowrap;
    }
    .popup-edit-btn:hover { background:rgba(22,163,74,.12); }
    .popup-del-btn {
      display:inline-flex; align-items:center; padding:5px 12px;
      border-radius:7px; border:1px solid #ef4444; background:transparent;
      color:#ef4444; font-size:.72rem; font-weight:600; cursor:pointer; white-space:nowrap;
    }
    .popup-del-btn:hover { background:rgba(239,68,68,.12); }

    /* ── POPUP DOCUMENT BUTTON ── */
    .popup-doc-btn {
      display:inline-flex; align-items:center; gap:7px;
      margin-top:7px; padding:7px 13px; border-radius:9px;
      background:var(--verde) !important; color:#fff !important;
      font-size:.75rem; font-weight:700 !important; text-decoration:none !important;
      box-shadow:0 2px 10px rgba(22,163,74,.35);
      transition:background .15s, transform .12s, box-shadow .15s;
      cursor:pointer; border:none;
    }
    .popup-doc-btn:hover { background:var(--verde-dark) !important; color:#fff !important; transform:translateY(-1px); box-shadow:0 4px 14px rgba(22,163,74,.45); }
    .popup-doc-btn .doc-badge {
      background:#fff; color:var(--verde); font-size:.58rem; font-weight:900;
      padding:1px 5px; border-radius:4px; letter-spacing:.06em; line-height:1.4;
      flex-shrink:0;
    }
    .popup-doc-btn svg { flex-shrink:0; }

    /* ── POPUP PROPOSTA BTN ── */
    .popup-proposta-btn {
      display:inline-flex; align-items:center; gap:6px;
      margin-top:6px; padding:5px 11px; border-radius:7px;
      background:#1e40af; color:#fff !important;
      font-size:.72rem; font-weight:700; cursor:pointer;
      border:none; text-decoration:none;
      transition:background .15s, transform .12s;
    }
    .popup-proposta-btn:hover { background:#1d4ed8; transform:translateY(-1px); }

    /* ── PROPOSTA MODAL ── */
    #proposta-modal {
      display:none; position:fixed; inset:0; z-index:9100;
      background:rgba(0,0,0,.6); backdrop-filter:blur(4px);
      align-items:center; justify-content:center; padding:12px;
    }
    #proposta-box {
      background:var(--bg-surface); border-radius:16px;
      width:100%; max-width:780px; max-height:92vh;
      display:flex; flex-direction:column;
      box-shadow:0 24px 64px rgba(0,0,0,.5);
      border:1px solid var(--border);
    }
    #proposta-header {
      display:flex; align-items:center; justify-content:space-between;
      padding:16px 20px; border-bottom:1px solid var(--border);
      flex-shrink:0;
    }
    #proposta-header h3 { margin:0; font-size:1rem; font-weight:700; color:var(--text); }
    #proposta-header .prop-subtitle { font-size:.75rem; color:var(--text-muted); margin-top:2px; }
    #proposta-close-btn {
      background:none; border:none; cursor:pointer; color:var(--text-muted);
      font-size:1.2rem; line-height:1; padding:4px; border-radius:6px;
    }
    #proposta-close-btn:hover { color:var(--text); background:var(--bg-hover); }
    #proposta-body {
      overflow-y:auto; flex:1; padding:20px;
      display:flex; flex-direction:column; gap:18px;
    }
    .prop-section { display:flex; flex-direction:column; gap:10px; }
    .prop-section-title {
      font-size:.72rem; font-weight:700; letter-spacing:.08em;
      text-transform:uppercase; color:#1e40af;
      padding-bottom:6px; border-bottom:2px solid #1e40af;
      margin-bottom:2px;
    }
    .prop-row { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
    .prop-row.full { grid-template-columns:1fr; }
    .prop-row.three { grid-template-columns:1fr 1fr 1fr; }
    .prop-field { display:flex; flex-direction:column; gap:4px; }
    .prop-field label { font-size:.72rem; color:var(--text-muted); font-weight:600; }
    .prop-field input, .prop-field textarea, .prop-field select {
      background:var(--bg); border:1px solid var(--border); border-radius:8px;
      padding:7px 10px; font-size:.8rem; color:var(--text); font-family:inherit;
      transition:border-color .15s;
    }
    .prop-field input:focus, .prop-field textarea:focus, .prop-field select:focus {
      outline:none; border-color:#1e40af;
    }
    .prop-field textarea { resize:vertical; min-height:70px; }
    .prop-valores-grid {
      display:grid; grid-template-columns:repeat(3,1fr); gap:12px;
    }
    .prop-valor-card {
      background:var(--bg); border-radius:10px; padding:12px 14px;
      border:1px solid var(--border);
    }
    .prop-valor-card.highlight { background:#1e3a8a1a; border-color:#1e40af; }
    .prop-valor-card .pvc-label { font-size:.68rem; color:var(--text-muted); font-weight:600; text-transform:uppercase; }
    .prop-valor-card .pvc-value { font-size:.95rem; font-weight:700; color:var(--text); margin-top:3px; }
    .prop-valor-card.highlight .pvc-value { color:#1e40af; }
    #proposta-footer {
      display:flex; justify-content:flex-end; gap:10px;
      padding:14px 20px; border-top:1px solid var(--border); flex-shrink:0;
    }
    .prop-btn-print {
      background:#1e40af; color:#fff; border:none; border-radius:9px;
      padding:9px 20px; font-weight:700; font-size:.85rem; cursor:pointer;
      display:flex; align-items:center; gap:7px;
      transition:background .15s, transform .12s;
    }
    .prop-btn-print:hover { background:#1d4ed8; transform:translateY(-1px); }
    .prop-btn-cancel {
      background:var(--bg); color:var(--text-muted); border:1px solid var(--border);
      border-radius:9px; padding:9px 16px; font-size:.85rem; cursor:pointer;
    }
    .prop-ia-btn {
      display:inline-flex; align-items:center; gap:4px;
      padding:2px 9px; border-radius:6px; font-size:.7rem; font-weight:600;
      border:1px solid #7c3aed; color:#a78bfa; background:rgba(124,58,237,.1);
      cursor:pointer; white-space:nowrap; transition:background .15s;
      line-height:1.6;
    }
    .prop-ia-btn:hover { background:rgba(124,58,237,.22); }
    .prop-ia-btn:disabled { opacity:.5; cursor:not-allowed; }
    .prop-field-hdr { display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
    .prop-field-hdr label { margin-bottom:0; }
    .prop-btn-pdf-only {
      display:inline-flex; align-items:center; gap:6px;
      background:var(--bg); color:#2E75B6; border:1px solid #2E75B6;
      border-radius:9px; padding:9px 14px; font-size:.85rem; font-weight:600; cursor:pointer;
      transition:background .15s;
    }
    .prop-btn-pdf-only:hover { background:rgba(46,117,182,.1); }
    .prop-btn-cancel:hover { color:var(--text); }

    /* ── PRINT STYLES ── */
    @media print {
      body > *:not(#proposta-print-area) { display:none !important; }
      #proposta-print-area {
        display:block !important;
        font-family:Arial, sans-serif; font-size:11pt; color:#000;
        padding:20mm 20mm 15mm; max-width:100%;
      }
      #proposta-modal { display:none !important; }
    }
    #proposta-print-area { display:none; }
    #proposta-print-area .ppa-header {
      text-align:center; border-bottom:3px solid #1e40af; padding-bottom:12px; margin-bottom:16px;
    }
    #proposta-print-area .ppa-title { font-size:16pt; font-weight:700; color:#1e40af; }
    #proposta-print-area .ppa-subtitle { font-size:11pt; color:#374151; margin-top:4px; }
    #proposta-print-area .ppa-section { margin-bottom:16px; }
    #proposta-print-area .ppa-section-title {
      font-size:10pt; font-weight:700; color:#1e40af; text-transform:uppercase;
      letter-spacing:.05em; border-bottom:1px solid #1e40af; padding-bottom:3px; margin-bottom:8px;
    }
    #proposta-print-area table { width:100%; border-collapse:collapse; margin-bottom:8px; }
    #proposta-print-area th {
      background:#1e3a8a; color:#fff; font-size:9pt; text-align:left;
      padding:5px 8px; font-weight:700;
    }
    #proposta-print-area td {
      padding:5px 8px; border-bottom:1px solid #e5e7eb; font-size:10pt;
      vertical-align:top;
    }
    #proposta-print-area td.label { font-weight:600; color:#374151; width:35%; background:#f9fafb; }
    #proposta-print-area .ppa-valores { display:flex; gap:16px; }
    #proposta-print-area .ppa-valor-box {
      flex:1; border:1px solid #e5e7eb; border-radius:6px; padding:10px 12px;
      text-align:center;
    }
    #proposta-print-area .ppa-valor-box.highlight { border-color:#1e40af; background:#eff6ff; }
    #proposta-print-area .ppa-vbox-label { font-size:8pt; color:#6b7280; text-transform:uppercase; font-weight:600; }
    #proposta-print-area .ppa-vbox-val { font-size:13pt; font-weight:700; color:#1e40af; margin-top:3px; }

    /* ── EDIT DOC REMOVE ── */
    .btn-remove-doc {
      display:inline-flex; align-items:center; gap:4px;
      margin-top:5px; padding:3px 9px; border-radius:6px;
      border:1px solid #ef4444; background:transparent;
      color:#ef4444; font-size:.72rem; font-weight:600; cursor:pointer;
      transition:background .15s;
    }
    .btn-remove-doc:hover { background:rgba(239,68,68,.1); }
    .doc-remove-notice { color:#ef4444; font-size:.72rem; font-weight:600; margin-top:4px; }

    /* ── MINI SIDEBAR (when main sidebar collapsed) ── */
    #sidebar-mini {
      position:fixed; left:0; top:0; height:100vh; width:54px;
      background:var(--bg-surface); border-right:1px solid var(--border);
      box-shadow:4px 0 20px var(--shadow); z-index:500;
      display:none; flex-direction:column; align-items:center;
      padding:12px 0 10px; gap:6px;
    }
    #sidebar-mini.visible { display:flex; }
    .mini-logo {
      font-weight:900; font-size:.8rem; letter-spacing:.04em;
      color:var(--verde); text-align:center; line-height:1; padding:4px 2px;
    }
    .mini-logo .mini-logo-infra { display:none; } /* hide "Infra" in collapsed state */
    .mini-sep { width:30px; height:1px; background:var(--border); margin:2px 0; flex-shrink:0; }
    .mini-spacer { flex:1; }
    .mini-avatar-wrap {
      width:36px; height:36px; border-radius:50%;
      cursor:pointer; position:relative; flex-shrink:0;
    }
    .mini-avatar-wrap img {
      width:36px; height:36px; border-radius:50%;
      object-fit:cover; border:2px solid var(--verde); display:block;
    }
    .mini-avatar-init {
      width:36px; height:36px; border-radius:50%;
      background:var(--verde); color:#fff; font-weight:700; font-size:.9rem;
      border:2px solid var(--verde-dark);
      display:flex; align-items:center; justify-content:center;
    }
    .mini-btn {
      width:36px; height:36px; border-radius:9px;
      border:1px solid transparent; background:transparent;
      color:var(--text-muted); cursor:pointer;
      display:flex; align-items:center; justify-content:center;
      transition:background .15s, border-color .15s; flex-shrink:0;
    }
    .mini-btn:hover { background:var(--bg-elevated); color:var(--text); border-color:var(--verde); }
    .mini-btn-expand { border-color:var(--border-soft); }
    .mini-btn-logout:hover { border-color:#ef4444; color:#fca5a5; }

    /* ── BOTTOM-RIGHT CONTROLS ── */
    #btn-my-location, .btn-my-location-fixed, #btn-my-location-fixed {
      position:fixed; right:14px; top:85px; z-index:2000;
      width:42px; height:42px; border-radius:10px;
      border:1px solid var(--border-soft); background:var(--bg-surface);
      color:var(--text); cursor:pointer;
      display:flex; align-items:center; justify-content:center;
      box-shadow:0 4px 16px var(--shadow);
      transition:background .15s, border-color .15s;
    }
    #btn-my-location:hover, .btn-my-location-fixed:hover { border-color:var(--verde); background:var(--verde-soft); }

    /* Leaflet controls estilizados igual aos botões custom */
    .leaflet-control-zoom {
      border:1px solid var(--border-soft) !important;
      border-radius:10px !important;
      box-shadow:0 4px 16px var(--shadow) !important;
      overflow:hidden;
    }
    .leaflet-control-zoom-in,
    .leaflet-control-zoom-out {
      background:var(--bg-surface) !important;
      color:var(--text) !important;
      width:42px !important; height:42px !important;
      line-height:42px !important;
      border:none !important;
      border-bottom:1px solid var(--border-soft) !important;
      font-size:18px !important; font-weight:500 !important;
      display:flex !important; align-items:center !important; justify-content:center !important;
      transition:background .15s, color .15s !important;
    }
    .leaflet-control-zoom-out { border-bottom:none !important; }
    .leaflet-control-zoom-in:hover,
    .leaflet-control-zoom-out:hover { background:var(--verde-soft) !important; color:var(--verde) !important; }
    .leaflet-control-layers {
      border:1px solid var(--border-soft) !important;
      border-radius:10px !important;
      box-shadow:0 4px 16px var(--shadow) !important;
      background:var(--bg-surface) !important;
    }
    .leaflet-control-layers-toggle {
      width:42px !important; height:42px !important;
      background-color:transparent !important;
      display:flex !important; align-items:center !important; justify-content:center !important;
    }

    /* Zoom abaixo do filtro (coluna direita) */
    .leaflet-top.leaflet-right {
      top: 185px !important;
      right: 0 !important;
    }
    /* Alinhar zoom com botões custom (right:14px) — override da margin Leaflet */
    .leaflet-top.leaflet-right .leaflet-control-zoom {
      margin-right: 14px !important;
      margin-top: 0 !important;
    }
    @media (max-width:768px) {
      .leaflet-top.leaflet-right {
        top: 185px !important;
        right: 0 !important;
      }
      .leaflet-top.leaflet-right .leaflet-control-zoom {
        margin-right: 14px !important;
      }
    }

    /* Camadas: topo da coluna direita (acima de localização) */
    .leaflet-top.leaflet-left .leaflet-control-layers {
      position: fixed !important;
      top: 30px !important;
      right: 14px !important;
      left: auto !important;
      margin: 0 !important;
      float: none !important;
      z-index: 2000 !important;
    }
    @media (max-width:768px) {
      .leaflet-top.leaflet-left .leaflet-control-layers {
        right: 14px !important;
        top: 30px !important;
      }
    }

    /* ── PUBLIC TOPBAR ── */
    #public-topbar button:hover { background:#15803d !important; }

    /* ── FLOATING THEME BUTTON (mobile only) ── */
    #btn-theme-float {
      display:none; /* shown only on mobile via media query */
      position:fixed; right:14px; bottom:200px; z-index:2000;
      width:42px; height:42px; border-radius:10px;
      border:1px solid var(--border-soft); background:var(--bg-surface);
      color:var(--text); cursor:pointer;
      align-items:center; justify-content:center;
      box-shadow:0 4px 16px var(--shadow);
      transition:background .15s, border-color .15s;
    }
    #btn-theme-float:hover { border-color:var(--verde); background:var(--verde-soft); }
    #btn-theme-float svg { width:18px; height:18px; }

    /* ── COLOR PICKER (profile modal) ── */
    .color-picker-wrap { margin-top:4px; }
    .color-picker-label { font-size:.75rem; font-weight:600; color:var(--text-muted); margin-bottom:8px; text-transform:uppercase; letter-spacing:.04em; }
    .color-swatches { display:flex; gap:10px; flex-wrap:wrap; }
    .color-swatch {
      width:32px; height:32px; border-radius:50%; cursor:pointer;
      border:2px solid transparent; transition:transform .15s, border-color .15s;
      position:relative;
    }
    .color-swatch:hover { transform:scale(1.15); }
    .color-swatch.active { border-color:#fff; box-shadow:0 0 0 2px var(--verde); transform:scale(1.12); }
    .color-swatch.active::after {
      content:'✓'; position:absolute; inset:0; display:flex; align-items:center;
      justify-content:center; font-size:.72rem; color:#fff; font-weight:700;
    }

    /* ── BOTTOM NAV (mobile only) ── */
    #bottom-nav {
      display:none;
      position:fixed; bottom:0; left:0; right:0; height:66px;
      background:var(--bg-surface); border-top:1px solid var(--border);
      box-shadow:0 -4px 24px var(--shadow);
      z-index:600; align-items:center; justify-content:space-between;
      padding:0 4px;
    }
    .bn-tab {
      flex:1; height:100%; max-width:80px;
      display:flex; flex-direction:column; align-items:center; justify-content:center;
      gap:3px; background:transparent; border:none;
      color:var(--text-muted); font-size:.6rem; font-weight:500;
      cursor:pointer; border-radius:10px; padding:6px 4px;
      transition:color .15s, background .15s;
    }
    .bn-tab [data-lucide] { width:20px; height:20px; stroke-width:2; display:block; }
    .bn-tab.active { color:var(--verde); }
    .bn-tab.active [data-lucide] { stroke:var(--verde); }
    .bn-tab:active { background:var(--verde-soft); }
    .bn-center {
      display:flex; align-items:center; justify-content:center;
      flex-shrink:0; padding:0 6px;
    }
    .bn-avatar-wrap {
      width:46px; height:46px; border-radius:50%;
      cursor:pointer; overflow:hidden;
      border:2.5px solid var(--verde);
      box-shadow:0 0 0 2px var(--verde-soft);
      background:var(--verde);
      display:flex; align-items:center; justify-content:center;
      font-weight:700; color:#fff; font-size:1.1rem;
      flex-shrink:0;
    }
    .bn-avatar-wrap img {
      width:100%; height:100%; object-fit:cover;
      border-radius:50%; display:block;
    }

    /* ── MOBILE OVERLAY ── */
    #mobile-overlay {
      display:none; position:fixed; inset:0;
      background:rgba(0,0,0,.45); z-index:580;
    }
    #mobile-overlay.visible { display:block; }

    /* ── MOBILE SHEET HANDLE ── */
    .sb-sheet-handle {
      display:none;
      justify-content:center;
      padding:8px 0 2px; flex-shrink:0; cursor:pointer;
    }
    .sb-sheet-handle-bar {
      width:38px; height:4px; border-radius:2px;
      background:var(--border-soft);
    }

    /* ── RESPONSIVE: MOBILE FIRST ── */
    @media (max-width: 768px) {
      /* Show bottom nav */
      #bottom-nav { display:flex; }

      /* Hide desktop sidebar + mini sidebar */
      #sidebar-mini { display:none !important; }

      /* Transform sidebar into a bottom sheet */
      #sidebar {
        top:auto !important;
        left:0 !important; right:0 !important; bottom:66px !important;
        width:100% !important;
        height:80vh !important;
        border-right:none !important; border-radius:18px 18px 0 0 !important;
        border-top:1px solid var(--border) !important;
        box-shadow:0 -10px 40px var(--shadow) !important;
        transform:translateY(105%) !important;
        transition:transform .32s cubic-bezier(.4,0,.2,1) !important;
        /* CRÍTICO: sidebar acima do overlay para receber cliques */
        z-index:590 !important;
      }
      #sidebar.mobile-open {
        transform:translateY(0) !important;
      }
      /* override desktop collapsed transform */
      #sidebar.collapsed { transform:translateY(105%) !important; }

      /* Overlay fica abaixo do sidebar (apenas bloqueia o mapa) */
      #mobile-overlay { z-index:581 !important; }

      /* Show sheet handle inside sidebar on mobile */
      .sb-sheet-handle { display:flex; }

      /* No mobile, btn-collapse vira botão de fechar o sheet (seta ↓) */
      .btn-collapse { display:flex !important; }
      /* Rotaciona o ícone chevron-left → aponta para baixo no mobile */
      .btn-collapse svg { transform:rotate(-90deg); }
      /* Handle do sheet mais clicável */
      .sb-sheet-handle { padding:10px 0 4px; cursor:pointer; }
      .sb-sheet-handle-bar { width:44px; height:5px; background:var(--border-soft); border-radius:3px; transition:background .15s; }
      .sb-sheet-handle:hover .sb-sheet-handle-bar,
      .sb-sheet-handle:active .sb-sheet-handle-bar { background:var(--verde); }
      /* Ocultar elementos repetidos — navegação já está na barra inferior */
      #sidebar .sb-header { display:none !important; }
      #sidebar .sb-user   { display:none !important; }
      #sidebar .sb-tabs   { display:none !important; }
      #sidebar .sb-footer { display:none !important; }
      /* Conteúdo ocupa todo o sheet sem desperdício de espaço */
      #sidebar .sb-content {
        padding:4px 14px 20px;
        -webkit-overflow-scrolling:touch;
        height:100%;
      }
      /* Handle mais alto e clicável como indicador de fechar */
      .sb-sheet-handle {
        padding:12px 0 6px;
        background:var(--bg-surface);
        border-radius:18px 18px 0 0;
        flex-shrink:0;
      }

      /* Controles do mapa acima da barra inferior (66px) */
      .leaflet-bottom.leaflet-right {
        bottom:74px !important;
      }
      /* Botão localização — igual ao desktop */
      #btn-my-location, .btn-my-location-fixed {
        top:85px !important;
        bottom:auto !important;
        right:14px !important;
        width:42px !important; height:42px !important;
        border-radius:10px !important;
        z-index:2000 !important;
      }
      /* Botão de tema — igual ao desktop (abaixo da localização) */
      #btn-theme-float {
        display:flex !important;
        top:135px !important;
        bottom:auto !important;
        right:14px !important;
        width:42px !important; height:42px !important;
        border-radius:10px !important;
        z-index:2000 !important;
      }

      /* Right panel on mobile: move above bottom nav */
      .right-panel {
        bottom:80px !important;
        top:auto !important;
        transform:none !important;
      }

      /* Gráficos do painel: 1 coluna, altura reduzida */
      .dash-charts-grid { grid-template-columns:1fr !important; }
      .dash-chart-wrap { height:160px !important; }
      .dash-chart-wrap canvas { width:100%!important; height:100%!important; }
    }
  
    /* ── PROPOSTA MODAL — MOBILE ── */
    @media (max-width:768px) {
      #proposta-box { max-height:96vh; border-radius:12px; }
      #proposta-body { padding:14px; }
      .prop-row.three, .prop-row { grid-template-columns:1fr !important; }
      .prop-valores-grid { grid-template-columns:1fr 1fr !important; }
      #proposta-footer { flex-direction:column-reverse; gap:8px; }
      .prop-btn-print, .prop-btn-cancel, .prop-btn-pdf-only { width:100%; justify-content:center; }
    #proposta-footer > div { width:100%; flex-direction:column; gap:8px; }
    }


    /* ── MOBILE FILTER BUTTON ── */
    #btn-mob-filter {
      display:flex; position:fixed; right:14px; top:135px; z-index:2000;
      width:42px; height:42px; border-radius:10px;
      border:1px solid var(--border-soft); background:var(--bg-surface);
      color:var(--text); cursor:pointer; align-items:center; justify-content:center;
      transition:background .15s, border-color .15s;
    }
    #btn-mob-filter:hover { border-color:var(--verde); background:var(--verde-soft); color:var(--verde); }
    @media (max-width:768px) {
      #btn-mob-filter {
        top: auto !important;
        right: auto !important;
        bottom: 130px !important;
        left: 12px !important;
        width: 46px !important;
        height: 46px !important;
        border-radius: 50% !important;
      }
    }
    @media (max-width:768px) {
      #btn-mob-filter {
        top: auto !important;
        right: auto !important;
        bottom: 130px !important;
        left: 12px !important;
        width: 46px !important;
        height: 46px !important;
        border-radius: 50% !important;
      }
    }
    #mob-filter-badge {
      display:none; position:absolute; top:-5px; right:-5px;
      width:16px; height:16px; border-radius:50%;
      background:#ef4444; color:#fff; font-size:.55rem; font-weight:700;
      align-items:center; justify-content:center; pointer-events:none;
    }
    @media (max-width:768px) {
      body.infraok-public #btn-mob-filter { bottom:130px !important; left:12px !important; top:auto !important; right:auto !important; }
    }

    /* ── FILTER SHEET — desktop: popup ancorado ao botão ── */
    @media (min-width:769px) {
      #mob-filter-backdrop { background:transparent !important; }
      #mob-filter-sheet {
        bottom:auto !important; left:auto !important;
        right:62px !important; top:100px !important;
        width:310px !important; border-radius:16px !important;
        border:1px solid var(--border) !important;
        box-shadow:0 8px 40px var(--shadow) !important;
        max-height:80vh !important;
        transform:translateX(20px) scale(.97) !important;
        transition:transform .25s cubic-bezier(.4,0,.2,1), opacity .25s !important;
        opacity:0 !important;
      }
      #mob-filter-sheet.open {
        transform:translateX(0) scale(1) !important;
        opacity:1 !important;
      }
      .mob-filter-handle { display:none !important; }
    }

    /* ── MOBILE FILTER SHEET ── */
    #mob-filter-backdrop {
      display:none; position:fixed; inset:0; z-index:5500;
      background:rgba(0,0,0,.45); backdrop-filter:blur(2px);
    }
    #mob-filter-sheet {
      display:none; position:fixed; bottom:0; left:0; right:0; z-index:5600;
      background:var(--bg-surface); border-radius:20px 20px 0 0;
      border-top:1px solid var(--border);
      padding-bottom:max(env(safe-area-inset-bottom),16px);
      max-height:88vh; overflow-y:auto; -webkit-overflow-scrolling:touch;
      transform:translateY(100%);
      transition:transform .32s cubic-bezier(.4,0,.2,1);
      flex-direction:column;
    }
    #mob-filter-sheet.open { transform:translateY(0); }
    .mob-road-row {
      display:flex; flex-wrap:wrap; gap:7px;
    }
    .mob-road-chip {
      padding:5px 12px; border-radius:20px; font-size:.78rem; font-weight:600;
      border:1.5px solid var(--border-soft); background:var(--bg-surface);
      color:var(--text-muted); cursor:pointer;
      transition:background .15s, border-color .15s, color .15s;
    }
    .mob-road-chip.active {
      background:color-mix(in srgb, var(--rc, var(--verde)) 15%, transparent);
      border-color:var(--rc, var(--verde));
      color:var(--rc, var(--verde));
    }
    .mob-road-chip[data-road="all"].active {
      background:var(--verde-soft,rgba(22,163,74,.12)); border-color:var(--verde); color:var(--verde);
    }

    .mob-filter-handle {
      display:flex; justify-content:center; padding:12px 0 6px;
      cursor:pointer;
    }
    .mob-filter-handle-bar {
      width:44px; height:5px; background:var(--border-soft); border-radius:3px;
    }
    .mob-filter-body { padding:0 18px 24px; }
    .mob-filter-hdr {
      display:flex; align-items:center; justify-content:space-between; margin-bottom:16px;
    }
    .mob-filter-title { font-size:.95rem; font-weight:700; color:var(--text); }
    .mob-filter-clear {
      font-size:.73rem; color:var(--verde); font-weight:700;
      background:none; border:none; cursor:pointer; padding:4px 8px; border-radius:6px;
    }
    .mob-filter-clear:hover { background:var(--verde-soft); }
    .mob-filter-section { margin-bottom:18px; }
    .mob-filter-label {
      font-size:.67rem; font-weight:700; color:var(--text-muted);
      letter-spacing:.1em; text-transform:uppercase; margin-bottom:9px;
    }
    /* Search */
    .mob-filter-search-wrap {
      position:relative;
    }
    .mob-filter-search-wrap [data-lucide] {
      position:absolute; left:11px; top:50%; transform:translateY(-50%);
      width:15px; height:15px; color:var(--text-muted); pointer-events:none;
    }
    #mob-filter-search-input {
      width:100%; padding:9px 12px 9px 36px; border-radius:10px;
      border:1px solid var(--border); background:var(--bg-input, var(--bg));
      color:var(--text); font-size:.82rem; box-sizing:border-box; outline:none;
    }
    #mob-filter-search-input:focus { border-color:var(--verde); }
    /* Status pills */
    .mob-status-row { display:flex; gap:8px; }
    .mob-status-pill {
      flex:1; padding:7px 6px; border-radius:9px;
      border:1px solid var(--border); background:var(--bg-surface);
      color:var(--text-muted); font-size:.73rem; font-weight:600;
      cursor:pointer; transition:all .15s; text-align:center;
    }
    .mob-status-pill.active {
      background:var(--verde-soft); border-color:var(--verde); color:var(--verde);
    }
    /* Type chips */
    .mob-type-grid { display:flex; flex-wrap:wrap; gap:8px; }
    .mob-type-chip {
      display:flex; align-items:center; gap:5px;
      padding:6px 11px; border-radius:20px;
      border:1px solid var(--border); background:var(--bg-surface);
      font-size:.72rem; font-weight:600; cursor:pointer;
      transition:all .15s; color:var(--text-muted); white-space:nowrap;
    }
    .mob-type-chip [data-lucide] { width:12px; height:12px; flex-shrink:0; }
    .mob-type-chip.active { opacity:1; }
    .mob-type-chip:not(.active) { opacity:.42; }
    /* Results counter */
    #mob-filter-count {
      font-size:.72rem; color:var(--text-muted); text-align:center;
      margin-top:14px; padding-top:14px; border-top:1px solid var(--border);
    }

    /* ── FLOATING AI CHAT BUTTON + POPUP ── */
    #btn-painel-desktop {
      display:none; position:fixed; bottom:146px; right:14px; z-index:2100;
      width:44px; height:44px; border-radius:50%;
      background:var(--bg-surface); border:1.5px solid var(--border-soft);
      color:var(--text); cursor:pointer;
      align-items:center; justify-content:center;
      box-shadow:0 4px 16px var(--shadow);
      transition:background .15s, border-color .15s, color .15s, transform .2s;
    }
    #btn-painel-desktop:hover { background:var(--verde-soft); border-color:var(--verde); color:var(--verde); transform:scale(1.08); }
    #btn-painel-desktop svg { width:18px; height:18px; flex-shrink:0; }

    #btn-ai-chat-float {
      position:fixed; bottom:80px; right:14px; z-index:3000;
      width:50px; height:50px; border-radius:50%;
      background:var(--verde); border:none;
      box-shadow:0 4px 20px rgba(22,163,74,.45);
      display:flex; align-items:center; justify-content:center;
      cursor:pointer; transition:transform .2s, box-shadow .2s;
    }
    #btn-ai-chat-float:hover { transform:scale(1.08); box-shadow:0 6px 28px rgba(22,163,74,.6); }
    #btn-ai-chat-float svg { width:24px; height:24px; color:#fff; flex-shrink:0; }
    #btn-ai-chat-float .ai-float-badge {
      position:absolute; top:-4px; right:-4px;
      width:14px; height:14px; border-radius:50%;
      background:#ef4444; border:2px solid var(--bg); display:none;
    }
    @media (max-width:768px) {
      #btn-ai-chat-float { bottom:76px; left:12px; right:auto; width:46px; height:46px; }
      #ai-chat-float-popup { bottom:136px; left:12px; right:auto; width:calc(100vw - 24px); max-width:340px; }
    }
    @media (min-width:769px) {
      #btn-ai-chat-float { bottom:90px; right:14px; z-index:2100; width:44px; height:44px; }
      #ai-chat-float-popup { bottom:148px; right:14px; left:auto; width:340px; }
      #btn-painel-desktop { display:flex !important; bottom:146px; right:14px; }
    }

    /* ── FLOATING AI POPUP ── */
    #ai-chat-float-popup {
      position:fixed; bottom:144px; right:14px; z-index:2999;
      width:340px; max-height:500px;
      background:var(--bg-surface); border:1px solid var(--border);
      border-radius:18px; box-shadow:0 8px 40px var(--shadow);
      display:flex; flex-direction:column; overflow:hidden;
      transform:scale(.9) translateY(20px); opacity:0; pointer-events:none;
      transition:transform .25s cubic-bezier(.4,0,.2,1), opacity .25s;
    }
    #ai-chat-float-popup.open {
      transform:scale(1) translateY(0); opacity:1; pointer-events:auto;
    }
    @media (max-width:768px) {
      #ai-chat-float-popup {
        bottom:132px; right:8px; left:8px; width:auto;
        max-height:60vh;
      }
    }
    .ai-float-hdr {
      display:flex; align-items:center; justify-content:space-between;
      padding:12px 14px 10px; border-bottom:1px solid var(--border);
      flex-shrink:0;
    }
    .ai-float-title {
      display:flex; align-items:center; gap:7px;
      font-size:.82rem; font-weight:700; color:var(--text);
    }
    .ai-float-close {
      background:none; border:none; color:var(--text-muted);
      cursor:pointer; padding:4px; border-radius:6px; line-height:1;
      font-size:1rem; transition:background .15s;
    }
    .ai-float-close:hover { background:var(--bg-elevated); }
    .ai-float-msgs {
      flex:1; overflow-y:auto; padding:12px 14px;
      display:flex; flex-direction:column; gap:8px;
    }
    .ai-float-msg { display:flex; }
    .ai-float-msg.user { justify-content:flex-end; }
    .ai-float-bubble {
      max-width:82%; padding:8px 12px; border-radius:14px;
      font-size:.78rem; line-height:1.5; white-space:pre-wrap; word-break:break-word;
    }
    .ai-float-msg.bot .ai-float-bubble {
      background:var(--bg-elevated); color:var(--text); border-radius:4px 14px 14px 14px;
    }
    .ai-float-msg.user .ai-float-bubble {
      background:var(--verde); color:#fff; border-radius:14px 14px 4px 14px;
    }
    .ai-float-input-row {
      display:flex; align-items:flex-end; gap:8px;
      padding:10px 12px; border-top:1px solid var(--border); flex-shrink:0;
    }
    #ai-float-input {
      flex:1; resize:none; border:1px solid var(--border);
      background:var(--bg); color:var(--text);
      border-radius:10px; padding:8px 11px; font-size:.78rem;
      max-height:80px; outline:none; transition:border-color .15s;
      font-family:inherit; line-height:1.4;
    }
    #ai-float-input:focus { border-color:var(--verde); }
    #ai-float-send {
      width:34px; height:34px; border-radius:50%;
      background:var(--verde); border:none; cursor:pointer;
      display:flex; align-items:center; justify-content:center;
      flex-shrink:0; transition:background .15s;
    }
    #ai-float-send:hover { background:#15803d; }
    #ai-float-send svg { width:15px; height:15px; color:#fff; }
    #ai-float-send:disabled { background:var(--text-muted); cursor:not-allowed; }
    


    /* ══════════════════════════════════════════
       IA FISCAL — Modal full-screen
    ══════════════════════════════════════════ */
    #ia-fiscal-modal {
      display:none; position:fixed; inset:0; z-index:9900;
      background:var(--fiscal-bg, #0f172a);
      flex-direction:column; overflow:hidden;
    }
    #ia-fiscal-modal.open { display:flex; }

    .fiscal-header {
      display:flex; align-items:center; gap:10px;
      padding:14px 16px; border-bottom:1px solid rgba(255,255,255,.12);
      background:var(--fiscal-accent, #f59e0b);
      color:#000; flex-shrink:0;
    }
    .fiscal-header-title {
      font-weight:800; font-size:1rem; flex:1;
      display:flex; align-items:center; gap:8px;
    }
    .fiscal-header-sub { font-size:.75rem; opacity:.75; }
    .fiscal-close-btn {
      background:rgba(0,0,0,.18); border:none; border-radius:8px;
      width:32px; height:32px; cursor:pointer; display:flex;
      align-items:center; justify-content:center; flex-shrink:0;
      color:#000; font-size:1rem; font-weight:700;
    }
    .fiscal-close-btn:hover { background:rgba(0,0,0,.3); }

    .fiscal-body {
      flex:1; overflow-y:auto; display:flex; flex-direction:column; gap:0;
    }

    /* Event selector */
    .fiscal-event-bar {
      padding:12px 16px; background:rgba(255,255,255,.04);
      border-bottom:1px solid rgba(255,255,255,.08);
      display:flex; align-items:center; gap:10px; flex-wrap:wrap;
      flex-shrink:0;
    }
    .fiscal-event-label { font-size:.78rem; color:var(--text-muted); white-space:nowrap; }
    .fiscal-event-select {
      flex:1; min-width:180px; background:var(--bg-elevated);
      border:1px solid var(--border-soft); border-radius:8px;
      color:var(--text); font-size:.82rem; padding:6px 10px;
    }
    .fiscal-event-nearest-btn {
      background:var(--fiscal-accent, #f59e0b); color:#000;
      border:none; border-radius:8px; padding:6px 12px;
      font-size:.78rem; font-weight:700; cursor:pointer; white-space:nowrap;
      flex-shrink:0;
    }
    .fiscal-event-nearest-btn:hover { opacity:.85; }

    /* Photos grid */
    .fiscal-photos-section {
      padding:14px 16px; flex-shrink:0;
    }
    .fiscal-section-title {
      font-size:.78rem; font-weight:700; color:var(--text-muted);
      text-transform:uppercase; letter-spacing:.06em; margin-bottom:10px;
      display:flex; align-items:center; justify-content:space-between;
    }
    .fiscal-photo-count {
      font-weight:400; color:var(--fiscal-accent, #f59e0b);
    }
    .fiscal-photos-grid {
      display:grid; grid-template-columns:repeat(auto-fill, minmax(110px, 1fr));
      gap:8px;
    }
    .fiscal-photo-card {
      border-radius:10px; overflow:hidden; position:relative;
      background:var(--bg-elevated); border:1px solid var(--border-soft);
      aspect-ratio:1; cursor:pointer;
    }
    .fiscal-photo-card img {
      width:100%; height:100%; object-fit:cover; display:block;
    }
    .fiscal-photo-card .fp-overlay {
      position:absolute; inset:0; background:rgba(0,0,0,.6);
      display:flex; flex-direction:column; justify-content:flex-end;
      padding:6px; gap:2px; opacity:0; transition:opacity .15s;
    }
    .fiscal-photo-card:hover .fp-overlay { opacity:1; }
    .fiscal-photo-card .fp-gps {
      font-size:.65rem; color:#86efac; line-height:1.3;
    }
    .fiscal-photo-card .fp-desc {
      font-size:.68rem; color:#fff; line-height:1.3;
      max-height:40px; overflow:hidden;
    }
    .fiscal-photo-card .fp-remove {
      position:absolute; top:4px; right:4px;
      background:rgba(239,68,68,.85); border:none; border-radius:50%;
      width:20px; height:20px; color:#fff; font-size:.7rem;
      cursor:pointer; display:flex; align-items:center; justify-content:center;
      font-weight:700;
    }
    .fiscal-photo-card .fp-num {
      position:absolute; top:4px; left:4px;
      background:rgba(0,0,0,.7); border-radius:50%;
      width:20px; height:20px; font-size:.68rem; color:#fff;
      display:flex; align-items:center; justify-content:center;
      font-weight:700;
    }

    /* Add photo button */
    .fiscal-add-photo-btn {
      border-radius:10px; border:2px dashed var(--border-soft);
      background:var(--bg-surface); aspect-ratio:1;
      display:flex; flex-direction:column; align-items:center;
      justify-content:center; gap:4px; cursor:pointer;
      color:var(--text-muted); font-size:.72rem; transition:border-color .15s,color .15s;
    }
    .fiscal-add-photo-btn:hover:not(:disabled) { border-color:var(--fiscal-accent,#f59e0b); color:var(--fiscal-accent,#f59e0b); }
    .fiscal-add-photo-btn:disabled { opacity:.4; cursor:not-allowed; }

    /* Description modal for photo */
    #fiscal-desc-modal {
      display:none; position:fixed; inset:0; z-index:10000;
      background:rgba(0,0,0,.75); align-items:center; justify-content:center; padding:16px;
    }
    #fiscal-desc-modal.open { display:flex; }
    .fiscal-desc-box {
      background:var(--bg-surface); border:1px solid var(--border-soft);
      border-radius:14px; padding:20px; width:100%; max-width:380px; display:flex; flex-direction:column; gap:14px;
    }
    .fiscal-desc-box h3 { font-size:.95rem; font-weight:700; margin:0; }
    .fiscal-desc-box img { width:100%; border-radius:8px; max-height:160px; object-fit:cover; }
    .fiscal-desc-box textarea {
      width:100%; min-height:80px; background:var(--bg-elevated);
      border:1px solid var(--border-soft); border-radius:8px;
      color:var(--text); font-size:.85rem; padding:10px; resize:vertical;
      font-family:inherit;
    }
    .fiscal-desc-box textarea:focus { outline:none; border-color:var(--fiscal-accent,#f59e0b); }
    .fiscal-desc-actions { display:flex; gap:8px; justify-content:flex-end; }
    .fiscal-desc-cancel {
      background:var(--bg-elevated); border:1px solid var(--border-soft);
      border-radius:8px; color:var(--text-muted); padding:8px 16px;
      font-size:.82rem; cursor:pointer;
    }
    .fiscal-desc-save {
      background:var(--fiscal-accent,#f59e0b); border:none;
      border-radius:8px; color:#000; padding:8px 16px;
      font-size:.82rem; font-weight:700; cursor:pointer;
    }

    /* Report area */
    .fiscal-report-section {
      padding:14px 16px; flex-shrink:0;
    }
    .fiscal-report-box {
      background:var(--bg-elevated); border:1px solid var(--border-soft);
      border-radius:10px; padding:14px; min-height:100px;
      font-size:.83rem; line-height:1.7; color:var(--text);
      white-space:pre-wrap; max-height:260px; overflow-y:auto;
    }
    .fiscal-report-placeholder { color:var(--text-muted); font-style:italic; }

    /* Action bar */
    .fiscal-actions {
      padding:14px 16px; display:flex; gap:10px; flex-wrap:wrap;
      border-top:1px solid rgba(255,255,255,.08); flex-shrink:0;
    }
    .fiscal-btn-gen {
      flex:1; min-width:140px; background:var(--fiscal-accent,#f59e0b);
      border:none; border-radius:10px; color:#000; font-weight:700;
      font-size:.88rem; padding:12px; cursor:pointer;
      display:flex; align-items:center; justify-content:center; gap:8px;
      transition:opacity .15s;
    }
    .fiscal-btn-gen:hover:not(:disabled) { opacity:.85; }
    .fiscal-btn-gen:disabled { opacity:.4; cursor:not-allowed; }
    .fiscal-btn-save {
      flex:1; min-width:140px; background:#16a34a;
      border:none; border-radius:10px; color:#fff; font-weight:700;
      font-size:.88rem; padding:12px; cursor:pointer;
      display:flex; align-items:center; justify-content:center; gap:8px;
      transition:opacity .15s;
    }
    .fiscal-btn-save:hover:not(:disabled) { opacity:.85; }
    .fiscal-btn-save:disabled { opacity:.4; cursor:not-allowed; }
    /* Observações adicionais do fiscal */
    .fiscal-notes-section { margin:0 0 6px; }
    #fiscal-notes-input {
      width:100%; min-height:72px; resize:vertical;
      background:var(--bg-elevated); border:1px solid var(--border);
      border-radius:8px; color:var(--text); font-size:.8rem;
      padding:8px 10px; line-height:1.5; box-sizing:border-box;
      font-family:inherit;
    }
    #fiscal-notes-input::placeholder { color:var(--text-muted); }
    /* Botão exportar PDF */
    .fiscal-btn-export {
      flex:1; display:flex; align-items:center; justify-content:center; gap:6px;
      background:rgba(14,165,233,.15); border:1px solid rgba(14,165,233,.4);
      border-radius:10px; color:#38bdf8; font-size:.8rem; font-weight:700;
      padding:10px 6px; cursor:pointer; transition:opacity .15s;
    }
    .fiscal-btn-export:hover:not(:disabled) { opacity:.8; }
    .fiscal-btn-export:disabled { opacity:.35; cursor:not-allowed; }

    /* ══ ACOMPANHAMENTO MODAL ══ */
    #acompanhamento-modal {
      display:none; position:fixed; inset:0; z-index:9500;
      background:rgba(0,0,0,.6); backdrop-filter:blur(4px);
      align-items:flex-end; justify-content:center;
    }
    #acompanhamento-modal.open { display:flex; }
    #acompanhamento-box {
      background:var(--bg-surface); width:100%; max-width:560px;
      max-height:90vh; border-radius:20px 20px 0 0;
      display:flex; flex-direction:column; overflow:hidden;
      box-shadow:0 -8px 40px var(--shadow);
      animation:slideUp .25s ease;
    }
    @media (min-width:769px) {
      #acompanhamento-modal { align-items:center; }
      #acompanhamento-box { max-height:82vh; border-radius:16px; margin:16px; }
    }
    #acompanhamento-header {
      display:flex; align-items:flex-start; justify-content:space-between;
      padding:16px 16px 12px; border-bottom:1px solid var(--border); flex-shrink:0;
    }
    #acompanhamento-title { font-size:.95rem; font-weight:700; color:var(--text); }
    #acompanhamento-subtitle { font-size:.75rem; color:var(--text-muted); margin-top:2px; }
    #acompanhamento-close {
      background:none; border:none; color:var(--text-muted); cursor:pointer;
      font-size:1.2rem; padding:0 4px; border-radius:6px; line-height:1; flex-shrink:0;
    }
    #acompanhamento-close:hover { background:var(--bg-elevated); }
    #acompanhamento-body {
      flex:1; overflow-y:auto; padding:12px 14px; display:flex;
      flex-direction:column; gap:14px;
    }
    .acomp-card {
      border:1px solid var(--border); border-radius:12px; overflow:hidden;
      background:var(--bg-elevated);
    }
    .acomp-card-header {
      display:flex; align-items:center; gap:10px;
      padding:10px 12px; border-bottom:1px solid var(--border);
      background:var(--bg-surface);
    }
    .acomp-avatar {
      width:32px; height:32px; border-radius:50%; object-fit:cover; flex-shrink:0;
    }
    .acomp-avatar-init {
      width:32px; height:32px; border-radius:50%; display:flex;
      align-items:center; justify-content:center; font-size:.75rem;
      font-weight:800; color:#fff; flex-shrink:0;
    }
    .acomp-meta { flex:1; min-width:0; }
    .acomp-name { font-size:.82rem; font-weight:700; color:var(--text); }
    .acomp-date { font-size:.72rem; color:var(--text-muted); }
    .acomp-photos-strip {
      display:flex; gap:6px; overflow-x:auto; padding:10px 12px 6px;
      scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;
    }
    .acomp-photos-strip::-webkit-scrollbar { height:3px; }
    .acomp-photos-strip::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }
    .acomp-photo-thumb {
      width:90px; height:68px; object-fit:cover; border-radius:8px;
      flex-shrink:0; scroll-snap-align:start; cursor:pointer;
      border:1px solid var(--border); transition:opacity .15s;
    }
    .acomp-photo-thumb:hover { opacity:.85; }
    .acomp-photo-desc {
      font-size:.67rem; color:var(--text-muted); padding:2px 12px 6px;
      white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    }
    .acomp-report {
      padding:10px 12px; font-size:.78rem; color:var(--text);
      line-height:1.6; white-space:pre-wrap; border-top:1px solid var(--border);
      max-height:200px; overflow-y:auto;
    }
    .acomp-empty {
      text-align:center; padding:32px 16px; color:var(--text-muted); font-size:.85rem;
    }
    .acomp-empty svg { opacity:.3; margin-bottom:8px; }
    /* Popup: botão Acompanhamento */
    .popup-acomp-btn {
      display:flex; align-items:center; gap:5px; width:100%;
      background:rgba(14,165,233,.1); border:1px solid rgba(14,165,233,.35);
      border-radius:7px; color:#38bdf8; font-size:.75rem; font-weight:700;
      padding:5px 10px; cursor:pointer; margin-top:4px; transition:background .15s;
    }
    .popup-acomp-btn:hover { background:rgba(14,165,233,.2); }
    .popup-acomp-badge {
      background:#38bdf8; color:#0c1a2e; border-radius:999px;
      font-size:.62rem; font-weight:800; padding:1px 5px; margin-left:auto;
    }
    /* Inspection log list in event popup */
    .insp-log-list { margin-top:10px; display:flex; flex-direction:column; gap:8px; }
    .insp-log-item {
      background:var(--bg-elevated); border:1px solid var(--border-soft);
      border-radius:8px; padding:8px 10px; cursor:pointer;
      transition:border-color .15s;
    }
    .insp-log-item:hover { border-color:var(--verde); }
    .insp-log-date { font-size:.72rem; color:var(--verde); font-weight:600; }
    .insp-log-author { font-size:.72rem; color:var(--text-muted); }
    .insp-log-summary { font-size:.78rem; color:var(--text); margin-top:3px; line-height:1.4; }
    .insp-log-photos { display:flex; gap:4px; margin-top:6px; flex-wrap:wrap; }
    .insp-log-photo { width:40px; height:40px; border-radius:5px; object-fit:cover; }

    /* IA Fiscal button in float chat */
    .fiscal-trigger-btn {
      display:flex; align-items:center; gap:6px;
      background:rgba(245,158,11,.15); border:1px solid rgba(245,158,11,.4);
      border-radius:8px; color:#f59e0b; font-size:.78rem; font-weight:700;
      padding:6px 12px; cursor:pointer; transition:background .15s;
      margin:8px 14px 4px; flex-shrink:0;
    }
    .fiscal-trigger-btn:hover { background:rgba(245,158,11,.25); }
    @keyframes spin { to { transform:rotate(360deg); } }

  
    /* ══════════════════════════════════
       FISCAL PRESENCE — Map pins + chat
    ══════════════════════════════════ */
    .fiscal-presence-marker {
      position:relative; cursor:pointer;
    }
    .fiscal-presence-avatar {
      width:40px; height:40px; border-radius:50%;
      border:3px solid #f59e0b;
      box-shadow:0 0 0 4px rgba(245,158,11,.3), 0 3px 10px rgba(0,0,0,.5);
      object-fit:cover; display:block;
      animation:fiscal-pulse 2s ease-in-out infinite;
    }
    .fiscal-presence-initials {
      width:40px; height:40px; border-radius:50%;
      border:3px solid #f59e0b;
      box-shadow:0 0 0 4px rgba(245,158,11,.3), 0 3px 10px rgba(0,0,0,.5);
      display:flex; align-items:center; justify-content:center;
      font-weight:800; font-size:14px; color:#fff;
      animation:fiscal-pulse 2s ease-in-out infinite;
    }
    .fiscal-presence-badge {
      position:absolute; bottom:-8px; left:50%;
      transform:translateX(-50%);
      background:#f59e0b; color:#000;
      font-size:9px; font-weight:800;
      padding:2px 6px; border-radius:8px;
      white-space:nowrap; box-shadow:0 1px 4px rgba(0,0,0,.4);
    }
    @keyframes fiscal-pulse {
      0%,100% { box-shadow:0 0 0 4px rgba(245,158,11,.3), 0 3px 10px rgba(0,0,0,.5); }
      50%      { box-shadow:0 0 0 8px rgba(245,158,11,.15), 0 3px 10px rgba(0,0,0,.5); }
    }

    /* ── Toast notification ── */
    #fiscal-toast {
      position:fixed; bottom:90px; left:50%; transform:translateX(-50%) translateY(20px);
      background:rgba(15,23,42,.95); border:1px solid rgba(245,158,11,.5);
      border-radius:12px; padding:10px 16px;
      color:#fff; font-size:.82rem; font-weight:600;
      display:flex; align-items:center; gap:10px;
      z-index:9800; opacity:0; transition:opacity .3s,transform .3s;
      pointer-events:none; white-space:nowrap; box-shadow:0 4px 20px rgba(0,0,0,.6);
    }
    #fiscal-toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
    #fiscal-toast img { width:28px; height:28px; border-radius:50%; object-fit:cover; flex-shrink:0; }
    #fiscal-toast .ft-init { width:28px; height:28px; border-radius:50%; flex-shrink:0;
      display:flex; align-items:center; justify-content:center; font-weight:800; font-size:12px; color:#fff; }

    /* ── Fiscal field floating button (capacete) ── */
    #fiscal-field-btn {
      position:fixed; bottom:80px; right:16px; z-index:9800;
      width:52px; height:52px; border-radius:50%;
      background:#f59e0b; border:none; cursor:pointer;
      display:none; align-items:center; justify-content:center;
      box-shadow:0 4px 18px rgba(245,158,11,.55);
      animation:fiscal-fab-pulse 2.2s ease-in-out infinite;
      transition:transform .15s,background .15s;
    }
    #fiscal-field-btn:hover { background:#e08e0b; transform:scale(1.07); }
    @keyframes fiscal-fab-pulse {
      0%,100%{ box-shadow:0 4px 18px rgba(245,158,11,.55); }
      50%{ box-shadow:0 4px 28px rgba(245,158,11,.85),0 0 0 8px rgba(245,158,11,.15); }
    }
    .fiscal-fab-badge {
      position:absolute; top:-3px; right:-3px;
      width:18px; height:18px; border-radius:50%;
      background:#ef4444; color:#fff; font-size:10px; font-weight:800;
      display:none; align-items:center; justify-content:center;
      border:2px solid var(--bg-surface); line-height:1;
    }
    .fiscal-fab-badge.visible { display:flex; }
    /* ── Fiscal field chat window ── */
    #fiscal-field-chat {
      display:none; position:fixed; bottom:142px; right:16px; z-index:9800;
      width:300px; max-height:420px;
      background:var(--bg-surface); border:1px solid rgba(245,158,11,.4);
      border-radius:14px; box-shadow:0 8px 32px rgba(0,0,0,.55);
      flex-direction:column; overflow:hidden;
    }
    #fiscal-field-chat.open { display:flex; }
    .ffc-header {
      display:flex; align-items:center; gap:8px; padding:10px 14px;
      border-bottom:1px solid rgba(255,255,255,.07); flex-shrink:0; min-height:44px;
    }
    .ffc-header-title {
      font-size:.82rem; font-weight:700; flex:1;
      display:flex; align-items:center; gap:6px; color:var(--text);
    }
    .collab-online-dot {
      width:7px; height:7px; border-radius:50%; background:#f59e0b;
      flex-shrink:0; animation:collab-blink 1.5s infinite;
    }
    @keyframes collab-blink { 0%,100%{opacity:1} 50%{opacity:.3} }
    .collab-online-count { font-size:.72rem; color:#f59e0b; font-weight:700; }
    .ffc-close {
      background:none; border:none; color:var(--text-muted);
      font-size:1rem; cursor:pointer; padding:2px 6px; border-radius:6px; line-height:1;
    }
    .ffc-close:hover { background:var(--bg-elevated); }
    /* Desktop: stack above AI chat button (which is at bottom:90px right:14px) */
    @media (min-width:769px) {
      #fiscal-field-btn { bottom:200px; right:16px; }
      #fiscal-field-chat { bottom:262px; right:16px; }
    }
    /* Mobile: AI chat is on left, fiscal btn stays right */
    @media (max-width:768px) {
      #fiscal-field-btn { bottom:80px; right:12px; }
      #fiscal-field-chat { right:8px; left:8px; width:auto; bottom:142px; border-radius:14px; }
    }
    .collab-online-count {
      font-size:.72rem; color:#f59e0b; font-weight:700;
    }
    .collab-msgs {
      flex:1; overflow-y:auto; padding:10px 12px;
      display:flex; flex-direction:column; gap:6px;
      min-height:0;
    }
    .collab-msg {
      display:flex; flex-direction:column; gap:2px;
    }
    .collab-msg-header {
      display:flex; align-items:center; gap:6px;
    }
    .collab-msg-avatar {
      width:20px; height:20px; border-radius:50%; object-fit:cover; flex-shrink:0;
    }
    .collab-msg-init {
      width:20px; height:20px; border-radius:50%; flex-shrink:0;
      display:flex; align-items:center; justify-content:center;
      font-size:9px; font-weight:800; color:#fff;
    }
    .collab-msg-name { font-size:.72rem; font-weight:700; color:var(--verde); }
    .collab-msg-time { font-size:.65rem; color:var(--text-muted); margin-left:auto; }
    .collab-msg-text {
      font-size:.79rem; color:var(--text); line-height:1.5;
      background:var(--bg-elevated); border-radius:0 8px 8px 8px;
      padding:5px 8px; margin-left:26px;
    }
    .collab-msg.own .collab-msg-text {
      background:rgba(22,163,74,.2); border-radius:8px 0 8px 8px;
      margin-left:0; align-self:flex-end;
    }
    .collab-msg.system .collab-msg-text {
      background:rgba(245,158,11,.1); color:#f59e0b;
      border-radius:8px; font-style:italic;
      text-align:center; margin-left:0; font-size:.72rem;
    }
    .collab-input-row {
      display:flex; gap:6px; padding:8px 10px;
      border-top:1px solid rgba(255,255,255,.06); flex-shrink:0;
    }
    #collab-chat-input {
      flex:1; background:var(--bg-elevated);
      border:1px solid var(--border-soft); border-radius:8px;
      color:var(--text); font-size:.82rem; padding:6px 10px;
      font-family:inherit;
    }
    #collab-chat-input:focus { outline:none; border-color:#f59e0b; }
    #collab-chat-send {
      background:#f59e0b; border:none; border-radius:8px;
      color:#000; width:32px; height:32px; cursor:pointer;
      display:flex; align-items:center; justify-content:center;
      flex-shrink:0;
    }
    #collab-chat-send:hover { opacity:.85; }
    .collab-participants-bar {
      padding:4px 12px 6px; display:flex; gap:4px; flex-wrap:wrap; flex-shrink:0;
    }
    .collab-participant-chip {
      display:flex; align-items:center; gap:4px;
      background:rgba(245,158,11,.1); border:1px solid rgba(245,158,11,.25);
      border-radius:20px; padding:2px 8px 2px 4px; font-size:.68rem; color:#f59e0b;
    }
    .collab-participant-chip img { width:16px; height:16px; border-radius:50%; object-fit:cover; }
    .collab-participant-init { width:16px; height:16px; border-radius:50%;
      display:flex; align-items:center; justify-content:center; font-size:8px; font-weight:800; color:#fff; }

  
    /* ── Fiscal exit confirmation modal ── */
    /* ── Inline collab chat inside IA Fiscal modal ── */
    .fiscal-collab-inline {
      margin: 4px 0 6px;
      border: 1px solid var(--border);
      border-radius: 10px;
      overflow: hidden;
      background: var(--surface);
      flex-shrink: 0;
    }
    .fiscal-collab-inline .fiscal-section-title {
      display:flex; align-items:center; gap:6px;
      padding: 8px 12px 6px;
      background: var(--surface2);
      border-bottom: 1px solid var(--border);
      font-size:.8rem; font-weight:700; color:var(--text);
    }
    .fiscal-collab-inline .collab-msgs {
      max-height: 130px;
      min-height: 40px;
      overflow-y: auto;
      padding: 6px 8px;
    }
    .fiscal-collab-inline .collab-input-row {
      border-top: 1px solid var(--border);
      padding: 5px 8px;
      display: flex;
      gap: 6px;
      align-items: center;
    }
    .fiscal-collab-inline .collab-input-row input {
      flex: 1;
      background: transparent;
      border: 1px solid var(--border);
      border-radius: 6px;
      outline: none;
      color: var(--text);
      font-size: .82rem;
      padding: 5px 8px;
    }
    .fiscal-collab-inline .collab-input-row input::placeholder { color:var(--text-muted); }
    .fiscal-collab-inline .fci-send-btn {
      background: #f59e0b; border: none; border-radius: 6px;
      width: 30px; height: 30px; cursor: pointer;
      display: flex; align-items: center; justify-content: center;
      flex-shrink: 0;
    }
    .fiscal-collab-inline .fci-send-btn:hover { background: #e08e0b; }
    #fiscal-exit-confirm {
      display:none; position:fixed; inset:0; z-index:10100;
      background:rgba(0,0,0,.65); backdrop-filter:blur(4px);
      align-items:center; justify-content:center; padding:20px;
    }
    #fiscal-exit-confirm.open { display:flex; }
    #fiscal-exit-box {
      background:var(--bg-surface); border:1px solid rgba(239,68,68,.35);
      border-radius:16px; padding:24px 22px; max-width:320px; width:100%;
      box-shadow:0 12px 40px rgba(0,0,0,.6); display:flex; flex-direction:column;
      gap:14px; text-align:center;
    }
    #fiscal-exit-icon { font-size:2rem; line-height:1; }
    #fiscal-exit-title { font-size:.95rem; font-weight:700; color:var(--text); }
    #fiscal-exit-sub { font-size:.8rem; color:var(--text-muted); line-height:1.5; }
    .fiscal-exit-btns { display:flex; flex-direction:column; gap:8px; }
    .fiscal-exit-btn-confirm {
      background:#ef4444; border:none; border-radius:10px; color:#fff;
      font-size:.85rem; font-weight:700; padding:10px 0; cursor:pointer;
      transition:background .15s;
    }
    .fiscal-exit-btn-confirm:hover { background:#dc2626; }
    .fiscal-exit-btn-cancel {
      background:var(--bg-elevated); border:1px solid var(--border);
      border-radius:10px; color:var(--text); font-size:.85rem; font-weight:600;
      padding:10px 0; cursor:pointer; transition:background .15s;
    }
    .fiscal-exit-btn-cancel:hover { background:var(--border); }

    /* ── Fiscal event search autocomplete ── */
    .fiscal-search-wrap {
      flex:1; min-width:180px; position:relative;
    }
    .fiscal-search-input {
      width:100%; background:var(--bg-elevated);
      border:1px solid var(--border-soft); border-radius:8px;
      color:var(--text); font-size:.82rem; padding:7px 32px 7px 10px;
      font-family:inherit; box-sizing:border-box; outline:none;
      transition:border-color .15s;
    }
    .fiscal-search-input:focus { border-color:var(--fiscal-accent,#f59e0b); }
    .fiscal-search-clear {
      position:absolute; right:8px; top:50%; transform:translateY(-50%);
      background:none; border:none; color:var(--text-muted); cursor:pointer;
      font-size:.85rem; padding:0; line-height:1; display:none;
    }
    .fiscal-search-clear.visible { display:block; }
    .fiscal-search-dropdown {
      position:absolute; top:calc(100% + 4px); left:0; right:0;
      background:var(--bg-surface); border:1px solid var(--border-soft);
      border-radius:10px; z-index:10100; max-height:240px; overflow-y:auto;
      box-shadow:0 8px 24px rgba(0,0,0,.5); display:none;
    }
    .fiscal-search-dropdown.open { display:block; }
    .fiscal-search-item {
      padding:9px 12px; cursor:pointer; display:flex;
      flex-direction:column; gap:2px; border-bottom:1px solid rgba(255,255,255,.04);
      transition:background .1s;
    }
    .fiscal-search-item:last-child { border-bottom:none; }
    .fiscal-search-item:hover, .fiscal-search-item.focused { background:var(--bg-elevated); }
    .fiscal-search-item-title {
      font-size:.82rem; color:var(--text); font-weight:600; line-height:1.3;
    }
    .fiscal-search-item-meta {
      font-size:.72rem; color:var(--text-muted); display:flex; gap:6px;
    }
    .fiscal-search-item-tipo {
      font-size:.7rem; font-weight:700; padding:1px 6px; border-radius:4px;
      color:#fff; flex-shrink:0;
    }
    .fiscal-search-item em { color:var(--fiscal-accent,#f59e0b); font-style:normal; font-weight:700; }
    .fiscal-search-empty {
      padding:12px; font-size:.8rem; color:var(--text-muted); text-align:center;
    }
    .fiscal-selected-chip {
      display:flex; align-items:center; gap:6px;
      background:rgba(245,158,11,.12); border:1px solid rgba(245,158,11,.35);
      border-radius:8px; padding:5px 10px 5px 8px; font-size:.78rem;
      color:var(--text); font-weight:600; cursor:pointer;
      transition:background .15s;
    }
    .fiscal-selected-chip:hover { background:rgba(245,158,11,.2); }
    .fiscal-selected-chip .fsc-icon { font-size:.75rem; flex-shrink:0; }
    .fiscal-selected-chip .fsc-name { flex:1; }
    .fiscal-selected-chip .fsc-clear {
      color:var(--text-muted); font-size:.75rem; flex-shrink:0; font-weight:400;
    }

