main.contratos { display: grid; grid-template-columns: 300px 1fr; gap: 16px; align-items: start; }
main.contratos > .aviso { grid-column: 1 / -1; }
.panel { background: #fff; border-radius: 8px; padding: 14px; }
.panel-titulo { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.lista { list-style: none; margin: 0; padding: 0; }
.lista li { padding: 10px; border: 1px solid #e3e8f0; border-radius: 8px; margin-bottom: 8px; cursor: pointer; }
.lista li:hover { background: #f5f8ff; }
.lista li.sel { border-color: #1f6feb; background: #eef4ff; }
.lista .fechas { font-size: .8rem; color: #556179; margin-top: 3px; }
.lista .chips { margin-top: 5px; display: flex; gap: 5px; flex-wrap: wrap; }
.badge.vigente { background: #e6f4ea; color: #1e5b2f; font-weight: 700; }
.cabecera { display: grid; grid-template-columns: 2fr 1fr 1fr auto; gap: 8px 12px; align-items: end; }
.cabecera label { font-size: .8rem; font-weight: 600; display: block; }
.cabecera input { display: block; width: 100%; margin-top: 3px; padding: 7px; border: 1px solid #b9c2d0; border-radius: 6px; }
.cabecera .obs { grid-column: 1 / 4; }
.cabecera label.casilla { display: flex; gap: 6px; align-items: center; padding-bottom: 8px; }
.cabecera label.casilla input { width: auto; margin: 0; }
.barra { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin: 14px 0 6px; }
.barra input, .barra select { padding: 7px; border: 1px solid #b9c2d0; border-radius: 6px; }
.barra input { min-width: 240px; }
.barra .espacio { flex: 1; }
.resumen { font-size: .85rem; color: #556179; margin: 4px 0 8px; }
td.num, th.num { text-align: right; }
input.valor { width: 130px; text-align: right; padding: 5px 7px; border: 1px solid #b9c2d0; border-radius: 6px; }
input.valor.cambiado { border-color: #d08a26; background: #fff7e8; }
tr.inactivo td { color: #9aa3b2; }
.vacio-detalle { color: #6b778c; text-align: center; padding: 40px; }
.resultados { max-height: 340px; overflow-y: auto; margin-top: 10px; }
.resultados td { white-space: normal; }
.ok { margin-top: 10px; padding: 8px; border-radius: 6px; background: #e6f4ea; color: #1e5b2f; font-size: .9rem; }
@media (max-width: 900px) { main.contratos { grid-template-columns: 1fr; } .cabecera { grid-template-columns: 1fr 1fr; } .cabecera .obs { grid-column: 1 / -1; } }
