/* ============================================================
   AgendaVitta — tema clean (minimalista/luxo)
   Carregue DEPOIS de styles.css e melhorias-controles.css:

     <link rel="stylesheet" href="assets/styles.css">
     <link rel="stylesheet" href="assets/melhorias-controles.css">
     <link rel="stylesheet" href="assets/tema-clean.css">

   Nada de cor fixa fora do bloco de tokens: todo o resto usa
   var(--*), então os dois temas de Configurações — agendavitta
   (escuro, padrão) e claro — continuam funcionando.
   ============================================================ */

/* ---------- 1. Tokens por tema ---------- */

body.dashboard-body,
body.auth-page {
  --av-bg: #09090b;
  --av-surface: #0e0e11;
  --av-line: rgba(255, 255, 255, .14);
  --av-line-strong: rgba(255, 255, 255, .22);
  --av-ink: #f5f2ec;
  --av-muted: #8f8c95;
  --av-faint: #5e5b64;
  /* Sem a mistura, uma cor de marca escolhida escura (quase preta) ficaria
     preta em cima de fundo preto — texto e ícone ativo somem. Misturar com
     --av-ink (claro em todos os temas escuros) garante leitura mínima sem
     depender do dono acertar uma cor clara. */
  --av-brand: color-mix(in srgb, var(--brand, #d9ad72) 55%, var(--av-ink));
  --av-brand-contrast: #17120d;
  --av-brand-soft: color-mix(in srgb, var(--av-brand) 10%, transparent);
  --av-ok: #7fb8a0;
  --av-alert: #c98b8b;
  /* Promoção: precisa se separar do dourado da marca ("Mais escolhido") e do
     vermelho de erro, senão o selo de oferta vira mais um rótulo qualquer. */
  --av-promo: #e8926a;
  --av-promo-contrast: #21100a;
  --av-radius: 4px;
  --av-radius-card: 8px;
  --av-serif: 'Playfair Display', Georgia, serif;
  --av-sans: 'Poppins', system-ui, -apple-system, sans-serif;
}

body[data-theme="claro"] {
  --av-bg: #faf9f7;
  --av-surface: #ffffff;
  --av-line: rgba(0, 0, 0, .15);
  --av-line-strong: rgba(0, 0, 0, .24);
  --av-ink: #1a1a1c;
  --av-muted: #6b6862;
  --av-faint: #a8a5a0;
  --av-brand: color-mix(in srgb, var(--brand, #d9ad72) 78%, #4a3308);
  --av-brand-contrast: #fffdf8;
  --av-ok: #3f7d64;
  --av-alert: #a3524f;
  --av-promo: #9c3c1f;
  --av-promo-contrast: #fff6f1;
}

/* Reencaixa os tokens antigos nos novos, para o que este arquivo não cobre. */
body.dashboard-body,
body.auth-page {
  --cor-fundo: var(--av-bg);
  --cor-superficie: var(--av-surface);
  --cor-texto: var(--av-ink);
  --cor-texto-suave: var(--av-muted);
  --ink: var(--av-ink);
  --muted: var(--av-muted);
  --surface: var(--av-surface);
  --surface-soft: var(--av-bg);
  --line: var(--av-line);
  --success: var(--av-ok);
  --danger: var(--av-alert);
  --promo: var(--av-promo);
  --promo-contrast: var(--av-promo-contrast);
  --shadow-sm: none;
  --shadow-lg: none;
  --radius-sm: var(--av-radius);
  --radius: var(--av-radius-card);
  --radius-lg: var(--av-radius-card);
}

/* ---------- 2. Base ---------- */

body.dashboard-body {
  background: var(--av-bg) !important;
  color: var(--av-ink);
  font-family: var(--av-sans);
  -webkit-font-smoothing: antialiased;
}

body.dashboard-body h1,
body.dashboard-body h2,
body.dashboard-body h3,
body.dashboard-body h4 {
  font-family: var(--av-serif);
  font-weight: 400;
  letter-spacing: -.01em;
}

body.dashboard-body .workspace {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 30px 34px 60px;
  max-width: none;
}

/* Um só título por tela: o menu já diz onde você está. */
body.dashboard-body .page-header .eyebrow,
body.dashboard-body .page-header .page-subtitle {
  display: none;
}

body.dashboard-body .page-header {
  align-items: baseline;
  gap: 18px;
  margin: 0 0 20px;
  padding: 0;
  border: 0;
  background: none;
}

body.dashboard-body .page-header h1 {
  font-size: 28px;
  margin: 0;
}

/* ---------- 3. Sidebar (opção A: enxuta, 208px, sem ícones) ---------- */

body.dashboard-body .app-shell {
  grid-template-columns: 208px 1fr;
  gap: 0;
  background: transparent;
}

body.dashboard-body .sidebar {
  width: 208px;
  padding: 26px 0;
  border-right: 1px solid var(--av-line);
  border-radius: 0;
  background: transparent !important;
  box-shadow: none !important;
}

/* No tema claro, fundo do studio e da sidebar são quase idênticos —
   "transparent" faz a sidebar sumir, sobrando só a linha de 1px pra separar
   do conteúdo. Um tingimento devolve a separação sem virar um cartão.
   (4% tinha ficado sutil demais pra separar de verdade — 10%.) */
body[data-theme="claro"] .sidebar {
  background: color-mix(in srgb, var(--av-ink) 10%, var(--av-surface)) !important;
}

body.dashboard-body .sidebar-brand-row {
  padding: 0 20px 26px;
  border: 0;
}

body.dashboard-body .sidebar-brand-row .brand-copy small,
body.dashboard-body .sidebar-toggle,
body.dashboard-body .sidebar-support-link,
body.dashboard-body .nav-item svg,
body.dashboard-body .nav-item i,
body.dashboard-body .sidebar-footer .user-avatar,
body.dashboard-body .sidebar-footer .user-copy small {
  display: none !important;
}

body.dashboard-body .brand-mark {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: var(--av-brand);
  overflow: hidden;
}

body.dashboard-body .brand-mark img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

body.dashboard-body .sidebar-brand-row .brand-copy strong {
  /* styles.css base põe color:#fff em .sidebar .brand (pensado pro fundo
     escuro original) — nos temas claros o nome da empresa ficava
     invisível, texto branco sobre a sidebar clara. */
  color: var(--av-ink);
  font-family: var(--av-serif);
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: .02em;
}

body.dashboard-body .side-nav {
  gap: 0;
  padding: 0;
}

body.dashboard-body .nav-item {
  display: block;
  width: 100%;
  padding: 9px 20px;
  border: 0;
  border-radius: 0;
  background: none !important;
  color: var(--av-muted);
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 400;
  text-align: left;
  transition: color .14s ease;
}

body.dashboard-body .nav-item:hover {
  color: var(--av-ink);
}

body.dashboard-body .nav-item.is-active {
  color: var(--av-ink);
  box-shadow: inset 2px 0 0 0 var(--av-brand);
}

body.dashboard-body .nav-item.is-active::before {
  display: none;
}

body.dashboard-body .nav-item--locked {
  opacity: .45;
}

body.dashboard-body .sidebar-footer {
  padding: 16px 20px 0;
  border-top: 1px solid var(--av-line);
  background: none;
}

body.dashboard-body .sidebar-footer .user-copy strong {
  font-size: 11.5px;
  font-weight: 400;
  color: var(--av-muted);
}

body.dashboard-body .sidebar-footer .icon-button {
  border: 0;
  background: none;
  color: var(--av-faint);
  font-size: 10.5px;
}

/* ---------- 4. Botões ---------- */

body.dashboard-body .button,
body.auth-page .button {
  min-height: 40px;
  padding: 0 20px;
  border-radius: var(--av-radius);
  border: 1px solid transparent;
  background: var(--av-brand);
  color: var(--av-brand-contrast);
  box-shadow: none !important;
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: 0;
  transition: opacity .14s ease;
}

body.dashboard-body .button:hover:not(:disabled),
body.auth-page .button:hover:not(:disabled) {
  opacity: .88;
  transform: none;
  filter: none;
}

body.dashboard-body .button-secondary,
body.auth-page .button--secondary,
body.auth-page .button--ghost {
  background: transparent !important;
  border-color: var(--av-line-strong) !important;
  color: var(--av-ink) !important;
}

body.dashboard-body .button-ghost {
  background: none !important;
  border-color: transparent !important;
  color: var(--av-muted) !important;
  padding: 0 4px;
  min-height: 32px;
}

body.dashboard-body .button-ghost:hover {
  color: var(--av-ink) !important;
}

body.dashboard-body .button-small {
  min-height: 32px;
  padding: 0 14px;
  font-size: 11.5px;
}

body.dashboard-body .button-danger-ghost {
  background: none !important;
  border-color: transparent !important;
  color: var(--av-alert) !important;
}

body.dashboard-body .icon-button {
  border: 0;
  border-radius: var(--av-radius);
  background: none;
  color: var(--av-faint);
}

body.dashboard-body .icon-button:hover {
  color: var(--av-ink);
}

body.dashboard-body .icon-button-danger:hover {
  color: var(--av-alert);
}

/* ---------- 5. Superfícies: fio de 1px, não cartão ---------- */

body.dashboard-body .panel-card,
body.dashboard-body .form-card,
body.dashboard-body .table-card,
body.dashboard-body .report-card,
body.dashboard-body .management-card,
body.dashboard-body .settings-form,
body.dashboard-body .settings-preview,
body.dashboard-body .entity-card,
body.dashboard-body .service-card,
body.dashboard-body .state-card,
body.dashboard-body .settings-inner-group,
body.dashboard-body .create-panel {
  border: 1px solid var(--av-line);
  border-radius: var(--av-radius-card);
  background: var(--av-surface) !important;
  box-shadow: none !important;
}

body.dashboard-body .toolbar {
  border: 0 !important;
  border-radius: 0;
  background: none !important;
  box-shadow: none !important;
  padding: 0;
  margin: 0 0 20px;
  align-items: baseline;
  gap: 18px;
}

body.dashboard-body .toolbar-copy h2 {
  font-size: 28px;
  margin: 0;
}

body.dashboard-body .toolbar-copy p {
  display: none;
}

/* Resumos: números sobre linha, sem cartões */
body.dashboard-body .agenda-summary-grid,
body.dashboard-body .summary-grid,
body.dashboard-body .cost-result-grid {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--av-line);
  border-bottom: 1px solid var(--av-line);
  margin: 0 0 22px;
}

body.dashboard-body .agenda-summary-grid {
  grid-template-columns: repeat(3, 1fr);
}

body.dashboard-body .summary-grid,
body.dashboard-body .cost-result-grid {
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}

body.dashboard-body .agenda-summary-card,
body.dashboard-body .metric-card,
body.dashboard-body .stat-card {
  border: 0 !important;
  border-radius: 0;
  background: none !important;
  box-shadow: none !important;
  padding: 16px 0;
}

body.dashboard-body .agenda-summary-card > span:first-child,
body.dashboard-body .metric-card > span:first-child,
body.dashboard-body .stat-card > span:first-child {
  font-size: 9.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--av-faint);
}

body.dashboard-body .agenda-summary-card strong,
body.dashboard-body .metric-card strong,
body.dashboard-body .stat-card strong {
  display: block;
  margin: 6px 0 0;
  font-family: var(--av-serif);
  font-size: 24px;
  font-weight: 400;
  font-variant-numeric: tabular-nums;
}

body.dashboard-body .agenda-summary-card small,
body.dashboard-body .metric-card small,
body.dashboard-body .stat-card small {
  display: block;
  margin: 5px 0 0;
  font-size: 11px;
  color: var(--av-muted);
}

body.dashboard-body .metric-primary strong,
body.dashboard-body .metric-accent strong,
body.dashboard-body .agenda-summary-card--next strong {
  color: var(--av-brand);
}

/* ---------- 6. Campos ---------- */

body.dashboard-body .field > span,
body.dashboard-body .field-label,
body.dashboard-body legend {
  font-size: 9.5px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--av-muted);
  font-weight: 400;
}

body.dashboard-body input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="file"]),
body.dashboard-body select,
body.dashboard-body textarea {
  border: 0;
  border-bottom: 1px solid var(--av-line-strong);
  border-radius: 0;
  background: transparent !important;
  color: var(--av-ink);
  padding: 8px 0;
  font-family: inherit;
  font-size: 12.5px;
  box-shadow: none !important;
}

