/**
 * Dashboard (dashboard.css)
 *
 * Responsabilidades:
 * - KPIs, rightbar (gastos futuros), gráficos, filtros, calendário,
 *   timeline, alertas e componentes visuais das telas
 *
 * Dependências:
 * - css/variables.css
 * - css/layout.css
 *
 * Não modificar:
 * - classes .chart-box/.kpi sem revisar módulo dashboard
 */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:12px;margin-bottom:18px}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:13px 15px;box-shadow:var(--shadow);animation:fadeUp .35s ease both;cursor:default}
.kpi .k-label{font-size:.73rem;font-weight:600;color:var(--text2);display:flex;align-items:center;gap:6px;margin-bottom:6px}
.kpi .k-label svg{width:14px;height:14px}
.kpi .k-value{font-size:1.22rem;font-weight:800;letter-spacing:-.02em}
.kpi .k-sub{font-size:.72rem;color:var(--text3);margin-top:3px}
.kpi.accent-blue .k-value{color:var(--blue)}.kpi.accent-green .k-value{color:var(--green)}
.kpi.accent-red .k-value{color:var(--red)}.kpi.accent-amber .k-value{color:var(--amber)}


/* ===== Rightbar (gastos futuros) ===== */
#rightbar{border-left:1px solid var(--border);background:var(--surface);overflow-y:auto;padding:18px 16px}
.rb-section{margin-bottom:18px}
.rb-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);margin-bottom:9px;display:flex;align-items:center;gap:6px}
.rb-item{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:8px 10px;border-radius:9px;font-size:.8rem;margin-bottom:4px;background:var(--surface2);border:1px solid var(--border2);color:var(--text);text-align:left}
.rb-item small{display:block;color:var(--text3);font-size:.7rem}
.rb-item b{white-space:nowrap;font-variant-numeric:tabular-nums}
.rb-item-info{min-width:0;flex:1}.rb-item-info b{display:block;overflow:hidden;text-overflow:ellipsis}
.rb-item-value{font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
.rb-item-action{cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.rb-item-action:hover{border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}
.rb-item-action>svg{width:14px;height:14px;flex:0 0 auto}

/* ===== Charts / misc ===== */
.chart-card{position:relative}
.chart-box{position:relative;height:290px}
.chart-box.sm{height:230px}
.toolbar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-bottom:16px}
.toolbar .spacer{flex:1}
.filters-bar{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:11px 13px;box-shadow:var(--shadow)}
.filters-bar select,.filters-bar input{width:auto;min-width:130px;padding:6px 9px;font-size:.83rem}
.empty{text-align:center;padding:48px 20px;color:var(--text3)}
.empty svg{width:42px;height:42px;margin-bottom:10px;opacity:.5}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:22px 0 12px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:1100px){.two-col{grid-template-columns:1fr}}
.drop-zone{border:2px dashed var(--border);border-radius:var(--r);padding:34px;text-align:center;color:var(--text2);cursor:pointer;transition:all .2s;background:var(--surface2)}
.drop-zone:hover,.drop-zone.drag{border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}
.import-log{font-size:.86rem;line-height:1.9;background:var(--surface2);border:1px solid var(--border2);border-radius:10px;padding:13px 16px;margin-top:14px}
.avatar{width:30px;height:30px;border-radius:8px;object-fit:contain;background:var(--surface2);border:1px solid var(--border2)}
.avatar-ph{width:30px;height:30px;border-radius:8px;background:var(--blue-soft);color:var(--blue);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem}
.trend-up{color:var(--red)}.trend-down{color:var(--green)}.trend-flat{color:var(--text2)}
.health-ring{position:relative;width:74px;height:74px}
.health-ring span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1rem}
.project-dates{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.project-dates>div{min-width:145px;background:var(--surface2);border:1px solid var(--border2);border-radius:9px;padding:7px 10px}
.project-dates small{display:block;color:var(--text3);font-size:.68rem;margin-bottom:2px}
.project-dates b{font-size:.8rem}
.loading-overlay{position:fixed;inset:0;background:var(--glass);backdrop-filter:blur(3px);display:none;align-items:center;justify-content:center;z-index:500;flex-direction:column;gap:14px}
.loading-overlay.open{display:flex}
.spinner{width:38px;height:38px;border:3px solid var(--border);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.tabs{display:flex;gap:4px;background:var(--surface2);border:1px solid var(--border2);padding:4px;border-radius:10px;width:fit-content}
.tab{border:none;background:none;padding:6px 14px;border-radius:8px;font-weight:600;font-size:.83rem;color:var(--text2)}
.tab.active{background:var(--surface);color:var(--blue);box-shadow:var(--shadow)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.cal-head{font-size:.7rem;font-weight:700;color:var(--text3);text-transform:uppercase;text-align:center;padding:5px}
.cal-day{min-height:82px;background:var(--surface2);border:1px solid var(--border2);border-radius:8px;padding:5px;font-size:.72rem;overflow:hidden}
.cal-day.other{opacity:.4}
.cal-day.today{border-color:var(--blue);background:var(--blue-soft)}
.cal-day .d{font-weight:700;margin-bottom:3px}
.cal-ev{background:var(--blue-soft);color:var(--blue);border-radius:5px;padding:1px 5px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.timeline{position:relative;padding-left:24px}
.timeline::before{content:'';position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:var(--border)}
.tl-item{position:relative;padding:0 0 18px 12px}
.tl-item::before{content:'';position:absolute;left:-22px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--blue);border:3px solid var(--surface)}
.alert-item{display:flex;gap:11px;padding:11px 13px;border-radius:10px;border:1px solid var(--border2);margin-bottom:8px;font-size:.86rem;background:var(--surface2);align-items:flex-start}
.alert-item svg{width:17px;height:17px;flex-shrink:0;margin-top:1px}
kbd{background:var(--surface2);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:1px 6px;font-size:.72rem;font-family:inherit}
.drill-path{display:flex;flex-wrap:wrap;gap:5px;align-items:center;font-size:.8rem;color:var(--text2);margin-bottom:12px}
.drill-path .crumb{background:var(--blue-soft);color:var(--blue);padding:2px 9px;border-radius:99px;cursor:pointer;font-weight:600}

/* Relatório exclusivo do projeto, exibido apenas na impressão/PDF */
#project-print-report{display:none}
@media print{
  @page{size:A4 landscape;margin:10mm}
  body.printing-project>#app{display:none!important}
  body.printing-project>#project-print-report{display:block!important;color:#172033;background:#fff;font-family:Inter,Arial,sans-serif;font-size:10px}
  .print-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:2px solid #2563eb;padding-bottom:12px;margin-bottom:12px}
  .print-head h1{font-size:24px;margin:3px 0}.print-head p{margin:0;color:#526079}
  .print-health{min-width:125px;border:1px solid #cbd5e1;border-radius:10px;padding:9px 12px;text-align:center}
  .print-health span,.print-health small{display:block}.print-health b{display:block;font-size:17px;margin:3px 0}
  .print-health.green b{color:#15803d}.print-health.amber b{color:#b45309}.print-health.red b{color:#b91c1c}
  .print-dates{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
  .print-dates div,.print-kpi{border:1px solid #dbe2ea;border-radius:8px;padding:7px 9px}.print-dates small,.print-kpi small{display:block;color:#64748b;margin-bottom:3px}
  .print-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}.print-kpi b{font-size:15px}.print-kpi.green b{color:#15803d}.print-kpi.amber b{color:#b45309}.print-kpi.red b{color:#b91c1c}
  #project-print-report h2{font-size:15px;margin:10px 0 7px}
  .print-table{width:100%;border-collapse:collapse}.print-table th{background:#eaf1fb;text-align:left}.print-table th,.print-table td{border-bottom:1px solid #dbe2ea;padding:5px 7px}.print-table th:not(:first-child),.print-table td:not(:first-child){text-align:right}.print-table .negative{color:#b91c1c;font-weight:700}
  .print-foot{margin-top:10px;border-top:1px solid #dbe2ea;padding-top:7px;color:#64748b;font-size:8px}
}

.kpi-link{cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.kpi-link:hover{transform:translateY(-2px);border-color:var(--blue);box-shadow:var(--shadow-lg)}
.kpi-link:focus{outline:2px solid var(--blue);outline-offset:2px}

@media(max-width:860px){
  .kpi-grid{grid-template-columns:1fr 1fr;gap:9px}
  .kpi{padding:11px 12px}
  .kpi .k-value{font-size:1.05rem;overflow-wrap:anywhere}
  .filters-bar{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px}
  .filters-bar select,.filters-bar input,.filters-bar .btn{width:100%;min-width:0;font-size:16px}
  .toolbar{align-items:stretch}
  .toolbar .spacer{display:none}
  .tabs{max-width:100%;overflow-x:auto;scrollbar-width:thin}
  .tab{flex:0 0 auto;min-height:40px;padding:7px 12px}
  .chart-box{height:240px}.chart-box.sm{height:210px}
  .section-title{align-items:flex-start;gap:10px}.section-title h2{font-size:1.02rem}
  .drop-zone{padding:24px 14px}
  #plan-body>.card{overflow-x:auto}
  .cal-grid{min-width:680px}
  .project-dates{display:grid;grid-template-columns:1fr}
  .project-dates>div{min-width:0}
}
@media(max-width:520px){
  .kpi-grid,.filters-bar{grid-template-columns:1fr}
  .two-col{gap:10px}
  .chart-box{height:220px}.chart-box.sm{height:190px}
}
