/* Tokens de tema — identidade do Parque Municipal. */
:root[data-theme="light"] {
  --bg: #F1F6ED;
  --surface: #FFFFFF;
  --surface-2: #F4F8F1;
  --border: #DBE6D6;
  --text: #15241A;
  --text-2: #5E6F63;
  --primary: #288038;
  --primary-ink: #20692F;
  --info: #1C74C4;
  --reserved: #0E8F8F;
  --success: #288038;
  --warning: #E08600;
  --error: #C2413A;
  --shadow: 0 1px 2px rgba(21, 36, 26, 0.04), 0 10px 26px -20px rgba(21, 36, 26, 0.30);
}

:root[data-theme="dark"] {
  --bg: #0E1512;
  --surface: #16211B;
  --surface-2: #1E2C24;
  --border: #2C3A31;
  --text: #E6EDE8;
  --text-2: #93A69B;
  --primary: #3FB255;
  --primary-ink: #7FD98E;
  --info: #4AA3E0;
  --reserved: #2FB3B3;
  --success: #3FB255;
  --warning: #F59F00;
  --error: #E5645C;
  --shadow: 0 8px 24px -18px rgba(0, 0, 0, 0.6);

  /* Bootstrap 5 Native Variables for seamless Dark Mode */
  --bs-body-bg: var(--bg);
  --bs-body-color: var(--text);
  --bs-body-color-rgb: 230, 237, 232;
  --bs-body-bg-rgb: 14, 21, 18;
  --bs-secondary-color: var(--text-2);
  --bs-secondary-bg: var(--surface-2);
  --bs-tertiary-bg: var(--surface-2);
  --bs-tertiary-color: var(--text-2);
  --bs-border-color: var(--border);
  --bs-border-color-translucent: rgba(255, 255, 255, 0.12);
  --bs-card-bg: var(--surface);
  --bs-card-border-color: var(--border);
  --bs-card-color: var(--text);
  --bs-card-cap-bg: var(--surface-2);
  --bs-card-cap-color: var(--text);
  --bs-emphasis-color: var(--text);
  --bs-heading-color: var(--text);
  --bs-link-color: var(--primary);
  --bs-link-hover-color: var(--primary-ink);
}

:root {
  --radius: 12px;
  --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
}

* { box-sizing: border-box; }

body {
  background: var(--bg);
  color: var(--text);
  font-family: "Inter", system-ui, sans-serif;
  line-height: 1.6;
  margin: 0;
  -webkit-font-smoothing: antialiased;
}

code, .mono, .loan-code, .qr-payload, .metric-value {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-variant-numeric: tabular-nums;
}

/* Dashboard do Parque Municipal */
.dash-hero{align-items:center;background:linear-gradient(125deg,#173d25,#246b35);border-radius:20px;color:#fff;display:flex;gap:28px;justify-content:space-between;margin-bottom:28px;overflow:hidden;padding:28px 30px;position:relative}.dash-hero:after{border:50px solid rgba(255,255,255,.05);border-radius:50%;content:"";height:260px;position:absolute;right:-90px;top:-145px;width:260px}.dash-hero>div{position:relative;z-index:1}.dash-hero h1{font-size:clamp(1.8rem,3.6vw,2.7rem);letter-spacing:-.04em;margin:3px 0 6px}.dash-hero>div>p:last-child{color:rgba(255,255,255,.76);margin:0}.dash-eyebrow{color:var(--text-2);font-size:.68rem;font-weight:800;letter-spacing:.11em;margin:0 0 4px;text-transform:uppercase}.dash-hero .dash-eyebrow{align-items:center;color:#bde1c4;display:flex;gap:8px}.dash-hero .dash-eyebrow span{background:#65d37a;border-radius:50%;height:7px;width:7px}.dash-hero-status{align-items:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:13px;display:flex;flex:0 0 auto;gap:11px;padding:12px 15px}.dash-hero-status strong,.dash-hero-status small{display:block}.dash-hero-status small{color:rgba(255,255,255,.7);font-size:.72rem}.dash-status-dot{background:#65d37a;border-radius:50%;box-shadow:0 0 0 5px rgba(101,211,122,.14);height:8px;width:8px}.dash-section{margin-bottom:28px}.dash-section-header,.dash-card>header,.dash-alertas>header{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:15px}.dash-section-header h2,.dash-card>header h2,.dash-alertas h2{font-size:1.15rem;margin:0}.dash-kpis{display:grid;gap:14px;grid-template-columns:repeat(4,minmax(0,1fr))}.dash-kpi{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:15px;color:var(--text);display:flex;gap:14px;min-width:0;padding:18px;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s}.dash-kpi:hover{border-color:color-mix(in srgb,var(--primary) 30%,var(--border));box-shadow:0 14px 34px rgba(21,36,26,.08);color:var(--text);transform:translateY(-2px)}.dash-kpi-icon{align-items:center;background:var(--surface-2);border-radius:11px;color:var(--primary);display:flex;flex:0 0 auto;height:46px;justify-content:center;width:46px}.dash-kpi-icon svg{fill:none;height:24px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:24px}.dash-kpi>div{min-width:0}.dash-kpi small{color:var(--text-2);display:block;font-size:.7rem;font-weight:750;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.dash-kpi strong{display:block;font-family:"JetBrains Mono",monospace;font-size:1.8rem;line-height:1.1;margin-top:3px}.dash-kpi p{color:var(--text-2);font-size:.75rem;margin:2px 0 0}.dash-kpi-green .dash-kpi-icon{background:color-mix(in srgb,var(--success) 11%,var(--surface));color:var(--success)}.dash-kpi-amber .dash-kpi-icon{background:color-mix(in srgb,var(--warning) 11%,var(--surface));color:var(--warning)}.dash-kpi-blue .dash-kpi-icon{background:color-mix(in srgb,var(--info) 11%,var(--surface));color:var(--info)}.dash-kpi-red{border-color:color-mix(in srgb,var(--error) 35%,var(--border))}.dash-kpi-red .dash-kpi-icon{background:color-mix(in srgb,var(--error) 10%,var(--surface));color:var(--error)}.dash-alertas{background:color-mix(in srgb,var(--warning) 5%,var(--surface));border:1px solid color-mix(in srgb,var(--warning) 25%,var(--border));border-radius:15px;margin-bottom:24px;padding:18px}.dash-alertas>header>span{align-items:center;background:var(--warning);border-radius:50%;color:#fff;display:flex;font-size:.7rem;font-weight:800;height:25px;justify-content:center;width:25px}.dash-alertas>div{display:grid;gap:8px}.dash-alerta{align-items:flex-start;background:var(--surface);border-radius:10px;display:flex;gap:10px;padding:11px 13px}.dash-alerta>span{background:var(--warning);border-radius:50%;height:7px;margin-top:7px;width:7px}.dash-alerta strong{font-size:.78rem}.dash-alerta p{color:var(--text-2);font-size:.82rem;margin:1px 0 0}.dash-alerta-error>span{background:var(--error)}.dash-grid-principal{display:grid;gap:18px;grid-template-columns:minmax(0,1.65fr) minmax(300px,.7fr);margin-bottom:18px}.dash-grid-secundario{display:grid;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:18px}.dash-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);min-width:0;padding:20px}.dash-card>header>span{color:var(--text-2);font-size:.78rem}.dash-card>header>a{font-size:.78rem;font-weight:700}.dash-frota .fleet-bar{margin:26px 0 19px}.dash-acoes nav{display:grid;gap:8px}.dash-acoes nav>a{align-items:center;border:1px solid var(--border);border-radius:11px;color:var(--text);display:flex;gap:11px;padding:11px;text-decoration:none;transition:background .15s,border-color .15s}.dash-acoes nav>a:hover{background:var(--surface-2);border-color:var(--primary)}.dash-acoes nav>a>span{align-items:center;background:var(--surface-2);border-radius:8px;color:var(--primary);display:flex;flex:0 0 auto;font-size:1rem;height:34px;justify-content:center;width:34px}.dash-acoes nav>a>div{min-width:0}.dash-acoes nav strong,.dash-acoes nav small{display:block}.dash-acoes nav strong{font-size:.82rem}.dash-acoes nav small{color:var(--text-2);font-size:.68rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-acoes kbd{margin-left:auto}.dash-acoes .dash-acao-principal{background:var(--primary);border-color:var(--primary);color:#fff}.dash-acoes .dash-acao-principal:hover{background:var(--primary-ink);color:#fff}.dash-acoes .dash-acao-principal>span{background:rgba(255,255,255,.15);color:#fff}.dash-acoes .dash-acao-principal small{color:rgba(255,255,255,.72)}.dash-lista{display:grid}.dash-lista article{align-items:center;border-top:1px solid var(--border);display:grid;gap:11px;grid-template-columns:auto minmax(0,1fr) auto;padding:11px 0}.dash-lista article:first-child{border-top:0}.dash-lista time{align-items:center;background:var(--surface-2);border-radius:9px;display:flex;flex-direction:column;height:44px;justify-content:center;width:44px}.dash-lista time strong{font-family:"JetBrains Mono",monospace;line-height:1}.dash-lista time small{color:var(--text-2);font-size:.58rem;text-transform:uppercase}.dash-lista article>div{min-width:0}.dash-lista article>div>strong,.dash-lista article>div>small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-lista article>div>strong{font-size:.82rem}.dash-lista article>div>small{color:var(--text-2);font-size:.7rem}.dash-lista .status-badge{font-size:.64rem}.dash-codigo{background:var(--surface-2);border-radius:7px;font-size:.65rem;padding:7px}.dash-grafico{margin-bottom:10px}.dash-grafico .chart-box{height:260px}.dash-card .empty-state{padding:28px 16px}
@media(max-width:1100px){.dash-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-grid-principal{grid-template-columns:1fr}}
@media(max-width:760px){.dash-hero{align-items:flex-start;flex-direction:column;padding:22px}.dash-hero-status{width:100%}.dash-kpis,.dash-grid-secundario{grid-template-columns:1fr}.dash-section-header{align-items:flex-start}.dash-kpi{padding:15px}.dash-lista .status-badge{display:none}}

/* Rótulo de dado em estilo etiqueta (usar com parcimônia: dados, não títulos) */
.eyebrow {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-2);
}

h1, h2, h3, .h3, .h4 { letter-spacing: -0.015em; text-wrap: balance; }

a { color: var(--primary); }

.app-layout { display: flex; min-height: 100vh; }

/* ---------- Sidebar ---------- */
.sidebar {
  width: 236px;
  background: var(--surface);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  position: sticky;
  top: 0;
  height: 100vh;
}
.sidebar-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 18px 16px;
  font-weight: 700;
  font-size: 1.02rem;
  border-bottom: 1px solid var(--border);
}
.sidebar-brand .brand-icon {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 9px;
  background: linear-gradient(135deg, var(--primary), var(--info));
  color: #fff;
  font-weight: 800;
  box-shadow: 0 4px 10px -4px color-mix(in srgb, var(--primary) 55%, transparent);
}
.sidebar-nav { display: flex; flex-direction: column; padding: 12px 8px; gap: 2px; flex: 1; overflow-y: auto; }
.sidebar-nav a {
  position: relative;
  color: var(--text-2);
  text-decoration: none;
  padding: 8px 10px;
  border-radius: 8px;
  font-size: 0.92rem;
  display: flex;
  align-items: center;
  gap: 10px;
  transition: background 0.15s var(--ease), color 0.15s var(--ease);
}
.sidebar-nav a .nav-ico { flex-shrink: 0; opacity: 0.85; }
.sidebar-nav a .nav-label { flex: 1; }
.sidebar-nav a:hover { background: var(--surface-2); color: var(--text); }
.sidebar-nav a.active {
  background: color-mix(in srgb, var(--primary) 13%, transparent);
  color: var(--text);
}
.sidebar-nav a.active .nav-ico { color: var(--primary); opacity: 1; }
.sidebar-footer { padding: 16px; border-top: 1px solid var(--border); }

