/* =====================================================================
   DedicaQR — Sprint 17 CSS
   KuDE PDF: list dashboard, preview iframe, email/jobs log, action panels.
   Aditivo sobre Sprints 1-16. Reutiliza variables CSS y badges del Sprint 14.
   ===================================================================== */

:root {
  --kude-ok:        #059669;
  --kude-ok-bg:     #d1fae5;
  --kude-pending:   #d97706;
  --kude-pending-bg:#fef3c7;
  --kude-fail:      #dc2626;
  --kude-fail-bg:   #fee2e2;
  --kude-running:   #2563eb;
  --kude-running-bg:#dbeafe;
  --kude-na:        #9ca3af;
  --kude-na-bg:     #f3f4f6;
}

/* =====================================================================
   STAT ROW (variante de adm-stat-row con highlight warn)
   ===================================================================== */

.kude-stat-row {
  margin: 14px 0 20px;
}
.kude-stat-warn {
  color: var(--kude-pending) !important;
}

/* =====================================================================
   JOBS QUEUE STRIP
   ===================================================================== */

.kude-jobs-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  background: var(--dqr-bg);
  border: 1px solid var(--dqr-line);
  border-radius: 10px;
  margin: 12px 0 18px;
}
.kude-jobs-row strong {
  margin-right: 6px;
  color: var(--dqr-ink);
}
.kude-jobs-row small {
  margin-left: auto;
  color: var(--dqr-muted);
  font-size: 12px;
}

.kude-job-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 12px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.kude-job-pending  { background: var(--kude-pending-bg); color: var(--kude-pending); }
.kude-job-running  { background: var(--kude-running-bg); color: var(--kude-running); }
.kude-job-done     { background: var(--kude-ok-bg);      color: var(--kude-ok); }
.kude-job-failed   { background: var(--kude-fail-bg);    color: var(--kude-fail); }

/* =====================================================================
   PILLS DE STATUS (PDF / email)
   ===================================================================== */

.kude-pill {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  border: 1px solid transparent;
  white-space: nowrap;
}
.kude-pill-ok       { background: var(--kude-ok-bg);      color: var(--kude-ok);      border-color: rgba(5, 150, 105, 0.2); }
.kude-pill-pending  { background: var(--kude-pending-bg); color: var(--kude-pending); border-color: rgba(217, 119, 6, 0.2); }
.kude-pill-fail     { background: var(--kude-fail-bg);    color: var(--kude-fail);    border-color: rgba(220, 38, 38, 0.2); }
.kude-pill-running  { background: var(--kude-running-bg); color: var(--kude-running); border-color: rgba(37, 99, 235, 0.2); }
.kude-pill-na       { background: var(--kude-na-bg);      color: var(--kude-na); }
.kude-pill-sent     { background: var(--kude-ok-bg);      color: var(--kude-ok); }

/* =====================================================================
   LIST TABLE
   ===================================================================== */

.kude-table td {
  vertical-align: top;
  font-size: 13px;
}
.kude-table small {
  color: var(--dqr-muted);
  font-size: 11px;
}
.kude-table code {
  background: var(--dqr-bg);
  padding: 2px 6px;
  border-radius: 3px;
}

/* =====================================================================
   SHOW PAGE — Layout 2-col (preview + info)
   ===================================================================== */

.kude-show-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(280px, 1fr);
  gap: 20px;
  margin-top: 20px;
}
@media (max-width: 1024px) {
  .kude-show-grid { grid-template-columns: 1fr; }
}

.kude-preview-col h2 {
  margin: 0 0 12px;
  font-size: 16px;
}
.kude-preview-iframe {
  width: 100%;
  height: 850px;
  border: 1px solid var(--dqr-line);
  border-radius: 10px;
  background: #f5f5f5;
  display: block;
}
.kude-preview-empty {
  background: white;
  border: 2px dashed var(--dqr-line);
  border-radius: 12px;
  padding: 60px 20px;
  text-align: center;
  color: var(--dqr-muted);
}
.kude-preview-empty p { margin: 4px 0; line-height: 1.5; }

/* =====================================================================
   ACTIONS PANEL
   ===================================================================== */

.kude-actions-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.kude-actions-row form { display: inline-flex; gap: 6px; }

