/* ═══════════════════════════════════════════════════════════
   LEXpedientes – Design System
   Paleta profesional: slate + blue + semánticos
   ═══════════════════════════════════════════════════════════ */

:root {
  --bg:           #f1f5f9;
  --card:         #ffffff;
  --sidebar-bg:   #0f172a;
  --sidebar-hover:#1e293b;
  --sidebar-text: #94a3b8;
  --sidebar-active:#e2e8f0;
  --primary:      #2563eb;
  --primary-hover:#1d4ed8;
  --primary-light:#dbeafe;
  --text:         #0f172a;
  --text-sec:     #475569;
  --text-muted:   #94a3b8;
  --border:       #e2e8f0;
  --border-focus: #93c5fd;
  --success:      #16a34a;
  --success-bg:   #dcfce7;
  --warning:      #d97706;
  --warning-bg:   #fef3c7;
  --danger:       #dc2626;
  --danger-bg:    #fee2e2;
  --info-bg:      #dbeafe;
  --radius:       8px;
  --radius-sm:    6px;
  --radius-lg:    12px;
  --shadow:       0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.06);
  --shadow-lg:    0 20px 60px rgba(0,0,0,.18);
  --font:         system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --mono:         "SF Mono", "Cascadia Code", "Fira Code", monospace;
}

.hidden { display: none !important; }

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font-family: var(--font);
  font-size: 14px;
  color: var(--text);
  background: var(--bg);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
a { color: var(--primary); text-decoration: none; }

/* ═══════════════════ Layout ═══════════════════ */

#app {
  display: grid;
  grid-template-columns: 220px 1fr;
  min-height: 100vh;
}

/* ═══════════════════ Sidebar ═══════════════════ */

#sidebar {
  background: var(--sidebar-bg);
  color: var(--sidebar-text);
  display: flex;
  flex-direction: column;
  padding: 20px 12px;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
}

.side-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 4px 8px 24px;
}

.brand-mark {
  width: 36px; height: 36px;
  background: var(--primary);
  color: white;
  border-radius: var(--radius);
  display: grid; place-items: center;
  font-weight: 800;
  font-size: 13px;
  letter-spacing: -.03em;
  flex-shrink: 0;
}

.brand-name {
  font-weight: 700;
  font-size: 15px;
  color: #e2e8f0;
  letter-spacing: -.02em;
}

#nav { display: flex; flex-direction: column; gap: 2px; }

#nav a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: var(--radius-sm);
  color: var(--sidebar-text);
  font-size: 13.5px;
  font-weight: 500;
  transition: background .15s, color .15s;
  text-decoration: none;
}

#nav a svg {
  width: 18px; height: 18px;
  flex-shrink: 0;
  stroke-width: 1.8;
}

#nav a:hover {
  background: var(--sidebar-hover);
  color: #cbd5e1;
}

#nav a.active {
  background: rgba(37,99,235,.15);
  color: #93c5fd;
}

.side-footer {
  margin-top: auto;
  padding: 16px 12px 0;
  font-size: 11px;
  color: #475569;
}


.sidebar-company { display:flex; flex-direction:column; gap:3px; margin-top:11px; padding:10px 9px; border-top:1px solid rgba(148,163,184,.14); color:#718197; line-height:1.35; }
.sidebar-company strong { color:#91a2b9; font-size:10px; font-weight:700; }
.sidebar-company a { color:#7f96b3; text-decoration:none; font-size:10px; }
.sidebar-company a:hover { color:#bfdbfe; text-decoration:underline; }
/* ═══════════════════ Main content ═══════════════════ */

#main {
  padding: 28px 32px;
  max-width: 1400px;
  min-width: 0;
}

/* ═══════════════════ Page header ═══════════════════ */

.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
  gap: 16px;
  flex-wrap: wrap;
}

.page-header h1 {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -.02em;
}

.page-header .subtitle {
  color: var(--text-sec);
  font-size: 13px;
  margin-top: 2px;
}

.header-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

/* ═══════════════════ Buttons ═══════════════════ */

.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  font-size: 13px;
  font-weight: 600;
  transition: all .15s;
  white-space: nowrap;
}

.btn.primary {
  background: var(--primary);
  color: white;
}
.btn.primary:hover { background: var(--primary-hover); }

.btn.secondary {
  background: white;
  color: var(--text);
  border-color: var(--border);
}
.btn.secondary:hover { background: #f8fafc; border-color: #cbd5e1; }

.btn.danger {
  background: var(--danger);
  color: white;
}
.btn.danger:hover { background: #b91c1c; }

.btn.ghost {
  background: transparent;
  color: var(--text-sec);
  padding: 6px 10px;
}
.btn.ghost:hover { background: #f1f5f9; color: var(--text); }

.btn.sm { padding: 5px 10px; font-size: 12px; }

.btn:disabled { opacity: .5; cursor: not-allowed; }

/* ═══════════════════ Metrics ═══════════════════ */

.metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
  margin-bottom: 24px;
}

.metric {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 20px;
  box-shadow: var(--shadow);
}

.metric .label {
  font-size: 12px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  font-weight: 600;
  margin-bottom: 6px;
}

.metric .value {
  font-size: 28px;
  font-weight: 700;
  letter-spacing: -.03em;
  color: var(--text);
}

.metric .value.currency::before { content: none; }

/* ═══════════════════ Cards / Panels ═══════════════════ */

.card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}

.card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--border);
}

.card-header h2 {
  font-size: 15px;
  font-weight: 700;
}

.card-body { padding: 20px; }
.card-body.no-pad { padding: 0; }

/* ═══════════════════ Search ═══════════════════ */

.search-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 0 12px;
  margin-bottom: 16px;
  max-width: 420px;
  transition: border-color .15s;
}

.search-bar:focus-within {
  border-color: var(--border-focus);
  box-shadow: 0 0 0 3px rgba(37,99,235,.1);
}

.search-bar svg {
  width: 16px; height: 16px;
  color: var(--text-muted);
  flex-shrink: 0;
}

.search-bar input {
  border: 0;
  outline: 0;
  background: transparent;
  width: 100%;
  padding: 9px 0;
  font-size: 13px;
}

.toolbar {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 16px;
  flex-wrap: wrap;
}

.toolbar .search-bar { margin-bottom: 0; flex: 1; min-width: 200px; }

.filter-select {
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: white;
  font-size: 13px;
  color: var(--text);
  outline: none;
}
.filter-select:focus { border-color: var(--border-focus); }

/* ═══════════════════ Table ═══════════════════ */

.data-table {
  width: 100%;
  border-collapse: collapse;
}

.data-table th {
  text-align: left;
  padding: 10px 16px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--text-muted);
  font-weight: 700;
  background: #f8fafc;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
}

.data-table td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
  vertical-align: middle;
}

.data-table tr:last-child td { border-bottom: none; }

.data-table tbody tr {
  transition: background .1s;
}
.data-table tbody tr:hover { background: #f8fafc; }
.data-table tbody tr.clickable { cursor: pointer; }

.data-table .actions {
  text-align: right;
  white-space: nowrap;
}

.data-table .mono {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--primary);
  font-weight: 600;
}

.data-table .secondary-text {
  color: var(--text-sec);
  font-size: 12px;
}

.data-table .text-right { text-align: right; }

/* ═══════════════════ Badges ═══════════════════ */

.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .02em;
}

.badge.open, .badge.pending      { background: var(--info-bg);    color: var(--primary); }
.badge.completed, .badge.paid    { background: var(--success-bg); color: var(--success); }
.badge.closed, .badge.cancelled, .badge.archived { background: #f1f5f9; color: var(--text-muted); }
.badge.issued, .badge.partial    { background: var(--warning-bg); color: var(--warning); }
.badge.draft                     { background: #f1f5f9; color: var(--text-sec); }
.badge.danger                    { background: var(--danger-bg);  color: var(--danger); }

.badge.role {
  background: #f0fdf4;
  color: #15803d;
  font-size: 10px;
  padding: 2px 8px;
}

/* ═══════════════════ Pagination ═══════════════════ */

.pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-top: 1px solid var(--border);
  font-size: 12px;
  color: var(--text-sec);
}

.pagination .pages {
  display: flex;
  gap: 4px;
}

.page-btn {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: white;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-sec);
  cursor: pointer;
  transition: all .15s;
}
.page-btn:hover { background: #f8fafc; }
.page-btn.active { background: var(--primary); color: white; border-color: var(--primary); }
.page-btn:disabled { opacity: .3; cursor: not-allowed; }

/* ═══════════════════ Empty state ═══════════════════ */

.empty-state {
  text-align: center;
  padding: 48px 24px;
  color: var(--text-muted);
}

.empty-state svg {
  width: 48px; height: 48px;
  margin-bottom: 12px;
  opacity: .4;
}

.empty-state h3 {
  font-size: 15px;
  color: var(--text-sec);
  margin-bottom: 6px;
}

.empty-state p {
  font-size: 13px;
  max-width: 360px;
  margin: 0 auto;
}

/* ═══════════════════ Loading ═══════════════════ */

.loading-page {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 48px 16px;
  text-align: center;
}

.spinner {
  width: 32px; height: 32px;
  border: 3px solid var(--border);
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: spin .7s linear infinite;
  margin-bottom: 16px;
}

.loading-page > p {
  margin: 0 0 4px 0;
  color: var(--text-sec);
  font-size: 14px;
}

@keyframes spin { to { transform: rotate(360deg); } }

/* ═══════════════════ Modal ═══════════════════ */

.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.45);
  display: grid;
  place-items: center;
  /* Los diálogos también se usan desde el visor documental (nivel 500).
     Deben quedar por encima del PDF/DOCX sin tapar los avisos (nivel 1200). */
  z-index: 900;
  padding: 24px;
  overflow-y: auto;
}