.badge-role, .badge-branch {
  display: inline-block;
  font-size: 0.7rem;
  padding: 1px 8px;
  border-radius: 10px;
  background: var(--surface-2);
  color: var(--text-2);
  margin-top: 4px;
  margin-right: 4px;
}
.badge-count {
  background: var(--surface-2);
  color: var(--text-2);
  font-size: 0.68rem;
  font-weight: 600;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  padding: 1px 7px;
  border-radius: 10px;
  line-height: 1.5;
}
.sidebar-nav a.active .badge-count { background: var(--primary); color: #fff; }

/* ---------- Área principal ---------- */
.main-area { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.topbar {
  display: flex;
  align-items: center;
  padding: 12px 24px;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  gap: 8px;
  position: sticky;
  top: 0;
  z-index: 20;
}
.topbar-actions { display: flex; gap: 8px; align-items: center; }
.content { padding: 24px; flex: 1; }
.app-footer {
  padding: 10px 24px;
  color: var(--text-2);
  font-size: 0.78rem;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.app-footer .kbd-hints { color: var(--text-2); }

.anon-content {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

/* ---------- Cards ---------- */
.card, .metric-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text);
}
.card { box-shadow: var(--shadow); }
.card-header {
  border-bottom: 1px solid var(--border) !important;
  background: transparent !important;
  color: var(--text);
}
.card-title-sm {
  font-size: 0.92rem;
  font-weight: 600;
  margin: 0;
  color: var(--text);
}

/* ---------- Barra de frota (assinatura do dashboard) ---------- */
.fleet-bar {
  display: flex;
  height: 34px;
  border-radius: 8px;
  overflow: hidden;
  background: var(--surface-2);
}
.fleet-seg {
  display: block;
  height: 100%;
  min-width: 4px;
  position: relative;
  transition: filter 0.15s var(--ease), flex-basis 0.4s var(--ease);
}
.fleet-seg + .fleet-seg { border-left: 2px solid var(--surface); }
.fleet-seg:hover, .fleet-seg:focus-visible { filter: brightness(1.18); }
.fleet-seg.seg-available { background: var(--primary); }
.fleet-seg.seg-loaned { background: var(--info); }
.fleet-seg.seg-reserved { background: var(--reserved); }
.fleet-seg.seg-maintenance { background: var(--warning); }

.fleet-legend {
  list-style: none;
  margin: 14px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px 22px;
}
.fleet-legend a {
  display: inline-flex;
  align-items: baseline;
  gap: 7px;
  color: var(--text-2);
  text-decoration: none;
  font-size: 0.85rem;
  border-radius: 4px;
}
.fleet-legend a:hover { color: var(--text); }
.fleet-legend i {
  width: 10px; height: 10px; border-radius: 3px;
  display: inline-block; align-self: center;
}
.fleet-legend b {
  color: var(--text);
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-weight: 600;
}
.fleet-legend .pct { font-size: 0.75rem; }

/* ---------- Cards de métrica ---------- */
.metric-card { display: block; text-decoration: none; transition: border-color 0.15s var(--ease), background 0.15s var(--ease); }
a.metric-card:hover { border-color: color-mix(in srgb, var(--border) 30%, var(--text-2)); background: color-mix(in srgb, var(--surface-2) 40%, var(--surface)); }
.metric-card .card-body { padding: 14px 18px; }
.metric-card .metric-label { color: var(--text-2); font-size: 0.82rem; }
.metric-card .metric-value, .kpi .metric-value {
  font-size: 1.9rem;
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -0.03em;
  color: var(--text);
}
.metric-card .metric-context { color: var(--text-2); font-size: 0.75rem; }
.metric-card.metric-alert { border-color: color-mix(in srgb, var(--error) 45%, var(--border)); background: color-mix(in srgb, var(--error) 5%, var(--surface)); }
.metric-card.metric-alert .metric-value { color: var(--error); }
/* KPI (alias do metric-card + delta) */
.kpi { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.kpi .metric-label { color: var(--text-2); font-size: 0.72rem; }
.metric-delta { font-size: 0.7rem; font-weight: 600; display: inline-flex; align-items: center; gap: 4px; }
.metric-delta.up { color: var(--primary); }
.metric-delta.down { color: var(--error); }
.metric-delta.flat { color: var(--text-2); }
.kpi.alert { border-color: color-mix(in srgb, var(--error) 40%, var(--border)); background: color-mix(in srgb, var(--error) 5%, var(--surface)); }
.kpi.alert .metric-value { color: var(--error); }

/* ---------- Gráficos ---------- */
.chart-box { position: relative; height: 240px; }

/* ---------- Ações rápidas + atalhos ---------- */
.quick-actions { display: grid; gap: 8px; }
.quick-actions .btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  text-align: left;
}
kbd, .kbd {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 0.7rem;
  color: var(--text-2);
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-bottom-width: 2px;
  border-radius: 5px;
  padding: 1px 6px;
  line-height: 1.5;
}
.btn-primary kbd { background: rgba(255,255,255,0.16); border-color: rgba(255,255,255,0.28); color: #fff; }

/* ---------- Tabelas ---------- */
.table { color: var(--text); border-color: var(--border); margin-bottom: 0; }
.table > :not(caption) > * > * {
  background: var(--surface);
  color: var(--text);
  border-color: var(--border);
  padding-top: 11px;
  padding-bottom: 11px;
}
.table thead th {
  color: var(--text-2);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 600;
}
.table tbody tr { transition: background 0.12s var(--ease); }
.table-hover tbody tr:hover > *,
.table tbody tr:hover > * { background: var(--surface-2); }

/* ---------- Badges de status ---------- */
.status-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 2px 10px;
  border-radius: 12px;
  font-size: 0.76rem;
  font-weight: 600;
  white-space: nowrap;
}
.status-badge::before {
  content: "";
  width: 6px; height: 6px; border-radius: 50%;
  background: currentColor;
}
.status-available { background: color-mix(in srgb, var(--primary) 14%, transparent); color: var(--primary-ink); }
.status-loaned { background: color-mix(in srgb, var(--info) 14%, transparent); color: var(--info); }
.status-reserved { background: color-mix(in srgb, var(--reserved) 15%, transparent); color: var(--reserved); }
.status-maintenance { background: color-mix(in srgb, var(--warning) 16%, transparent); color: var(--warning); }
.status-overdue, .status-canceled { background: color-mix(in srgb, var(--error) 14%, transparent); color: var(--error); }
.status-active { background: color-mix(in srgb, var(--info) 14%, transparent); color: var(--info); }
.status-returned, .status-attended { background: color-mix(in srgb, var(--primary) 14%, transparent); color: var(--primary-ink); }
.status-pending { background: color-mix(in srgb, var(--reserved) 15%, transparent); color: var(--reserved); }
.status-expired { background: var(--surface-2); color: var(--text-2); }
.status-expired::before { background: var(--text-2); }

/* Texto de badge no tema claro precisa de tom mais escuro para AA (≥4.5:1)
   sobre a tinta clara do fundo. */
:root[data-theme="light"] .status-loaned, :root[data-theme="light"] .status-active { color: #155C9C; }
:root[data-theme="light"] .status-reserved, :root[data-theme="light"] .status-pending { color: #0A6E6E; }
:root[data-theme="light"] .status-maintenance { color: #8A5200; }
:root[data-theme="light"] .status-overdue, :root[data-theme="light"] .status-canceled { color: #A5322C; }
:root[data-theme="dark"] .status-overdue, :root[data-theme="dark"] .status-canceled { color: #F27C74; }

/* ---------- Alertas operacionais ---------- */
.alert-sev {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--border);
  color: var(--text);
}
.alert-sev:last-child { border-bottom: 0; }
.alert-sev::before {
  content: "";
  width: 8px; height: 8px; border-radius: 50%;
  margin-top: 8px;
  flex-shrink: 0;
  background: var(--info);
}
.alert-sev.sev-warning::before { background: var(--warning); }
.alert-sev.sev-error::before { background: var(--error); }
.alert-sev .sev-label {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-top: 3px;
  flex-shrink: 0;
  color: var(--info);
}
.alert-sev.sev-warning .sev-label { color: var(--warning); }
.alert-sev.sev-error .sev-label { color: var(--error); }

/* ---------- Botões e formulários ---------- */
.btn { transition: background 0.12s var(--ease), border-color 0.12s var(--ease), color 0.12s var(--ease); }
.btn-primary {
  --bs-btn-bg: var(--primary);
  --bs-btn-border-color: var(--primary);
  --bs-btn-hover-bg: color-mix(in srgb, var(--primary) 88%, #000);
  --bs-btn-hover-border-color: color-mix(in srgb, var(--primary) 88%, #000);
  --bs-btn-active-bg: color-mix(in srgb, var(--primary) 80%, #000);
  box-shadow: 0 5px 12px -6px color-mix(in srgb, var(--primary) 60%, transparent);
}
.btn-outline-primary {
  --bs-btn-color: var(--primary-ink);
  --bs-btn-border-color: var(--border);
  --bs-btn-hover-bg: var(--surface-2);
  --bs-btn-hover-color: var(--primary-ink);
  --bs-btn-hover-border-color: var(--primary);
  --bs-btn-active-bg: var(--surface-2);
  --bs-btn-active-color: var(--primary-ink);
}
.btn-edit {
  align-items: center;
  display: inline-flex;
  font-weight: 600;
  justify-content: center;
  min-width: 72px;
}

.form-control, .form-select, textarea {
  background: var(--surface-2) !important;
  color: var(--text) !important;
  border-color: var(--border) !important;
}
.form-control:focus, .form-select:focus, textarea:focus {
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 22%, transparent) !important;
}
.form-control::placeholder { color: color-mix(in srgb, var(--text-2) 85%, var(--text)); }
.form-label { color: var(--text-2); }

.alert-list .alert { margin-bottom: 8px; padding: 8px 16px; }

/* Botão fechar (modais/alertas) — SVG escuro do Bootstrap serve o tema claro;
   no tema escuro precisa inverter para ficar visível. */
:root[data-theme="dark"] .btn-close { filter: invert(1) grayscale(1) brightness(1.8); }

/* ---------- Estados vazios ---------- */
.empty-state {
  text-align: center;
  color: var(--text-2);
  padding: 48px 24px;
}
.empty-state .btn { margin-top: 8px; }

/* ---------- Acessibilidade ---------- */
:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
  border-radius: 4px;
}

@media (max-width: 991px) {
  .sidebar { position: fixed; z-index: 1040; height: 100vh; transform: translateX(-100%); transition: transform 0.2s var(--ease); }
  .sidebar.open { transform: translateX(0); }
  .fleet-legend { gap: 6px 14px; }
}

/* ---------- Breadcrumb ---------- */
.breadcrumb-bar { display: flex; align-items: center; gap: 4px; font-size: 0.82rem; color: var(--text-2); }
.breadcrumb-bar a { color: var(--text-2); text-decoration: none; }
.breadcrumb-bar a:hover { color: var(--text); }
.breadcrumb-bar .sep { color: var(--border); margin: 0 2px; }
.breadcrumb-bar .current { color: var(--text); font-weight: 500; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
  }
}

/* ---------- Seleção de contexto ---------- */
.perfil-opcoes { display: grid; gap: 12px; }
.perfil-opcoes form { margin: 0; }
.perfil-opcao {
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  cursor: pointer;
  display: grid;
  gap: 5px;
  padding: 16px;
  text-align: left;
  transition: border-color .15s var(--ease), background-color .15s var(--ease);
  width: 100%;
}
.perfil-opcao:hover, .perfil-opcao:focus-visible {
  background: var(--surface);
  border-color: var(--primary);
}
.perfil-opcao-titulo { font-weight: 700; }
.perfil-opcao-descricao { color: var(--text-2); font-size: .88rem; }
/* Linguagem visual compartilhada por todas as telas administrativas. */
.sidebar{background:linear-gradient(180deg,var(--surface) 0%,color-mix(in srgb,var(--primary) 3%,var(--surface)) 100%);box-shadow:8px 0 32px rgba(21,36,26,.025);width:248px}.sidebar-brand{min-height:76px;padding:17px 18px}.sidebar-brand .brand-icon{background:linear-gradient(145deg,#1f7433,#32934a);border-radius:11px;height:38px;width:38px}.sidebar-brand .brand-icon svg{fill:none;height:24px;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:24px}.sidebar-brand .brand-text{font-size:.93rem;line-height:1.25}.sidebar-nav{gap:3px;padding:14px 10px}.sidebar-nav a{border:1px solid transparent;border-radius:10px;font-size:.86rem;min-height:41px;padding:9px 11px}.sidebar-nav a:hover{border-color:var(--border)}.sidebar-nav a.active{background:color-mix(in srgb,var(--primary) 11%,var(--surface));border-color:color-mix(in srgb,var(--primary) 15%,var(--border));font-weight:650}.sidebar-footer{background:color-mix(in srgb,var(--primary) 3%,var(--surface));padding:15px 18px}.topbar{backdrop-filter:blur(12px);background:color-mix(in srgb,var(--surface) 92%,transparent);min-height:64px;padding:10px 28px}.breadcrumb-bar{color:var(--text-2);font-size:.78rem}.breadcrumb-bar .current{color:var(--text);font-weight:700}.topbar-actions .btn{border-radius:9px;min-height:36px}.content{margin:0 auto;max-width:1600px;padding:30px 32px;width:100%}.content>h1,.content>section>h1{letter-spacing:-.035em}.content>.d-flex.justify-content-between:first-child,.content>.d-flex.flex-wrap.justify-content-between:first-child{align-items:flex-end!important;margin-bottom:22px!important}.content>.d-flex.justify-content-between:first-child h1,.content>.d-flex.flex-wrap.justify-content-between:first-child h1{font-size:clamp(1.7rem,3vw,2.25rem)!important;font-weight:750;letter-spacing:-.04em;margin-bottom:4px!important}.content>.d-flex.justify-content-between:first-child p,.content>.d-flex.flex-wrap.justify-content-between:first-child p{font-size:.88rem;max-width:68ch}.content>.card,.content>form.card{border-radius:16px;margin-bottom:20px}.card{border-radius:15px;box-shadow:0 1px 2px rgba(21,36,26,.03),0 13px 34px -26px rgba(21,36,26,.32);overflow:hidden}.card-header{align-items:center;display:flex;min-height:54px;padding:14px 18px}.card-body{padding:20px}.table-responsive{scrollbar-color:var(--border) transparent;scrollbar-width:thin}.table thead th{background:color-mix(in srgb,var(--primary) 3%,var(--surface));border-bottom-width:1px;padding:12px 14px}.table tbody td{padding:13px 14px;vertical-align:middle}.table tbody tr:last-child td{border-bottom:0}.form-control,.form-select{background-color:var(--surface-2);border-color:var(--border);border-radius:9px;color:var(--text);min-height:43px}.form-control:focus,.form-select:focus{background-color:var(--surface);border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent);color:var(--text)}textarea.form-control{min-height:110px}.form-label,label{font-size:.82rem;font-weight:650}.btn{border-radius:9px;font-weight:650;min-height:38px;padding-left:14px;padding-right:14px}.btn-sm{border-radius:8px;min-height:33px}.pagination{gap:4px}.page-link{background:var(--surface);border-color:var(--border);border-radius:8px!important;color:var(--text);min-width:36px;text-align:center}.page-link:hover{background:var(--surface-2);color:var(--primary)}.empty-state{background:linear-gradient(145deg,var(--surface),var(--surface-2));border-radius:12px;color:var(--text-2);margin:14px;padding:34px 20px}.alert{border-radius:12px;box-shadow:var(--shadow)}.app-footer{background:var(--surface);padding:12px 28px}.content dl.row{background:var(--surface-2);border-radius:12px;margin:0;padding:14px}.content hr{border-color:var(--border);opacity:1}.content .row.g-2>div>.form-control,.content .row.g-2>div>.form-select{min-height:40px}.content form.row.g-2{align-items:end!important}
@media(max-width:991px){.sidebar{box-shadow:20px 0 50px rgba(0,0,0,.18)}.content{padding:22px 18px}.topbar{padding:10px 16px}.topbar-actions .btn:not(.topbar-primary-action){font-size:.72rem;padding-left:10px;padding-right:10px}}
@media(max-width:640px){.content{padding:18px 12px}.topbar-primary-action{display:none}.content>.d-flex.justify-content-between:first-child,.content>.d-flex.flex-wrap.justify-content-between:first-child{align-items:flex-start!important;flex-direction:column}.card-body{padding:16px}.app-footer{padding:11px 15px}.table>thead{white-space:nowrap}}

/* Respiro das páginas e filtros compactos. */
.content{max-width:1280px;padding-left:38px;padding-right:38px}.content:has(.dash-hero){max-width:1540px}.admin-filtros{margin:0!important;max-width:880px;width:100%}.admin-filtros.admin-filtros-amplos{max-width:1120px}.card-header:has(.admin-filtros){background:color-mix(in srgb,var(--primary) 2.5%,var(--surface))!important;padding:16px 18px}.admin-filtros .col:not([class*="col-"]){min-width:280px}.admin-filtros .col-auto{display:flex;gap:7px}.admin-filtros .form-control,.admin-filtros .form-select{background-color:var(--surface);box-shadow:0 1px 2px rgba(21,36,26,.03)}
@media(min-width:1500px){.content{padding-left:28px;padding-right:28px}}
@media(max-width:991px){.content{max-width:100%;padding-left:24px;padding-right:24px}.admin-filtros{max-width:none}}
@media(max-width:640px){.content{padding-left:14px;padding-right:14px}.admin-filtros .col,.admin-filtros [class*="col-"]{flex:0 0 100%;max-width:100%;width:100%}.admin-filtros .col-auto{flex-wrap:wrap}.admin-filtros .col-auto .btn{flex:1}}

/* Cabeçalhos e listagens administrativas contemporâneas. */
.admin-page-header{align-items:flex-end;display:flex;gap:24px;justify-content:space-between;margin-bottom:24px}.admin-page-header h1{font-size:clamp(1.85rem,3vw,2.4rem);font-weight:780;letter-spacing:-.045em;line-height:1;margin:3px 0 8px}.admin-page-header>div>p:last-child{color:var(--text-2);font-size:.88rem;margin:0}.admin-page-eyebrow{color:var(--primary-ink);font-size:.67rem;font-weight:800;letter-spacing:.11em;margin:0;text-transform:uppercase}.admin-page-action{align-items:center;box-shadow:0 8px 20px -10px color-mix(in srgb,var(--primary) 80%,transparent);display:inline-flex;gap:7px;white-space:nowrap}.admin-list-shell{border-radius:19px;box-shadow:0 18px 50px -38px rgba(21,36,26,.5);overflow:hidden}.admin-list-shell .admin-search-panel{border-bottom:1px solid var(--border)!important;min-height:76px;padding:15px 17px}.admin-search-field{position:relative}.admin-search-field>svg{fill:none;height:19px;left:22px;position:absolute;stroke:var(--text-2);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8;top:12px;width:19px;z-index:2}.admin-search-field>.form-control{border-radius:11px;padding-left:43px}.admin-search-panel .btn{min-height:43px}.admin-empty-state{align-items:center;background:linear-gradient(145deg,color-mix(in srgb,var(--primary) 3%,var(--surface)),var(--surface-2));border:1px dashed color-mix(in srgb,var(--primary) 18%,var(--border));display:flex;flex-direction:column;margin:14px;min-height:230px;padding:38px 24px;text-align:center}.admin-empty-icon{align-items:center;background:color-mix(in srgb,var(--primary) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--primary) 16%,var(--border));border-radius:17px;color:var(--primary);display:flex;height:58px;justify-content:center;margin-bottom:15px;width:58px}.admin-empty-icon svg{fill:none;height:29px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.55;width:29px}.admin-empty-state h2{font-size:1.05rem;margin:0 0 5px}.admin-empty-state p{color:var(--text-2);font-size:.84rem;max-width:440px}.admin-empty-state .btn{margin-top:8px}
@media(max-width:640px){.admin-page-header{align-items:flex-start;flex-direction:column}.admin-page-action{width:100%}.admin-list-shell .admin-search-panel{padding:13px}.admin-search-field>svg{left:20px}}

/* Listagem de espaços: tabela com moldura, respiro e leitura visual. */
.admin-page-header-actions{display:flex;flex-wrap:wrap;gap:9px}.espacos-lista-card{border-radius:20px;padding:20px}.espacos-lista-topo{align-items:center;display:flex;gap:18px;justify-content:space-between;margin-bottom:17px;padding:2px 2px 0}.espacos-lista-topo h2{font-size:1rem;margin:0}.espacos-lista-topo p{color:var(--text-2);font-size:.75rem;margin:3px 0 0}.espacos-lista-indicador{align-items:center;color:var(--text-2);display:flex;font-size:.72rem;gap:7px}.espacos-lista-indicador i{background:var(--success);border-radius:50%;box-shadow:0 0 0 4px color-mix(in srgb,var(--success) 12%,transparent);height:7px;width:7px}.espacos-tabela-moldura{border:1px solid var(--border);border-radius:14px;overflow:hidden}.espacos-tabela thead th{background:color-mix(in srgb,var(--primary) 4%,var(--surface));padding:13px 18px}.espacos-tabela tbody td{height:72px;padding:11px 18px}.espacos-tabela tbody tr:last-child td{border-bottom:0}.espacos-tabela tbody tr:hover td{background:color-mix(in srgb,var(--primary) 3%,var(--surface))}.espaco-identidade{align-items:center;display:flex;gap:12px}.espaco-miniatura{align-items:center;background:color-mix(in srgb,var(--primary) 9%,var(--surface));border:1px solid color-mix(in srgb,var(--primary) 14%,var(--border));border-radius:11px;color:var(--primary);display:flex;flex:0 0 auto;height:45px;justify-content:center;overflow:hidden;width:45px}.espaco-miniatura img{height:100%;object-fit:cover;width:100%}.espaco-miniatura svg{fill:none;height:23px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6;width:23px}.espaco-identidade strong,.espaco-identidade small{display:block}.espaco-identidade strong{font-size:.88rem}.espaco-identidade small{color:var(--text-2);font-size:.68rem;margin-top:2px}.espaco-tipo-badge{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text-2);display:inline-flex;font-size:.72rem;font-weight:650;padding:5px 9px}.espaco-localizacao{align-items:center;color:var(--text-2);display:flex;font-size:.77rem;gap:7px}.espaco-localizacao svg{fill:none;flex:0 0 auto;height:16px;stroke:var(--primary);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:16px}.espaco-acao{text-align:right}.espaco-acao .btn{align-items:center;display:inline-flex;gap:8px}.espacos-lista-card>.admin-empty-state{margin:0}.espacos-lista-card .admin-empty-icon{font-size:1.6rem}
@media(max-width:760px){.admin-page-header-actions{width:100%}.admin-page-header-actions .btn{flex:1}.espacos-lista-card{padding:13px}.espacos-lista-topo{align-items:flex-start;flex-direction:column}.espacos-tabela{min-width:760px}.espacos-tabela thead th,.espacos-tabela tbody td{padding-left:13px;padding-right:13px}}

/* Login institucional do Parque Municipal. */
.anon-content:has(.login-modern){background:#edf4ea;padding:0}.login-modern{background:var(--surface);display:grid;min-height:100vh;width:100%}.login-modern-institucional{background:linear-gradient(145deg,#143b23 0%,#1e6232 72%,#2a7e40 100%);color:#fff;display:flex;flex-direction:column;overflow:hidden;padding:38px;position:relative}.login-modern-institucional:before,.login-modern-institucional:after{border:60px solid rgba(255,255,255,.045);border-radius:50%;content:"";height:360px;position:absolute;width:360px}.login-modern-institucional:before{right:-190px;top:-210px}.login-modern-institucional:after{bottom:-250px;left:-180px}.login-modern-brand{align-items:center;color:#fff;display:flex;gap:11px;position:relative;text-decoration:none;z-index:1}.login-modern-brand:hover{color:#fff}.login-modern-brand>span{align-items:center;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.16);border-radius:12px;display:flex;height:43px;justify-content:center;width:43px}.login-modern-brand svg{fill:none;height:25px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:25px}.login-modern-brand strong,.login-modern-brand small{display:block}.login-modern-brand strong{font-size:.92rem}.login-modern-brand small{color:rgba(255,255,255,.62);font-size:.59rem;letter-spacing:.11em;text-transform:uppercase}.login-modern-chamada{margin:auto 0;max-width:580px;position:relative;z-index:1}.login-modern-eyebrow{align-items:center;color:#bce1c4;display:flex;font-size:.67rem;font-weight:800;gap:8px;letter-spacing:.12em;text-transform:uppercase}.login-modern-eyebrow i{background:#67d57c;border-radius:50%;box-shadow:0 0 0 5px rgba(103,213,124,.12);height:7px;width:7px}.login-modern-chamada h2{font-size:clamp(2.5rem,5vw,4.7rem);letter-spacing:-.06em;line-height:.98;margin:17px 0 20px;max-width:10ch}.login-modern-chamada>p:last-child{color:rgba(255,255,255,.7);font-size:.98rem;line-height:1.65;max-width:52ch}.login-modern-recursos{display:grid;gap:10px;list-style:none;margin:26px 0 0;padding:0}.login-modern-recursos li{align-items:center;color:rgba(255,255,255,.8);display:flex;font-size:.78rem;gap:9px}.login-modern-recursos span{align-items:center;background:rgba(103,213,124,.14);border-radius:50%;color:#83e395;display:flex;font-size:.65rem;height:22px;justify-content:center;width:22px}.login-modern-rodape{color:rgba(255,255,255,.48);font-size:.67rem;margin:28px 0 0;position:relative;z-index:1}.login-modern-acesso{align-items:center;display:flex;justify-content:center;padding:40px}.login-modern-form-wrap{max-width:430px;width:100%}.login-modern-topo-nav{margin-bottom:20px}.login-modern-voltar{align-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;color:var(--text-2);display:inline-flex;font-size:.82rem;font-weight:700;gap:7px;min-height:38px;padding:7px 14px 7px 10px;text-decoration:none;transition:all .15s ease}.login-modern-voltar:hover,.login-modern-voltar:focus-visible{background:color-mix(in srgb,var(--primary) 10%,var(--surface));border-color:color-mix(in srgb,var(--primary) 28%,var(--border));color:var(--primary);text-decoration:none}.login-modern-voltar svg{fill:none;height:16px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.2;width:16px}.login-modern-form-wrap>header{margin-bottom:28px}.login-modern-lock{align-items:center;background:color-mix(in srgb,var(--primary) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--primary) 14%,var(--border));border-radius:13px;color:var(--primary);display:flex;height:48px;justify-content:center;margin-bottom:18px;width:48px}.login-modern-lock svg{fill:none;height:24px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:24px}.login-modern-form-wrap h1{font-size:clamp(2rem,4vw,2.65rem);font-weight:780;letter-spacing:-.05em;line-height:1;margin:5px 0 10px}.login-modern-form-wrap>header>p:last-child{color:var(--text-2);font-size:.86rem;line-height:1.55;margin:0;max-width:42ch}.login-modern-form{display:grid;gap:18px}.login-modern-field>label,.login-modern-label label{display:block;font-size:.77rem;font-weight:700;margin-bottom:7px}.login-modern-field>div:last-child{position:relative}.login-modern-field>div:last-child>svg{fill:none;height:19px;left:14px;position:absolute;stroke:var(--text-2);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;top:13px;width:19px;z-index:1}.login-modern-field input{background:var(--surface-2);border-radius:11px;min-height:48px;padding-left:43px}.login-modern-field input[type=password],.login-modern-field input[type=text]#id_password{padding-right:46px}.login-password-toggle{background:transparent;border:0;color:var(--text-2);cursor:pointer;padding:7px;position:absolute;right:7px;top:5px}.login-password-toggle svg{fill:none;height:20px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6;width:20px}.login-modern-submit{align-items:center;display:flex;justify-content:space-between;margin-top:4px;min-height:49px}.login-modern-help{align-items:center;border-top:1px solid var(--border);display:flex;font-size:.7rem;gap:15px;justify-content:space-between;margin-top:25px;padding-top:17px}.login-modern-help span{align-items:center;color:var(--text-2);display:flex;gap:6px}.login-modern-help svg{fill:none;height:15px;stroke:var(--success);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8;width:15px}.login-modern-help a{font-weight:650}.anon-content:has(.login-modern)>.alert{left:50%;max-width:430px;position:fixed;top:18px;transform:translateX(18%);width:calc(50% - 60px);z-index:10}
@media(min-width:900px){.login-modern{grid-template-columns:minmax(430px,1.05fr) minmax(430px,.95fr)}}
@media(max-width:899px){.login-modern-institucional{min-height:300px;padding:26px}.login-modern-chamada{margin:45px 0 20px}.login-modern-chamada h2{font-size:2.65rem;max-width:14ch}.login-modern-recursos{display:none}.login-modern-acesso{padding:42px 22px}.login-modern-rodape{display:none}.anon-content:has(.login-modern)>.alert{left:20px;max-width:none;right:20px;transform:none;width:auto}}
@media(max-width:520px){.login-modern-institucional{min-height:240px}.login-modern-chamada{margin:32px 0 5px}.login-modern-chamada h2{font-size:2.1rem}.login-modern-chamada>p:last-child{display:none}.login-modern-acesso{padding:34px 18px}.login-modern-help{align-items:flex-start;flex-direction:column}}

/* Barra de comandos: ações agrupadas e responsivas. */
.topbar-actions{gap:10px}.topbar-commandbar,.topbar-account-actions{align-items:center;display:flex}.topbar-commandbar{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;gap:3px;padding:4px}.topbar-command{align-items:center;border-radius:8px;color:var(--text-2);display:flex;font-size:.75rem;font-weight:700;gap:7px;min-height:34px;padding:6px 10px;text-decoration:none;transition:background .15s,color .15s}.topbar-command:hover{background:var(--surface);color:var(--primary-ink)}.topbar-command svg,.topbar-icon-button svg,.topbar-logout svg{fill:none;height:17px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8;width:17px}.topbar-command-primary{background:var(--primary);box-shadow:0 6px 13px -8px var(--primary);color:#fff}.topbar-command-primary:hover{background:var(--primary-ink);color:#fff}.topbar-command kbd{font-size:.56rem;padding:0 4px}.topbar-command-primary kbd{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.2);color:#fff}.topbar-account-actions{border-left:1px solid var(--border);gap:5px;padding-left:10px}.topbar-account-actions form{margin:0}.topbar-icon-button,.topbar-logout{align-items:center;background:transparent;border:1px solid transparent;border-radius:9px;color:var(--text-2);cursor:pointer;display:flex;font:inherit;font-size:.74rem;font-weight:700;gap:6px;height:36px;justify-content:center;padding:7px 9px}.topbar-icon-button{width:36px}.topbar-icon-button:hover{background:var(--surface-2);border-color:var(--border);color:var(--text)}.topbar-logout{color:var(--error)}.topbar-logout:hover{background:color-mix(in srgb,var(--error) 8%,var(--surface));border-color:color-mix(in srgb,var(--error) 20%,var(--border))}
@media(max-width:1150px){.topbar-command kbd{display:none}.topbar-command span{display:none}.topbar-command{padding:7px 9px}.topbar-command svg{height:19px;width:19px}}
@media(max-width:700px){.topbar{gap:5px}.breadcrumb-bar{display:none}.topbar-actions{margin-left:auto}.topbar-account-actions{padding-left:7px}.topbar-logout span{display:none}.topbar-logout{width:36px}.topbar-commandbar{padding:3px}}
@media(max-width:430px){.topbar-commandbar{display:none}.topbar-account-actions{border-left:0}}

/* Painel de pesquisa com ações integradas. */
.admin-filter-section{background:color-mix(in srgb,var(--primary) 2.5%,var(--surface));border-bottom:1px solid var(--border);padding:18px 20px 0}.admin-filter-section-header{align-items:flex-end;display:flex;gap:20px;justify-content:space-between;margin-bottom:15px}.admin-filter-section-header h2{font-size:1rem;margin:2px 0 0}.admin-filter-section-header>span{color:var(--text-2);font-size:.7rem}.admin-filter-section .admin-filtros{max-width:none}.admin-filter-actions{align-items:center;border-top:1px solid var(--border);display:flex!important;gap:15px;justify-content:space-between;margin-top:12px!important;padding:13px 0!important}.admin-filter-actions-hint{color:var(--text-2);font-size:.68rem}.admin-filter-actions>div{display:flex;gap:7px}.admin-filter-actions .btn{align-items:center;display:inline-flex;gap:6px}
@media(max-width:760px){.admin-filter-section{padding:15px 15px 0}.admin-filter-section-header{align-items:flex-start;flex-direction:column}.admin-filter-section-header>span,.admin-filter-actions-hint{display:none}.admin-filter-actions{justify-content:flex-end}.admin-filter-actions>div{width:100%}.admin-filter-actions .btn{flex:1;justify-content:center}}
.audit-system-user{background:var(--surface-2);border:1px solid var(--border);border-radius:7px;color:var(--text-2);display:inline-flex;font-size:.7rem;font-weight:650;padding:3px 8px}

/* Preferências de atalhos do usuário. */
.atalhos-card{border-radius:19px;overflow:hidden}.atalhos-card-header{align-items:center;background:color-mix(in srgb,var(--primary) 3%,var(--surface));border-bottom:1px solid var(--border);display:flex;gap:20px;justify-content:space-between;padding:19px 22px}.atalhos-card-header h2{font-size:1rem;margin:0}.atalhos-card-header p{color:var(--text-2);font-size:.75rem;margin:3px 0 0}.atalhos-card-header>span{background:var(--surface);border:1px solid var(--border);border-radius:99px;color:var(--text-2);font-size:.7rem;padding:5px 10px}.atalhos-table-wrap{padding:14px 20px}.atalhos-table{border:1px solid var(--border);border-radius:13px;border-collapse:separate;border-spacing:0;overflow:hidden}.atalhos-table thead th{padding:12px 16px}.atalhos-table tbody td{height:64px;padding:9px 16px}.atalho-acao{align-items:center;display:flex;gap:11px}.atalho-acao>span{align-items:center;background:var(--surface-2);border-radius:8px;color:var(--text-2);display:flex;font-family:"JetBrains Mono",monospace;font-size:.65rem;height:31px;justify-content:center;width:31px}.atalho-acao strong{font-size:.82rem}.atalho-select{max-width:210px;min-height:38px}.atalho-status{align-items:center;color:var(--text-2);display:inline-flex;font-size:.7rem;font-weight:650;gap:6px}.atalho-status i{background:var(--text-2);border-radius:50%;height:6px;width:6px}.atalho-status.ativo{color:var(--success)}.atalho-status.ativo i{background:var(--success);box-shadow:0 0 0 4px color-mix(in srgb,var(--success) 11%,transparent)}.atalhos-card-footer{align-items:center;background:var(--surface-2);border-top:1px solid var(--border);display:flex;gap:20px;justify-content:space-between;padding:16px 22px}.atalhos-card-footer strong{font-size:.76rem}.atalhos-card-footer p{color:var(--text-2);font-size:.68rem;margin:2px 0 0}.atalhos-card-footer>div:last-child{display:flex;gap:8px}
@media(max-width:680px){.atalhos-card-header,.atalhos-card-footer{align-items:flex-start;flex-direction:column}.atalhos-card-header>span{display:none}.atalhos-table-wrap{overflow-x:auto;padding:10px}.atalhos-table{min-width:620px}.atalhos-card-footer>div:last-child{width:100%}.atalhos-card-footer .btn{flex:1}}

.espaco-localizacao>span,.espaco-localizacao small{display:block}.espaco-localizacao small{font-size:.68rem;margin-top:3px}.espaco-localizacao small a{font-weight:700;text-decoration:none}.espaco-localizacao small a:hover{text-decoration:underline}

.dash-acoes-configurar{color:var(--primary-ink);display:inline-block;font-size:.74rem;font-weight:750;margin-top:14px;text-decoration:none}.dash-acoes-configurar:hover{text-decoration:underline}
.dash-acoes-vazio{color:var(--text-2);font-size:.78rem;margin:8px 0 0}

/* Navegação lateral organizada em grupos recolhíveis. */
.sidebar-nav .nav-group { border-top: 1px solid var(--border); margin-top: 7px; padding-top: 7px; }
.sidebar-nav .nav-group:first-of-type { border-top: 0; margin-top: 0; padding-top: 0; }
.sidebar-nav .nav-group > summary { align-items: center; border: 1px solid transparent; border-radius: 10px; color: var(--text-2); cursor: pointer; display: flex; font-size: .7rem; font-weight: 800; gap: 10px; letter-spacing: .07em; list-style: none; min-height: 36px; padding: 8px 11px; text-transform: uppercase; }
.sidebar-nav .nav-group > summary::-webkit-details-marker { display: none; }
.sidebar-nav .nav-group > summary:hover { background: var(--surface-2); border-color: var(--border); color: var(--text); }
.sidebar-nav .nav-group > summary .nav-ico { flex-shrink: 0; opacity: .78; }
.sidebar-nav .nav-group > summary > span:first-of-type { flex: 1; }
.sidebar-nav .nav-group-chevron { font-size: 1rem; line-height: 1; transition: transform .15s var(--ease); }
.sidebar-nav .nav-group[open] > summary .nav-group-chevron { transform: rotate(180deg); }
.sidebar-nav .nav-group-links { display: flex; flex-direction: column; gap: 2px; margin-top: 3px; }
.sidebar-nav .nav-group-links a { font-size: .82rem; min-height: 37px; padding-left: 28px; }

@media (max-width: 991px) {
  .sidebar-nav .nav-group > summary { min-height: 40px; }
  .sidebar-nav .nav-group-links a { min-height: 40px; }
}

/* Configuração visual do relatório diário. */
.relatorio-config-page { margin: 0 auto; max-width: 1040px; }
.relatorio-config-header { margin-bottom: 28px; }
.relatorio-config-titulo { align-items: center; display: flex; gap: 14px; }
.relatorio-config-titulo h1 { margin-bottom: 8px; }
.relatorio-config-titulo p { color: var(--text-2); font-size: .88rem; margin: 0; }
.relatorio-config-icone { align-items: center; background: color-mix(in srgb, var(--primary) 11%, var(--surface)); border: 1px solid color-mix(in srgb, var(--primary) 18%, var(--border)); border-radius: 14px; color: var(--primary); display: flex; flex: 0 0 auto; height: 48px; justify-content: center; width: 48px; }
.relatorio-config-icone svg { fill: none; height: 25px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.65; width: 25px; }
.relatorio-config-voltar { white-space: nowrap; }
.relatorio-config-card { background: var(--surface); border: 1px solid var(--border); border-radius: 22px; box-shadow: 0 20px 48px -34px rgba(21, 36, 26, .45); overflow: hidden; }
.relatorio-config-card-header { align-items: flex-start; background: linear-gradient(135deg, color-mix(in srgb, var(--primary) 6%, var(--surface)), var(--surface)); border-bottom: 1px solid var(--border); display: flex; gap: 24px; justify-content: space-between; padding: 24px 28px; }
.relatorio-config-overline { color: var(--primary-ink); font-size: .64rem; font-weight: 800; letter-spacing: .1em; margin: 0 0 6px; text-transform: uppercase; }
.relatorio-config-card-header h2 { font-size: 1.1rem; margin: 0 0 5px; }
.relatorio-config-card-header p:last-child { color: var(--text-2); font-size: .78rem; line-height: 1.45; margin: 0; max-width: 620px; }
.relatorio-config-padrao { align-items: center; background: color-mix(in srgb, var(--success) 10%, var(--surface)); border: 1px solid color-mix(in srgb, var(--success) 22%, var(--border)); border-radius: 999px; color: var(--success); display: inline-flex; flex: 0 0 auto; font-size: .7rem; font-weight: 750; gap: 6px; padding: 7px 11px; white-space: nowrap; }
.relatorio-config-padrao svg { fill: none; height: 15px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; width: 15px; }
.relatorio-config-body { padding: 24px 28px; }
.relatorio-config-grid { display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.relatorio-config-campo { align-items: center; background: var(--surface-2); border: 1px solid var(--border); border-radius: 13px; cursor: pointer; display: flex; gap: 12px; min-height: 68px; padding: 12px 16px; position: relative; transition: background .15s var(--ease), border-color .15s var(--ease), box-shadow .15s var(--ease), transform .15s var(--ease); }
.relatorio-config-campo:hover { border-color: color-mix(in srgb, var(--primary) 40%, var(--border)); box-shadow: 0 8px 20px -16px color-mix(in srgb, var(--primary) 70%, transparent); transform: translateY(-1px); }
.relatorio-config-campo.selecionado { background: color-mix(in srgb, var(--primary) 7%, var(--surface)); border-color: color-mix(in srgb, var(--primary) 45%, var(--border)); }
.relatorio-config-input { height: 1px; opacity: 0; position: absolute; width: 1px; }
.relatorio-config-input:focus-visible ~ .relatorio-config-check { outline: 2px solid var(--primary); outline-offset: 3px; }
.relatorio-config-check { align-items: center; background: var(--surface); border: 1.5px solid color-mix(in srgb, var(--text-2) 42%, var(--border)); border-radius: 8px; color: #fff; display: flex; flex: 0 0 auto; height: 25px; justify-content: center; width: 25px; }
.relatorio-config-campo.selecionado .relatorio-config-check { background: var(--primary); border-color: var(--primary); box-shadow: 0 4px 9px -5px var(--primary); }
.relatorio-config-check svg { display: none; fill: none; height: 16px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.4; width: 16px; }
.relatorio-config-campo.selecionado .relatorio-config-check svg { display: block; }
.relatorio-config-campo-texto { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.relatorio-config-campo-texto strong { font-size: .82rem; }
.relatorio-config-campo-texto small { color: var(--text-2); font-size: .68rem; }
.relatorio-config-footer { align-items: center; background: color-mix(in srgb, var(--surface-2) 72%, var(--surface)); border-top: 1px solid var(--border); display: flex; gap: 16px; justify-content: space-between; padding: 16px 28px; }
.relatorio-config-contador { align-items: center; color: var(--text-2); display: inline-flex; font-size: .72rem; gap: 7px; }
.relatorio-config-contador svg { fill: none; height: 15px; stroke: var(--primary); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 15px; }
.relatorio-config-contador span { color: var(--text); font-weight: 750; }
.relatorio-config-acoes { display: flex; gap: 8px; }
.relatorio-config-acoes .btn { align-items: center; display: inline-flex; gap: 7px; }
.relatorio-config-acoes svg { fill: none; height: 16px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 16px; }
@media (max-width: 760px) {
  .relatorio-config-header { align-items: flex-start; }
  .relatorio-config-voltar { width: 100%; }
  .relatorio-config-card-header { flex-direction: column; padding: 20px; }
  .relatorio-config-body { padding: 16px; }
  .relatorio-config-grid { grid-template-columns: 1fr; }
  .relatorio-config-footer { align-items: stretch; flex-direction: column; padding: 15px 16px; }
  .relatorio-config-acoes { width: 100%; }
  .relatorio-config-acoes .btn { flex: 1; justify-content: center; }
}

/* ==========================================================================
   Micro-animações e Interações Táteis para Botões
   ========================================================================== */
.btn, .botao, button.link-botao, .topbar-command, .topbar-icon-button, .topbar-logout, .dash-kpi {
  position: relative;
  transition: transform 0.18s cubic-bezier(0.2, 0.7, 0.2, 1),
              box-shadow 0.18s cubic-bezier(0.2, 0.7, 0.2, 1),
              background-color 0.18s ease,
              border-color 0.18s ease,
              color 0.18s ease;
  will-change: transform, box-shadow;
  cursor: pointer;
}

.btn:hover:not(:disabled),
.botao:hover:not(:disabled),
.topbar-command:hover,
.topbar-icon-button:hover {
  transform: translateY(-2px);
}

.btn:active:not(:disabled),
.botao:active:not(:disabled),
.topbar-command:active,
.topbar-icon-button:active,
.topbar-logout:active {
  transform: translateY(1px) scale(0.98);
  transition-duration: 0.08s;
}

.btn-primary:hover:not(:disabled),
.botao-principal:hover:not(:disabled) {
  box-shadow: 0 6px 18px -4px color-mix(in srgb, var(--primary) 50%, transparent);
}

.btn-outline-primary:hover:not(:disabled),
.botao-secundario:hover:not(:disabled) {
  box-shadow: 0 4px 14px -3px color-mix(in srgb, var(--primary) 30%, transparent);
}

.btn-danger:hover:not(:disabled),
.botao-perigo:hover:not(:disabled) {
  box-shadow: 0 6px 18px -4px color-mix(in srgb, var(--error) 50%, transparent);
}

.btn-success:hover:not(:disabled) {
  box-shadow: 0 6px 18px -4px color-mix(in srgb, var(--success) 50%, transparent);
}

/* Efeito nos ícones SVG de botões */
.btn svg:not(.nav-ico), .botao svg, .topbar-command svg, .topbar-icon-button svg {
  transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.btn:hover svg:not(.nav-ico),
.botao:hover svg {
  transform: scale(1.14);
}

/* Botões do WhatsApp: destaque especial com elevação e rotação sutil */
.btn-whatsapp,
a[href*="wa.me"],
a[href*="whatsapp"] {
  transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1),
              box-shadow 0.22s ease,
              background-color 0.15s ease !important;
}

.btn-whatsapp:hover,
a[href*="wa.me"]:hover,
a[href*="whatsapp"]:hover {
  transform: translateY(-2.5px) scale(1.03);
  box-shadow: 0 8px 22px -3px rgba(37, 211, 102, 0.5) !important;
}

.btn-whatsapp:active,
a[href*="wa.me"]:active,
a[href*="whatsapp"]:active {
  transform: translateY(1px) scale(0.97);
}

.btn-whatsapp:hover svg,
a[href*="wa.me"]:hover svg {
  transform: rotate(-10deg) scale(1.2) !important;
}

/* Alternador de tema: rotação fluida e troca de ícone sol/lua */
.theme-icon-moon, .theme-icon-sun {
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
  width: 18px;
  height: 18px;
  transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.2s ease;
}

:root[data-theme="light"] .theme-icon-sun {
  display: none !important;
}

:root[data-theme="light"] .theme-icon-moon {
  display: block !important;
}

:root[data-theme="dark"] .theme-icon-moon {
  display: none !important;
}

:root[data-theme="dark"] .theme-icon-sun {
  display: block !important;
  color: #ffc107 !important;
}

#theme-toggle svg,
.botao-tema-toggle svg {
  transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}

#theme-toggle:hover svg,
.botao-tema-toggle:hover svg,
.botao-tema-toggle:focus-visible svg {
  transform: rotate(28deg) scale(1.18);
}

/* ==========================================================================
   Correções Abrangentes para Modo Escuro (Dark Mode Consistency)
   ========================================================================== */
:root[data-theme="dark"] .bg-light,
:root[data-theme="dark"] .bg-body-tertiary,
:root[data-theme="dark"] .bg-white,
:root[data-theme="dark"] .bg-body {
  background-color: var(--surface-2) !important;
  color: var(--text) !important;
}

:root[data-theme="dark"] .text-dark,
:root[data-theme="dark"] .text-body {
  color: var(--text) !important;
}

:root[data-theme="dark"] .text-muted,
:root[data-theme="dark"] .text-secondary {
  color: var(--text-2) !important;
}

:root[data-theme="dark"] .card {
  background-color: var(--surface);
  border-color: var(--border);
  color: var(--text);
}

:root[data-theme="dark"] .card-header,
:root[data-theme="dark"] .card-footer {
  background-color: var(--surface-2);
  border-color: var(--border);
  color: var(--text);
}

:root[data-theme="dark"] .card-header.bg-body-tertiary,
:root[data-theme="dark"] .card-footer.bg-body-tertiary {
  background-color: var(--surface-2) !important;
  border-color: var(--border) !important;
  color: var(--text) !important;
}

:root[data-theme="dark"] .list-group-item {
  background-color: var(--surface);
  border-color: var(--border);
  color: var(--text);
}

:root[data-theme="dark"] .list-group-item-action:hover,
:root[data-theme="dark"] .list-group-item-action:focus {
  background-color: var(--surface-2);
  color: var(--primary);
}

:root[data-theme="dark"] .modal-content {
  background-color: var(--surface);
  border-color: var(--border);
  color: var(--text);
}

:root[data-theme="dark"] .modal-header,
:root[data-theme="dark"] .modal-footer {
  border-color: var(--border);
}

:root[data-theme="dark"] .dropdown-menu {
  background-color: var(--surface);
  border-color: var(--border);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.55);
}

:root[data-theme="dark"] .dropdown-item {
  color: var(--text);
}

:root[data-theme="dark"] .dropdown-item:hover,
:root[data-theme="dark"] .dropdown-item:focus {
  background-color: var(--surface-2);
  color: var(--primary-ink);
}

:root[data-theme="dark"] .dropdown-divider {
  border-color: var(--border);
}

:root[data-theme="dark"] .table {
  --bs-table-bg: var(--surface);
  --bs-table-color: var(--text);
  --bs-table-border-color: var(--border);
  --bs-table-hover-bg: var(--surface-2);
  --bs-table-hover-color: var(--text);
  --bs-table-striped-bg: color-mix(in srgb, var(--surface-2) 60%, var(--surface));
  --bs-table-striped-color: var(--text);
  border-color: var(--border);
  color: var(--text);
}

:root[data-theme="dark"] .table > :not(caption) > * > * {
  background-color: var(--surface);
  border-bottom-color: var(--border);
  color: var(--text);
}

:root[data-theme="dark"] .table tbody tr:hover > * {
  background-color: var(--surface-2) !important;
}

:root[data-theme="dark"] .form-control,
:root[data-theme="dark"] .form-select {
  background-color: var(--surface-2);
  border-color: var(--border);
  color: var(--text);
}

:root[data-theme="dark"] .form-control:focus,
:root[data-theme="dark"] .form-select:focus {
  background-color: var(--surface);
  border-color: var(--primary);
  color: var(--text);
}

:root[data-theme="dark"] .form-control::placeholder {
  color: var(--text-2);
  opacity: 0.65;
}

:root[data-theme="dark"] .form-check-input {
  background-color: var(--surface-2);
  border-color: var(--border);
}

:root[data-theme="dark"] .form-check-input:checked {
  background-color: var(--primary);
  border-color: var(--primary);
}

:root[data-theme="dark"] .form-check-label {
  color: var(--text);
}

:root[data-theme="dark"] .btn-close {
  filter: invert(1) grayscale(100%) brightness(200%);
}

:root[data-theme="dark"] .border,
:root[data-theme="dark"] .border-top,
:root[data-theme="dark"] .border-bottom,
:root[data-theme="dark"] .border-start,
:root[data-theme="dark"] .border-end {
  border-color: var(--border) !important;
}

:root[data-theme="dark"] .alert-info {
  background-color: color-mix(in srgb, var(--info) 14%, var(--surface));
  border-color: color-mix(in srgb, var(--info) 30%, var(--border));
  color: var(--text);
}

:root[data-theme="dark"] .alert-success {
  background-color: color-mix(in srgb, var(--success) 14%, var(--surface));
  border-color: color-mix(in srgb, var(--success) 30%, var(--border));
  color: var(--text);
}

:root[data-theme="dark"] .alert-warning {
  background-color: color-mix(in srgb, var(--warning) 14%, var(--surface));
  border-color: color-mix(in srgb, var(--warning) 30%, var(--border));
  color: var(--text);
}

:root[data-theme="dark"] .alert-danger {
  background-color: color-mix(in srgb, var(--error) 14%, var(--surface));
  border-color: color-mix(in srgb, var(--error) 30%, var(--border));
  color: var(--text);
}

:root[data-theme="dark"] .badge.bg-light,
:root[data-theme="dark"] .badge.bg-body-tertiary {
  background-color: var(--surface-2) !important;
  color: var(--text) !important;
  border: 1px solid var(--border);
}

:root[data-theme="dark"] .accordion-item {
  background-color: var(--surface);
  border-color: var(--border);
  color: var(--text);
}

:root[data-theme="dark"] .accordion-button {
  background-color: var(--surface);
  color: var(--text);
}

:root[data-theme="dark"] .accordion-button:not(.collapsed) {
  background-color: var(--surface-2);
  color: var(--primary);
}

:root[data-theme="dark"] .accordion-button::after {
  filter: invert(1) grayscale(100%);
}

:root[data-theme="dark"] .bloqueio-opcoes-reservas {
  background-color: var(--surface-2) !important;
  border-color: var(--border) !important;
  color: var(--text) !important;
}

:root[data-theme="dark"] .whatsapp-box {
  background-color: var(--surface-2) !important;
  border-color: var(--border) !important;
  color: var(--text) !important;
}