body.dashboard-body input:focus,
body.dashboard-body select:focus,
body.dashboard-body textarea:focus {
  outline: 0;
  border-bottom-color: var(--av-brand);
  box-shadow: none !important;
}

body.dashboard-body input::placeholder,
body.dashboard-body textarea::placeholder {
  color: var(--av-faint);
}

body.dashboard-body .filter-row {
  gap: 22px;
  align-items: baseline;
}

body.dashboard-body .check-card,
body.dashboard-body .choice-card {
  border: 0;
  border-bottom: 1px solid var(--av-line);
  border-radius: 0;
  background: none !important;
  padding: 12px 0;
  box-shadow: none !important;
}

body.dashboard-body .check-grid {
  display: block;
}

body.dashboard-body .switch-row {
  border: 0;
  border-bottom: 1px solid var(--av-line);
  border-radius: 0;
  background: none !important;
  padding: 12px 0;
}

/* ---------- 7. Tabelas ---------- */

body.dashboard-body .table-card {
  border: 0 !important;
  background: none !important;
}

body.dashboard-body .data-table {
  border-collapse: collapse;
  background: none;
}

body.dashboard-body .data-table th {
  padding: 0 0 11px;
  border: 0;
  border-bottom: 1px solid var(--av-line);
  background: none !important;
  font-size: 9.5px;
  font-weight: 400;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--av-faint);
}

