/* ═══════════════════════════════════════════════════════════════════
   RAVVO — V9 DASHBOARD PREMIUM (CSS)
   Classes prefixadas .dpro-* para não colidir com nada existente.
   Carregar APÓS premium-theme.css. Usa os tokens já definidos lá
   (--bg-card, --accent, --green, etc.). Define fallbacks caso o
   premium-theme.css não esteja presente.
   ═══════════════════════════════════════════════════════════════════ */
:root{
  --dp-green:var(--success,#22c55e); --dp-green-bg:var(--success-dim,rgba(34,197,94,.14));
  --dp-blue:var(--info,#3b82f6);     --dp-blue-bg:var(--info-dim,rgba(59,130,246,.14));
  --dp-red:var(--danger,#f04060);    --dp-red-bg:var(--danger-dim,rgba(240,64,96,.14));
  --dp-amber:var(--warning,#f59e0b); --dp-amber-bg:var(--warning-dim,rgba(245,158,11,.14));
  --dp-grad:var(--accent-grad,linear-gradient(135deg,#8b6bff,#6d4aff));
}
.dpro{position:relative;z-index:1}
.dpro .up{color:var(--dp-green)} .dpro .down{color:var(--dp-red)}
.dpro-welcome{margin-bottom:20px}
.dpro-welcome .page-subtitle{margin-top:4px}

/* KPIs */
.dpro-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:16px}
.dpro-kpi{background:var(--bg-card,#16161f);border:1px solid var(--border,rgba(255,255,255,.07));border-radius:var(--radius-md,14px);padding:18px;box-shadow:var(--shadow-card,0 8px 24px rgba(0,0,0,.3));transition:transform .25s var(--ease,ease),box-shadow .25s}
.dpro-kpi:hover{transform:translateY(-3px);box-shadow:var(--shadow-pop,0 16px 48px rgba(0,0,0,.45))}
.dpro-kpi .top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}
.dpro-kpi .lbl{font-size:.8rem;color:var(--text-secondary,#9a9aab);font-weight:500;font-family:var(--font-body,sans-serif);text-transform:none;letter-spacing:0}
.dpro-kpi .tile{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.1rem}
.dpro-kpi .val{font-size:1.6rem;font-weight:800;letter-spacing:-.5px;line-height:1;font-family:var(--font-display,sans-serif)}
.dpro-kpi .trend{font-size:.76rem;font-weight:600;margin-top:9px;min-height:1em}

.t-purple{background:var(--accent-dim,rgba(124,92,255,.16));color:var(--accent,#7c5cff)}
.t-green{background:var(--dp-green-bg);color:var(--dp-green)}
.t-blue{background:var(--dp-blue-bg);color:var(--dp-blue)}
.t-red{background:var(--dp-red-bg);color:var(--dp-red)}
.t-amber{background:var(--dp-amber-bg);color:var(--dp-amber)}

/* grids */
.dpro-grid{display:grid;gap:14px;margin-bottom:14px}
.dpro-grid.g3{grid-template-columns:1.4fr 1fr .85fr}
.dpro-grid.g3b{grid-template-columns:1fr 1fr .85fr}
.dpro-col{display:flex;flex-direction:column;gap:14px}
.dpro-card{padding:20px}
.dpro-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.dpro-head h3{font-size:1rem;font-weight:700;margin:0;font-family:var(--font-display,sans-serif);text-transform:none;letter-spacing:0}
.dpro .big-num{font-size:1.8rem;font-weight:800;letter-spacing:-1px;font-family:var(--font-display,sans-serif)}
.dpro .sub{font-size:.78rem;color:var(--text-muted,#63636f)}
.dpro-chip{font-size:.68rem;font-weight:700;background:var(--accent-dim,rgba(124,92,255,.16));color:var(--accent,#7c5cff);padding:3px 9px;border-radius:99px}
.dpro-empty{padding:24px 0;text-align:center;color:var(--text-muted,#63636f);font-size:.85rem}
.dpro-note{margin-top:10px;font-size:.7rem;color:var(--text-muted,#63636f);background:var(--bg-input,#14141d);border:1px solid var(--border,rgba(255,255,255,.07));border-radius:8px;padding:8px 10px;line-height:1.4}

/* donut */
.dpro-donut{display:flex;align-items:center;gap:18px}
.donut-c{width:150px;height:150px;position:relative;flex-shrink:0}
.donut-mid{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.donut-mid b{font-size:1.5rem;font-family:var(--font-display,sans-serif)} .donut-mid span{font-size:.7rem;color:var(--text-muted,#63636f)}
.dpro .legend{flex:1;display:flex;flex-direction:column;gap:11px}
.dpro .legend .lg{display:flex;align-items:center;gap:9px;font-size:.85rem}
.dpro .legend .d{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.dpro .legend .v{margin-left:auto;color:var(--text-secondary,#9a9aab);font-weight:600}

/* WOD */
.dpro-wod{background:linear-gradient(160deg,var(--accent-dim,rgba(124,92,255,.14)),transparent);border:1px solid var(--border-accent,rgba(124,92,255,.25));border-radius:var(--radius-sm,10px);padding:15px}
.dpro-wod .tag{font-size:.66rem;font-weight:700;letter-spacing:1px;color:var(--accent,#7c5cff)}
.dpro-wod .sc{font-size:1.3rem;font-weight:800;margin:3px 0 8px;font-family:var(--font-display,sans-serif)}
.dpro-wod .desc{font-size:.82rem;color:var(--text-secondary,#9a9aab);line-height:1.5}
.dpro-wod .meta{display:flex;gap:14px;font-size:.76rem;color:var(--text-muted,#63636f);margin-top:8px}

/* listas usuário/ranking */
.dpro-u{display:flex;align-items:center;gap:11px;padding:8px 0}
.dpro-u .m{flex:1;min-width:0} .dpro-u .m b{font-size:.86rem;display:block} .dpro-u .m span{font-size:.74rem;color:var(--text-muted,#63636f)}
.dpro-u .xp{font-size:.82rem;font-weight:700;color:var(--text-secondary,#9a9aab)}
.dpro-av{border-radius:50%;background:var(--dp-grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0}
.dpro .rk{width:24px;height:24px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800;flex-shrink:0}
.dpro .rk1{background:linear-gradient(135deg,#ffd86b,#f5a623);color:#1a1a1a}
.dpro .rk2{background:linear-gradient(135deg,#d8d8e0,#a0a0b0);color:#1a1a1a}
.dpro .rk3{background:linear-gradient(135deg,#e0a06b,#c47f3f);color:#1a1a1a}
.dpro .rkn{background:var(--bg-input,#14141d);color:var(--text-secondary,#9a9aab)}

/* atividades / financeiro / comunicação */
.dpro-act{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border,rgba(255,255,255,.07))}
.dpro-act:last-child{border:none}
.dpro-act .ai{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:.95rem;flex-shrink:0}
.dpro-act .m{flex:1} .dpro-act .m b{font-size:.85rem;display:block} .dpro-act .m span{font-size:.74rem;color:var(--text-muted,#63636f)}
.dpro-fin{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border,rgba(255,255,255,.07))}
.dpro-fin:last-child{border:none}
.dpro-fin .fi{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:.85rem;flex-shrink:0}
.dpro-fin .l{flex:1;font-size:.86rem;color:var(--text-secondary,#9a9aab)} .dpro-fin .v{font-weight:700;font-size:.92rem}

/* saúde / progresso */
.dpro .shield{width:42px;height:42px;border-radius:12px;background:var(--dp-grad);display:flex;align-items:center;justify-content:center;font-size:1.2rem;box-shadow:var(--shadow-glow,0 8px 28px rgba(124,92,255,.35))}
.dpro .bar{height:8px;border-radius:99px;background:var(--bg-input,#14141d);overflow:hidden;margin-top:8px}
.dpro .bar>i{display:block;height:100%;border-radius:99px;background:var(--dp-grad)}
.dpro .bar-lbl{font-size:.72rem;color:var(--text-muted,#63636f);margin-top:6px}

.dpro canvas{max-width:100%}

/* ── FIX: impede o Chart.js de crescer infinitamente em altura ──
   Cada gráfico fica num contêiner de altura fixa e o canvas é preso
   dentro dele (position:absolute). Sem isto, no mobile o canvas
   estica em loop e a página fica "infinita". */
.dpro-chart{position:relative;width:100%;height:170px}
.dpro-chart canvas{position:absolute!important;inset:0;width:100%!important;height:100%!important;display:block}
.donut-c{position:relative}
.donut-c canvas{position:absolute!important;inset:0;width:100%!important;height:100%!important}
@media(max-width:768px){.dpro-chart{height:200px}}

/* skeleton loading */
.dpro-skel{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:16px}
.dpro-skel2{display:grid;grid-template-columns:1.4fr 1fr .85fr;gap:14px}
.sk{background:linear-gradient(90deg,var(--bg-card,#16161f) 25%,var(--bg-card-hover,#1b1b27) 50%,var(--bg-card,#16161f) 75%);background-size:200% 100%;animation:dpShimmer 1.3s infinite;border-radius:var(--radius-md,14px)}
.sk-kpi{height:110px}.sk-lg{height:240px}.sk-sm{height:240px}
@keyframes dpShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* responsivo */
@media(max-width:1200px){.dpro-kpis{grid-template-columns:repeat(3,1fr)}.dpro-grid.g3,.dpro-grid.g3b,.dpro-skel,.dpro-skel2{grid-template-columns:1fr 1fr}}
@media(max-width:768px){.dpro-kpis,.dpro-skel{grid-template-columns:repeat(2,1fr)}.dpro-grid.g3,.dpro-grid.g3b,.dpro-skel2{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.sk{animation:none}}