.modal-overlay.hidden { display: none; }

.modal-box {
  background: var(--card);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  width: min(560px, 100%);
  max-height: calc(100vh - 48px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.modal-box.wide { width: min(760px, 100%); }
.modal-box.viewer { width: min(1100px, 96vw); height: 92vh; overflow: hidden; display: flex; flex-direction: column; }
.modal-box.viewer .modal-body { padding: 8px; flex: 1; min-height: 0; }
.modal-box.viewer .modal-body iframe { width: 100%; height: 100%; border: none; border-radius: 6px; display: block; }

/* LexNET: el selector de expediente necesita una zona de resultados amplia.
   La cabecera y las acciones permanecen visibles y solo se desplaza el cuerpo. */
.modal-box.lexnet-copy-modal {
  width: min(840px, 100%);
  height: min(760px, calc(100dvh - 48px));
}
.modal-box.lexnet-copy-modal .modal-body {
  overscroll-behavior: contain;
}
.modal-box.lexnet-copy-modal .searchable-select.open .ss-dropdown {
  position: relative;
  inset: auto;
  max-height: min(42dvh, 390px);
  margin-top: 2px;
  border-top: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: none;
}

.modal-header {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid var(--border);
}

.modal-header h2 {
  font-size: 16px;
  font-weight: 700;
}

.modal-close {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  border: none;
  background: transparent;
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: 18px;
  cursor: pointer;
}
.modal-close:hover { background: #f1f5f9; color: var(--text); }
html[data-theme="dark"] .modal-close { color: rgba(255,255,255,.55); }
html[data-theme="dark"] .modal-close:hover { background: rgba(255,255,255,.08); color: #fff; }

.modal-body { padding: 24px; flex: 1 1 auto; min-height: 0; overflow-y: auto; }

.modal-footer {
  flex: 0 0 auto;
  flex-wrap: wrap;
  max-width: 100%;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 16px 24px;
  border-top: 1px solid var(--border);
}

/* ═══════════════════ Forms ═══════════════════ */

.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.form-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.form-group.full { grid-column: 1 / -1; }

.form-group label {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-sec);
}

.form-group input,
.form-group select,
.form-group textarea {
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: white;
  font-size: 13px;
  color: var(--text);
  outline: none;
  transition: border-color .15s;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  border-color: var(--border-focus);
  box-shadow: 0 0 0 3px rgba(37,99,235,.1);
}

.form-group textarea { resize: vertical; min-height: 80px; }

.form-row {
  display: flex;
  gap: 12px;
  align-items: flex-end;
}

.form-row .form-group { flex: 1; }

.checkbox-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  cursor: pointer;
}

.checkbox-label input[type="checkbox"] {
  width: 16px; height: 16px;
  accent-color: var(--primary);
}

/* ═══════════════════ Toasts ═══════════════════ */

#toast-container {
  position: fixed;
  top: 16px;
  right: 16px;
  z-index: 1200;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.toast {
  padding: 12px 20px;
  border-radius: var(--radius);
  font-size: 13px;
  font-weight: 600;
  box-shadow: var(--shadow-lg);
  animation: toast-in .25s ease;
  max-width: 360px;
}

.toast.success { background: var(--success); color: white; }
.toast.error   { background: var(--danger);  color: white; }
.toast.info    { background: var(--primary); color: white; }

@keyframes toast-in {
  from { opacity: 0; transform: translateY(-10px) scale(.96); }
  to   { opacity: 1; transform: none; }
}

/* ═══════════════════ Tabs ═══════════════════ */

.tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--border);
  margin-bottom: 20px;
}

.tab {
  padding: 10px 18px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  border: none;
  background: none;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: color .15s;
}

.tab:hover { color: var(--text-sec); }
.tab.active { color: var(--primary); border-bottom-color: var(--primary); }

/* ═══════════════════ Detail layout ═══════════════════ */

.detail-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 24px;
  gap: 16px;
}

.detail-header h1 { font-size: 20px; font-weight: 700; }

.detail-header .ref {
  font-family: var(--mono);
  font-size: 13px;
  color: var(--primary);
  font-weight: 600;
}

.detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
}

.detail-field .dt {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
  font-weight: 600;
  margin-bottom: 2px;
}

.detail-field .dd {
  font-size: 14px;
  color: var(--text);
}

.inline-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}

/* ═══════════════════ Recent matters (dashboard) ═══════════════════ */

.recent-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: background .1s;
}
.recent-item:last-child { border-bottom: none; }
.recent-item:hover { background: #f8fafc; margin: 0 -20px; padding: 12px 20px; }

.recent-item .ref {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--primary);
  font-weight: 600;
  min-width: 80px;
}

.recent-item .title {
  flex: 1;
  font-size: 13px;
  font-weight: 500;
}

/* ═══════════════════ Section ═══════════════════ */

.section { margin-bottom: 24px; }

.section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

.section-header h2 {
  font-size: 15px;
  font-weight: 700;
}

/* ═══════════════════ Error ═══════════════════ */

.error-box {
  background: var(--danger-bg);
  color: var(--danger);
  border: 1px solid #fecaca;
  padding: 12px 16px;
  border-radius: var(--radius);
  font-size: 13px;
  margin-bottom: 16px;
}

/* ═══════════════════ Lines table (billing) ═══════════════════ */

.lines-table { width: 100%; border-collapse: collapse; margin-top: 8px; }
.lines-table th {
  text-align: left;
  padding: 6px 10px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
  font-weight: 600;
  background: #f8fafc;
  border-bottom: 1px solid var(--border);
}
.lines-table td {
  padding: 8px 10px;
  font-size: 13px;
  border-bottom: 1px solid var(--border);
}
.lines-table tr:last-child td { border-bottom: none; }
.lines-table .text-right { text-align: right; }

/* ═══════════════════ Totals ═══════════════════ */

.totals {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  margin-top: 12px;
  padding-right: 10px;
}

.total-row {
  display: flex;
  gap: 24px;
  font-size: 13px;
}

.total-row .total-label {
  color: var(--text-sec);
  min-width: 120px;
  text-align: right;
}

.total-row .total-value {
  font-weight: 700;
  min-width: 100px;
  text-align: right;
  font-family: var(--mono);
  font-size: 13px;
}

.total-row.grand {
  font-size: 15px;
  padding-top: 8px;
  border-top: 2px solid var(--text);
}

/* ═══════════════════ Responsive ═══════════════════ */

@media (max-width: 860px) {
  #app { grid-template-columns: 1fr; }
  #sidebar {
    position: fixed;
    z-index: 50;
    width: 240px;
    transform: translateX(-100%);
    transition: transform .2s;
  }
  #sidebar.open { transform: none; }
  #main { padding: 20px 16px; }
  .form-grid { grid-template-columns: 1fr; }
  .metrics { grid-template-columns: 1fr 1fr; }
  .detail-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 480px) {
  .metrics { grid-template-columns: 1fr; }
  .detail-grid { grid-template-columns: 1fr; }
  .page-header { flex-direction: column; align-items: flex-start; }
}

/* ═══════════════════ Pagination overflow fix ═══════════════════ */

.pagination .pages {
  flex-wrap: wrap;
  justify-content: flex-end;
}

.page-ellipsis {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  font-size: 14px;
  color: var(--text-muted);
  user-select: none;
}

/* ═══════════════════ Table horizontal scroll ═══════════════════ */

.table-scroll { overflow-x: auto; }

/* ═══════════════════ Helpers ═══════════════════ */

.text-muted { color: var(--text-muted); }
.danger-text { color: var(--danger) !important; }

/* ═══════════════════ Agenda / planning ═══════════════════ */