body.dashboard-body .data-table td {
  padding: 15px 0;
  border: 0;
  border-bottom: 1px solid var(--av-line);
  background: none !important;
  font-size: 12.5px;
  vertical-align: baseline;
}

body.dashboard-body .data-table td strong {
  font-weight: 500;
}

body.dashboard-body .data-table tbody tr:hover td {
  background: var(--av-brand-soft) !important;
}

body.dashboard-body .data-table .align-right {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

body.dashboard-body .data-table th:not(:first-child),
body.dashboard-body .data-table td:not(:first-child) {
  padding-left: 16px;
}

/* Status por texto + ponto, sem pílula colorida */
body.dashboard-body .status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none !important;
  color: var(--av-muted) !important;
  font-size: 11.5px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
}

body.dashboard-body .status::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--av-faint);
}

body.dashboard-body .status-aberto::before,
body.dashboard-body .status-aberta::before {
  background: var(--av-brand);
}

body.dashboard-body .status-confirmado::before {
  background: var(--av-ok);
}

body.dashboard-body .status-cancelado::before {
  background: var(--av-alert);
}

/* ---------- 8. Agenda: timeline ---------- */

body.dashboard-body .agenda-primary-toolbar .agenda-public-link,
body.dashboard-body .agenda-primary-toolbar .agenda-block-shortcut {
  min-height: 32px;
  padding: 0;
  border: 0 !important;
  background: none !important;
  /* --av-muted ficava pouco nítido demais pra parecer clicável — --av-ink
     mais o sublinhado deixam claro que é um link, sem virar botão cheio. */
  color: var(--av-ink) !important;
  font-size: 12px;
  font-weight: 500;
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--av-brand) 55%, transparent);
  text-underline-offset: 3px;
}

