  /* ── Design tokens ── */
  :root {
    --bs-blue:   #0d6efd;
    --bs-green:  #198754;
    --bs-red:    #dc3545;
    --bs-amber:  #ffc107;
    --navy:      #0a1628;
    --navy-mid:  #0f2040;
    --blue:      #1a3a6b;
    --accent:    #0d6efd;
    --accent-dk: #0b5ed7;
    --green:     #198754;
    --green-dk:  #146c43;
    --amber:     #fd7e14;
    --red:       #dc3545;
    --text:      #212529;
    --muted:     #6c757d;
    --border:    #dee2e6;
    --bg:        #f8f9fa;
    --surface:   #ffffff;
    --r-sm:      .5rem;
    --r-md:      .75rem;
    --r-lg:      1rem;
    --sh-sm:     0 1px 4px rgba(0,0,0,.07);
    --sh-md:     0 4px 20px rgba(0,0,0,.10);
    --sh-card:   0 8px 24px rgba(16,24,40,.08);
    --t:         all .2s ease;
  }
  *, *::before, *::after { box-sizing: border-box; }
  body {
    background: var(--bg);
    color: var(--text);
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    -webkit-font-smoothing: antialiased;
  }

  /* ── Top bar ── */
  .vd-topbar {
    background: linear-gradient(135deg, var(--navy) 0%, var(--blue) 100%);
    color: #fff; padding: 1.1rem 0 1rem;
    margin-bottom: 1.5rem; box-shadow: var(--sh-md);
  }
  .vd-topbar h1 { font-size: clamp(1rem,3vw,1.4rem); font-weight:700; margin:0; }
  .vd-topbar .sub { font-size:.78rem; color:rgba(255,255,255,.65); margin:.18rem 0 0; }
  .vd-pill {
    display:inline-flex; align-items:center; gap:.3rem;
    border-radius:50px; font-size:.7rem; font-weight:700;
    padding:.22rem .65rem; white-space:nowrap;
  }
  .vd-pill.sinan { background:rgba(13,110,253,.2); border:1px solid rgba(13,110,253,.4); color:#90c4ff; }
  .vd-pill.local { background:rgba(25,135,84,.15); border:1px solid rgba(25,135,84,.35); color:#75c99a; }
  .vd-pill.gift  { background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.2); color:rgba(255,255,255,.85); }

  /* ── Disclaimer (gift) card ── */
  .disclaimer-card {
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: var(--r-md);
    padding: .85rem 1.1rem;
    margin-bottom: 1.1rem;
    display: flex;
    gap: .85rem;
    align-items: flex-start;
    box-shadow: var(--sh-sm);
  }
  .disclaimer-card .disc-icon {
    flex-shrink: 0;
    width: 2rem; height: 2rem;
    border-radius: 50%;
    background: rgba(25,135,84,.1);
    border: 1.5px solid rgba(25,135,84,.2);
    display: flex; align-items: center; justify-content: center;
    color: var(--green); font-size: 1rem;
    margin-top:.05rem;
  }
  .disclaimer-card .disc-text {
    font-size: .8rem; color: #495057; line-height: 1.65; flex: 1;
  }
  .disclaimer-card .disc-text strong { color: #212529; }
  .disclaimer-card .disc-text .disc-privacy {
    display: inline-flex; align-items: center; gap: .3rem;
    margin-top: .45rem;
    font-size: .75rem; font-weight: 600;
    color: var(--green-dk);
    background: rgba(25,135,84,.07);
    border: 1px solid rgba(25,135,84,.18);
    border-radius: 50px;
    padding: .18rem .65rem;
  }

  /* ── Info toggle ── */
  .vd-info-toggle {
    background:none; border:1.5px solid var(--border); color:var(--muted);
    border-radius:var(--r-sm); font-size:.81rem; font-weight:600;
    padding:.32rem .85rem; cursor:pointer; transition:var(--t);
    display:inline-flex; align-items:center; gap:.4rem;
  }
  .vd-info-toggle:hover { border-color:var(--accent); color:var(--accent-dk); background:rgba(13,110,253,.05); }
  .vd-info-panel {
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--r-md); padding:1rem 1.2rem;
    box-shadow:var(--sh-sm); margin-top:.5rem;
  }
  .vd-info-panel h6 { font-size:.72rem; color:var(--muted); font-weight:700; text-transform:uppercase; letter-spacing:.06em; margin-bottom:.65rem; }
  .dbf-item { display:flex; gap:.7rem; align-items:flex-start; padding:.55rem .7rem; border-radius:var(--r-sm); border:1px solid var(--border); background:var(--bg); margin-bottom:.4rem; }
  .dbf-item:last-child { margin-bottom:0; }
  .dbf-badge { flex-shrink:0; font-size:.67rem; font-weight:700; padding:.22rem .65rem; border-radius:4px; text-transform:uppercase; }
  .dbf-badge.v { background:#cfe2ff; color:#084298; }
  .dbf-badge.a { background:#d1e7dd; color:#0a3622; }
  .dbf-badge.t { background:#cff4fc; color:#055160; }
  .dbf-item p { font-size:.78rem; color:var(--muted); margin:0; line-height:1.4; }
  .dbf-item p strong { color:var(--text); }

  /* ── Drop zone ── */
  .drop-zone {
    border:2px dashed var(--border); border-radius:var(--r-lg);
    padding:2.5rem 1.5rem 2rem; text-align:center; cursor:pointer;
    transition:var(--t); background:var(--surface); position:relative; overflow:hidden;
    box-shadow:var(--sh-sm);
  }
  .drop-zone::before { content:''; position:absolute; inset:0; background:rgba(13,110,253,.03); opacity:0; transition:opacity .2s; }
  .drop-zone:hover::before, .drop-zone.dragover::before { opacity:1; }
  .drop-zone:hover { border-color:#0d6efd; border-style:solid; box-shadow:0 0 0 4px rgba(13,110,253,.1); }
  .drop-zone.dragover { border-color:#198754; border-style:solid; box-shadow:0 0 0 5px rgba(25,135,84,.15); transform:scale(1.01); }
  .drop-icon-wrap { width:64px; height:64px; margin:0 auto .85rem; display:flex; align-items:center; justify-content:center; border-radius:50%; background:linear-gradient(135deg,#e7f1ff,#d1e7dd); transition:var(--t); }
  .drop-zone:hover .drop-icon-wrap { transform:translateY(-3px); background:linear-gradient(135deg,#cfe2ff,#d1e7dd); }
  .drop-zone.dragover .drop-icon-wrap { transform:translateY(-6px) scale(1.1); background:linear-gradient(135deg,#d1e7dd,#cff4fc); }
  .drop-icon { font-size:1.9rem; color:#0d6efd; transition:var(--t); }
  .drop-zone.dragover .drop-icon { color:#198754; }
  .drop-title { font-size:1rem; font-weight:700; color:var(--text); margin-bottom:.25rem; }
  .drop-hint { font-size:.78rem; color:var(--muted); margin:0; }
  .btn-browse { display:inline-flex; align-items:center; gap:.4rem; background:#0d6efd; color:#fff; border:none; border-radius:50px; font-size:.8rem; font-weight:600; padding:.38rem 1.1rem; cursor:pointer; transition:var(--t); box-shadow:0 2px 8px rgba(13,110,253,.3); }
  .btn-browse:hover { background:#0b5ed7; transform:translateY(-1px); box-shadow:0 4px 14px rgba(13,110,253,.4); }

  /* ── File list ── */
  .file-list { display:flex; flex-wrap:wrap; gap:.4rem; justify-content:center; margin-top:.85rem; }
  .file-list span { display:inline-flex; align-items:center; gap:.35rem; background:#0a3622; color:#75b798; border:1px solid rgba(25,135,84,.3); padding:.25rem .75rem; border-radius:50px; font-size:.73rem; font-weight:600; box-shadow:var(--sh-sm); }
  .file-list span::before { content:''; display:inline-block; width:6px; height:6px; background:#20c997; border-radius:50%; }

  /* ── Filters ── */
  .vd-filters { background:var(--surface); border:1px solid var(--border); border-radius:var(--r-md); padding:1rem 1.2rem; box-shadow:var(--sh-sm); margin-bottom:1.1rem; }
  .vd-filters .section-label { font-size:.69rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); margin-bottom:.6rem; display:flex; align-items:center; gap:.4rem; }
  .vd-filters .form-label { font-size:.74rem; font-weight:600; color:var(--muted); margin-bottom:.28rem; display:block; }
  .vd-filters .form-control { font-size:.84rem; border-color:var(--border); border-radius:var(--r-sm); transition:var(--t); background:var(--bg); }
  .vd-filters .form-control:focus { border-color:#0d6efd; box-shadow:0 0 0 .2rem rgba(13,110,253,.15); background:var(--surface); outline:0; }
  .btn-analisar { background:linear-gradient(135deg,#1a3a6b,#0d6efd); color:#fff; border:none; border-radius:var(--r-sm); font-weight:700; font-size:.85rem; padding:.48rem 1.2rem; display:inline-flex; align-items:center; gap:.45rem; transition:var(--t); box-shadow:0 3px 12px rgba(13,110,253,.25); width:100%; justify-content:center; }
  .btn-analisar:disabled { opacity:.5; cursor:not-allowed; transform:none!important; box-shadow:none; }
  .btn-analisar:not(:disabled):hover { transform:translateY(-1px); box-shadow:0 5px 18px rgba(13,110,253,.4); }

  /* ── Status bar ── */
  .status-bar { display:none; padding:.75rem 1rem; border-radius:var(--r-sm); margin-bottom:1rem; font-size:.84rem; font-weight:500; }
  .status-bar.info { display:flex; align-items:center; gap:.6rem; background:#cfe2ff; color:#084298; border:1px solid #9ec5fe; }
  .status-bar.info::before { content:''; flex:0 0 auto; width:1rem; height:1rem; border:2.5px solid #084298; border-top-color:transparent; border-radius:50%; animation:spin .8s linear infinite; }
  .status-bar.success { display:flex; align-items:center; gap:.6rem; background:#d1e7dd; color:#0a3622; border:1px solid #a3cfbb; }
  .status-bar.success::before { content:'\2713'; font-weight:700; }
  .status-bar.error { display:flex; align-items:center; gap:.6rem; background:#f8d7da; color:#58151c; border:1px solid #f1aeb5; }
  .status-bar.error::before { content:'\2715'; font-weight:700; }
  @keyframes spin { to { transform:rotate(360deg); } }

  /* ── Results ── */
  #results .section-title {
    font-size:.95rem; font-weight:700; margin:1.75rem 0 0;
    padding:.6rem 1rem; border-left:4px solid #0d6efd;
    background:linear-gradient(90deg,rgba(13,110,253,.06),transparent);
    border-radius:0 var(--r-sm) var(--r-sm) 0; color:var(--navy);
    display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.5rem;
  }
  #results .cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:.85rem; margin:.9rem 0 1rem; }
  #results .card {
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--r-md); padding:1rem 1.1rem;
    box-shadow:var(--sh-card); transition:var(--t);
    position:relative; overflow:hidden;
  }
  #results .card::after { content:''; position:absolute; top:0; left:0; right:0; height:4px; background:#0d6efd; opacity:.25; border-radius:var(--r-md) var(--r-md) 0 0; }
  #results .card:hover { box-shadow:var(--sh-md); transform:translateY(-2px); }
  #results .card .label { font-size:.69rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin-bottom:.3rem; display:flex; align-items:center; gap:.35rem; }
  #results .card .big { font-size:2.4rem; font-weight:800; line-height:1; color:#0d6efd; }
  #results .card .pct { font-size:2.2rem; font-weight:800; line-height:1; }
  #results .pct.ok   { color:#198754; }
  #results .pct.warn { color:#fd7e14; }
  #results .pct.bad  { color:#dc3545; }
  #results .card .card-sub { font-size:.72rem; color:var(--muted); margin-top:.3rem; }
  #results .card:has(.big)  { border-top:4px solid #0d6efd; }
  #results .card:has(.big)::after { display:none; }
  #results .card:has(.pct.ok)   { border-top:4px solid #198754; }
  #results .card:has(.pct.ok)::after  { display:none; }
  #results .card:has(.pct.warn) { border-top:4px solid #fd7e14; }
  #results .card:has(.pct.warn)::after { display:none; }
  #results .card:has(.pct.bad)  { border-top:4px solid #dc3545; }
  #results .card:has(.pct.bad)::after  { display:none; }

  /* progress bar */
  .vd-prog { margin-top:.5rem; }
  .vd-prog-track { height:6px; border-radius:50px; background:#e9ecef; overflow:hidden; }
  .vd-prog-bar { height:100%; border-radius:50px; transition:width .6s ease; }
  .vd-prog-bar.ok   { background:#198754; }
  .vd-prog-bar.warn { background:#fd7e14; }
  .vd-prog-bar.bad  { background:#dc3545; }

  /* meta alert */
  .meta-alert { font-size:.79rem; padding:.7rem .9rem; border-radius:var(--r-sm); border:1px solid; margin:.6rem 0 1rem; line-height:1.55; }
  .meta-alert.info { background:#cff4fc; border-color:#9eeaf9; color:#055160; }

  /* municipality card */
  .mun-card { display:inline-flex; align-items:center; gap:.5rem; background:var(--bg); border:1px solid var(--border); border-radius:var(--r-sm); padding:.32rem .75rem; font-size:.78rem; margin-bottom:.75rem; }
  .mun-card .mun-name { font-weight:700; color:var(--navy); }
  .mun-card .mun-code { color:var(--muted); font-size:.7rem; }

  /* table toolbar */
  .tbl-toolbar { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.5rem; margin:1.15rem 0 .4rem; }
  .tbl-toolbar h6 { font-size:.84rem; font-weight:700; color:var(--navy); margin:0; display:flex; align-items:center; gap:.4rem; }

  /* table */
  #results .table-wrap { overflow-x:auto; margin-bottom:1.25rem; border-radius:var(--r-md); border:1px solid var(--border); box-shadow:var(--sh-card); }
  #results table { width:100%; border-collapse:collapse; font-size:.8rem; margin-bottom:0; }
  #results th, #results td { padding:.48rem .68rem; border-bottom:1px solid var(--border); text-align:left; vertical-align:middle; white-space:normal; word-break:break-word; }
  #results table.table-nowrap th, #results table.table-nowrap td { white-space:nowrap !important; word-break:normal !important; }
  #results td code { white-space:nowrap; }
  #results td:last-child { white-space:normal; }
  #results thead th { background:#212529; color:rgba(255,255,255,.88); font-size:.69rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; position:sticky; top:0; z-index:1; border-bottom:none; cursor:pointer; user-select:none; }
  #results thead th:hover { background:#343a40; }
  #results thead th .sort-arrow { font-size:.65rem; margin-left:3px; opacity:.5; }
  #results tbody tr:last-child td { border-bottom:none; }
  #results tbody tr:nth-child(even) { background:#f8f9fa; }
  #results tbody tr:hover { background:#e7f1ff; }
  #results tbody tr.problem { background:#fff3cd!important; }
  #results tbody tr.problem:hover { background:#ffe69c!important; }
  #results tbody tr.problem td:first-child { border-left:3px solid #ffc107; }
  #results tbody tr.nao-atingiu { background:#f8d7da!important; }
  #results tbody tr.nao-atingiu:hover { background:#f1aeb5!important; }
  #results tbody tr.nao-atingiu td:first-child { border-left:3px solid #dc3545; }
  #results tbody tr td:first-child { border-left:3px solid transparent; }
  .ok-icon  { color:#198754; font-weight:700; }
  .bad-icon { color:#dc3545; font-weight:700; }

  /* badges */
  #results .badge { display:inline-flex; align-items:center; gap:.3rem; padding:.32em .75em; border-radius:.375rem; font-size:.72rem; font-weight:700; white-space:nowrap; }
  #results .badge-ok   { background:#d1e7dd; color:#0a3622; border:1px solid rgba(25,135,84,.25); }
  #results .badge-warn { background:#fff3cd; color:#664d03; border:1px solid rgba(255,193,7,.3); }
  #results .badge-bad  { background:#f8d7da; color:#58151c; border:1px solid rgba(220,53,69,.25); }

  /* empty success */
  #results .empty { display:flex; align-items:center; gap:.7rem; padding:1rem 1.2rem; border-radius:var(--r-md); background:#d1e7dd; border:1px solid #a3cfbb; color:#0a3622; font-weight:600; font-size:.88rem; margin-bottom:1.1rem; }

  /* tabs */
  .vd-tabs { display:flex; gap:.4rem; flex-wrap:wrap; margin:.9rem 0 .25rem; }
  .vd-tab { background:var(--bg); border:1.5px solid var(--border); border-radius:var(--r-sm); font-size:.82rem; font-weight:700; padding:.42rem 1.1rem; cursor:pointer; transition:var(--t); color:var(--muted); display:inline-flex; align-items:center; gap:.4rem; }
  .vd-tab:hover { border-color:#0d6efd; color:#0d6efd; }
  .vd-tab.active { background:#0d6efd; color:#fff; border-color:transparent; box-shadow:0 3px 10px rgba(13,110,253,.35); }
  .vd-tab-panel { display:none; }
  .vd-tab-panel.active { display:block; }

  /* footer */
  .vd-footer { text-align:center; font-size:.74rem; color:var(--muted); padding:1.25rem 0 1.5rem; margin-top:1.75rem; border-top:1px solid var(--border); display:flex; align-items:center; justify-content:center; gap:.5rem; flex-wrap:wrap; }
  .vd-footer .lock { display:inline-flex; align-items:center; gap:.3rem; background:#d1e7dd; border:1px solid #a3cfbb; color:#0a3622; border-radius:50px; font-size:.7rem; font-weight:600; padding:.2rem .65rem; }

  @media (max-width: 768px) {
    .notification-table th, .notification-table td {
      font-size: 0.75rem;
      padding: 0.25rem 0.4rem;
    }
    #results th, #results td {
      font-size: 0.75rem;
      padding: 0.25rem 0.4rem;
    }
    .vd-topbar h1 { font-size: 1.1rem; }
  }

  @media (max-width:576px) {
    .vd-topbar h1 { font-size:1rem; }
    .drop-zone { padding:1.75rem 1rem 1.5rem; }
    #results .card .big, #results .card .pct { font-size:1.75rem; }
    .disclaimer-card { flex-direction:column; gap:.5rem; }
  }
  @media print {
    .vd-topbar, .drop-zone, .vd-filters, .btn, .btn-browse, .copy-incomplete-btn,
    .copy-nu, .remove-file-btn, .footer, #statusBar, #barraResultadosControle, .vd-footer { display: none !important; }
    .card, .section-card { box-shadow: none !important; border: 1px solid #ccc !important; }
    .notification-table { font-size: 0.75rem; }
    #results th, #results td { font-size: 0.75rem; }
    body { background: #fff; }
  }
