/* ============================================================
   AGENDA PSI — DASHBOARD 2.0 — BASE VISUAL OFICIAL
   Transplantado de dashboard-design-preview.html (protótipo homologado).
   As classes .dd-* nao existem em nenhum outro CSS do projeto, entao a
   estrutura antiga do dashboard fica automaticamente isolada: nada do
   painel-2.0-runtime.css / agenda-psi-*.css alcanca este DOM.
   Alteracoes aqui valem SO para o Dashboard (painel.html).
   ============================================================ */

/* ============================================================
   AGENDA PSI — DASHBOARD — PROTÓTIPO ISOLADO (nova direção visual)
   Base: print de referência do usuário. Sidebar clara, leve, premium.
   Não conectado a API/banco. Dados reais x demonstrativos marcados no HTML.
   ============================================================ */

:root{
  --dd-violet:#6d5ce0;
  --dd-violet-dark:#5847c9;
  --dd-violet-soft:#eeebfc;
  --dd-violet-line:#e2ddf8;
  --dd-ink:#211f30;
  --dd-ink-soft:#504d62;
  --dd-ink-mute:#69657d;
  --dd-bg:#f4f3f8;
  --dd-surface:#ffffff;
  --dd-surface-subtle:#f7f5fb;
  --dd-surface-muted:#ece9f3;
  --dd-border:#dfdae9;
  --dd-border-strong:#cec7dd;

  --dd-green:#12986a;      --dd-green-soft:#e5f8ef;
  --dd-blue:#2f6fce;       --dd-blue-soft:#e9f1fd;
  --dd-amber:#b3760f;      --dd-amber-soft:#fdf3df;
  --dd-red:#c93a2e;        --dd-red-soft:#fbeae8;

  --dd-font-display:'DM Sans',-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --dd-font-body:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;

  --dd-radius-md:12px; --dd-radius-lg:18px; --dd-radius-xl:22px; --dd-radius-full:999px;
  --dd-shadow-sm:0 1px 3px rgba(33,26,72,.06),0 8px 22px rgba(33,26,72,.055);
  --dd-shadow-md:0 14px 34px rgba(33,26,72,.10),0 3px 8px rgba(33,26,72,.045);
  --dd-shadow-focus:0 0 0 4px rgba(109,92,224,.20);
  --dd-ease:cubic-bezier(.4,0,.2,1); --dd-fast:150ms; --dd-base:220ms;

  --dd-sidebar-w:252px;
  --dd-sidebar-w-collapsed:78px;
  --dd-content-max:1360px;
}

*,*::before,*::after{box-sizing:border-box}
body{
  margin:0;font-family:var(--dd-font-body);font-size:15px;color:var(--dd-ink);
  background:var(--dd-bg);line-height:1.55;-webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:var(--dd-font-display);margin:0;color:var(--dd-ink);text-wrap:balance}
p{margin:0}
button{font-family:inherit}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

:focus{outline:none}
:focus-visible{outline:none;box-shadow:var(--dd-shadow-focus);border-radius:10px}
.dd-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.dd-skip-link{position:fixed;top:-100px;left:12px;z-index:999;background:var(--dd-violet);color:#fff;padding:10px 18px;border-radius:10px;font-weight:700;font-size:13px;transition:top var(--dd-fast) var(--dd-ease)}
.dd-skip-link:focus{top:12px}

.dd-proto-banner{
  position:sticky;top:0;z-index:60;background:var(--dd-surface);color:var(--dd-ink-mute);font-size:11px;
  padding:5px 16px;text-align:center;display:flex;gap:7px;align-items:center;justify-content:center;flex-wrap:wrap;
  border-bottom:1px solid var(--dd-border);
}
.dd-proto-banner .badge{
  display:inline-flex;align-items:center;font-weight:800;font-size:10px;letter-spacing:.04em;text-transform:uppercase;
  color:var(--dd-violet);background:var(--dd-violet-soft);padding:3px 9px;border-radius:999px;
}

/* Marca de dado demonstrativo, usada em blocos que ainda não existem de verdade */
.dd-demo-flag{
  display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;letter-spacing:.03em;
  text-transform:uppercase;color:#8a5a09;background:#fdf3df;padding:3px 9px;border-radius:999px;
}

/* ============================================================
   PRIMITIVOS
   ============================================================ */
.dd-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:13.5px;
  padding:10px 18px;border-radius:var(--dd-radius-md);border:1px solid transparent;cursor:pointer;
  transition:background var(--dd-fast) var(--dd-ease),border-color var(--dd-fast) var(--dd-ease),box-shadow var(--dd-fast) var(--dd-ease),transform var(--dd-fast) var(--dd-ease);line-height:1.2;white-space:nowrap;
}
.dd-btn--primary{background:var(--dd-violet);color:#fff;box-shadow:var(--dd-shadow-sm)}
.dd-btn--primary:hover{background:var(--dd-violet-dark);box-shadow:0 8px 20px rgba(88,71,201,.18)}
.dd-btn:active{transform:translateY(1px)}
.dd-btn:disabled,.dd-btn[aria-disabled="true"]{opacity:.52;cursor:not-allowed;box-shadow:none;transform:none}
.dd-btn--secondary{background:var(--dd-surface);color:var(--dd-ink);border-color:var(--dd-border-strong)}
.dd-btn--secondary:hover{border-color:var(--dd-violet);background:var(--dd-violet-soft)}
.dd-btn--ghost{background:transparent;color:var(--dd-ink-soft);border-color:transparent}
.dd-btn--ghost:hover{background:var(--dd-bg);color:var(--dd-ink)}
.dd-icon-btn{
  display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--dd-radius-md);
  border:1px solid transparent;background:transparent;color:var(--dd-ink-soft);cursor:pointer;position:relative;
  transition:background var(--dd-fast) var(--dd-ease);
}
.dd-icon-btn:hover{background:var(--dd-surface-muted);color:var(--dd-ink)}
.dd-icon-btn svg{width:19px;height:19px}