body.dashboard-body .agenda-block-shortcut span[aria-hidden],
body.dashboard-body .agenda-public-link span[aria-hidden] {
  display: none;
}

body.dashboard-body .timeline-professionals span {
  font-size: 9.5px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--av-faint);
}

body.dashboard-body .timeline-hour {
  font-size: 10.5px;
  color: var(--av-faint);
  font-variant-numeric: tabular-nums;
}

body.dashboard-body .timeline-line {
  background: var(--av-line);
}

body.dashboard-body .timeline-line.is-half {
  background: transparent;
}

body.dashboard-body .timeline-appointment {
  min-height: 56px;
  padding: 9px 12px;
  border: 0;
  border-left: 2px solid var(--av-ok);
  border-radius: 0;
  background: var(--av-brand-soft);
  box-shadow: none;
  overflow: hidden;
  text-align: left;
  color: var(--av-ink);
  transition: background .14s ease;
}

body.dashboard-body .timeline-appointment:hover {
  background: color-mix(in srgb, var(--av-brand) 18%, transparent);
}

body.dashboard-body .timeline-appointment strong {
  display: block;
  font-size: 12px;
  font-weight: 500;
}

body.dashboard-body .timeline-appointment span,
body.dashboard-body .timeline-appointment small {
  font-size: 10.5px;
  color: var(--av-muted);
}

body.dashboard-body .timeline-appointment.status-cancelado {
  border-left-color: var(--av-alert);
  opacity: .5;
}

