/*
  Estilos de listados con tabla + filtros + panel de detalle (issue #12).
  Traduce el patron visual de docs/referencia/index.html (toolbar, table,
  row-actions, empty-state, overlay/drawer, kv-grid) a un archivo propio
  sobre los tokens de css/tokens.css. Pensado para que "Limpieza de nido"
  (#13) y otras vistas con tablas puedan reutilizar estas mismas clases.
*/

/* ---------- Barra de herramientas / filtros ---------- */
.toolbar{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  gap:12px;
  margin-bottom:18px;
}
.toolbar-field{min-width:150px;}
.toolbar-field.grow{flex:1; min-width:180px;}

/* ---------- Tabla ---------- */
.table-scroll{
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  border:1px solid var(--line);
  border-radius:var(--radius-card);
  background:#fff;
}
table{width:100%; border-collapse:collapse;}
thead th{
  text-align:left;
  font-size:11.5px;
  font-weight:600;
  color:var(--ink-soft);
  padding:10px 12px;
  border-bottom:2px solid var(--ocean-deep);
  white-space:nowrap;
}
tbody td{
  padding:11px 12px;
  border-bottom:1px solid var(--sand-dark);
  font-size:13.5px;
  vertical-align:middle;
  white-space:nowrap;
}
tbody tr:last-child td{border-bottom:none;}
tbody tr:hover{background:var(--sand);}

.pill{
  display:inline-block;
  padding:2px 8px;
  border-radius:20px;
  font-size:11.5px;
  background:var(--sand-dark);
  color:var(--ocean-deep);
  font-weight:500;
  white-space:nowrap;
}

.row-actions{display:flex; gap:2px;}
.icon-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:var(--touch-target-min);
  height:var(--touch-target-min);
  min-height:var(--touch-target-min);
  background:none;
  border:none;
  border-radius:2px;
  cursor:pointer;
  color:var(--ink-soft);
  padding:4px;
}
.icon-btn:hover{color:var(--ocean-deep); background:var(--sand-dark);}
.icon-btn svg{width:17px; height:17px;}

/* ---------- Estado vacio ---------- */
.empty-state{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:10px;
  text-align:center;
  padding:56px 20px;
  color:var(--ink-soft);
  border:1.5px dashed var(--line);
  border-radius:var(--radius-card);
  background:#fff;
}
.empty-state[hidden]{display:none;}
.empty-state svg{width:34px; height:34px; opacity:.7;}
.empty-state p{margin:0; font-size:13.5px;}

/* ---------- Paginacion ---------- */
.pagination{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-top:14px;
  flex-wrap:wrap;
}
.pagination .page-info{font-size:12.5px; color:var(--ink-soft);}

/* ---------- Panel de detalle (drawer) ---------- */
body.drawer-open{overflow:hidden;}

.overlay{
  position:fixed;
  inset:0;
  background:rgba(10,20,18,.45);
  display:flex;
  align-items:stretch;
  justify-content:flex-end;
  z-index:60;
}
.overlay[hidden]{display:none;}

.drawer{
  width:460px;
  max-width:92vw;
  background:var(--paper);
  height:100%;
  overflow-y:auto;
  padding:26px 24px 32px;
  box-shadow:-6px 0 24px rgba(0,0,0,.15);
}
.drawer:focus{outline:none;}
.drawer:focus-visible{
  outline:var(--focus-ring-width) solid var(--focus-ring-color);
  outline-offset:-2px;
}

.drawer-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  margin-bottom:12px;
}
.drawer-head h2{font-size:20px;}

.close-x{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:var(--touch-target-min);
  height:var(--touch-target-min);
  flex-shrink:0;
  background:none;
  border:none;
  border-radius:2px;
  color:var(--ink-soft);
  cursor:pointer;
}
.close-x:hover{color:var(--ocean-deep); background:var(--sand-dark);}
.close-x svg{width:18px; height:18px;}

.detail-block{margin:18px 0;}
.detail-block h4{
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--amber-deep);
  margin:0 0 10px;
  font-weight:600;
}
.detail-text{font-size:13.5px; line-height:1.5; margin:0;}
.detail-meta{margin-top:20px; padding-top:14px; border-top:1px solid var(--sand-dark);}

.kv-grid{display:grid; grid-template-columns:1fr 1fr; gap:9px 14px;}
.kv{font-size:13.5px;}
.kv .k{color:var(--ink-soft); font-size:11.5px;}
.kv .v{margin-top:1px; word-break:break-word;}

/* ---------- Responsive ---------- */
@media (max-width:760px){
  .toolbar{flex-direction:column; align-items:stretch;}
  .toolbar-field{min-width:0; width:100%;}
  .drawer{width:100%; max-width:100%; padding:20px 16px 28px;}
  .kv-grid{grid-template-columns:1fr;}
}

@media (max-width:480px){
  .pagination{justify-content:stretch;}
  .pagination .btn{flex:1;}
}