.dd-card{background:var(--dd-surface);border:1px solid var(--dd-border);border-radius:var(--dd-radius-lg);box-shadow:var(--dd-shadow-sm)}

.dd-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:3.5px 9px;border-radius:999px;line-height:1;white-space:nowrap}
.dd-badge svg{width:11px;height:11px}
.dd-badge--success{background:var(--dd-green-soft);color:#0b6b47}
.dd-badge--info{background:var(--dd-blue-soft);color:#1f4f96}
.dd-badge--warning{background:var(--dd-amber-soft);color:#8a5a09}
.dd-badge--danger{background:var(--dd-red-soft);color:#a32a20}
.dd-badge--neutral{background:#eef0f4;color:#4a5164}

.dd-skeleton{background:linear-gradient(90deg,var(--dd-bg) 25%,var(--dd-border) 37%,var(--dd-bg) 63%);background-size:400% 100%;animation:dd-shimmer 1.4s ease infinite;border-radius:10px}
@keyframes dd-shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}

.dd-toast-region{position:fixed;bottom:22px;right:22px;z-index:200;display:flex;flex-direction:column;gap:10px;max-width:340px}
.dd-toast{display:flex;align-items:flex-start;gap:10px;background:var(--dd-ink);color:#fff;border-radius:12px;padding:12px 15px;box-shadow:var(--dd-shadow-md);font-size:13px;animation:dd-toast-in var(--dd-base) var(--dd-ease)}
.dd-toast svg{width:17px;height:17px;flex:none;margin-top:1px;color:#b7aeff}
@keyframes dd-toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

[data-tip]{position:relative}
[data-tip]::after{
  content:attr(data-tip);position:absolute;left:100%;top:50%;transform:translateY(-50%) translateX(8px) scale(.95);
  background:var(--dd-ink);color:#fff;font-size:12px;font-weight:600;padding:6px 10px;border-radius:8px;
  white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--dd-fast) var(--dd-ease),transform var(--dd-fast) var(--dd-ease);z-index:80;
}
.dd-shell[data-sidebar="collapsed"] [data-tip]:hover::after,
.dd-shell[data-sidebar="collapsed"] [data-tip]:focus-visible::after{opacity:1;transform:translateY(-50%) translateX(12px) scale(1)}

.dd-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:44px 20px}
.dd-state svg{width:76px;height:76px}
.dd-state h3{font-size:16px}
.dd-state p{color:var(--dd-ink-soft);font-size:13px;max-width:320px}

/* ============================================================
   SHELL
   ============================================================ */
.dd-shell{display:flex;min-height:100vh}

.dd-sidebar{
  width:var(--dd-sidebar-w);flex:none;position:sticky;top:0;height:100vh;background:var(--dd-surface);
  border-right:1px solid var(--dd-border-strong);display:flex;flex-direction:column;padding:18px 14px;
  transition:width var(--dd-base) var(--dd-ease);z-index:40;
}
.dd-shell[data-sidebar="collapsed"] .dd-sidebar{width:var(--dd-sidebar-w-collapsed);padding-left:14px;padding-right:14px}

.dd-brand-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 20px;min-width:0}
.dd-brand{display:flex;align-items:center;gap:10px;min-width:0}
.dd-brand-mark{width:36px;height:36px;flex:none;border-radius:11px;overflow:hidden;display:flex;align-items:center;justify-content:center}
.dd-brand-mark img{width:100%;height:100%;object-fit:cover;display:block}
.dd-brand-name{font-family:var(--dd-font-display);font-weight:700;font-size:17px;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dd-shell[data-sidebar="collapsed"] .dd-brand-name,
.dd-shell[data-sidebar="collapsed"] .dd-nav-text,
.dd-shell[data-sidebar="collapsed"] .dd-sidebar-foot,
.dd-shell[data-sidebar="collapsed"] .dd-collapse-toggle span{display:none}
/* Colapsada: a marca e o botao de recolher nao cabem lado a lado (a marca
   sozinha ja ocupa a largura da sidebar recolhida) — em vez de sobrepor o
   botao por cima da logo com position:absolute (bug: circulo cobria o
   simbolo), a linha vira uma coluna com os dois centralizados, um embaixo
   do outro. O botao continua no fluxo normal (sem position:absolute),
   preservando tab order, foco visivel e area de clique. */
.dd-shell[data-sidebar="collapsed"] .dd-brand-row{flex-direction:column;justify-content:center;gap:10px;padding:4px 4px 16px}

.dd-collapse-toggle{
  display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:999px;
  border:1px solid var(--dd-border);background:var(--dd-bg);color:var(--dd-ink-soft);cursor:pointer;flex:none;
  transition:background var(--dd-fast) var(--dd-ease),color var(--dd-fast) var(--dd-ease),border-color var(--dd-fast) var(--dd-ease);
}
.dd-collapse-toggle:hover{background:var(--dd-violet-soft);color:var(--dd-violet);border-color:var(--dd-violet-line)}
.dd-collapse-toggle svg{width:13px;height:13px;transition:transform var(--dd-base) var(--dd-ease)}
.dd-shell[data-sidebar="collapsed"] .dd-collapse-toggle svg{transform:rotate(180deg)}

.dd-nav{display:flex;flex-direction:column;gap:2px;flex:1;overflow-y:auto;overflow-x:hidden;margin-top:6px}
.dd-nav-label{color:var(--dd-ink-mute);font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:14px 12px 6px}
.dd-nav-label:first-child{padding-top:2px}
.dd-shell[data-sidebar="collapsed"] .dd-nav-label{display:none}
.dd-nav-item{
  display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;color:#3f3d52;text-decoration:none;
  font-size:14px;font-weight:600;border:none;background:transparent;cursor:pointer;width:100%;text-align:left;
  transition:background var(--dd-fast) var(--dd-ease),color var(--dd-fast) var(--dd-ease);min-height:44px;
}
.dd-nav-item svg{width:19px;height:19px;flex:none;color:#7b7891}
.dd-nav-item:hover{background:var(--dd-surface-muted)}
.dd-nav-item[aria-current="page"]{background:var(--dd-violet);color:#fff;box-shadow:var(--dd-shadow-sm)}
.dd-nav-item[aria-current="page"] svg{color:#fff}
.dd-shell[data-sidebar="collapsed"] .dd-nav-item{justify-content:center;padding:11px 0}

.dd-sidebar-foot{margin-top:10px;padding-top:14px;border-top:1px solid var(--dd-border);display:flex;flex-direction:column;gap:12px}
.dd-welcome-card{background:var(--dd-surface-subtle);border:1px solid var(--dd-border-strong);border-radius:var(--dd-radius-lg);padding:13px 13px 14px;display:flex;flex-direction:column;gap:3px;overflow:hidden}
.dd-welcome-illustration{width:82%;height:auto;display:block;margin:-2px auto 7px;opacity:.78}
.dd-welcome-card h4{font-size:13.5px;font-weight:700}
.dd-welcome-card p{font-size:11.5px;color:var(--dd-ink-soft);line-height:1.5;margin-bottom:10px}
.dd-welcome-card .dd-btn{width:100%;padding:8px 14px;font-size:12.5px;background:var(--dd-surface);border-color:var(--dd-border-strong)}
.dd-welcome-card .dd-btn:hover{background:var(--dd-violet);color:#fff;border-color:var(--dd-violet)}
.dd-help-link{display:flex;align-items:flex-start;gap:7px;font-size:12px;line-height:1.45;color:var(--dd-ink-soft);font-weight:600;padding:0 4px}
.dd-help-link svg{margin-top:1px}
.dd-help-link svg{width:15px;height:15px;flex:none}
.dd-help-link:hover{color:var(--dd-violet)}

.dd-main{flex:1;min-width:0;display:flex;flex-direction:column}

.dd-topbar{
  height:64px;flex:none;display:flex;align-items:center;gap:16px;padding:0 32px;background:rgba(242,240,247,.94);
  backdrop-filter:blur(8px);border-bottom:1px solid var(--dd-border);position:sticky;top:0;z-index:30;
}
.dd-search{flex:1;max-width:420px;display:flex;align-items:center;gap:9px;background:var(--dd-surface);border:1px solid var(--dd-border-strong);border-radius:999px;padding:9px 15px;box-shadow:0 1px 2px rgba(33,26,72,.025)}
.dd-search svg{width:17px;height:17px;color:var(--dd-ink-mute);flex:none}
.dd-search input{border:none;outline:none;font:inherit;font-size:13.5px;width:100%;background:transparent}
/* .dd-search-row so' existe como wrapper para o modo folha do mobile — no
   desktop ela "some" da caixa (display:contents) e svg/input/botao-fechar
   continuam filhos diretos do flex de .dd-search, exatamente como antes. */
.dd-search-row{display:contents}
.dd-search-toggle{display:none}
.dd-search-close{display:none;align-items:center;justify-content:center;width:28px;height:28px;flex:none;border:0;border-radius:50%;background:none;color:var(--dd-ink-mute);cursor:pointer;padding:0}
.dd-search-close svg{width:15px;height:15px}
.dd-search-close:hover{background:var(--dd-bg);color:var(--dd-ink)}
.dd-topbar-spacer{flex:1}
.dd-topbar-actions{display:flex;align-items:center;gap:6px;min-width:0}
.dd-notif-dot{position:absolute;top:6px;right:6px;background:var(--dd-violet);color:#fff;font-size:9.5px;font-weight:800;min-width:16px;height:16px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 3px;border:2px solid var(--dd-bg)}
.dd-profile-group{position:relative;display:flex;align-items:center;gap:2px}
.dd-profile{display:flex;align-items:center;gap:9px;padding:6px 10px 6px 6px;border-radius:999px;border:1px solid transparent;background:transparent;cursor:pointer}
.dd-profile:hover{background:var(--dd-surface);border-color:var(--dd-border)}
.dd-avatar{width:34px;height:34px;border-radius:50%;background:var(--dd-violet-soft);color:var(--dd-violet);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none}
.dd-profile-text{text-align:left;display:flex;flex-direction:column;line-height:1.25}
.dd-profile-text strong{font-size:12.5px;font-weight:700}
.dd-profile-text span{font-size:11px;color:var(--dd-ink-mute)}

/* Botao separado do chip de perfil: o chip (avatar+nome) sempre leva a
   Configuracoes; a seta abre este menu com a saida rapida do sistema. */
.dd-profile-toggle{display:flex;align-items:center;justify-content:center;flex:none;width:26px;height:26px;border:1px solid transparent;border-radius:50%;background:transparent;color:var(--dd-ink-mute);cursor:pointer}
.dd-profile-toggle:hover,.dd-profile-toggle[aria-expanded="true"]{background:var(--dd-surface);border-color:var(--dd-border);color:var(--dd-ink)}
.dd-profile-toggle svg{transition:transform var(--dd-fast) var(--dd-ease)}
.dd-profile-toggle[aria-expanded="true"] svg{transform:rotate(180deg)}
.dd-profile-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:70;display:none;min-width:200px;padding:6px;border:1px solid var(--dd-border);border-radius:var(--dd-radius-md);background:var(--dd-surface);box-shadow:var(--dd-shadow-md)}
.dd-profile-group.open .dd-profile-menu{display:block}
.dd-profile-menu-item{display:flex;align-items:center;gap:9px;width:100%;padding:9px 10px;border:0;border-radius:8px;background:none;color:var(--dd-red);font-size:13px;font-weight:600;text-align:left;cursor:pointer;transition:background var(--dd-fast) var(--dd-ease)}
.dd-profile-menu-item:hover,.dd-profile-menu-item:focus-visible{background:var(--dd-red-soft)}
.dd-profile-menu-item svg{flex:none}

.dd-content{flex:1;padding:30px 32px 48px;max-width:var(--dd-content-max);width:100%;margin:0 auto}

.dd-bottom-nav{display:none}
.dd-mais-sheet-backdrop{display:none}

@media (max-width:1180px){ .dd-content{padding:26px} }
@media (max-width:1024px){ :root{--dd-sidebar-w:220px} }

@media (max-width:780px){
  .dd-sidebar,.dd-collapse-toggle{display:none}
  .dd-shell[data-sidebar="collapsed"] .dd-sidebar{display:none}
  .dd-topbar{padding:0 14px;gap:8px}
  .dd-content{padding:18px 18px 96px}

  /* Topbar mobile: nome/CRP truncam em vez de espremer ou empurrar os
     icones de busca/notificacao/perfil para fora da tela. */
  .dd-profile-group{max-width:calc(100vw - 190px)}
  .dd-profile{padding:4px 6px 4px 4px;gap:7px;min-width:0;flex:1}
  .dd-profile-text{min-width:0}
  .dd-profile-text strong,.dd-profile-text span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:100%}
  .dd-avatar{width:30px;height:30px}
  .dd-profile-toggle{width:24px;height:24px}

  /* Busca global no mobile: em vez do campo sempre aberto (espremido entre
     logo/perfil — o bug reportado), o topbar mostra so' um botao de lupa.
     Tocar abre .dd-search como uma folha de largura total, abaixo da
     topbar, com o proprio campo + lista de resultados roláveis. Nada disto
     muda o desktop (>780px): la' .dd-search continua a caixa inline de
     sempre, .dd-search-toggle/.dd-search-close ficam ocultos por padrao. */
  .dd-search{display:none}
  /* !important em position: setupGlobalSearch() ja' fixa position:relative
     inline em .dd-search (para ancorar os resultados no desktop) — um
     estilo inline vence qualquer seletor de classe normal, entao sem isto
     o painel mobile ficava preso em position:relative (nao cobria a tela). */
  .dd-search.open{
    display:flex;flex-direction:column;position:fixed !important;top:64px;left:0;right:0;z-index:90;
    height:calc(100vh - 64px);height:calc(100dvh - 64px);
    max-width:none;margin:0;padding:0;border:0;border-radius:0;background:var(--dd-surface);
    box-shadow:var(--dd-shadow-md);
  }
  .dd-search-toggle{display:inline-flex}
  .dd-search-row{display:flex;align-items:center;gap:9px;flex:none;width:100%;padding:12px 16px;border-bottom:1px solid var(--dd-border);box-sizing:border-box}
  .dd-search-row input{font-size:15px}
  .dd-search-close{display:inline-flex}
  .v2-search-results{
    position:static;flex:1;min-height:0;width:100%;max-width:none;
    margin:0;padding:8px 12px calc(14px + env(safe-area-inset-bottom));border:0;border-radius:0;box-shadow:none;
    overflow-y:auto;overflow-x:hidden;box-sizing:border-box;
  }
  .v2-search-results.open{display:flex;flex-direction:column;gap:2px}

  .dd-bottom-nav{
    display:flex;position:fixed;bottom:0;left:0;right:0;z-index:50;background:var(--dd-surface);
    border-top:1px solid var(--dd-border);padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -6px 20px rgba(33,26,72,.06);
  }
  .dd-bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:none;color:var(--dd-ink-mute);font-size:10.5px;font-weight:700;padding:7px 2px;border-radius:10px;min-height:52px;justify-content:center}
  .dd-bottom-nav-item svg{width:21px;height:21px}
  .dd-bottom-nav-item[aria-current="page"]{color:var(--dd-violet)}
  .dd-mais-sheet-backdrop{display:none;position:fixed;inset:0;background:rgba(33,26,72,.4);z-index:70}
  .dd-mais-sheet-backdrop.is-open{display:block}
  .dd-mais-sheet{position:fixed;left:0;right:0;bottom:0;background:var(--dd-surface);z-index:71;border-radius:20px 20px 0 0;padding:10px 20px calc(20px + env(safe-area-inset-bottom));transform:translateY(100%);transition:transform var(--dd-base) var(--dd-ease);max-height:70vh;overflow-y:auto}
  .dd-mais-sheet-backdrop.is-open .dd-mais-sheet{transform:translateY(0)}
  .dd-mais-sheet-handle{width:36px;height:4px;border-radius:99px;background:var(--dd-border-strong);margin:6px auto 14px}
  .dd-mais-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .dd-mais-item{display:flex;align-items:center;gap:10px;padding:13px;border-radius:12px;background:var(--dd-bg);color:var(--dd-ink);font-size:13.5px;font-weight:600;border:none;cursor:pointer;text-align:left}
  .dd-mais-item svg{width:18px;height:18px;color:var(--dd-violet);flex:none}
}

/* ============================================================
   PÁGINA — DASHBOARD
   ============================================================ */
.dd-greeting{margin-bottom:22px}
.dd-greeting h1{font-size:27px;display:flex;align-items:center;gap:8px;letter-spacing:-.01em}
.dd-greeting p{color:var(--dd-ink-soft);font-size:14px;margin-top:5px}

.dd-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}
.dd-kpi{
  display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--dd-surface);
  border:1px solid var(--dd-border);border-radius:var(--dd-radius-lg);padding:16px 18px;font:inherit;color:inherit;
  cursor:pointer;box-shadow:var(--dd-shadow-sm);transition:transform var(--dd-fast) var(--dd-ease),box-shadow var(--dd-fast) var(--dd-ease);
}
.dd-kpi:hover{transform:translateY(-2px);box-shadow:var(--dd-shadow-md)}
.dd-kpi-icon{width:40px;height:40px;flex:none;border-radius:12px;display:flex;align-items:center;justify-content:center}
.dd-kpi-icon svg{width:19px;height:19px}
.dd-kpi--purple .dd-kpi-icon{background:var(--dd-violet-soft);color:var(--dd-violet)}
.dd-kpi--green .dd-kpi-icon{background:var(--dd-green-soft);color:#0b6b47}
.dd-kpi--amber .dd-kpi-icon{background:var(--dd-amber-soft);color:#8a5a09}
.dd-kpi--blue .dd-kpi-icon{background:var(--dd-blue-soft);color:#1f4f96}
.dd-kpi-body{min-width:0;flex:1}
.dd-kpi-label{display:block;font-size:12.5px;font-weight:600;color:var(--dd-ink-soft);margin-bottom:3px}
.dd-kpi-value-row{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.dd-kpi-value{font-family:var(--dd-font-display);font-size:24px;font-weight:700;line-height:1.1;white-space:nowrap}
.dd-kpi-foot{font-size:11.5px;color:var(--dd-ink-mute);white-space:nowrap}
.dd-kpi-foot.is-real{color:#0b6b47}

.dd-grid-3{display:grid;grid-template-columns:1.15fr .9fr 1.05fr;gap:16px;margin-bottom:16px;align-items:start}
.dd-grid-3>*,.dd-grid-2>*{min-width:0}
.dd-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:18px 20px 12px}
.dd-panel-head h2{font-size:14.5px;font-weight:700}
.dd-panel-subtitle{font-size:12px;color:var(--dd-ink-soft);margin-top:3px;line-height:1.4}
.dd-panel-link{font-size:12.5px;font-weight:700;color:var(--dd-violet);white-space:nowrap}
.dd-panel-link:hover{text-decoration:underline}
.dd-panel-link--quiet{font-size:12px;font-weight:600;color:var(--dd-ink-soft)}
.dd-panel-link--quiet:hover{color:var(--dd-violet)}
.dd-panel-foot{padding:11px 20px 16px;border-top:1px solid var(--dd-border);margin-top:4px}

.dd-agenda-row{appearance:none;display:flex;align-items:center;gap:12px;padding:12px 20px;border-top:1px solid var(--dd-border);transition:background var(--dd-fast) var(--dd-ease);cursor:pointer;width:100%;background:none;border-left:none;border-right:none;border-bottom:none;font:inherit;text-align:left;color:inherit}
#ddAgendaList .dd-agenda-row:first-child{border-top:none}
.dd-agenda-row:hover,.dd-agenda-row:focus-visible{background:var(--dd-bg)}
.dd-agenda-time{font-family:var(--dd-font-display);font-weight:700;color:var(--dd-violet);font-size:13.5px;width:44px;flex:none}
.dd-avatar-sm{width:36px;height:36px;border-radius:50%;background:var(--dd-blue-soft);color:#1f4f96;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex:none}
.dd-agenda-body{flex:1;min-width:0}
.dd-agenda-body strong{font-size:13.5px;font-weight:700;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dd-ink)}
.dd-agenda-body span{font-size:12px;color:var(--dd-ink-soft)}

.dd-attn-row{appearance:none;display:flex;align-items:center;gap:12px;padding:12px 20px;border-top:1px solid var(--dd-border);width:100%;background:none;border-left:none;border-right:none;border-bottom-width:0;cursor:pointer;font:inherit;text-align:left;color:inherit;transition:background var(--dd-fast) var(--dd-ease)}
#ddAttentionList .dd-attn-row:first-child{border-top:none}
.dd-attn-row:hover,.dd-attn-row:focus-visible{background:var(--dd-bg)}
.dd-attn-icon{width:34px;height:34px;border-radius:10px;flex:none;display:flex;align-items:center;justify-content:center}
.dd-attn-icon svg{width:16px;height:16px}
.dd-attn-body{flex:1;min-width:0}
.dd-attn-body strong{font-size:13px;font-weight:700;display:block;color:var(--dd-ink)}
.dd-attn-body span{font-size:12px;color:var(--dd-ink-soft)}
.dd-attn-chevron{flex:none;color:var(--dd-ink-mute);opacity:.7;transition:opacity var(--dd-fast) var(--dd-ease),transform var(--dd-fast) var(--dd-ease)}
.dd-attn-chevron svg{width:14px;height:14px}
.dd-attn-row:hover .dd-attn-chevron,.dd-attn-row:focus-visible .dd-attn-chevron{opacity:1;transform:translateX(2px)}

.dd-chart-wrap{padding:0 20px 20px;position:relative}
.dd-chart-total{font-size:21px;font-weight:700;font-family:var(--dd-font-display)}
.dd-chart-legend{display:flex;gap:14px;margin-top:6px;flex-wrap:wrap}
.dd-chart-legend span{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--dd-ink-soft)}
.dd-chart-legend i{width:8px;height:8px;border-radius:3px;display:inline-block}
.dd-period-select{font-size:12px;font-weight:600;border:1px solid var(--dd-border-strong);border-radius:999px;padding:6px 12px;background:var(--dd-surface);color:var(--dd-ink);align-self:center}
.dd-chart-svg circle{cursor:pointer}
.dd-chart-svg circle:hover,.dd-chart-svg circle:focus-visible{r:5}
.dd-chart-svg circle:focus-visible{outline:2px solid var(--dd-violet);outline-offset:2px;border-radius:50%}
.dd-chart-grid line{stroke:var(--dd-border)}
.dd-chart-ylabel{font-size:9px;fill:var(--dd-ink-mute)}

.dd-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.dd-quick-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:2px 16px 16px}
.dd-quick-item{
  appearance:none;display:flex;align-items:center;gap:9px;padding:10px 11px;
  border-radius:12px;background:var(--dd-bg);border:1px solid transparent;cursor:pointer;font:inherit;text-align:left;
  transition:background var(--dd-fast) var(--dd-ease),border-color var(--dd-fast) var(--dd-ease),transform var(--dd-fast) var(--dd-ease);
}
.dd-quick-item:hover{border-color:var(--dd-violet-line);background:var(--dd-violet-soft);transform:translateY(-1px)}
.dd-quick-icon{width:32px;height:32px;border-radius:10px;background:var(--dd-violet-soft);color:var(--dd-violet);display:flex;align-items:center;justify-content:center;flex:none}
.dd-quick-item:hover .dd-quick-icon{background:#fff}
.dd-quick-icon svg{width:16px;height:16px}
.dd-quick-item span{font-size:12.5px;font-weight:600;line-height:1.3}

.dd-activity-row{display:flex;align-items:center;gap:10px;padding:8px 20px;border-top:1px solid var(--dd-border)}
#ddActivityList .dd-activity-row:first-child{border-top:none}
.dd-activity-icon{width:26px;height:26px;border-radius:8px;background:var(--dd-bg);color:var(--dd-ink-soft);display:flex;align-items:center;justify-content:center;flex:none}
.dd-activity-icon svg{width:13px;height:13px}
.dd-activity-body{flex:1;min-width:0}
.dd-activity-body strong{font-size:12.5px;font-weight:700;display:block;color:var(--dd-ink)}
.dd-activity-body span{font-size:11.5px;color:var(--dd-ink-soft)}
.dd-activity-time{font-size:11px;color:var(--dd-ink-mute);flex:none;white-space:nowrap}

@media (max-width:1180px){
  .dd-kpi-grid{grid-template-columns:1fr 1fr}
  .dd-grid-3{grid-template-columns:1fr}
  .dd-grid-2{grid-template-columns:1fr}
}
@media (max-width:780px){
  .dd-kpi-grid{grid-template-columns:1fr 1fr;gap:10px}
  .dd-kpi{padding:14px}
  .dd-kpi-icon{width:36px;height:36px}
  .dd-kpi-value{font-size:20px}
  .dd-quick-grid{grid-template-columns:1fr 1fr}
  .dd-greeting h1{font-size:22px}
  .dd-panel-head{padding:16px 16px 10px}
  .dd-agenda-row,.dd-attn-row{padding:11px 16px}
  .dd-activity-row{padding:9px 16px}
  .dd-panel-foot{padding-left:16px;padding-right:16px}
  /* .dd-empty-row (icone + texto + botão CTA, ex.: "Configure seus
     horários para começar") fica nowrap por padrão (regra base, mais
     abaixo). Nesta largura o texto do subtítulo divide o espaço restante
     com um botão de largura fixa (~147px) e encolhe pra ~90px, quebrando
     palavra por palavra numa coluna ilegível — achado na Onda 3 testando
     o Dashboard em 375px real. O botão desce pra própria linha, alinhado
     sob o texto (34px do ícone + 12px do gap), texto ganha a largura
     inteira da linha de cima. */
  .dd-empty-row{flex-wrap:wrap;row-gap:8px}
  .dd-empty-row .dd-btn{flex:1 1 auto;margin-left:46px;width:calc(100% - 46px)}
}
@media (max-width:430px){
  .dd-kpi-grid{grid-template-columns:1fr}
  .dd-kpi{padding:14px 16px}
  .dd-quick-grid{grid-template-columns:1fr 1fr}
}

.dd-demo-controls{position:fixed;bottom:20px;right:20px;z-index:120;background:var(--dd-ink);color:#fff;border-radius:14px;box-shadow:var(--dd-shadow-md);font-size:11.5px;max-width:210px;overflow:hidden}
.dd-demo-controls-toggle{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;color:#fff;padding:11px 14px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;font-size:10px;cursor:pointer}
.dd-demo-controls-body{display:none;flex-direction:column;gap:6px;padding:0 14px 12px}
.dd-demo-controls.is-open .dd-demo-controls-body{display:flex}
.dd-demo-controls .dd-btn{padding:6px 10px;font-size:11px}
@media (max-width:780px){.dd-demo-controls{right:12px;bottom:76px}}

/* ============================================================
   ESTADOS SEM DADOS — implementacao oficial
   Regra: o estado vazio nunca substitui o componente por uma caixa
   centralizada. Ele e uma LINHA da propria lista, com o mesmo ritmo
   horizontal dos itens reais (chip de icone, titulo, subtitulo).
   ============================================================ */
.dd-empty-row{
  display:flex;align-items:center;gap:12px;padding:14px 20px;
  border-top:1px solid var(--dd-border);
}
#ddAgendaList .dd-empty-row:first-child,
#simple-agenda-list .dd-empty-row:first-child,
#simple-attention-list .dd-empty-row:first-child{border-top:none}
.dd-empty-row .dd-attn-body strong{color:var(--dd-ink)}
.dd-empty-row .dd-attn-body span{color:var(--dd-ink-soft)}

/* As tres colunas seguem como uma composicao unica mesmo sem dados:
   mesma linha de base inferior e altura minima equivalente a uma lista
   curta, para nenhuma coluna parecer isolada. */
.dd-grid-3{align-items:stretch}
.dd-grid-3>.dd-card{display:flex;flex-direction:column}
.dd-grid-3>.dd-card>#simple-agenda-list,
.dd-grid-3>.dd-card>#simple-attention-list{flex:1 0 auto;min-height:132px}
.dd-grid-3>.dd-card .dd-chart-wrap{flex:1;display:flex;flex-direction:column}

/* Grafico com periodo zerado: a area do grafico permanece inteira
   (grade, eixos, legenda). So a serie fica tracejada e sem pontos. */
.dd-chart-svg .dd-chart-ylabel{fill:var(--dd-ink-mute)}

/* ============================================================
   ACABAMENTO VISUAL — hover e :focus-visible
   Reaproveita as variaveis e efeitos ja definidos acima (vindos do
   dashboard-design-preview.html). So cobre o que o protótipo nao
   definia: borda mais definida nos cards clicaveis, paridade de
   :focus-visible com o :hover, e destaque sutil nas linhas informativas
   que ainda nao tinham nenhum estado de hover.
   Somente estado visual — nao altera grid, dimensao ou conteudo.
   ============================================================ */

/* KPIs: alem da elevacao ja existente, a borda fica mais definida
   no hover, com a mesma resposta visual tambem no foco por teclado. */
.dd-kpi:hover,.dd-kpi:focus-visible{
  transform:translateY(-2px);
  box-shadow:var(--dd-shadow-md);
  border-color:var(--dd-border-strong);
}

/* Acoes rapidas: paridade de foco por teclado com o hover do mouse. */
.dd-quick-item:hover,.dd-quick-item:focus-visible{
  border-color:var(--dd-violet-line);background:var(--dd-violet-soft);transform:translateY(-1px);
}
.dd-quick-item:hover .dd-quick-icon,.dd-quick-item:focus-visible .dd-quick-icon{background:#fff}

/* Horario da consulta ganha um leve destaque quando a linha esta em hover/foco. */
.dd-agenda-row:hover .dd-agenda-time,.dd-agenda-row:focus-visible .dd-agenda-time{color:var(--dd-violet-dark)}

/* Atividade recente: linha informativa, sem clique nem destino — recebe
   apenas a mudanca sutil de fundo pedida, sem cursor:pointer e sem
   elevacao, pois nao e um elemento interativo. */
.dd-activity-row{transition:background var(--dd-fast) var(--dd-ease)}
.dd-activity-row:hover{background:var(--dd-bg)}