body.dashboard-body .timeline-appointment[data-cor="0"],
body.dashboard-body .timeline-appointment[data-cor="4"] { border-left-color: var(--av-ok); }
body.dashboard-body .timeline-appointment[data-cor="1"],
body.dashboard-body .timeline-appointment[data-cor="5"] { border-left-color: var(--av-brand); }
body.dashboard-body .timeline-appointment[data-cor="2"],
body.dashboard-body .timeline-appointment[data-cor="6"] { border-left-color: color-mix(in srgb, var(--av-brand) 40%, #8f7fc0); }
body.dashboard-body .timeline-appointment[data-cor="3"],
body.dashboard-body .timeline-appointment[data-cor="7"] { border-left-color: color-mix(in srgb, var(--av-ok) 55%, var(--av-muted)); }

/* ---------- 9. Comandas ---------- */

body.dashboard-body .command-toolbar {
  border: 0;
  background: none;
  padding: 0;
  margin: 0 0 2px;
  align-items: baseline;
}

body.dashboard-body .command-status-tabs {
  gap: 24px;
  border-bottom: 1px solid var(--av-line);
}

body.dashboard-body .command-status-tabs .button {
  min-height: 34px;
  padding: 0 0 9px;
  border: 0 !important;
  border-radius: 0;
  background: none !important;
  color: var(--av-muted) !important;
  font-weight: 400;
}

body.dashboard-body .command-status-tabs .button.is-active {
  color: var(--av-ink) !important;
  box-shadow: inset 0 -1px 0 0 var(--av-brand) !important;
}

body.dashboard-body .command-financial-summary {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border: 0;
  border-top: 1px solid var(--av-line);
  border-bottom: 1px solid var(--av-line);
  border-radius: 0;
  background: none;
  padding: 16px 0;
}

body.dashboard-body .command-financial-summary span {
  font-size: 9.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--av-faint);
}

body.dashboard-body .command-financial-summary strong {
  display: block;
  margin: 5px 0 0;
  font-size: 16px;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}

body.dashboard-body .command-financial-summary .has-balance strong {
  color: var(--av-brand);
}

body.dashboard-body .line-item {
  border: 0;
  border-bottom: 1px solid var(--av-line);
  border-radius: 0;
  background: none !important;
  padding: 12px 0;
}

body.dashboard-body .line-item strong {
  font-size: 12.5px;
  font-weight: 400;
}

body.dashboard-body .line-item span {
  color: var(--av-faint);
  font-size: 11.5px;
}

body.dashboard-body .command-compact-card {
  border: 0;
  border-bottom: 1px solid var(--av-line);
  border-radius: 0;
  background: none !important;
  box-shadow: none !important;
}

/* ---------- 10. Clientes, profissionais, serviços ---------- */

body.dashboard-body .card-grid {
  display: block;
}

body.dashboard-body .entity-card {
  /* .entity-avatar fica display:none logo abaixo, então sobram só 2 filhos
     reais (.entity-content e o botão excluir) — grid de 2 colunas, não 3,
     senão o botão fica solto no meio com espaço vazio à direita. */
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: baseline;
  gap: 16px;
  min-width: 0;
  border: 0 !important;
  border-bottom: 1px solid var(--av-line) !important;
  border-radius: 0;
  background: none !important;
  padding: 15px 0;
}

body.dashboard-body .entity-card:hover {
  background: var(--av-brand-soft) !important;
}

body.dashboard-body .entity-avatar {
  display: none;
}

body.dashboard-body .entity-content {
  min-width: 0;
}

body.dashboard-body .entity-content h3 {
  font-family: var(--av-sans);
  font-size: 12.5px;
  font-weight: 400;
  margin: 0;
  overflow-wrap: anywhere;
}

body.dashboard-body .entity-content p,
body.dashboard-body .entity-note {
  font-size: 11.5px;
  color: var(--av-muted);
  margin: 0;
}

body.dashboard-body .entity-card .icon-button-danger {
  opacity: 0;
  transition: opacity .14s ease;
}

body.dashboard-body .entity-card:hover .icon-button-danger,
body.dashboard-body .entity-card:focus-within .icon-button-danger {
  opacity: 1;
}

body.dashboard-body .birthday-card {
  border: 0 !important;
  background: none !important;
  padding: 0;
  margin: 0 0 22px;
}

body.dashboard-body .birthday-card .section-heading p {
  display: none;
}

body.dashboard-body .birthday-card h2 {
  font-family: var(--av-sans);
  font-size: 12px;
  font-weight: 400;
  color: var(--av-muted);
}

body.dashboard-body .birthday-item {
  /* A linha tem até 4 filhos (dia, nome, "Enviar agora", "Mandar eu
     mesmo"): sem quebra de linha e sem largura mínima no nome, o <div>
     flexível (min-width:0 vem do styles.css base) era espremido a quase 0px
     pelos dois botões, quebrando o texto letra por letra. */
  flex-wrap: wrap;
  border: 0;
  border-bottom: 1px solid var(--av-line);
  border-radius: 0;
  background: none !important;
  padding: 11px 0;
}

body.dashboard-body .birthday-item > div {
  flex: 1 0 160px;
  min-width: 160px;
}

body.dashboard-body .birthday-day {
  font-family: var(--av-serif);
  color: var(--av-brand);
}

body.dashboard-body .management-card {
  padding: 0;
  border: 0 !important;
  border-bottom: 1px solid var(--av-line) !important;
  border-radius: 0;
  background: none !important;
}

body.dashboard-body .management-card-header {
  border: 0;
  padding: 16px 0;
  background: none;
}

body.dashboard-body .management-card-header h3 {
  font-family: var(--av-sans);
  font-size: 12.5px;
  font-weight: 400;
}

body.dashboard-body .management-card-header p {
  font-size: 11.5px;
  color: var(--av-muted);
  margin: 0;
}

body.dashboard-body .service-card {
  /* Não é uma linha de tabela — o <article> empilha até 7 filhos (heading,
     h3, p, fotos/edição opcionais, preço, rodapé). Um grid de 4 colunas
     espremia título e duração em colunas erradas e quebrava o texto. */
  display: block;
  min-width: 0;
  border: 0 !important;
  border-bottom: 1px solid var(--av-line) !important;
  border-radius: 0;
  background: none !important;
  padding: 15px 0;
}

body.dashboard-body .service-symbol {
  display: none;
}

body.dashboard-body .service-card-heading {
  margin-bottom: 6px;
}

body.dashboard-body .service-card h3 {
  font-family: var(--av-sans);
  font-size: 12.5px;
  font-weight: 400;
  margin: 0;
}

body.dashboard-body .service-card > p {
  font-size: 11.5px;
  color: var(--av-muted);
  margin: 0;
}

body.dashboard-body .service-card-footer {
  border: 0;
  padding: 0;
  justify-content: flex-end;
}

body.dashboard-body .service-photo-grid img {
  border-radius: var(--av-radius);
  border: 1px solid var(--av-line);
}

/* ---------- 11. Relatórios ---------- */

body.dashboard-body .report-filter {
  border: 0;
  background: none;
  padding: 0;
}

body.dashboard-body .report-period-shortcuts {
  gap: 20px;
}

body.dashboard-body .report-period-shortcuts .button {
  min-height: 30px;
  padding: 0 0 3px;
  border: 0 !important;
  border-radius: 0;
  background: none !important;
  color: var(--av-faint) !important;
  font-weight: 400;
}

body.dashboard-body .report-period-shortcuts .button:hover {
  color: var(--av-ink) !important;
  box-shadow: inset 0 -1px 0 0 var(--av-brand) !important;
}

body.dashboard-body .report-delta {
  display: block;
  margin: 5px 0 0;
  padding: 0;
  border: 0;
  background: none !important;
  color: var(--av-muted) !important;
  font-size: 11px;
  font-weight: 400;
}

body.dashboard-body .report-delta--down {
  color: var(--av-alert) !important;
}

body.dashboard-body .report-grid,
body.dashboard-body .report-card {
  border: 0 !important;
  background: none !important;
  padding: 0;
}

body.dashboard-body .report-card + .report-card {
  margin-top: 32px;
}

body.dashboard-body .report-card .section-heading h3 {
  font-family: var(--av-sans);
  font-size: 9.5px;
  font-weight: 400;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--av-faint);
}

body.dashboard-body .report-card .section-heading p {
  display: none;
}

body.dashboard-body .report-bar-chart {
  gap: 20px;
  border-bottom: 1px solid var(--av-line);
  /* Cada barra é flex:1 (styles.css) sem largura mínima — com muitas
     semanas no período, o valor em reais espremia a ponto de quebrar
     caractere por caractere. Uma largura mínima por barra + rolagem
     horizontal no conjunto resolve sem cortar nenhuma semana da lista. */
  overflow-x: auto;
  padding-bottom: 4px;
}

body.dashboard-body .report-bar-chart__bar {
  flex: 1 0 64px;
  min-width: 64px;
  background: var(--av-brand-soft);
  border-top: 2px solid var(--av-brand);
  border-radius: 0;
}