.kude-url-box {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  background: var(--dqr-bg);
  padding: 10px 12px;
  border-radius: 8px;
  margin-top: 6px;
}
.kude-url-box input[type="text"] {
  flex: 1;
  min-width: 220px;
  border: 1px solid var(--dqr-line);
  padding: 8px 10px;
  border-radius: 6px;
  font-family: 'SFMono-Regular', Consolas, monospace;
  font-size: 12px;
  background: white;
}
.kude-url-box small {
  flex-basis: 100%;
  color: var(--dqr-muted);
  font-size: 12px;
}

/* =====================================================================
   EMAIL PANEL
   ===================================================================== */

.kude-info-col .adm-card {
  margin-bottom: 16px;
}
.kude-info-col h3 {
  margin: 0 0 12px;
  font-size: 14px;
  color: var(--dqr-ink);
  font-weight: 700;
}
.kude-info-col h3:first-child { margin-top: 0; }

.kude-status-line {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 8px;
}

.kude-recipients {
  list-style: none;
  padding: 0;
  margin: 0 0 12px;
}
.kude-recipients li {
  font-family: 'SFMono-Regular', Consolas, monospace;
  font-size: 12px;
  padding: 4px 8px;
  background: var(--dqr-bg);
  border-radius: 4px;
  margin-bottom: 3px;
  word-break: break-all;
}

.kude-info-col textarea {
  width: 100%;
  border: 1px solid var(--dqr-line);
  padding: 8px 10px;
  border-radius: 6px;
  font-family: inherit;
  font-size: 13px;
  resize: vertical;
  margin: 4px 0 10px;
}
.kude-info-col label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--dqr-muted);
  margin-top: 4px;
}
.kude-info-col label small {
  font-weight: 400;
  color: #aaa;
}

/* =====================================================================
   EMAIL LOG / JOBS LOG (timeline-like)
   ===================================================================== */

.kude-email-log,
.kude-jobs-list {
  list-style: none;
  padding: 0;
  margin: 0;
  max-height: 320px;
  overflow-y: auto;
}
.kude-email-log li,
.kude-jobs-list li {
  background: white;
  border-left: 3px solid var(--dqr-line);
  padding: 8px 12px;
  margin-bottom: 4px;
  font-size: 12px;
  border-radius: 0 6px 6px 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.kude-email-log li strong,
.kude-jobs-list li strong {
  color: var(--dqr-ink);
  font-size: 12px;
}
.kude-email-log li small,
.kude-jobs-list li small {
  color: var(--dqr-muted);
  font-size: 11px;
}
.kude-email-log li code,
.kude-jobs-list li code {
  background: var(--dqr-bg);
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 11px;
}

.kude-email-log li.kude-log-sent      { border-left-color: var(--kude-ok); }
.kude-email-log li.kude-log-failed    { border-left-color: var(--kude-fail); }
.kude-email-log li.kude-log-bounced   { border-left-color: var(--kude-pending); }

.kude-jobs-list li.kude-job-done      { border-left-color: var(--kude-ok); }
.kude-jobs-list li.kude-job-failed    { border-left-color: var(--kude-fail); }
.kude-jobs-list li.kude-job-running   { border-left-color: var(--kude-running); }
.kude-jobs-list li.kude-job-pending   { border-left-color: var(--kude-pending); }

.kude-email-log details,
.kude-jobs-list details {
  flex-basis: 100%;
  margin-top: 4px;
}
.kude-email-log summary,
.kude-jobs-list summary {
  cursor: pointer;
  color: var(--kude-fail);
  font-size: 11px;
  font-weight: 600;
}

/* =====================================================================
   RESPONSIVE
   ===================================================================== */

@media (max-width: 768px) {
  .kude-stat-row { grid-template-columns: repeat(2, 1fr); }
  .kude-table { font-size: 12px; }
  .kude-table th, .kude-table td { padding: 6px 4px; }
  .kude-preview-iframe { height: 600px; }
  .kude-jobs-row { font-size: 13px; }
  .kude-jobs-row small { flex-basis: 100%; margin: 4px 0 0; }
  .kude-url-box input[type="text"] { font-size: 11px; }
}

@media (max-width: 480px) {
  .kude-show-grid { grid-template-columns: 1fr; }
  .kude-preview-iframe { height: 480px; }
  .kude-actions-row .btn,
  .kude-actions-row .btn-primary { width: 100%; }
  .kude-actions-row form { display: block; width: 100%; }
  .kude-actions-row form button { width: 100%; }
}