.calendar-note {
  display: flex;
  gap: 12px;
  align-items: baseline;
  padding: 12px 16px;
  margin-bottom: 16px;
  border: 1px solid #bfdbfe;
  border-radius: var(--radius);
  background: #eff6ff;
  color: var(--text-sec);
  font-size: 13px;
}
.calendar-note strong { color: var(--primary); white-space: nowrap; }
.agenda-toolbar .search-bar { max-width: none; }
.date-filter { display: flex; align-items: center; gap: 7px; color: var(--text-sec); font-size: 12px; font-weight: 600; }
.date-filter input { padding: 7px 9px; border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); }
.agenda-quick-ranges { display: inline-flex; flex-wrap: wrap; gap: 5px; }
.view-toggle { display: flex; gap: 4px; margin-left: auto; }
.planning { display: flex; flex-direction: column; gap: 14px; }
.planning-day { display: grid; grid-template-columns: 150px 1fr; gap: 16px; align-items: start; }
.planning-date { position: sticky; top: 16px; padding: 12px 14px; border-radius: var(--radius); background: var(--sidebar-bg); color: white; font-weight: 700; font-size: 13px; text-transform: capitalize; }
.planning-events { display: flex; flex-direction: column; gap: 8px; }
.planning-event { display: grid; grid-template-columns: 60px minmax(200px, 1fr) auto auto; gap: 14px; align-items: center; padding: 13px 16px; background: white; border: 1px solid var(--border); border-left: 4px solid var(--primary); border-radius: var(--radius); box-shadow: var(--shadow); }
.planning-event.completed { border-left-color: var(--success); }
.planning-event.cancelled { border-left-color: var(--text-muted); opacity: .75; }
.planning-time { font-family: var(--mono); color: var(--primary); font-weight: 700; }
.planning-main { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.planning-main strong { overflow: hidden; text-overflow: ellipsis; }
.planning-main span { color: var(--text-sec); font-size: 12px; }
.agenda-actions { display: inline-flex; flex-wrap: wrap; justify-content: flex-end; gap: 2px; }
.event-title-button {
  display: inline;
  max-width: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-weight: 700;
  line-height: 1.35;
  text-align: left;
  cursor: pointer;
}
.event-title-button:hover { color: var(--primary); text-decoration: underline; text-underline-offset: 3px; }
.event-title-button:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; border-radius: 3px; }
.planning-time { display: flex; align-items: center; gap: 9px; }
.planning-event.bulk-row-selected { background: var(--primary-light); border-color: #bfdbfe; }
.event-bulk-card { margin-bottom: 14px; overflow: hidden; }
.event-select-page-label { display: inline-flex; align-items: center; gap: 7px; color: var(--text); font-size: 12px; font-weight: 650; white-space: nowrap; cursor: pointer; }
.event-detail-view { display: flex; flex-direction: column; gap: 22px; }
.event-detail-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding-bottom: 18px; border-bottom: 1px solid var(--border); }
.event-detail-heading h3 { margin-top: 3px; color: var(--text); font-size: 20px; line-height: 1.35; }
.event-detail-kicker { color: var(--primary); font-size: 11px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.event-detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.event-detail-grid .detail-field { padding: 13px 14px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.event-detail-grid .full-detail-field { grid-column: 1 / -1; }
.event-detail-description { padding: 15px 16px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.event-detail-description .dt { margin-bottom: 7px; color: var(--text-muted); font-size: 11px; font-weight: 650; letter-spacing: .05em; text-transform: uppercase; }
.event-detail-description .dd { color: var(--text); line-height: 1.65; white-space: pre-wrap; overflow-wrap: anywhere; }
.danger-text { color: var(--danger) !important; }

.user-permissions-panel { margin-top: 18px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.user-permissions-panel p { margin-top: 3px; color: var(--text-sec); font-size: 12px; }
.user-permissions-panel.disabled { opacity: .55; }
.user-module-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 14px; margin-top: 14px; }

/* ═══════════════════ Informes / estadísticas ═══════════════════ */

.report-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(310px, 1fr)); gap: 14px; }
.report-card { display: grid; grid-template-columns: 48px 1fr auto; align-items: center; gap: 14px; padding: 18px; background: white; border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.report-card h2 { font-size: 15px; margin-bottom: 3px; }
.report-card p { color: var(--text-sec); font-size: 12px; }
.report-icon { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 10px; background: var(--success-bg); color: var(--success); font-family: var(--mono); font-weight: 800; font-size: 11px; }
.report-help { margin-top: 18px; }
.report-help h2 { font-size: 15px; margin-bottom: 5px; }
.report-help p { color: var(--text-sec); margin-bottom: 12px; }
.stats-metrics { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.stats-metrics .metric .value { font-size: clamp(18px, 1.45vw, 22px); }
.stats-metrics .metric .value.currency { white-space: nowrap; font-variant-numeric: tabular-nums; }
.stats-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.stat-bars { display: flex; flex-direction: column; gap: 13px; }
.stat-row { display: grid; gap: 5px; }
.stat-label { display: flex; justify-content: space-between; gap: 10px; font-size: 12px; }
.stat-label span { color: var(--text-sec); }
.stat-track { height: 7px; background: #e2e8f0; border-radius: 999px; overflow: hidden; }
.stat-track span { display: block; height: 100%; background: linear-gradient(90deg, var(--primary), #60a5fa); border-radius: inherit; }
.stat-row small { color: var(--text-muted); font-size: 10px; }

/* ═══════════════════ Importador Access ═══════════════════ */

.import-grid { display: grid; grid-template-columns: minmax(320px, .85fr) minmax(380px, 1.15fr); gap: 18px; align-items: start; }
.import-grid h2 { font-size: 16px; margin-bottom: 7px; }
.help-text { color: var(--text-sec); font-size: 12px; line-height: 1.65; margin-bottom: 16px; }
.file-drop { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; min-height: 150px; margin-top: 16px; padding: 22px; border: 2px dashed #bfdbfe; border-radius: var(--radius-lg); background: #f8fbff; text-align: center; cursor: pointer; }
.file-drop:hover { border-color: var(--primary); background: #eff6ff; }
.file-drop input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.file-drop strong { color: var(--primary); }
.file-drop span { color: var(--text-muted); font-size: 12px; }
.import-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }
.security-note { display: flex; flex-direction: column; gap: 3px; margin-top: 18px; padding: 12px; border-radius: var(--radius); background: var(--success-bg); color: #166534; font-size: 12px; }
.folder-import-ollama-option { flex-direction: row; align-items: flex-start; gap: 10px; }
.folder-import-ollama-option > input[type="checkbox"] { flex: 0 0 auto; width: 16px; height: 16px; margin: 2px 0 0; accent-color: var(--primary); }
.folder-import-ollama-copy { display: flex; flex-direction: column; gap: 3px; min-width: 0; line-height: 1.45; }
.import-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.import-summary > div { display: flex; flex-direction: column; padding: 10px; border-radius: var(--radius-sm); background: #f8fafc; min-width: 0; }
.import-summary span { color: var(--text-muted); font-size: 10px; text-transform: uppercase; letter-spacing: .04em; }
.import-summary strong { overflow: hidden; text-overflow: ellipsis; }
.result-message { margin: 14px 0; padding: 10px 12px; border-radius: var(--radius); background: var(--info-bg); color: #1e40af; font-size: 12px; }
.mapped-list { margin: 14px 0; }
.mapped-list p, details p { margin-top: 5px; color: var(--text-sec); font-size: 12px; line-height: 1.6; }
details { margin-top: 12px; }
summary { cursor: pointer; color: var(--primary); font-weight: 600; font-size: 12px; }
.empty-state.compact { padding: 30px 16px; }
.data-table.mini { margin-top: 8px; }
.data-table.mini td, .data-table.mini th { padding: 7px 9px; font-size: 11px; }

@media (max-width: 1050px) {
  .planning-day { grid-template-columns: 1fr; gap: 7px; }
  .planning-date { position: static; }
  .planning-event { grid-template-columns: 55px 1fr auto; }
  .planning-event .agenda-actions { grid-column: 1 / -1; }
  .import-grid, .stats-grid { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
  .calendar-note { flex-direction: column; gap: 3px; }
  .event-detail-grid { grid-template-columns: 1fr; }
  .event-detail-grid .full-detail-field { grid-column: auto; }
  .planning-event { grid-template-columns: 48px 1fr; }
  .planning-event > .badge { grid-column: 1; }
  .planning-event .agenda-actions { grid-column: 2; justify-content: flex-start; }
  .report-card { grid-template-columns: 44px 1fr; }
  .report-card .btn { grid-column: 1 / -1; justify-content: center; }
}

@media print {
  #sidebar, .header-actions, .toolbar, .calendar-note, .btn, #toast-container { display: none !important; }
  #app { display: block; }
  #main { max-width: none; padding: 0; }
  body { background: white; }
  .card, .metric, .report-card { box-shadow: none; break-inside: avoid; }
}

/* ═══════════════════════════════════════════════════════════
   Visual improvements – zebra, detail cards, hover, focus
   ═══════════════════════════════════════════════════════════ */

.data-table tbody tr:nth-child(even) { background: #f8fafc; }
.data-table tbody tr:hover { background: #eef2ff; }
.data-table tbody tr.clickable { cursor: pointer; }

.detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 16px;
}
.detail-field {
  border-left: 3px solid var(--primary);
  padding-left: 12px;
  background: #fafbfc;
  border-radius: 0 var(--radius) var(--radius) 0;
  padding: 10px 14px 10px 12px;
}
.detail-field .dt {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .4px;
  color: var(--text-muted);
  margin-bottom: 4px;
}
.detail-field .dd {
  font-size: 14px;
  color: var(--text);
  font-weight: 500;
}
.detail-field .dd a { color: var(--primary); text-decoration: none; }
.detail-field .dd a:hover { text-decoration: underline; }

.section { margin-top: 28px; }
.section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--border);
  margin-bottom: 16px;
}
.section-header h2 { font-size: 16px; font-weight: 700; }

/* La cabecera de Documentos responde al ancho real del panel partido. */
.matter-documents-header { gap: 12px; flex-wrap: wrap; }
.matter-documents-header > div:first-child {
  flex: 1 1 240px;
  min-width: 0;
}
.matter-documents-header .subtitle { overflow-wrap: anywhere; }
.matter-document-actions {
  flex: 1 1 520px;
  min-width: 0;
  max-width: 100%;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.matter-document-actions .btn { flex: 0 0 auto; white-space: nowrap; }

.detail-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 24px;
}

.totals {
  max-width: 360px;
  margin-top: 20px;
  background: #f8fafc;
  border-radius: var(--radius);
  padding: 16px 20px;
  border: 1px solid var(--border);
}
.total-row {
  display: flex;
  justify-content: space-between;
  padding: 6px 0;
  font-size: 14px;
}
.total-row.grand {
  border-top: 2px solid var(--border);
  margin-top: 6px;
  padding-top: 10px;
  font-size: 16px;
  font-weight: 700;
  color: var(--primary);
}

.card:not(.report-card):hover {
  box-shadow: 0 4px 16px rgba(0,0,0,.08);
}

input:focus, select:focus, textarea:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12);
  outline: none;
}

.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .3px;
}
.badge.open, .badge.pending   { background: #dbeafe; color: #1d4ed8; }
.badge.closed, .badge.archived { background: #f1f5f9; color: #64748b; }
.badge.paid, .badge.completed  { background: #dcfce7; color: #166534; }
.badge.draft                   { background: #fef3c7; color: #92400e; }
.badge.issued, .badge.partial  { background: #e0e7ff; color: #4338ca; }
.badge.cancelled               { background: #fee2e2; color: #991b1b; }

.lines-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.lines-table th { text-align: left; font-weight: 600; color: var(--text-sec); font-size: 11px; text-transform: uppercase; letter-spacing: .3px; padding: 8px 12px; border-bottom: 2px solid var(--border); }
.lines-table td { padding: 8px 12px; border-bottom: 1px solid var(--border); }
.lines-table tr:last-child td { border-bottom: none; }

/* Searchable select wrapper */
.searchable-select { position: relative; }
.searchable-select input.ss-search {
  width: 100%;
  box-sizing: border-box;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font-size: 14px;
  background: var(--card);
}
.searchable-select .ss-dropdown {
  position: absolute;
  top: 100%;
  left: 0; right: 0;
  z-index: 200;
  max-height: 220px;
  overflow-y: auto;
  background: var(--card);
  border: 1px solid var(--border);
  border-top: none;
  border-radius: 0 0 var(--radius) var(--radius);
  box-shadow: 0 4px 16px rgba(0,0,0,.12);
  display: none;
}
.searchable-select.open .ss-dropdown { display: block; }
.searchable-select .ss-option {
  padding: 8px 12px;
  cursor: pointer;
  font-size: 13px;
}
.searchable-select .ss-option:hover,
.searchable-select .ss-option.highlighted { background: #eef2ff; }
.searchable-select .ss-option.selected { font-weight: 600; color: var(--primary); }

/* Quarterly report */
.quarter-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.quarter-card { border: 1px solid var(--border); border-radius: var(--radius); background: var(--card); overflow: hidden; }
.quarter-card .qh { padding: 12px 16px; font-weight: 700; font-size: 15px; background: var(--primary); color: #fff; }
.quarter-card .qb { padding: 16px; }
.quarter-card .qrow { display: flex; justify-content: space-between; padding: 5px 0; font-size: 13px; }
.quarter-card .qrow.total { border-top: 2px solid var(--border); margin-top: 6px; padding-top: 10px; font-weight: 700; }
.quarter-card .qrow .qlabel { color: var(--text-sec); }
.quarter-card .quarter-check { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; min-width: 0; }
.quarter-card .quarter-check input { width: 15px; height: 15px; margin: 0; accent-color: var(--primary); flex: 0 0 auto; }
.quarter-card .quarter-check span { color: var(--text); }
.quarter-card .qrow .qval { font-weight: 600; }
.quarter-card .qrow .qval.positive { color: #166534; }
.quarter-card .qrow .qval.negative { color: #991b1b; }
.quarter-summary { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px; margin-bottom: 24px; }
.quarter-summary .qs-metric { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; text-align: center; }
.quarter-summary .qs-metric .qs-label { font-size: 11px; text-transform: uppercase; letter-spacing: .4px; color: var(--text-muted); margin-bottom: 4px; }
.quarter-summary .qs-metric .qs-value { font-size: 20px; font-weight: 700; }

html[data-theme="dark"] .data-table tbody tr:nth-child(even) { background:rgba(255,255,255,.025); }
html[data-theme="dark"] .data-table tbody tr:hover { background:rgba(96,165,250,.09); }
html[data-theme="dark"] .detail-field,
html[data-theme="dark"] .totals { background:rgba(255,255,255,.035); }
html[data-theme="dark"] .searchable-select .ss-option:hover,
html[data-theme="dark"] .searchable-select .ss-option.highlighted { background:rgba(96,165,250,.12); }

/* ═══════════════════════════════════════════════════════════
   Agenda – Calendar month view
   ═══════════════════════════════════════════════════════════ */

.cal-nav {
  display: flex;
  align-items: center;
  gap: 12px;
}
.cal-nav strong {
  min-width: 160px;
  text-align: center;
  font-size: 15px;
}

.cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 1px;
  background: var(--border);
}

.cal-header {
  background: #f8fafc;
  text-align: center;
  text-transform: uppercase;
  font-size: 11px;
  font-weight: 600;
  color: var(--text-sec);
  padding: 8px 4px;
  letter-spacing: .5px;
}

.cal-day {
  background: var(--card);
  min-height: 100px;
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 3px;
  overflow: hidden;
}

.cal-day.outside {
  opacity: 0.4;
}

.cal-day.today {
  background: var(--primary-light);
  outline: 2px solid var(--primary);
  outline-offset: -2px;
}

.cal-day-num {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-sec);
  margin-bottom: 2px;
}

.cal-day.today .cal-day-num {
  color: var(--primary);
}

.cal-event {
  font-size: 11px;
  line-height: 1.3;
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
  transition: opacity .15s;
}
.cal-event:hover {
  opacity: .8;
}

.cal-event.pending {
  background: var(--info-bg);
  color: var(--primary);
}
.cal-event.completed {
  background: var(--success-bg);
  color: var(--success);
}
.cal-event.cancelled {
  background: var(--danger-bg);
  color: var(--danger);
  text-decoration: line-through;
}

@media (max-width: 768px) {
  .cal-day { min-height: 60px; padding: 3px; }
  .cal-event { font-size: 10px; padding: 1px 4px; }
  .cal-header { font-size: 10px; padding: 4px 2px; }
}

/* ═══════════════════════════════════════════════════════════
   Resumen configurable
   ═══════════════════════════════════════════════════════════ */

.dashboard-header { margin-bottom: 18px; }
.dashboard-header .btn svg { width: 14px; height: 14px; }

.dashboard-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 18px;
  align-items: start;
  align-content: start;
}

.dashboard-widget {
  min-width: 0;
  overflow: hidden;
}

.dashboard-grid > .dashboard-widget,
.dashboard-grid > .dashboard-columns,
.dashboard-main-stack > .dashboard-widget,
.dashboard-side-stack > .dashboard-widget { order: var(--dashboard-order, 0); }
.dashboard-columns {
  display: grid;
  min-width: 0;
  grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr);
  gap: 18px;
  align-items: start;
}
.dashboard-columns.dashboard-columns-only-main { grid-template-columns: minmax(0, 1fr); }
.dashboard-columns.dashboard-columns-only-side { grid-template-columns: minmax(280px, 1fr); }
.dashboard-main-stack,
.dashboard-side-stack {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 18px;
}
.dashboard-main-stack > .dashboard-widget,
.dashboard-side-stack > .dashboard-widget { width: 100%; }

.dashboard-span-2 { grid-column: span 2; }
.dashboard-span-full { grid-column: 1 / -1; }

.dashboard-widget .card-header > div:first-child { min-width: 0; }
.dash-card-subtitle {
  display: block;
  color: var(--text-muted);
  font-size: 11px;
  margin-top: 3px;
}

.dash-count {
  display: inline-grid;
  place-items: center;
  min-width: 30px;
  height: 30px;
  padding: 0 9px;
  border-radius: 999px;
  background: var(--info-bg);
  color: var(--primary);
  font-size: 12px;
  font-weight: 800;
}
.dash-count.danger { background: var(--danger-bg); color: var(--danger); }

.dash-event-list { padding: 0 18px; }
.dash-event-list.compact { padding: 0 14px; }

.dash-event-row {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) 32px;
  align-items: center;
  gap: 12px;
  min-height: 78px;
  padding: 11px 0;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: background .15s;
}
.dash-event-row:last-child { border-bottom: 0; }
.dash-event-row:hover {
  background: #f8fafc;
  margin: 0 -18px;
  padding-left: 18px;
  padding-right: 18px;
}
.dash-event-list.compact .dash-event-row:hover {
  margin-left: -14px;
  margin-right: -14px;
  padding-left: 14px;
  padding-right: 14px;
}

.dash-event-date {
  width: 48px;
  min-height: 52px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  border-radius: 13px;
  background: var(--primary-light);
  color: var(--primary);
}
.dash-event-date strong { font-size: 19px; line-height: 1; letter-spacing: -.04em; }
.dash-event-date span { font-size: 9px; font-weight: 800; margin-top: 4px; letter-spacing: .04em; }
.dash-event-date.no-date { background: #f1f5f9; color: var(--text-muted); }
.dash-event-date.no-date strong { font-size: 17px; }

.dash-event-row.is-overdue .dash-event-date { background: var(--danger-bg); color: var(--danger); }
.dash-event-main { min-width: 0; }
.dash-event-heading {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}
.dash-event-heading strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
}
.dash-event-type {
  flex-shrink: 0;
  border-radius: 999px;
  padding: 2px 7px;
  background: #f1f5f9;
  color: var(--text-sec);
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.dash-event-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 3px 10px;
  margin-top: 5px;
  color: var(--text-muted);
  font-size: 11px;
}
.dash-event-meta a { color: var(--primary); font-weight: 600; }
.dash-event-done {
  width: 30px;
  height: 30px;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: var(--card);
  color: var(--text-muted);
  font-size: 14px;
  cursor: pointer;
  transition: all .15s;
}
.dash-event-done:hover { border-color: var(--success); background: var(--success-bg); color: var(--success); }

.dash-card-footer {
  padding: 9px 18px;
  border-top: 1px solid var(--border);
  text-align: center;
}
.dash-empty {
  min-height: 150px;
  padding: 26px 18px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 7px;
  color: var(--text-muted);
  text-align: center;
}
.dash-empty strong { color: var(--text-sec); font-size: 14px; }
.dash-empty span { font-size: 12px; }
.dash-empty .btn { margin-top: 7px; }

.dash-quick-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 9px;
  padding: 16px;
}
.dash-quick-action {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr);
  grid-template-rows: auto auto;
  column-gap: 10px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 13px;
  background: var(--card);
  color: var(--text);
  text-align: left;
  cursor: pointer;
  transition: all .15s;
}
.dash-quick-action:hover { transform: translateY(-1px); border-color: #bfdbfe; box-shadow: var(--shadow); }
.dash-quick-action > span {
  grid-row: 1 / 3;
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  background: var(--primary-light);
  color: var(--primary);
  font-size: 12px;
  font-weight: 800;
}
.dash-quick-action.primary-action > span { background: var(--primary); color: white; font-size: 18px; }
.dash-quick-action strong { align-self: end; font-size: 12px; }
.dash-quick-action small { color: var(--text-muted); font-size: 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.dashboard-notes-card .card-body { padding: 14px 16px 16px; }
.dashboard-notes {
  display: block;
  width: 100%;
  min-height: 180px;
  max-height: 1000px;
  resize: vertical;
  border: 1px solid transparent;
  border-radius: 12px;
  background: #fffdf4;
  color: var(--text);
  padding: 14px;
  font: 13px/1.65 var(--font);
  outline: none;
}
.dashboard-notes:focus { border-color: #fde68a; box-shadow: 0 0 0 3px rgba(253,230,138,.3); }
.dash-save-status { color: var(--text-muted); font-size: 10px; }

.dash-kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}
.dash-kpis button {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 18px 20px;
  border: 0;
  border-right: 1px solid var(--border);
  background: transparent;
  color: var(--text);
  text-align: left;
  cursor: pointer;
}
.dash-kpis button:last-child { border-right: 0; }
.dash-kpis button:hover { background: #f8fafc; }
.dash-kpis button > span { color: var(--text-muted); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.dash-kpis button > strong { font-size: 25px; line-height: 1.15; }
.dash-kpis button > small { color: var(--text-sec); font-size: 10px; }
.dash-kpis button.attention > strong { color: var(--danger); }

.dash-financial { display: grid; gap: 1px; background: var(--border); }
.dash-financial button {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 20px;
  border: 0;
  background: var(--card);
  color: var(--text);
  text-align: left;
  cursor: pointer;
}
.dash-financial button:hover { background: #f8fafc; }
.dash-financial span { color: var(--text-muted); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.dash-financial strong { font-size: 20px; }
.dash-financial small { color: var(--primary); font-size: 11px; }

.dashboard-widget-config { display: flex; flex-direction: column; gap: 8px; }
.dashboard-config-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 11px 12px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--card);
}
.dashboard-config-row > label { display: flex; align-items: center; gap: 11px; min-width: 0; cursor: pointer; }
.dashboard-config-row input { width: 17px; height: 17px; accent-color: var(--primary); }
.dashboard-config-row label span { display: flex; flex-direction: column; min-width: 0; }
.dashboard-config-row label strong { font-size: 13px; }
.dashboard-config-row label small { color: var(--text-muted); font-size: 10px; margin-top: 2px; }
.dashboard-config-row > div { display: flex; flex-shrink: 0; }

@media (max-width: 1100px) {
  .dashboard-grid { grid-template-columns: 1fr; }
  .dashboard-columns { grid-template-columns: minmax(0, 1fr) minmax(280px, .75fr); }
  .dashboard-span-full { grid-column: 1 / -1; }
  .dash-kpis { grid-template-columns: 1fr 1fr; }
  .dash-kpis button:nth-child(2) { border-right: 0; }
  .dash-kpis button:nth-child(-n+2) { border-bottom: 1px solid var(--border); }
}

@media (max-width: 700px) {
  .dashboard-grid { grid-template-columns: 1fr; }
  .dashboard-columns, .dashboard-main-stack, .dashboard-side-stack { display: contents; }
  .dashboard-span-2, .dashboard-span-full { grid-column: 1; }
  .dash-event-row { grid-template-columns: 48px minmax(0, 1fr) 30px; gap: 9px; }
  .dash-event-date { width: 44px; }
  .dash-quick-grid { grid-template-columns: 1fr; }
  .dash-kpis { grid-template-columns: 1fr 1fr; }
  .dashboard-config-row label small { display: none; }
}

/* ═══════════════════ Login ═══════════════════ */

.login-screen {
  min-height: 100vh;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0f172a 100%);
  padding: 24px;
}

.login-card {
  width: min(400px, 100%);
  background: var(--card);
  border-radius: var(--radius-lg);
  box-shadow: 0 25px 80px rgba(0,0,0,.35);
  padding: 40px 36px 36px;
}

.login-logo {
  text-align: center;
  margin-bottom: 32px;
}

.logo-svg {
  width: 240px;
  height: auto;
}

.login-error {
  background: var(--danger-bg);
  color: var(--danger);
  border: 1px solid #fecaca;
  padding: 10px 14px;
  border-radius: var(--radius);
  font-size: 13px;
  margin-bottom: 16px;
  font-weight: 500;
}

.login-hint {
  text-align: center;
  color: var(--text-muted);
  font-size: 12px;
  margin-top: 20px;
}

.login-hint strong {
  color: var(--text-sec);
  font-family: var(--mono);
  background: #f1f5f9;
  padding: 1px 5px;
  border-radius: 3px;
}

/* Brand icon in sidebar */
.brand-icon {
  width: 36px;
  height: 36px;
  flex-shrink: 0;
}



/* Informes fiscales y filtros avanzados */
.filter-panel { padding: 12px; background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); }
.fiscal-controls { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 0 0 18px; padding: 14px; background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); }
.fiscal-summary { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.fiscal-breakdown { margin-bottom: 18px; }
.fiscal-table { min-width: 1180px; }
.fiscal-table td, .fiscal-table th { font-size: 11px; }
@media (max-width: 760px) {
  .fiscal-controls > * { flex: 1 1 180px; }
  .fiscal-summary { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media print {
  @page { size: landscape; margin: 10mm; }
  .fiscal-controls, .fiscal-report-header .header-actions { display: none !important; }
  .fiscal-report-header { margin-bottom: 10px; }
  .fiscal-summary { grid-template-columns: repeat(5, 1fr); gap: 6px; margin-bottom: 12px; }
  .fiscal-summary .qs-metric { padding: 8px; }
  .fiscal-summary .qs-value { font-size: 14px !important; }
  .fiscal-breakdown, .fiscal-table { break-inside: auto; }
  .fiscal-table { min-width: 0; width: 100%; }
  .fiscal-table th, .fiscal-table td { padding: 4px 5px; font-size: 8px; }
  .table-scroll { overflow: visible !important; }
  .data-table tr { break-inside: avoid; }
}


/* Fechas manuales y herramientas integradas */
.manual-date { position:relative; display:flex; align-items:stretch; width:100%; min-width:190px; }
.manual-date > input[type="text"] { flex:1 1 auto; min-width:0; border-radius:var(--radius) 0 0 var(--radius); font-variant-numeric:tabular-nums; }
.manual-date-button { display:grid; place-items:center; flex:0 0 42px; width:42px; min-height:38px; padding:0; border:1px solid var(--border); border-left:0; border-radius:0 var(--radius) var(--radius) 0; background:var(--card); color:var(--primary); }
.manual-date-button:hover { background:var(--primary-light); }
.manual-date-button svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.8; }
.manual-date-native { position:absolute !important; width:1px !important; height:1px !important; right:20px; bottom:0; opacity:0; pointer-events:none; overflow:hidden; }
.manual-date.compact { width:auto; min-width:196px; }
.manual-date.compact > input { height:38px; padding:8px 10px; }
.tools-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.tool-card { display:grid; grid-template-columns:58px minmax(0,1fr) 22px; align-items:center; gap:16px; width:100%; padding:22px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--card); color:var(--text); text-align:left; cursor:pointer; box-shadow:var(--shadow); transition:.18s ease; }
.tool-card:hover { transform:translateY(-2px); border-color:var(--primary); box-shadow:var(--shadow); }
.tool-card h2 { margin:0 0 5px; font-size:17px; }
.tool-card p { margin:0 0 8px; color:var(--text-sec); line-height:1.45; }
.tool-card small { color:var(--primary); font-weight:700; }
.tool-card > b { color:var(--primary); font-size:22px; }
.tool-icon { display:grid; place-items:center; width:58px; height:58px; border-radius:16px; background:var(--primary-light); color:var(--primary); font-weight:800; letter-spacing:-.04em; }
.tool-frame-header { margin-bottom:12px; }
.integrated-tool-shell { height:calc(100vh - 155px); min-height:640px; overflow:hidden; border:1px solid var(--border); border-radius:var(--radius-lg); background:white; box-shadow:var(--shadow); }
html.integrated-tool-active,
body.integrated-tool-active { overflow:hidden !important; overscroll-behavior:none; }
body.integrated-tool-active #main {
  height:calc(100vh / var(--ui-zoom, 1) - var(--topbar-h, 0px));
  min-height:0; overflow:hidden; display:flex; flex-direction:column;
}
body.integrated-tool-active .integrated-tool-shell { flex:1 1 auto; height:auto; min-height:0; }
body.integrated-tool-active .tool-frame-header { flex:0 0 auto; }
.integrated-tool-shell iframe { display:block; width:100%; height:100%; border:0; background:white; }
.integrated-tool-shell.cendochat-frame { min-height:760px; }
.tool-two-column { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr); gap:16px; }
.tool-status { min-height:42px; padding:12px 14px; border-radius:var(--radius); background:var(--primary-light); color:var(--primary); font-weight:700; }
.tool-log { min-height:260px; max-height:430px; overflow:auto; margin:12px 0; padding:14px; border-radius:var(--radius); background:#0f172a; color:#dbeafe; white-space:pre-wrap; font:12px/1.55 var(--mono); }
.pending-events-table { min-width:1420px; }
@media (max-width:900px) { .tools-grid,.tool-two-column { grid-template-columns:1fr; } .integrated-tool-shell { height:calc(100vh - 135px); min-height:620px; } }
@media print { .integrated-tool-shell { border:0; box-shadow:none; } }


/* ═══════════════════ Tema seleccionable ═══════════════════ */
html[data-theme="dark"] {
  --bg:#0b1220;
  --card:#111c2e;
  --sidebar-bg:#080f1d;
  --sidebar-hover:#17243a;
  --sidebar-text:#91a4bd;
  --sidebar-active:#e5edf8;
  --primary:#60a5fa;
  --primary-hover:#3b82f6;
  --primary-light:rgba(96,165,250,.14);
  --text:#e7eef8;
  --text-sec:#b1bfd2;
  --text-muted:#7f91a9;
  --border:#27364d;
  --border-focus:#60a5fa;
  --success:#4ade80;
  --success-bg:rgba(74,222,128,.13);
  --warning:#fbbf24;
  --warning-bg:rgba(251,191,36,.13);
  --danger:#fb7185;
  --danger-bg:rgba(251,113,133,.13);
  --info-bg:rgba(96,165,250,.14);
  --shadow:0 1px 3px rgba(0,0,0,.26),0 10px 28px rgba(0,0,0,.12);
}
html[data-theme="dark"] body { background:radial-gradient(circle at 80% 0,rgba(37,99,235,.09),transparent 34%),var(--bg); }
html[data-theme="dark"] input,
html[data-theme="dark"] select,
html[data-theme="dark"] textarea { background:#0e192a; color:var(--text); border-color:var(--border); }
html[data-theme="dark"] input::placeholder,
html[data-theme="dark"] textarea::placeholder { color:#70839e; }
html[data-theme="dark"] .search-bar input,
html[data-theme="dark"] input[type="checkbox"],
html[data-theme="dark"] input[type="radio"],
html[data-theme="dark"] input[type="range"] { background:transparent; }
html[data-theme="dark"] .btn.secondary,
html[data-theme="dark"] .page-btn,
html[data-theme="dark"] .manual-date-button { background:#152238; color:var(--text); border-color:var(--border); }
html[data-theme="dark"] .btn.secondary:hover,
html[data-theme="dark"] .btn.ghost:hover,
html[data-theme="dark"] .page-btn:hover,
html[data-theme="dark"] .manual-date-button:hover { background:#1a2a43; border-color:#3a4d69; }
html[data-theme="dark"] .data-table thead,
html[data-theme="dark"] .data-table th { background:#0e192a; color:var(--text-sec); }
html[data-theme="dark"] .data-table tbody tr:nth-child(even) { background:rgba(255,255,255,.025); }
html[data-theme="dark"] .data-table tbody tr:hover { background:rgba(96,165,250,.09); }
html[data-theme="dark"] .modal-box,
html[data-theme="dark"] .ss-dropdown,
html[data-theme="dark"] .planning-event,
html[data-theme="dark"] .report-card,
html[data-theme="dark"] .login-card { background:var(--card); color:var(--text); }
html[data-theme="dark"] .file-drop { background:#0e192a; border-color:#31517b; }
html[data-theme="dark"] .file-drop:hover { background:#12213a; }
html[data-theme="dark"] .import-summary > div,
html[data-theme="dark"] .dashboard-notes,
html[data-theme="dark"] .dash-event-date.no-date,
html[data-theme="dark"] .badge.closed,
html[data-theme="dark"] .badge.archived,
html[data-theme="dark"] .badge.draft { background:#17243a; color:var(--text-sec); }
html[data-theme="dark"] .dash-kpis button:hover,
html[data-theme="dark"] .dash-financial button:hover,
html[data-theme="dark"] .dash-event-row:hover,
html[data-theme="dark"] .recent-item:hover { background:#152238; }
html[data-theme="dark"] .dashboard-notes { border-color:#3b4b68; }
html[data-theme="dark"] .stat-track { background:#27364d; }
html[data-theme="dark"] .login-screen { background:linear-gradient(145deg,#060b14,#101d32 58%,#07101d); }
html[data-theme="dark"] .login-hint strong,
html[data-theme="dark"] code { background:#17243a !important; color:#c9d7e8; }
html[data-theme="dark"] [style*="background:#f0f9ff"],
html[data-theme="dark"] [style*="background:#f8fafc"],
html[data-theme="dark"] [style*="background:#eff6ff"],
html[data-theme="dark"] [style*="background:#fef2f2"] { background:#152238 !important; }
html[data-theme="dark"] [style*="border-color:#fecaca"] { border-color:#5c2d3a !important; }
html[data-theme="dark"] .integrated-tool-shell,
html[data-theme="dark"] .integrated-tool-shell iframe { background:#0b1220; }

.theme-toggle { display:flex; align-items:center; gap:8px; width:100%; margin-bottom:7px; padding:7px 9px; border:1px solid rgba(148,163,184,.16); border-radius:var(--radius-sm); background:rgba(148,163,184,.06); color:#aebdd0; font-size:12px; font-weight:650; text-align:left; }
.theme-toggle:hover { background:rgba(96,165,250,.13); border-color:rgba(96,165,250,.26); color:#dbeafe; }
.theme-toggle svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.8; }
.theme-toggle .theme-label { flex:1; }

/* Herramientas con la misma estética azul pastel de LEXpedientes */
.tools-grid { gap:18px; }
.tool-card { position:relative; overflow:hidden; min-height:144px; border-color:#d8e5f6; background:linear-gradient(145deg,#fff 0%,#f7faff 100%); }
.tool-card::after { content:""; position:absolute; width:150px; height:150px; right:-75px; top:-85px; border-radius:50%; background:rgba(96,165,250,.10); pointer-events:none; }
.tool-card:hover { border-color:#93c5fd; box-shadow:0 14px 34px rgba(37,99,235,.10); }
.tool-card:nth-child(2) .tool-icon { background:#e0f2fe; color:#0369a1; }
.tool-card:nth-child(3) .tool-icon { background:#e0e7ff; color:#4338ca; }
.tool-card:nth-child(4) .tool-icon { background:#dbeafe; color:#1d4ed8; }
html[data-theme="dark"] .tool-card { border-color:#293b56; background:linear-gradient(145deg,#111c2e,#0e192a); }
html[data-theme="dark"] .tool-card::after { background:rgba(96,165,250,.08); }
html[data-theme="dark"] .tool-card:nth-child(n) .tool-icon { background:rgba(96,165,250,.14); color:#93c5fd; }
.tool-frame-header { padding:13px 16px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--card); box-shadow:var(--shadow); }
.integrated-tool-shell { border-color:#d5e2f2; box-shadow:0 16px 42px rgba(37,99,235,.08); }

@media (max-width:700px) {
  .manual-date.compact { width:100%; }
  .theme-toggle .theme-label { display:inline; }
}


/* Vista previa de facturas desde informes */
.report-invoice-link {
  appearance: none;
  border: 0;
  padding: 0;
  background: transparent;
  color: var(--primary);
  font: inherit;
  font-weight: 750;
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: transparent;
  text-underline-offset: 3px;
}
.report-invoice-link:hover,
.report-invoice-link:focus-visible { text-decoration-color: currentColor; outline: none; }
.invoice-report-row td { transition: background .12s ease; }
.billing-preview-loading { min-height: 180px; }
.billing-preview-lead { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; }
.billing-preview-total { color:var(--primary); font-size:22px; }
.billing-preview-grid { margin-bottom:22px; }
.billing-preview-section { margin-top:4px; }
.billing-preview-section h3 { margin-bottom:10px; font-size:14px; }
.billing-preview-lines { min-width:600px; }
.billing-preview-amounts { width:min(360px,100%); margin:20px 0 0 auto; padding:14px 16px; border:1px solid var(--border); border-radius:var(--radius); background:var(--bg); }
.billing-preview-amounts > div { display:flex; justify-content:space-between; gap:20px; padding:5px 0; color:var(--text-sec); font-size:12px; }
.billing-preview-amounts strong { color:var(--text); }
.billing-preview-amounts .grand { margin-top:5px; padding-top:10px; border-top:1px solid var(--border); font-size:15px; color:var(--text); }
.billing-preview-amounts .grand strong { color:var(--primary); font-size:18px; }
.billing-preview-notes { margin-top:18px; padding:11px 13px; border:1px solid var(--border); border-radius:var(--radius); background:var(--bg); }
.billing-preview-notes summary { color:var(--text-sec); }
.billing-preview-notes div { margin-top:10px; color:var(--text-sec); font-size:12px; line-height:1.55; white-space:pre-wrap; }

/* Contraste de etiquetas en tema oscuro */
html[data-theme="dark"] .dash-event-type {
  background:#294a74;
  color:#f1f6ff;
  border:1px solid #4b6f9e;
}
html[data-theme="dark"] .badge.open,
html[data-theme="dark"] .badge.pending { background:#173e6d; color:#cfe6ff; }
html[data-theme="dark"] .badge.paid,
html[data-theme="dark"] .badge.completed { background:#153f35; color:#b9f5dc; }
html[data-theme="dark"] .badge.issued,
html[data-theme="dark"] .badge.partial { background:#3c345f; color:#e4dcff; }
html[data-theme="dark"] .badge.cancelled,
html[data-theme="dark"] .badge.danger { background:#552536; color:#ffd1db; }


/* Carpeta documental y ATENEA IRIS */
.document-folders-first { display:inline-flex; align-items:center; gap:7px; min-height:38px; padding:7px 11px; border:1px solid var(--border); border-radius:var(--radius); background:var(--card); color:var(--text-sec); font-size:12px; font-weight:700; white-space:nowrap; cursor:pointer; }
.document-folders-first input { width:15px; height:15px; accent-color:var(--primary); cursor:pointer; }
.folder-picker { display:flex; gap:8px; align-items:center; }
.folder-picker input { flex:1; min-width:0; }
.document-files td:first-child { min-width:260px; }
.file-link { border:0; padding:0; background:transparent; color:var(--text); cursor:pointer; font:inherit; font-weight:600; text-align:left; display:inline-flex; align-items:center; gap:8px; }
.file-link:hover { color:var(--primary); }
.file-icon { width:28px; height:28px; border-radius:6px; display:inline-flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; letter-spacing:.3px; color:#fff; flex-shrink:0; text-transform:uppercase; }
.file-icon.pdf { background:linear-gradient(135deg,#ef4444,#dc2626); }
.file-icon.doc { width:34px; font-size:9px; letter-spacing:0; background:linear-gradient(135deg,#3b82f6,#2563eb); }
.file-icon.img { background:linear-gradient(135deg,#8b5cf6,#7c3aed); }
.file-icon.video { background:linear-gradient(135deg,#ec4899,#be185d); }
.file-icon.zip { background:linear-gradient(135deg,#f59e0b,#d97706); }
.file-icon.folder { background:linear-gradient(135deg,#60a5fa,#2563eb); color:#fff; }
.file-icon.folder svg { width:18px; height:18px; fill:currentColor; stroke:rgba(255,255,255,.7); stroke-width:.7; }
.file-icon.xls { background:linear-gradient(135deg,#22c55e,#16a34a); }
.file-icon.txt { background:linear-gradient(135deg,#64748b,#475569); }
.file-icon.other { background:linear-gradient(135deg,#94a3b8,#64748b); }
.zip-arrow,
.matter-folder-arrow { display:inline-block; width:12px; font-size:10px; transition:transform .15s ease; margin-right:2px; color:var(--text-sec); transform-origin:center; }
.matter-folder-row > td { background:color-mix(in srgb,var(--primary) 3%,var(--card)); }
.matter-folder-row .file-link strong { font-weight:750; }
.matter-document-tree tr[hidden] { display:none; }
.lexnet-folder-tree { border-collapse:collapse; }
.zip-child td { font-size:13px; }
.zip-child td:first-child .file-link { font-weight:500; font-size:13px; }
.zip-child td:first-child .file-icon { width:22px; height:22px; font-size:9px; border-radius:5px; }
.zip-child td:first-child .file-icon.doc { width:30px; font-size:8px; letter-spacing:0; }
.warning-note { background:var(--warning-bg); color:var(--warning); margin:14px 0; }
.atenea-job { margin:16px 0; padding:14px 16px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); }
.atenea-job.running { border-color:var(--primary); background:var(--info-bg); }
.atenea-job.done { border-color:var(--success); background:var(--success-bg); }
.atenea-job.error { border-color:var(--danger); background:var(--danger-bg); }
.atenea-job-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; }
.atenea-job p { margin:6px 0; font-size:13px; }
.atenea-progress-meta { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; margin:10px 0 7px; color:var(--text-sec); font-size:12px; }
.atenea-progress-meta span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.atenea-progress-bar { height:10px; overflow:hidden; border-radius:999px; background:color-mix(in srgb,var(--primary) 14%,var(--surface)); box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 15%,transparent); }
.atenea-progress-bar span { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#7aa8ee,var(--primary)); transition:width .3s ease; }
.atenea-progress-bar.indeterminate span { animation:atenea-progress 1.25s ease-in-out infinite; }
.atenea-outcome { display:flex; flex-direction:column; gap:3px; margin:12px 0 5px; padding:11px 13px; border-radius:10px; font-size:13px; }
.atenea-outcome.success { background:var(--success-bg); color:var(--success); }
.atenea-outcome.empty,.atenea-outcome.info { background:var(--info-bg); color:var(--text); border:1px solid color-mix(in srgb,var(--primary) 20%,transparent); }
.atenea-outcome span { color:var(--text-sec); }
@keyframes atenea-progress { 0%{transform:translateX(-110%)} 50%{transform:translateX(95%)} 100%{transform:translateX(290%)} }
.atenea-job details { margin-top:10px; }
.atenea-job summary { cursor:pointer; color:var(--text-sec); font-size:12px; }
.atenea-job pre { margin-top:8px; padding:10px; max-height:220px; overflow:auto; white-space:pre-wrap; border-radius:8px; background:rgba(15,23,42,.06); color:var(--text-sec); font:11px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace; }
html[data-theme="dark"] .atenea-job.running { background:#132b49; }
html[data-theme="dark"] .atenea-job.done { background:#13352e; }
html[data-theme="dark"] .atenea-job.error { background:#3a1d29; }
html[data-theme="dark"] .atenea-job pre { background:rgba(2,6,23,.45); }
@media (max-width:760px) {
  .folder-picker { align-items:stretch; flex-direction:column; }
  .folder-picker .btn { justify-content:center; }
}


/* Configuración LAN de LEXpedientes */
.login-network-status { margin:14px 0 8px; padding:9px 11px; border:1px solid var(--border); border-radius:9px; background:var(--bg); color:var(--text-sec); font-size:11.5px; text-align:center; }
.login-network-button { width:100%; justify-content:center; }
.network-dot { display:inline-block; width:8px; height:8px; margin-right:5px; border-radius:50%; vertical-align:1px; background:var(--text-muted); }
.network-dot.server { background:var(--success); box-shadow:0 0 0 3px color-mix(in srgb,var(--success) 16%,transparent); }
.network-dot.client { background:var(--primary); box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent); }
.network-settings-card .card-header { align-items:flex-start; }
.network-settings-card .card-header .subtitle { margin-top:3px; }
.network-mode-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.network-mode-option { position:relative; display:flex; min-height:126px; padding:15px; border:1px solid var(--border); border-radius:12px; background:var(--card); cursor:pointer; transition:border-color .15s,box-shadow .15s,background .15s; }
.network-mode-option:hover { border-color:var(--border-focus); }
.network-mode-option.selected { border-color:var(--primary); background:color-mix(in srgb,var(--primary-light) 52%,var(--card)); box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 12%,transparent); }
.network-mode-option input { position:absolute; top:12px; right:12px; accent-color:var(--primary); }
.network-mode-option span { display:flex; flex-direction:column; gap:7px; padding-right:10px; }
.network-mode-option strong { color:var(--text); font-size:14px; }
.network-mode-option small { color:var(--text-sec); font-size:11.5px; line-height:1.45; }
.network-mode-fields { margin-top:14px; padding:15px; border:1px solid var(--border); border-radius:11px; background:var(--bg); }
.network-info,.network-warning { display:flex; flex-direction:column; gap:3px; padding:11px 13px; border-radius:9px; font-size:12px; }
.network-info { color:#1e40af; background:var(--info-bg); }
.network-warning { margin-top:12px; color:#92400e; background:var(--warning-bg); }
.network-info span,.network-warning span { color:inherit; opacity:.9; line-height:1.5; }
.network-actions { display:flex; gap:8px; margin-top:12px; flex-wrap:wrap; }
.network-addresses { margin-top:10px; color:var(--text-sec); font-size:12px; }
.network-addresses code { display:inline-block; margin:3px 3px 0; padding:2px 6px; border-radius:5px; background:var(--card); color:var(--primary); }
.network-restart-warning { margin-bottom:13px; padding:10px 12px; border:1px solid color-mix(in srgb,var(--warning) 35%,var(--border)); border-radius:9px; background:var(--warning-bg); color:#92400e; font-size:12px; }
.network-searching,.network-result { margin-top:10px; padding:9px 11px; border-radius:8px; font-size:12px; }
.network-searching { display:flex; align-items:center; gap:8px; color:var(--text-sec); background:var(--card); border:1px solid var(--border); }
.network-searching .spinner { width:15px; height:15px; border-width:2px; }
.network-result.success { color:#166534; background:var(--success-bg); }
.network-result.warning { color:#92400e; background:var(--warning-bg); }
.network-result.error { color:#991b1b; background:var(--danger-bg); }
.discovered-servers { display:grid; gap:7px; margin-top:10px; }
.discovered-server { display:flex; align-items:center; justify-content:space-between; width:100%; padding:10px 12px; border:1px solid var(--border); border-radius:9px; background:var(--card); color:var(--primary); text-align:left; }
.discovered-server:hover { border-color:var(--primary); background:var(--primary-light); }
.discovered-server span:first-child { display:flex; flex-direction:column; color:var(--text); }
.discovered-server small { color:var(--text-sec); }
.network-unavailable { padding:13px; border:1px solid var(--border); border-radius:10px; background:var(--bg); }
.network-unavailable p,.network-save-success p { margin-top:7px; color:var(--text-sec); font-size:12px; line-height:1.5; }
.network-save-success { padding:4px; }
html[data-theme="dark"] .network-mode-option.selected { background:#132b49; }
html[data-theme="dark"] .network-info { background:#132b49; color:#cfe6ff; }
html[data-theme="dark"] .network-warning,
html[data-theme="dark"] .network-restart-warning { background:#3d3018; color:#f8dda0; }
html[data-theme="dark"] .network-result.success { background:#153f35; color:#b9f5dc; }
html[data-theme="dark"] .network-result.warning { background:#3d3018; color:#f8dda0; }
html[data-theme="dark"] .network-result.error { background:#552536; color:#ffd1db; }
html[data-theme="dark"] .discovered-server:hover { background:#132b49; }
@media (max-width:760px) {
  .network-mode-grid { grid-template-columns:1fr; }
  .network-mode-option { min-height:auto; }
  .network-client-fields { grid-template-columns:1fr; }
}


/* Identidad visual de documentos de facturación */
.firm-logo-setting {
  border-top: 1px solid var(--border);
  padding-top: 16px;
  margin-top: 4px;
}
.firm-logo-row {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 16px;
  align-items: center;
  margin-top: 8px;
}
.firm-logo-preview {
  min-height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px;
  border: 1px dashed var(--border-strong, var(--border));
  border-radius: var(--radius);
  background: var(--surface-soft, var(--bg));
  color: var(--text-muted);
}
.firm-logo-preview img {
  display: block;
  max-width: 100%;
  max-height: 90px;
  object-fit: contain;
}
@media (max-width: 720px) {
  .firm-logo-row { grid-template-columns: 1fr; }
}

.lexnet-help-icon {
  width: 22px; height: 22px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%;
  border: 1.5px solid var(--text-muted);
  color: var(--text-muted);
  font-size: 12px; font-weight: 700;
  cursor: help;
  flex-shrink: 0;
}


/* Document browser search alignment */
.document-browser-toolbar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.document-browser-toolbar .document-search-field {
  flex: 1 1 360px;
  min-width: 240px;
  height: 42px;
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 0 13px;
  color: var(--text-muted);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  box-shadow: none;
}
.document-browser-toolbar .document-search-field:focus-within {
  border-color: var(--border-focus);
  box-shadow: 0 0 0 3px rgba(37,99,235,.1);
}
.document-browser-toolbar .document-search-field svg {
  width: 17px;
  height: 17px;
  flex: 0 0 auto;
}
.document-browser-toolbar .document-search-field input {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
  height: 40px;
  margin: 0;
  padding: 0;
  border: 0 !important;
  border-radius: 0 !important;
  outline: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--text);
}
.document-browser-toolbar > .btn,
.document-browser-toolbar > select {
  height: 42px;
  margin: 0;
}
@media (max-width: 720px) {
  .document-browser-toolbar .document-search-field { flex-basis: 100%; min-width: 100%; }
}
/* ═══════════════════ Cambios en lote ═══════════════════ */
.bulk-action-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 12px 16px;
  background: var(--primary-light);
  border-bottom: 1px solid var(--border);
}

.bulk-action-summary {
  display: flex;
  flex-direction: column;
  gap: 1px;
  margin-right: auto;
  min-width: 190px;
}

.bulk-action-summary strong { font-size: 13px; color: var(--text); }
.bulk-action-summary span { font-size: 11px; color: var(--text-sec); }
.bulk-select-cell { width: 44px; min-width: 44px; text-align: center !important; }
.bulk-check { width: 17px; height: 17px; accent-color: var(--primary); vertical-align: middle; cursor: pointer; }
.data-table tbody tr.bulk-row-selected,
.data-table tbody tr.bulk-row-selected:nth-child(even),
.data-table tbody tr.bulk-row-selected:hover { background: var(--primary-light) !important; }

html[data-theme="dark"] .bulk-action-bar { background: rgba(37, 99, 235, .14); }
html[data-theme="dark"] .planning-event.bulk-row-selected { background: rgba(59, 130, 246, .16); border-color: rgba(96, 165, 250, .5); }
html[data-theme="dark"] .data-table tbody tr.bulk-row-selected,
html[data-theme="dark"] .data-table tbody tr.bulk-row-selected:nth-child(even),
html[data-theme="dark"] .data-table tbody tr.bulk-row-selected:hover { background: rgba(59, 130, 246, .16) !important; }

@media (max-width: 760px) {
  .bulk-action-bar { align-items: stretch; }
  .bulk-action-summary { width: 100%; }
  .bulk-action-bar .filter-select,
  .bulk-action-bar .btn { flex: 1 1 180px; }
}

@media print {
  .bulk-action-bar,
  .bulk-select-cell { display: none !important; }
}


/* Notas de expedientes */
.matter-notes-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 16px;
  margin-top: 16px;
}
.matter-note-card {
  position: relative;
  display: flex;
  min-height: 180px;
  padding: 24px 20px 18px;
  border: 1px solid rgba(15, 23, 42, .12);
  border-radius: 14px;
  box-shadow: 0 8px 22px rgba(15, 23, 42, .08);
  flex-direction: column;
  gap: 10px;
  overflow: hidden;
  text-align: left;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease;
}
.matter-note-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(15, 23, 42, .13);
}
.matter-note-card strong { font-size: 15px; line-height: 1.35; }
.matter-note-preview {
  display: -webkit-box;
  overflow: hidden;
  font-size: 13px;
  line-height: 1.55;
  opacity: .88;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
}
.matter-note-card time { margin-top: auto; font-size: 11px; opacity: .62; }
.matter-note-pin {
  position: absolute;
  top: 9px;
  right: 12px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: currentColor;
  box-shadow: 0 2px 4px rgba(15, 23, 42, .22);
  opacity: .28;
}
.matter-note-editor { display: grid; gap: 16px; }
.matter-note-editor textarea { min-height: 220px; resize: vertical; }
.matter-note-palette-row { display: flex; flex-wrap: wrap; gap: 22px; }
.matter-note-colors { display: flex; align-items: center; gap: 8px; border: 0; padding: 0; }
.matter-note-colors legend { margin-bottom: 8px; color: var(--text-sec); font-size: 12px; font-weight: 700; }
.matter-note-colors label { display: inline-flex; cursor: pointer; }
.matter-note-colors input { position: absolute; opacity: 0; pointer-events: none; }
.matter-note-colors span {
  display: block;
  width: 28px;
  height: 28px;
  border: 2px solid var(--border);
  border-radius: 50%;
  background: var(--note-swatch);
  box-shadow: 0 1px 4px rgba(15, 23, 42, .12);
}
.matter-note-colors input:checked + span {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 20%, transparent);
}
.matter-note-live-preview {
  min-height: 90px;
  padding: 16px;
  border: 1px solid rgba(15, 23, 42, .12);
  border-radius: 12px;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
@media (max-width: 720px) {
  .matter-notes-grid { grid-template-columns: 1fr; }
  .matter-note-palette-row { flex-direction: column; gap: 14px; }
}


/* Herramientas: Honorarios y HAL9000 Premium */
.honorarios-layout { display:grid; grid-template-columns:minmax(280px,340px) minmax(0,1fr); gap:16px; align-items:start; }
.honorarios-tree { max-height:500px; overflow:auto; font-size:13px; }
.hal9000-premium-card {
  grid-column:1 / -1;
  min-height:210px;
  color:#fff;
  border-color:rgba(96,165,250,.55);
  background:
    linear-gradient(90deg,rgba(2,10,28,.96) 0%,rgba(4,18,46,.78) 52%,rgba(5,20,54,.3) 100%),
    url('/static/hal9000-premium-bg.png') center/cover no-repeat;
  box-shadow:0 22px 54px rgba(9,35,90,.28);
  grid-template-columns:76px minmax(0,1fr) 22px;
  column-gap:28px !important;
}
.hal9000-premium-card::after { display:none; }
.hal9000-premium-card:hover { border-color:#75baff; box-shadow:0 26px 62px rgba(20,75,180,.35); }
.hal9000-premium-card h2 { margin:3px 0 8px; color:#fff; font-size:25px; }
.hal9000-premium-card p { max-width:720px; color:#d8eaff; font-size:15px; }
.hal9000-premium-card small { color:#8fd8ff; }
.hal9000-premium-card > b { color:#fff; }
.hal9000-card-logo { display:grid; width:76px; height:76px; place-items:center; padding:8px; border:1px solid rgba(255,255,255,.2); border-radius:20px; background:rgba(7,20,50,.54); backdrop-filter:blur(8px); }
.hal9000-card-logo img { display:block; max-width:100%; max-height:100%; object-fit:contain; }
.hal9000-card-copy { min-width:0; padding-left:8px; }
.premium-kicker,.premium-inline-badge { display:inline-flex; align-items:center; width:max-content; padding:4px 8px; border:1px solid rgba(125,211,252,.42); border-radius:999px; background:rgba(14,116,144,.22); color:#a5ecff; font-size:10px; font-weight:850; letter-spacing:.1em; text-transform:uppercase; }
.premium-inline-badge { margin-left:8px; vertical-align:middle; background:#e8f4ff; border-color:#bfdbfe; color:#1d4ed8; letter-spacing:.05em; }
.hal9000-settings-card { border-color:#bfdbfe; background:linear-gradient(145deg,var(--card),color-mix(in srgb,var(--primary-light) 42%,var(--card))); }
.integrated-tool-shell.hal9000-frame { background:#071125; }
html[data-theme='dark'] .hal9000-settings-card { border-color:#315b91; }
html[data-theme='dark'] .premium-inline-badge { background:rgba(37,99,235,.18); border-color:#315b91; color:#93c5fd; }

@media (max-width:760px) {
  .honorarios-layout { grid-template-columns:minmax(0,1fr); }
  .honorarios-tree { max-height:330px; }
  .honorarios-layout .card-body.no-pad { overflow-x:auto; }
  .honorarios-layout .data-table { min-width:640px; }
  .hal9000-premium-card { grid-column:auto; grid-template-columns:58px minmax(0,1fr) 18px; min-height:230px; padding:18px; column-gap:16px !important; }
  .hal9000-card-logo { width:58px; height:58px; border-radius:15px; }
  .hal9000-card-copy { padding-left:4px; }
  .hal9000-premium-card h2 { font-size:21px; }
}