body.dashboard-body .report-bar-chart__bar span {
  font-size: 11px;
  color: var(--av-muted);
  font-variant-numeric: tabular-nums;
}

body.dashboard-body .report-bar-chart__bar small {
  font-size: 10.5px;
  color: var(--av-faint);
}

body.dashboard-body .ranking-list > li {
  /* .ranking-position fica oculta logo abaixo — sem justify-content, o
     nome e a contagem (os 2 filhos que sobram) ficavam colados à esquerda
     em vez do número aparecer alinhado à direita. */
  justify-content: space-between;
  border: 0;
  border-bottom: 1px solid var(--av-line);
  border-radius: 0;
  background: none !important;
  padding: 10px 0;
  font-size: 12.5px;
}

body.dashboard-body .ranking-position {
  display: none;
}

body.dashboard-body .ranking-list > li small {
  display: none;
}

body.dashboard-body .ranking-list > li b {
  font-weight: 400;
  color: var(--av-muted);
  font-variant-numeric: tabular-nums;
}

/* ---------- 12. Configurações e planos ---------- */

body.dashboard-body .settings-subnav {
  display: flex;
  gap: 24px;
  border-bottom: 1px solid var(--av-line);
  margin: 0 0 26px;
}

body.dashboard-body .settings-subnav__button {
  padding: 0 0 10px;
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--av-muted);
  font-family: inherit;
  font-size: 12.5px;
}

body.dashboard-body .settings-subnav__button[aria-expanded="true"] {
  color: var(--av-ink);
  box-shadow: inset 0 -1px 0 0 var(--av-brand);
}

body.dashboard-body .settings-subnav__icon {
  display: none;
}

body.dashboard-body .settings-inner-group {
  border: 0 !important;
  border-bottom: 1px solid var(--av-line) !important;
  border-radius: 0;
  background: none !important;
}

body.dashboard-body .settings-inner-group > summary,
body.dashboard-body .create-panel > summary,
body.dashboard-body .settings-disclosure > summary {
  padding: 16px 0;
  border: 0;
  background: none;
  font-size: 12.5px;
}

body.dashboard-body .settings-inner-group > summary small,
body.dashboard-body .create-panel > summary small {
  display: block;
  font-size: 11.5px;
  color: var(--av-faint);
}

body.dashboard-body .create-panel {
  border: 0 !important;
  border-bottom: 1px solid var(--av-line) !important;
  border-radius: 0;
  background: none !important;
  margin: 0 0 22px;
}

body.dashboard-body .theme-option {
  border-radius: var(--av-radius);
  box-shadow: none;
}

body.dashboard-body .theme-option {
  border: 1px solid var(--av-line);
  background: none;
  overflow: hidden;
}

body.dashboard-body .theme-option:has(input:checked) {
  border-color: var(--av-brand);
}

body.dashboard-body .theme-option strong {
  font-weight: 400;
  font-size: 11px;
}

/* Planos: sem selo SVG nem gradiente — selo de texto simples, coerente com
   o resto do tema clean (sem imagem, só tipografia e cor de destaque). */
body.dashboard-body .plan-option__badge {
  display: inline-block;
  margin: 0 0 10px;
  padding: 3px 10px;
  border-radius: 999px;
  background: var(--av-brand);
  color: var(--av-brand-contrast);
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
}

body.dashboard-body .plan-option__badge--promo {
  background: var(--av-promo);
  color: var(--av-promo-contrast);
}

body.dashboard-body .plan-option--promo { border-color: var(--av-promo); }

body.dashboard-body .plan-comparison {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border: 1px solid var(--av-line);
  border-radius: var(--av-radius-card);
  overflow: hidden;
}

body.dashboard-body .plan-option {
  border: 0 !important;
  border-right: 1px solid var(--av-line) !important;
  border-radius: 0;
  background: none !important;
  box-shadow: none !important;
  padding: 26px 22px;
}

body.dashboard-body .plan-option:last-child {
  border-right: 0 !important;
}

body.dashboard-body .plan-option--plus,
body.dashboard-body .plan-option--featured {
  background: var(--av-brand-soft) !important;
  box-shadow: inset 0 2px 0 0 var(--av-brand) !important;
}

body.dashboard-body .plan-option__eyebrow {
  font-size: 10px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--av-muted);
}

body.dashboard-body .plan-option--plus .plan-option__eyebrow,
body.dashboard-body .plan-option--featured .plan-option__eyebrow {
  color: var(--av-brand);
}

body.dashboard-body .plan-option h3 {
  font-family: var(--av-serif);
  font-size: 34px;
  font-weight: 400;
  letter-spacing: -.02em;
  margin: 12px 0 4px;
}

body.dashboard-body .plan-option h3 small {
  font-family: var(--av-sans);
  font-size: 11px;
  color: var(--av-faint);
}

body.dashboard-body .plan-option ul {
  margin: 18px 0 24px;
  padding: 18px 0 0;
  border-top: 1px solid var(--av-line);
  list-style: none;
  display: grid;
  gap: 10px;
}

body.dashboard-body .plan-option li {
  position: relative;
  padding-left: 18px;
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--av-ink);
}

body.dashboard-body .plan-option li::before {
  content: "✓";
  position: absolute;
  left: 0;
  color: var(--av-brand);
}

body.dashboard-body .plan-option__destaque {
  font-size: 11px;
  color: var(--av-brand);
}

body.dashboard-body .plan-status-card {
  border: 0 !important;
  border-bottom: 1px solid var(--av-line) !important;
  border-radius: 0;
  background: none !important;
  padding: 0 0 20px;
  margin: 0 0 26px;
}

body.dashboard-body .plan-price strong {
  font-family: var(--av-serif);
  font-weight: 400;
  color: var(--av-brand);
}

body.dashboard-body .package-grid {
  display: inline-flex;
  gap: 0;
  border: 1px solid var(--av-line);
  border-radius: var(--av-radius);
  overflow: hidden;
}

body.dashboard-body .package-option {
  border: 0;
  border-right: 1px solid var(--av-line);
  border-radius: 0;
  background: none;
  padding: 9px 16px;
  font-size: 11px;
  color: var(--av-muted);
}

body.dashboard-body .package-option:last-child {
  border-right: 0;
}

body.dashboard-body .plus-lock-badge {
  border: 0;
  background: none !important;
  padding: 0 0 0 8px;
  color: var(--av-faint) !important;
  font-size: 10.5px;
  font-weight: 400;
}

/* ---------- 13. Diálogos e estados ---------- */

body.dashboard-body .drawer-dialog {
  border: 1px solid var(--av-line);
  border-radius: var(--av-radius-card);
  background: var(--av-surface);
  box-shadow: none;
  color: var(--av-ink);
}

body.dashboard-body .drawer-dialog::backdrop {
  background: color-mix(in srgb, var(--av-bg) 82%, transparent);
  backdrop-filter: blur(2px);
}

body.dashboard-body .dialog-header {
  border-bottom: 1px solid var(--av-line);
  background: none;
}

body.dashboard-body .dialog-header .eyebrow {
  font-size: 9.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--av-faint);
}

body.dashboard-body .dialog-header h2 {
  font-size: 21px;
}

body.dashboard-body .state-card {
  border: 1px dashed var(--av-line) !important;
  background: none !important;
  color: var(--av-muted);
}

body.dashboard-body .message {
  border: 0;
  border-left: 2px solid var(--av-line);
  border-radius: 0;
  background: none !important;
  padding: 10px 0 10px 14px;
  font-size: 11.5px;
}

body.dashboard-body .message--error {
  border-left-color: var(--av-alert);
  color: var(--av-alert);
}

body.dashboard-body .message--success {
  border-left-color: var(--av-ok);
  color: var(--av-ok);
}

body.dashboard-body .season-banner {
  border: 0;
  border-left: 2px solid var(--av-brand);
  border-radius: 0;
  background: none !important;
  padding: 12px 0 12px 14px;
}

body.dashboard-body .season-banner__icon {
  display: none;
}

/* ---------- 14. Boot ---------- */

/* A tela de boot roda ANTES de saber o tema do estabelecimento (aparece
   enquanto loadEstablishment() ainda não voltou). Ela é fixa (fundo escuro +
   texto claro, do styles.css base) de propósito — não existe "tema certo"
   pra aplicar antes de saber qual é. A versão anterior sobrescrevia só o
   fundo com var(--av-bg): quando o tema do estabelecimento é claro, o fundo
   virava claro mas o texto continuava com a cor clara fixa do base — texto
   sumindo em cima do próprio fundo. Mantido só o ajuste cosmético (esconder
   o brilho decorativo), sem mexer em cor.*/
body.dashboard-body .panel-boot__glow {
  display: none;
}

body.dashboard-body .panel-boot__content strong {
  font-family: var(--av-serif);
  font-weight: 400;
}

/* ---------- 15. Celular ---------- */

@media (max-width: 900px) {
  body.dashboard-body .app-shell {
    grid-template-columns: 1fr;
  }

  body.dashboard-body .workspace {
    padding: 20px 18px 90px;
  }

  body.dashboard-body .page-header h1,
  body.dashboard-body .toolbar-copy h2 {
    font-size: 23px;
  }

  body.dashboard-body .mobile-header {
    border-bottom: 1px solid var(--av-line);
    background: var(--av-bg);
    box-shadow: none;
  }

  body.dashboard-body .agenda-summary-grid,
  body.dashboard-body .command-financial-summary {
    grid-template-columns: repeat(3, 1fr);
  }

  body.dashboard-body .plan-comparison {
    grid-template-columns: 1fr;
  }

  body.dashboard-body .plan-option {
    border-right: 0 !important;
    border-bottom: 1px solid var(--av-line) !important;
  }

  body.dashboard-body .entity-card {
    grid-template-columns: 1fr auto;
  }

  body.dashboard-body .bottom-nav {
    border-top: 1px solid var(--av-line);
    background: var(--av-bg);
    box-shadow: none;
    padding-bottom: env(safe-area-inset-bottom);
  }

  body.dashboard-body .bottom-nav-item {
    min-height: 52px;
    border-radius: 0;
    background: none !important;
    color: var(--av-muted);
    font-size: 10.5px;
  }

  body.dashboard-body .bottom-nav-item.is-active {
    color: var(--av-brand);
    background: none !important;
    box-shadow: inset 0 2px 0 0 var(--av-brand);
  }

  body.dashboard-body .bottom-nav-item svg {
    width: 18px;
    height: 18px;
    stroke-width: 1.6;
  }

  body.dashboard-body .data-table thead {
    display: none;
  }

  body.dashboard-body .data-table tr {
    display: block;
    padding: 14px 0;
    border-bottom: 1px solid var(--av-line);
  }

  body.dashboard-body .data-table td {
    /* Sem justify-content:space-between: com 1 valor só, empurra pra
       ponta oposta do rótulo; com 2+ (ex.: "Marcar paga" + "Excluir" nas
       despesas), distribui os itens com espaços desiguais e empurra o
       último pra fora da margem visual do cartão. margin-right:auto no
       ::before resolve os dois casos, com qualquer número de filhos. */
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px 16px;
    padding: 3px 0;
    border: 0;
  }

  body.dashboard-body .data-table td::before {
    content: attr(data-label);
    margin-right: auto;
    font-size: 11px;
    color: var(--av-faint);
  }
}

/* ---------- 16. Login e páginas públicas ---------- */

body.auth-page {
  background: var(--av-bg);
  color: var(--av-ink);
  font-family: var(--av-sans);
}

body.auth-page h1,
body.auth-page h2 {
  font-family: var(--av-serif);
  font-weight: 400;
  letter-spacing: -.01em;
}

body.auth-page .form-card {
  border: 0;
  border-left: 1px solid var(--av-line);
  border-radius: 0;
  background: none;
  box-shadow: none;
  padding: 38px 34px;
}

/* A marca aparece uma vez só: a do formulário sai no desktop. */
@media (min-width: 900px) {
  body.auth-page .auth-form-brand {
    display: none;
  }
}

body.auth-page .auth-aside {
  border: 0;
  background: none;
}

body.auth-page .benefit-list {
  list-style: none;
  padding: 0;
  margin: 22px 0 0;
  display: grid;
  gap: 9px;
}

body.auth-page .benefit-list li {
  font-size: 12px;
  color: var(--av-muted);
}

body.auth-page input:not([type="checkbox"]):not([type="radio"]) {
  border: 0;
  border-bottom: 1px solid var(--av-line-strong);
  border-radius: 0;
  background: none;
  color: var(--av-ink);
  padding: 8px 0;
  font-size: 12.5px;
}

body.auth-page .field > label,
body.auth-page .field-label {
  font-size: 9.5px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--av-muted);
}

body.auth-page .password-toggle {
  border: 0;
  background: none;
  color: var(--av-faint);
  font-size: 10.5px;
}

body.auth-page .remember-access {
  border: 0;
  border-radius: 0;
  background: none;
  padding: 0;
}

body.auth-page .remember-access strong {
  font-weight: 400;
  font-size: 11px;
  color: var(--av-muted);
}

body.auth-page .remember-access small {
  display: none;
}

body.auth-page .auth-choice {
  color: var(--av-faint);
  font-size: 10.5px;
}

body.auth-page .form-footer {
  font-size: 11px;
  color: var(--av-faint);
  text-align: center;
  margin: 6px 0 0;
}

/* O convite de instalar o app não vive mais no login (vai para a home). */
body.auth-page .form-card .install-card {
  display: none !important;
}

/* Folha inferior no iPhone, não diálogo central. */
body.auth-page .install-dialog {
  top: auto;
  bottom: 0;
  width: min(100vw, 520px);
  margin: 0 auto;
  border: 1px solid var(--av-line);
  border-bottom: 0;
  border-radius: var(--av-radius-card) var(--av-radius-card) 0 0;
  background: var(--av-surface);
  color: var(--av-ink);
  box-shadow: none;
  padding: 26px 24px calc(26px + env(safe-area-inset-bottom));
}

body.auth-page .install-dialog::backdrop {
  background: color-mix(in srgb, var(--av-bg) 80%, transparent);
}

body.auth-page .install-dialog ol {
  list-style: none;
  padding: 0;
  margin: 18px 0 0;
  counter-reset: passo;
  display: grid;
  gap: 12px;
}

body.auth-page .install-dialog li {
  counter-increment: passo;
  display: flex;
  gap: 12px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--av-ink);
}

body.auth-page .install-dialog li::before {
  content: "0" counter(passo);
  color: var(--av-brand);
  font-size: 10.5px;
  font-variant-numeric: tabular-nums;
}

/* Faixa de instalação no rodapé da home pública. */
body.landing-page .site-footer .install-card,
body.landing-page .install-strip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  border: 0;
  border-top: 1px solid var(--av-line);
  border-radius: 0;
  background: none;
  padding: 18px 0;
  font-size: 11.5px;
  color: var(--av-muted);
}

body.landing-page .install-strip .button {
  min-height: 0;
  padding: 0;
  border: 0;
  border-bottom: 1px solid color-mix(in srgb, var(--av-brand) 45%, transparent);
  border-radius: 0;
  background: none;
  color: var(--av-brand);
  font-size: 11.5px;
}

@media (prefers-reduced-motion: reduce) {
  body.dashboard-body *,
  body.auth-page * {
    transition: none !important;
    animation: none !important;
  }
}
