body {
    font-family: 'Segoe UI', sans-serif;
    background-color: #f4f7fa;
    margin: 0;
    padding: 20px;
}

/* --- ESTILOS PARA EL NUEVO ENCABEZADO COMPACTO --- */

/* Contenedor principal del encabezado para alinear todo horizontalmente */
.main-header-container {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: 15px;
    background: #ffffff;
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    margin-bottom: 15px;
}

/* Contenedor para los datos de la empresa y del proyecto (lado izquierdo) */
.company-and-project-info {
    display: flex;
    flex-grow: 1;
    gap: 20px;
    align-items: flex-start;
    flex-wrap: wrap; /* Permite que los elementos se envuelvan en pantallas pequeñas */
}

/* Reajustar el estilo de la sección del logo y la empresa */
.info-header {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: flex-start;
    margin-bottom: 0;
    padding: 0;
    box-shadow: none;
    background: transparent;
    flex-shrink: 0; /* Evita que el contenedor se encoja */
}

.info-header img {
    max-height: 100px;
    margin-right: 15px;
    display: block;
}

.info-empresa {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.info-empresa strong, .info-empresa span {
    text-align: left;
    white-space: nowrap; /* Evita saltos de línea en estos elementos */
}

/* Reajustar el estilo de la sección de información del proyecto */
.info-obra {
    flex-grow: 1;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    width: 100%;
    padding: 0;
    gap: 20px;
}

.info-obra-left, .info-obra-right {
    flex: 1;
    min-width: 250px;
    padding: 5px 0;
}

/* Estilos para el bloque de usuario, reloj y empresa activa (lado derecho) */
.user-info-section {
    flex-shrink: 0;
    text-align: right;
    margin-left: auto;
}

.user-info-section h1 {
    margin: 0;
    padding: 0;
    font-size: 1.5em;
    color: #2c3e50;
    display: block;
}

.user-info-section span {
    display: block;
    font-size: 0.9em;
    color: #2c3e50;
}

.user-info-section #usuarioLogueado, .user-info-section #empresaActivaHeader {
    font-size: 0.75em;
    font-weight: normal;
}

/* Resto de estilos que no han cambiado */

header h1 {
    text-align: center;
    color: #2c3e50;
}

section.info {
    background: #ffffff;
    padding: 15px;
    margin-bottom: 15px;
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

section.info hr {
    border-top: 1px dashed #e0e0e0;
    width: 100%;
    margin: 15px 0;
}

/*
 * Estilos para unificar la apariencia del calendario de fecha de impresión.
 */
#fechaImpresion {
    font-family: 'Segoe UI', sans-serif;
    font-size: 1em;
    color: #2c3e50;
    border: 1px solid #ccc;
    border-radius: 4px;
    background-color: #fcfcfc;
    padding: 3px 5px;
    width: auto;
    line-height: 1.5;
}

/* Ajustes clave para la sección info-obra */
.info-obra {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    width: 100%;
    padding: 0 10px;
    gap: 20px;
}

.info-obra-left, .info-obra-right {
    flex: 1;
    min-width: 250px;
    padding: 5px 0;
}

.info-obra-right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
}

.info-obra p {
    margin: 2px 0;
}

.total-general-line {
    width: 100%;
    text-align: right;
    font-weight: bold;
    margin-top: 10px;
    padding-top: 5px;
    border-top: 1px dashed #e0e0e0;
}

section.acciones {
    background: #ffffff;
    padding: 15px;
    margin-bottom: 15px;
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

section.tabla {
    overflow-x: auto;
}

table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background-color: #fff;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

th, td {
    padding: 4px 10px;
    border-bottom: 1px solid #e0e0e0;
    vertical-align: top;
}

th {
    background-color: #ecf3fc;
    font-weight: bold;
    text-align: left;
}

tr:last-child td {
    border-bottom: none;
}

/* Efecto hover mejorado */
tr:not(:first-child):hover {
    background-color: #f0f8ff;
    transform: scale(1.005);
    transition: all 0.2s ease;
    box-shadow: inset 0 0 0 1px #007bff33;
}

td[contenteditable="true"] {
    background-color: #fcfcfc;
    border-radius: 5px;
    padding: 2px;
    outline: 1px solid transparent;
    transition: outline 0.2s ease;
}

td[contenteditable="true"]:focus {
    outline: 1px solid #007bff;
}

button {
    padding: 6px 12px;
    background-color: #007bff;
    color: white;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.9em;
    transition: background-color 0.2s ease;
}

button:hover {
    background-color: #0056b3;
}

/* Estilos específicos para botones de eliminar */
button.btn-eliminar {
    background-color: #dc3545;
}

button.btn-eliminar:hover {
    background-color: #c82333;
}
button#btnEliminarSeleccionados:disabled {
    background-color: #cccccc;
    cursor: not-allowed;
}

/* Flexbox para contenido en celdas de capítulo/rubro para alinear botones */
.chapter-header, .rubro-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
}

.chapter-header span[contenteditable="true"], .rubro-header span[contenteditable="true"] {
    flex-grow: 1;
    padding-right: 10px;
}

/* Estilo para el elemento que se está arrastrando */
tr.dragging {
    opacity: 0.5;
    background-color: #f0f8ff;
    border: 1px dashed #007bff;
}

/* Estilo para el elemento sobre el que se arrastra (destino) */
tr.drag-over {
    border-top: 2px solid #007bff;
    background-color: #e6f7ff;
}

/* Cursor para indicar que la fila es arrastrable */
tr[draggable="true"] {
    cursor: grab;
}

tr[draggable="true"].dragging {
    cursor: grabbing;
}

/* Estilos para el botón de expandir/contraer */
.toggle-btn {
    font-size: 1.2em;
    font-weight: bold;
    cursor: pointer;
    margin-right: 8px;
    background: none;
    border: none;
    color: #007bff;
    padding: 0;
    line-height: 1;
    display: inline-block;
    vertical-align: middle;
}
.toggle-btn:hover {
    color: #0056b3;
    background: none;
}

/* Clase para ocultar filas */
.hidden-row {
    display: none !important;
}

/* Mensaje cuando no hay datos */
.empty-state {
    text-align: center;
    padding: 20px;
    color: #666;
    font-style: italic;
}

/* Estilos para el select de unidad */
td select {
    width: 100%;
    padding: 1px;
    border: 1px solid #ccc;
    border-radius: 4px;
    background-color: #fcfcfc;
    font-size: 0.85em;
}

/* Estilos para la esfera de visibilidad */
.visibility-sphere {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    cursor: pointer;
    vertical-align: middle;
    margin-right: 3px;
    border: 1px solid rgba(0,0,0,0.2);
    box-shadow: 0 0 3px rgba(0,0,0,0.2) inset;
    transition: background-color 0.2s ease;
}

.visibility-sphere.green {
    background-color: #28a745;
}

.visibility-sphere.red {
    background-color: #dc3545;
}

/* Estilos para el icono de candado */

.lock-icon {
    cursor: pointer;
    vertical-align: middle;
    margin-left: 5px;
    width: 12px;
    height: 12px;
    display: inline-block;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}

.lock-icon.locked {
    background-image: url('assets/lock.svg');
}

.lock-icon.unlocked {
    background-image: url('assets/unlock.svg');
}

/* Ajuste para que el texto y el icono de candado estén en la misma línea y centrados verticalmente */
.price-unit-cell-content {
    display: flex;
    align-items: center;
    justify-content: flex-start;
}

/* Estilos para filas de diferentes niveles jerárquicos */
.chapter-row {
    background-color: #d0e6ff !important;
    font-weight: bold;
}

.rubro1-row {
    background-color: #e6f2ff !important;
    font-weight: bold;
}

.rubro2-row {
    background-color: #f0f8ff !important;
    font-weight: bold;
}

.rubro3-row {
    background-color: #f9fcff !important;
    font-weight: bold;
}

.item-row {
    background-color: #ffffff !important;
}

/* Estilos para indicar niveles jerárquicos */
.indent-level-1 {
    padding-left: 30px !important;
}

.indent-level-2 {
    padding-left: 60px !important;
}

.indent-level-3 {
    padding-left: 90px !important;
}

.indent-level-4 {
    padding-left: 120px !important;
}
/* === CÓDIGO FINAL PARA ALINEACIÓN DE ENCABEZADO Y AUTOCOMPLETAR === */

/* --- 1. Contenedor Principal del Encabezado --- */
.info-obra {
    display: flex;
    justify-content: space-between;
    width: 100%;
    padding: 0 10px;
    gap: 20px; /* Espacio entre la columna izquierda y derecha */
}

/* --- 2. Columna Izquierda (Obra, Cliente, Contacto) --- */
.info-obra-left {
    flex: 2 1 55%; /* Ocupa más espacio */
}
.info-obra-left p {
    display: flex;
    align-items: baseline;
    gap: 5px;
    margin: 4px 0;
}
.info-obra-left p strong {
    white-space: nowrap; /* Evita que la etiqueta se parta en dos líneas */
}

/* --- 3. Columna Derecha (Nro, Fecha, etc.) --- */
.info-obra-right {
    flex: 1 1 40%; /* Ocupa menos espacio */
    display: flex;
    flex-direction: column;
    align-items: flex-start; /* Alinea todo el contenido a la izquierda */
}
.info-obra-right p {
    display: flex;
    align-items: baseline;
    gap: 5px;
    margin: 4px 0;
    width: 100%; /* Ocupa todo el ancho de la columna derecha */
}
.info-obra-right p strong {
    min-width: 140px; /* Ancho mínimo para todas las etiquetas */
    text-align: right;  /* Mantenemos el texto alineado a la derecha para un look profesional */
    padding-right: 5px;
}

/* --- 4. Estilos para el Buscador de Contactos (Corregido) --- */
.autocomplete-container {
    position: relative; /* ESTA LÍNEA ES CLAVE para el posicionamiento del desplegable */
    flex-grow: 1; /* Permite que el contenedor del input ocupe el espacio */
}
.input-with-icon {
    position: relative;
    width: 100%;
    max-width: 350px;
}
#contactoInput {
    width: 100%;
    padding: 3px 30px 3px 5px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 1em;
    box-sizing: border-box;
}
.input-with-icon i {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #888;
    font-style: normal;
    pointer-events: none;
}
.autocomplete-results {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    max-width: 350px;
    max-height: 200px;
    overflow-y: auto;
    background-color: #ffffff;
    border: 1px solid #ddd;
    z-index: 1000;
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
.autocomplete-results ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
}
.autocomplete-results li {
    padding: 8px 12px;
    cursor: pointer;
    border-bottom: 1px solid #f0f0f0;
}
.autocomplete-results li:hover {
    background-color: #f1f1f1;
}
.autocomplete-results li small {
    color: #555;
    display: block;
    font-size: 0.85em;
}

/* Estilos específicos para el módulo de análisis de costos si son necesarios */
.ac-table-header {
    background-color: #e0f2f7;
    font-weight: bold;
    text-align: left;
}
.ac-total-line {
    font-weight: bold;
    text-align: right;
    margin-top: 15px;
    font-size: 1.1em;
    color: #2c3e50;
}
.ac-chapter-row {
    background-color: #d0e6ff !important;
    font-weight: bold;
}
.ac-rubro1-row {
    background-color: #e6f2ff !important;
    font-weight: bold;
}
.ac-rubro2-row {
    background-color: #f0f8ff !important;
    font-weight: bold;
}
.ac-rubro3-row {
    background-color: #f9fcff !important;
    font-weight: bold;
}
.ac-item-row {
    background-color: #ffffff !important;
}

.ac-indent-level-0 { padding-left: 10px !important; }
.ac-indent-level-1 { padding-left: 30px !important; }
.ac-indent-level-2 { padding-left: 60px !important; }
.ac-indent-level-3 { padding-left: 90px !important; }
.ac-indent-level-4 { padding-left: 120px !important; }

/* --- Estilos para el nuevo menú desplegable --- */
.main-header-container.home-header {
    width: 100%;
    justify-content: flex-start;
    padding: 10px;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 1000;
}
.menu-container {
    position: relative;
}
.menu-toggle-btn {
    background: none;
    border: none;
    font-size: 1.5em;
    color: #007bff;
    cursor: pointer;
    padding: 10px;
}
.main-menu {
    display: none;
    flex-direction: column;
    position: absolute;
    top: 100%;
    left: 0;
    background-color: #ffffff;
    border: 1px solid #ddd;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
    z-index: 900;
    min-width: 150px;
}
.main-menu.menu-visible {
    display: flex;
}
.main-menu a {
    padding: 10px 15px;
    text-decoration: none;
    color: #333;
    border-bottom: 1px solid #eee;
    transition: background-color 0.3s;
}
.main-menu a:hover {
    background-color: #f4f7fa;
}
.main-menu a:last-child {
    border-bottom: none;
}

/* --- NUEVOS ESTILOS PARA LA PÁGINA DE SELECCIÓN DE EMPRESA --- */
.container {
    padding: 30px;
}
.empresa-btn {
    border: 1px solid #ddd;
    background-color: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    transition: all 0.3s ease;
    text-align: left; /* Alinear el texto a la izquierda */
    padding: 15px; /* Más padding para que se vea como una tarjeta */
}
.empresa-btn:hover {
    background-color: #f0f8ff;
    transform: translateY(-3px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.empresa-card {
    display: flex;
    align-items: center;
    gap: 15px;
    width: 100%;
}
.empresa-logo-container {
    flex-shrink: 0;
    width: 60px;
    height: 60px;
    display: flex;
    justify-content: center;
    align-items: center;
}
.empresa-logo {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}
.empresa-info {
    flex-grow: 1;
}
.empresa-name {
    font-size: 1.2em;
    font-weight: bold;
    color: #2c3e50;
    margin: 0;
}
.empresa-ruc {
    font-size: 0.9em;
    color: #7f8c8d;
    margin: 0;
}

<style>
/* ... tus estilos existentes ... */
form h2 {
    text-align: center;
    color: #333;
    margin-top: 10px;
    margin-bottom: 25px;
}

.btn-secondary {
    background-color: transparent;
    color: #007BFF;
    border: 1px solid #007BFF;
    margin-top: 10px;
}

.btn-secondary:hover {
    background-color: #e6f2ff;
}
/* --- FIN: NUEVOS ESTILOS --- */
/* --- AJUSTE PARA EL BOTÓN DE MENÚ (LA SOLUCIÓN) --- */
.menu-toggle-btn {
    font-size: 2.2em;
    padding: 15px;
}
</style>

/* --- ESTILOS PARA EL MENÚ DINÁMICO Y MODAL DE CONTACTO --- */

/* Estilo para mostrar el email del usuario en el menú */
.user-email-display {
    padding: 10px 15px;
    color: #555;
    font-size: 0.9em;
    font-style: italic;
    cursor: default;
}

/* Contenedor del Modal (fondo oscuro) */
.modal-overlay {
    display: none;
    position: fixed;
    z-index: 1001;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0,0,0,0.6);
    justify-content: center;
    align-items: center;
}

/* Contenido del Modal (la ventana blanca) */
.modal-content {
    background-color: #fff;
    padding: 30px;
    border-radius: 12px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.2);
    width: 90%;
    max-width: 500px;
    text-align: center;
    position: relative;
}

/* Botón para cerrar el modal */
.modal-close-btn {
    color: #aaa;
    position: absolute;
    top: 10px;
    right: 20px;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}

.modal-close-btn:hover {
    color: #333;
}

/* --- ESTILOS PARA EL MODAL DE CARGAR PRESUPUESTO --- */

.modal-overlay.visible {
    display: flex;
}

.modal-content {
    background-color: #fff;
    padding: 0;
    border-radius: 12px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.2);
    width: 90%;
    max-width: 800px;
    text-align: left;
    position: relative;
    display: flex;
    flex-direction: column;
    max-height: 90vh;
}

.modal-header {
    padding: 15px 20px;
    border-bottom: 1px solid #e0e0e0;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.modal-header h3 {
    margin: 0;
    font-size: 1.2em;
    color: #333;
}

.modal-close-btn {
    color: #aaa;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
    background: none;
    border: none;
}

.modal-body {
    padding: 20px;
    overflow-y: auto;
}

.modal-table {
    width: 100%;
    border-collapse: collapse;
}

.modal-table th, .modal-table td {
    padding: 10px;
    border-bottom: 1px solid #f0f0f0;
    text-align: left;
}

.modal-table th {
    background-color: #f8f9fa;
    font-weight: bold;
}

.modal-table tr:last-child td {
    border-bottom: none;
}

.modal-table tr:hover {
    background-color: #f1f5f8;
}

.btn-cargar {
    padding: 5px 10px;
    background-color: #28a745;
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
}

.btn-cargar:hover {
    background-color: #218838;
}

/* --- ESTILOS PARA BOTONES DESHABILITADOS --- */
button:disabled,
button:disabled:hover {
    background-color: #cccccc;
    color: #666666;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

/* Estilos para indicar el punto de inserción al reordenar filas */
tr.drop-target-above {
    border-top: 3px solid #0d6efd;
}

tr.drop-target-below {
    border-bottom: 3px solid #0d6efd;
}

/* --- ESTILOS PARA EL INTERRUPTOR DE PRORRATEO --- */
.prorate-toggle {
    cursor: pointer;
    font-size: 1.4em;
    font-weight: bold;
    color: #cccccc;
    display: inline-block;
    text-align: center;
    width: 100%;
    transition: color 0.2s ease;
}

/* Contenedor principal del encabezado */
.main-header-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px;
    background: #ffffff;
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    margin-bottom: 15px;
    flex-wrap: wrap;
}

/* Contenedor de la izquierda: Menú + Logo Prestable */
.header-left {
    display: flex;
    align-items: flex-start;
    gap: 5px;
}

.prestable-logo {
    max-height: 250px;
    width: auto;
    object-fit: contain;
}

/* Contenedor central: Info de la obra */
.header-center {
    flex-grow: 1;
    display: flex;
    align-items: flex-start;
    padding-left: 20px;
}

/* Contenedor de la derecha: Logo Empresa + Usuario */
.header-right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
    flex-shrink: 0;
    padding-left: 20px;
}

/* Estilos para el bloque de logo y datos de la empresa */
.info-header {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-bottom: 5px;
    padding: 0;
    box-shadow: none;
    background: transparent;
}

/* Ajuste del tamaño del logo de la empresa */
.company-logo {
    max-height: 50px;
    width: auto;
    object-fit: contain;
}

.info-empresa {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
}

/* Estilos para la sección de meta-información del usuario */
.user-meta h1 {
    font-size: 1.2em !important;
    margin: 0;
    line-height: 1.3;
}
.user-meta h1 span {
    font-size: 0.9em !important;
}

/* El resto de tus estilos como .info-obra, .info-obra-left, .info-obra-right, etc., se pueden mantener tal como están. */
.prorate-toggle.active {
    color: #007bff; /* Color azul cuando está activo */
}

.prorate-toggle:hover {
    color: #0056b3;
}
/* ====================================================================== */
/* === INICIO: BLOQUE FINAL Y DEFINITIVO PARA VISTAS Y ESTILOS (28/08) ==== */
/* ====================================================================== */

/* --- Estilos para los botones de cambio de vista --- */
#view-toggles button {
    padding: 8px 15px; border: 1px solid #ccc; background-color: #f0f0f0;
    color: #333; cursor: pointer; border-radius: 5px; font-weight: normal;
    transition: all 0.2s ease;
}
#view-toggles button:hover {
    background-color: #e0e0e0; border-color: #bbb;
}
#view-toggles button.active-view {
    background-color: #0056b3; color: white; border-color: #004a99;
    font-weight: bold;
}

/* --- Estilos Generales de la Tabla --- */
th, td {
    padding: 4px 10px;
    vertical-align: middle;
    height: 45px;
}

/* --- Alineación de CELDAS DE DATOS (td) --- */
.col-cantidad,
.col-costo-unitario,
.col-costo-total,
.col-gg,
.col-costo-gg,
.col-beneficio,
.col-precio-unitario,
.col-precio-total,
.col-beneficio-bruto,
.col-beneficio-neto,
.col-incidencia {
text-align: right;
}

/* --- MEJORA: Alineación de ENCABEZADOS (th) --- */
thead th {
    text-align: left; /* Por defecto, todos a la izquierda */
}
/* Centramos el encabezado de Prorrateo */
thead th:nth-child(4) {
    text-align: center;
}
/* Alineamos a la derecha los encabezados numéricos y de acciones */
thead th.col-cantidad, thead th.col-costo-unitario, thead th.col-costo-total,
thead th.col-gg, thead th.col-costo-gg, thead th.col-beneficio,
thead th.col-precio-unitario, thead th.col-precio-total, thead th.col-beneficio-bruto,
thead th.col-beneficio-neto, thead th.col-incidencia,
thead th:last-child {
    text-align: right;
}

/* ====================================================================== */
/* === FIN: BLOQUE FINAL Y DEFINITIVO =================================== */
/* ====================================================================== */

/* ====================================================================== */
/* === INICIO: CORRECCIÓN VISUAL PARA FILAS DE CAPÍTULO Y RUBRO  ==== */
/* ====================================================================== */

.chapter-row td,
.rubro1-row td,
.rubro2-row td,
.rubro3-row td {
    background-color: inherit !important;
}

/* ====================================================================== */
/* === FIN: CORRECCIÓN VISUAL =========================================== */
/* ====================================================================== */

/* ====================================================================== */
/* === INICIO: Estilo para Precios Atenuados de Hijos Ignorados ==== */
/* ====================================================================== */

.price-muted {
    color: #b0b0b0 !important;
}

/* ====================================================================== */
/* === FIN: Estilo para Precios Atenuados =============================== */
/* ====================================================================== */

/* Estilo para el botón de correo cuando el presupuesto ya fue enviado */
button.btn-enviado,
button.btn-enviado:hover {
    background-color: #dc3545;
    cursor: not-allowed;
}

/* EN estilos.css, AL FINAL DEL ARCHIVO */

/* --- Estilos para el nuevo campo de CC --- */
.cc-container {
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 5px;
    margin-bottom: 5px;
    width: 100%;
    max-width: 350px;
    box-sizing: border-box;
}
.cc-pills-container {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-bottom: 5px;
}
.cc-pill {
    background-color: #e0e0e0;
    border-radius: 12px;
    padding: 3px 8px;
    font-size: 0.9em;
    display: flex;
    align-items: center;
    gap: 5px;
}
.cc-pill .remove-cc {
    cursor: pointer;
    font-weight: bold;
    color: #888;
}
.cc-pill .remove-cc:hover {
    color: #333;
}
.cc-input {
    border: none;
    outline: none;
    width: 100%;
    font-size: 1em;
}

/* EN estilos.css, AL FINAL DEL ARCHIVO */

/* --- Estilos para la nueva sección de Adjuntos --- */
.adjuntos-container {
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 5px;
    margin-bottom: 5px;
    width: 100%;
    max-width: 350px;
    box-sizing: border-box;
}

.adjuntos-pills-container {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-bottom: 5px;
}

.adjunto-pill {
    background-color: #d1ecf1;
    color: #0c5460;
    border-radius: 12px;
    padding: 3px 8px;
    font-size: 0.9em;
    display: flex;
    align-items: center;
    gap: 5px;
}

.adjunto-pill .remove-adjunto {
    cursor: pointer;
    font-weight: bold;
    color: #888;
}
.adjunto-pill .remove-adjunto:hover {
    color: #333;
}

.btn-adjuntar {
    background-color: #6c757d;
    width: 100%;
    text-align: center;
}
.btn-adjuntar:hover {
    background-color: #5a6268;
}
.btn-adjuntar i {
    margin-right: 5px;
}

/* Nuevo contenedor para los elementos de la izquierda */
.header-left {
    display: flex;
    align-items:center;
    gap: 5px;
}
/* Ajuste del tamaño del logo de Prestable */
.prestable-logo {
    max-height: 250px;
    width: auto;
    object-fit: contain;
}

/* Contenedor central, ajustamos para que ocupe el espacio restante */
.header-center {
    flex-grow: 1;
    display: flex;
    align-items:flex-end;
    padding-left: 5px;
}

/* Nuevo contenedor para los elementos de la derecha */
.header-right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
    flex-shrink: 0;
    padding-left: 20px;
}

/* Estilos para el bloque de logo y datos de la empresa a la derecha */
.info-header-right {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-bottom: 5px;
}

.info-header-right img {
    max-height: 50px;
    width: auto;
    object-fit: contain;
}

.info-empresa {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
}

/* El resto de tus estilos para .info-obra y .user-info-section se mantienen o se ajustan según la nueva estructura. */

/* Aseguramos que la información del usuario no tenga un tamaño excesivo */
.user-info-section h1 {
    font-size: 1.2em !important;
    margin: 0;
    line-height: 1.3;
}
.user-info-section h1 span {
    font-size: 0.9em !important;
}

/* Contenedor principal del encabezado */
.main-header-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px;
    background: #ffffff;
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    margin-bottom: 15px;
    flex-wrap: wrap;
}

/* Contenedor de la izquierda: Menú + Logo Prestable */
.header-left {
    display: flex;
    align-items: flex-start
}
.prestable-logo {
    max-height: 250px;
    width: auto;
    object-fit: contain;
}

/* Contenedor central: Info de la obra */
.header-center {
    flex-grow: 1;
    display: flex;
    align-items:flex-end;
    padding-left: 5px;
}

/* Contenedor de la derecha: Logo Empresa + Usuario */
.header-right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
    flex-shrink: 0;
    padding-left: 20px;
}

/* Estilos para el bloque de logo y datos de la empresa */
.info-header {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-bottom: 5px;
    padding: 0;
    box-shadow: none;
    background: transparent;
}

/* Ajuste del tamaño del logo de la empresa */
.company-logo {
    max-height: 50px;
    width: auto;
    object-fit: contain;
}

.info-empresa {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
}

/* Estilos para la sección de meta-información del usuario */
.user-meta h1 {
    font-size: 1.2em !important;
    margin: 0;
    line-height: 1.3;
}
.user-meta h1 span {
    font-size: 0.9em !important;
}

.prorate-toggle.active {
    color: #007bff;
}

.prorate-toggle:hover {
    color: #0056b3;
}

#budget-table-container {
    max-height: 400px;
    overflow-y: auto;
    border: 1px solid #ddd;
}




/* Estilo general para todos los botones de acción */
.btn-action {
    padding: 6px 12px;
    background-color: #007bff; /* Color primario azul */
    color: white;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.9em;
    transition: background-color 0.2s ease, transform 0.2s ease;
}

.btn-action:hover {
    background-color: #0056b3;
    transform: translateY(-1px);
}

/* --- ESTILO ESPECÍFICO PARA EL BOTÓN DE CERRAR --- */

#btnCloseBudget {
    background: none; /* Hace el fondo transparente */
    border: 1px solid #dc3545; /* Le da un borde sutil de color rojo */
    color: #dc3545; /* Cambia el color del ícono a rojo */
}

#btnCloseBudget:hover {
    background-color: #dc3545; /* Se rellena de rojo al pasar el cursor */
    color: white; /* El texto se vuelve blanco */
}



/* Estilos para el contenedor del interruptor */
.autosave-toggle-container {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-right: 15px; /* Espacio para separarlo de otros botones */
}

.autosave-label {
    font-size: 0.9em;
    color: #666;
    font-weight: bold;
}

/* Estilos para el interruptor (checkbox) tipo slider */
.switch {
    position: relative;
    display: inline-block;
    width: 40px;
    height: 20px;
}

.switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    transition: .4s;
}

.slider:before {
    position: absolute;
    content: "";
    height: 16px;
    width: 16px;
    left: 2px;
    bottom: 2px;
    background-color: white;
    transition: .4s;
}

input:checked + .slider {
    background-color: #28a745;
}

input:focus + .slider {
    box-shadow: 0 0 1px #28a745;
}

input:checked + .slider:before {
    transform: translateX(20px);
}

.slider.round {
    border-radius: 20px;
}

.slider.round:before {
    border-radius: 50%;
}














/* ====================================================================== */
/* === ARCHIVO DE ESTILOS LIMPIO Y FINALMENTE CORREGIDO POR GEMINI ===== */
/* ====================================================================== */

body {
    font-family: 'Segoe UI', sans-serif;
    background-color: #f4f7fa;
    margin: 0;
    padding: 20px;
}

/* --- ESTILOS PARA EL ENCABEZADO Y LA INFORMACIÓN GENERAL --- */
.main-header-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px;
    background: #ffffff;
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    margin-bottom: 15px;
    flex-wrap: wrap;
}

.header-left {
    display: flex;
    align-items: center;
    gap: 5px;
}

.prestable-logo {
    max-height: 250px;
    width: auto;
    object-fit: contain;
}

.header-center {
    flex-grow: 1;
    display: flex;
    align-items: flex-end;
    padding-left: 5px;
}

.header-right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
    flex-shrink: 0;
    padding-left: 20px;
}

.info-header {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-bottom: 5px;
    padding: 0;
    box-shadow: none;
    background: transparent;
}

.company-logo {
    max-height: 50px;
    width: auto;
    object-fit: contain;
}

.info-empresa {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
}

.user-info-section h1 {
    font-size: 1.2em;
    margin: 0;
    line-height: 1.3;
}

.user-info-section h1 span {
    font-size: 0.9em;
}

header h1 {
    text-align: center;
    color: #2c3e50;
}

section.info {
    background: #ffffff;
    padding: 15px;
    margin-bottom: 15px;
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.info-obra {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    width: 100%;
    padding: 0 10px;
    gap: 20px;
}

.info-obra-left {
    flex: 2 1 55%;
}

.info-obra-left p {
    display: flex;
    align-items: baseline;
    gap: 5px;
    margin: 4px 0;
}

.info-obra-left p strong {
    white-space: nowrap;
}

.info-obra-right {
    flex: 1 1 40%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.info-obra-right p {
    display: flex;
    align-items: baseline;
    gap: 5px;
    margin: 4px 0;
    width: 100%;
}

.info-obra-right p strong {
    min-width: 140px;
    text-align: right;
    padding-right: 5px;
}

section.info hr {
    border-top: 1px dashed #e0e0e0;
    width: 100%;
    margin: 15px 0;
}

/* --- ESTILOS PARA LA TABLA Y SUS NIVELES JERÁRQUICOS --- */
section.tabla {
    overflow-x: auto;
}

table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background-color: #fff;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

th,
td {
    padding: 4px 10px;
    border-bottom: 1px solid #e0e0e0;
    vertical-align: middle;
    height: 45px;
}

th {
    background-color: #ecf3fc;
    font-weight: bold;
    text-align: left;
}

tr:last-child td {
    border-bottom: none;
}

tr:not(:first-child):hover {
    background-color: #f0f8ff;
    transform: scale(1.005);
    transition: all 0.2s ease;
    box-shadow: inset 0 0 0 1px #007bff33;
}

.col-cantidad,
.col-costo-unitario,
.col-costo-total,
.col-gg,
.col-costo-gg,
.col-beneficio,
.col-precio-unitario,
.col-precio-total,
.col-beneficio-bruto,
.col-beneficio-neto,
.col-incidencia {
    text-align: right;
}


/* Añade esta nueva regla en un lugar lógico para aplicarle el estilo a la columna de código */
.col-codigo {
    /* Puedes ajustar el valor '0.9em' o '0.85em' para encontrar el tamaño ideal */
    font-size: 0.9em; 
    font-weight: normal; /* Opcional: para que no se vean tan negritas */
    color: #555; /* Opcional: para que no se vean tan oscuras */
}






thead th.col-cantidad,
thead th.col-costo-unitario,
thead th.col-costo-total,
thead th.col-gg,
thead th.col-costo-gg,
thead th.col-beneficio,
thead th.col-precio-unitario,
thead th.col-precio-total,
thead th.col-beneficio-bruto,
thead th.col-beneficio-neto,
thead th.col-incidencia,
thead th:last-child {
    text-align: right;
}

/* --- ESTILOS DEFINITIVOS PARA NIVELES JERÁRQUICOS CON ALTA ESPECIFICIDAD --- */
#tablaItems .chapter-row {
    background-color: #60a5fa !important; /* Borgoña más suave *#1d4ed8/
    color: #ffffff !important;
    font-size: 1.1em !important;
    font-weight: bold !important;
    border-top: 2px solid #e0e0e0 !important;
}

#tablaItems .chapter-row:hover {
    background-color:#a5c7fd !important;
}

#tablaItems .rubro1-row {
    background-color: #f0f0f0 !important; /* Rojo terracota más apagado */
    color: #ffffff !important;
    font-weight: 600 !important;
}

#tablaItems .rubro1-row:hover {
    background-color: #a5c7fd !important;
}

#tablaItems .rubro2-row {
    background-color: #a5c7fd !important; /* Tono de gris un poco más oscuro */
    font-weight: 500 !important;
}

#tablaItems .rubro2-row:hover {
    background-color: #BDBFBF !important;
}

#tablaItems .rubro3-row {
    background-color: #e0f2fe !important; /* Tono de gris muy claro */
    font-style: italic !important;
}

#tablaItems .rubro3-row:hover {
    background-color: #DDE0E2 !important;
}

#tablaItems .item-row {
    background-color: #ffffff !important;
    font-weight: normal !important;
}

#tablaItems .item-row:hover {
    background-color: #f0f0f0 !important;
}

#tablaItems .chapter-row td,
#tablaItems .rubro1-row td,
#tablaItems .rubro2-row td,
#tablaItems .rubro3-row td,
#tablaItems .item-row td {
    background-color: inherit !important;
    padding-top: 8px !important;
    padding-bottom: 8px !important;
    vertical-align: middle !important;
}

/* --- ESTILOS PARA LOS BOTONES DE ACCIÓN DE LA TABLA --- */
.action-buttons-cell {
    display: flex;
    gap: 5px;
    align-items: center;
}

.action-btn {
    width: 25px;
    height: 25px;
    border-radius: 50%;
    border: 1px solid transparent;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 0.9em;
    font-weight: bold;
    cursor: pointer;
    transition: all 0.2s ease;
}

/* Botones de adición (+R1, +Item, etc.) */
.add-btn {
    background-color: #C0504E;
    color: white;
}
.add-btn:hover {
    background-color: #A34442;
    transform: scale(1.1);
}

/* Botón de eliminar */
.delete-btn {
    background-color: #802B2D;
    color: white;
}
.delete-btn:hover {
    background-color: #6a2425;
    transform: scale(1.1);
}

/* --- OTROS ESTILOS DE LA TABLA --- */
.price-muted {
    color: #b0b0b0 !important;
}

.visibility-sphere {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    cursor: pointer;
    vertical-align: middle;
    margin-right: 3px;
    border: 1px solid rgba(0, 0, 0, 0.2);
    box-shadow: 0 0 3px rgba(0, 0, 0, 0.2) inset;
    transition: background-color 0.2s ease;
}

.visibility-sphere.green {
    background-color: #28a745;
}

.visibility-sphere.red {
    background-color: #dc3545;
}

.lock-icon {
    cursor: pointer;
    vertical-align: middle;
    margin-left: 5px;
    width: 12px;
    height: 12px;
    display: inline-block;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}

.lock-icon.locked {
    background-image: url('assets/lock.svg');
}

.lock-icon.unlocked {
    background-image: url('assets/unlock.svg');
}

.price-unit-cell-content {
    display: flex;
    align-items: center;
    /* Cambia 'flex-start' por 'flex-end' para que el contenido se vaya a la derecha */
    justify-content: flex-end;
}

.chapter-header,
.rubro-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
}

.chapter-header span[contenteditable="true"],
.rubro-header span[contenteditable="true"] {
    flex-grow: 1;
    padding-right: 10px;
}

.total-general-line {
    width: 100%;
    text-align: right;
    font-weight: bold;
    margin-top: 10px;
    padding-top: 5px;
    border-top: 1px dashed #e0e0e0;
}

#tablaItems tr.selected {
    background-color: #cce5ff !important;
    box-shadow: inset 0 0 0 1px #007bff;
}

.indent-level-1 {
    padding-left: 30px !important;
}

.indent-level-2 {
    padding-left: 60px !important;
}

.indent-level-3 {
    padding-left: 90px !important;
}

.indent-level-4 {
    padding-left: 120px !important;
}

.indent-level-5 {
    padding-left: 150px !important;
}

/* --- ESTILOS PARA FORMULARIOS Y COMPONENTES --- */
.autocomplete-container {
    position: relative;
    flex-grow: 1;
}

.input-with-icon {
    position: relative;
    width: 100%;
    max-width: 350px;
}

#contactoInput {
    width: 100%;
    padding: 3px 30px 3px 5px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 1em;
    box-sizing: border-box;
}

.input-with-icon i {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #888;
    font-style: normal;
    pointer-events: none;
}

.autocomplete-results {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    max-width: 350px;
    max-height: 200px;
    overflow-y: auto;
    background-color: #ffffff;
    border: 1px solid #ddd;
    z-index: 1000;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.autocomplete-results ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

.autocomplete-results li {
    padding: 8px 12px;
    cursor: pointer;
    border-bottom: 1px solid #f0f0f0;
}

.autocomplete-results li:hover {
    background-color: #f1f1f1;
}

.autocomplete-results li small {
    color: #555;
    display: block;
    font-size: 0.85em;
}

/* --- ESTILOS DE BOTONES --- */
section.acciones {
    background: #ffffff;
    padding: 15px;
    margin-bottom: 15px;
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.btn-action {
    padding: 6px 12px;
    background-color: #007bff;
    color: white;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.9em;
    transition: background-color 0.2s ease, transform 0.2s ease;
}

.btn-action:hover {
    background-color: #0056b3;
    transform: translateY(-1px);
}

button.btn-eliminar {
    background-color: #dc3545;
}

button.btn-eliminar:hover {
    background-color: #c82333;
}

button:disabled,
button:disabled:hover {
    background-color: #cccccc;
    color: #666666;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

button.btn-enviado,
button.btn-enviado:hover {
    background-color: #dc3545;
    cursor: not-allowed;
}

/* --- ESTILOS PARA ELEMENTOS ESPECÍFICOS --- */
#fechaImpresion {
    font-family: 'Segoe UI', sans-serif;
    font-size: 1em;
    color: #2c3e50;
    border: 1px solid #ccc;
    border-radius: 4px;
    background-color: #fcfcfc;
    padding: 3px 5px;
    width: auto;
    line-height: 1.5;
}

td[contenteditable="true"] {
    background-color: #fcfcfc;
    border-radius: 5px;
    padding: 2px;
    outline: 1px solid transparent;
    transition: outline 0.2s ease;
}

td[contenteditable="true"]:focus {
    outline: 1px solid #007bff;
}

td select {
    width: 100%;
    padding: 1px;
    border: 1px solid #ccc;
    border-radius: 4px;
    background-color: #fcfcfc;
    font-size: 0.85em;
}

/* --- ESTILOS PARA DRAG-AND-DROP --- */
tr.dragging {
    opacity: 0.5;
    background-color: #f0f8ff;
    border: 1px dashed #007bff;
}

tr.drag-over {
    border-top: 2px solid #007bff;
    background-color: #e6f7ff;
}

tr[draggable="true"] {
    cursor: grab;
}

tr[draggable="true"].dragging {
    cursor: grabbing;
}

tr.drop-target-above {
    border-top: 3px solid #0d6efd;
}

tr.drop-target-below {
    border-bottom: 3px solid #0d6efd;
}

/* --- ESTILOS PARA MODALES --- */
.modal-overlay {
    display: none;
    position: fixed;
    z-index: 1001;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.6);
    justify-content: center;
    align-items: center;
}

.modal-overlay.visible {
    display: flex;
}

.modal-content {
    background-color: #fff;
    padding: 0;
    border-radius: 12px;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
    width: 90%;
    max-width: 800px;
    text-align: left;
    position: relative;
    display: flex;
    flex-direction: column;
    max-height: 90vh;
}

.modal-header {
    padding: 15px 20px;
    border-bottom: 1px solid #e0e0e0;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.modal-header h3 {
    margin: 0;
    font-size: 1.2em;
    color: #333;
}

.modal-close-btn {
    color: #aaa;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
    background: none;
    border: none;
}

.modal-body {
    padding: 20px;
    overflow-y: auto;
}

.modal-table {
    width: 100%;
    border-collapse: collapse;
}

.modal-table th,
.modal-table td {
    padding: 10px;
    border-bottom: 1px solid #f0f0f0;
    text-align: left;
}

.modal-table th {
    background-color: #f8f9fa;
    font-weight: bold;
}

.modal-table tr:last-child td {
    border-bottom: none;
}

.modal-table tr:hover {
    background-color: #f1f5f8;
}

/* --- OTROS ESTILOS DE COMPONENTES --- */
.prorate-toggle {
    cursor: pointer;
    font-size: 1.4em;
    font-weight: bold;
    color: #cccccc;
    display: inline-block;
    text-align: center;
    width: 100%;
    transition: color 0.2s ease;
}

.prorate-toggle.active {
    color: #007bff;
}

.prorate-toggle:hover {
    color: #0056b3;
}

.hidden-row {
    display: none !important;
}

.empty-state {
    text-align: center;
    padding: 20px;
    color: #666;
    font-style: italic;
}

#view-toggles button {
    padding: 8px 15px;
    border: 1px solid #ccc;
    background-color: #f0f0f0;
    color: #333;
    cursor: pointer;
    border-radius: 5px;
    font-weight: normal;
    transition: all 0.2s ease;
}

#view-toggles button:hover {
    background-color: #e0e0e0;
    border-color: #bbb;
}

#view-toggles button.active-view {
    background-color: #0056b3;
    color: white;
    border-color: #004a99;
    font-weight: bold;
}


/* Estilos para el autocompletado de la tabla */
.autocomplete-suggestions {
    background-color: #fff;
    border: 1px solid #ccc;
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
    border-radius: 4px;
    z-index: 100;
    max-height: 200px;
    overflow-y: auto;
}

.suggestion-item {
    padding: 8px 12px;
    cursor: pointer;
    font-size: 0.9em;
}

.suggestion-item:hover {
    background-color: #f0f0f0;
}



/* Estilos para el autocompletado de contactos */
#contactoResults {
    display: none;
    position: absolute;
    background: white;
    border: 1px solid #ccc;
    border-top: none;
    max-height: 300px;
    overflow-y: auto;
    z-index: 1000;
    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}

#contactoResults ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

#contactoResults li {
    padding: 10px;
    border-bottom: 1px solid #eee;
    cursor: pointer;
    transition: background-color 0.2s;
}

#contactoResults li:hover {
    background-color: #f5f5f5;
}

#contactoResults li:last-child {
    border-bottom: none;
}

/* Estilo para el item seleccionado con teclado */
#contactoResults li.seleccionado {
    background-color: #007bff !important;
    color: white;
}

/* Contenedor del input de contacto con posición relativa */
#contactoInputContainer {
    position: relative;
    width: 100%;
}


/* ====================================================================== */
/* === ESTILOS MEJORADOS PARA AUTOCOMPLETADO DE CONTACTOS === */
/* ====================================================================== */

.autocomplete-container {
    position: relative;
    width: 100%;
    max-width: 350px;
}

#contactoInput {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 14px;
    box-sizing: border-box;
    transition: border-color 0.2s ease;
}

#contactoInput:focus {
    border-color: #007bff;
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}

#contactoResults {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    max-height: 300px;
    overflow-y: auto;
    background-color: #ffffff;
    border: 1px solid #ddd;
    border-top: none;
    border-radius: 0 0 4px 4px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    z-index: 1000;
}

#contactoResults ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

#contactoResults li {
    padding: 12px;
    border-bottom: 1px solid #f0f0f0;
    cursor: pointer;
    transition: background-color 0.2s ease;
}

#contactoResults li:hover {
    background-color: #f8f9fa;
}

#contactoResults li:last-child {
    border-bottom: none;
}

#contactoResults li strong {
    display: block;
    font-size: 14px;
    color: #333;
    margin-bottom: 4px;
}

#contactoResults li small {
    display: block;
    font-size: 12px;
    color: #666;
    line-height: 1.4;
}

#contactoResults li[style*="background-color: #007bff"] {
    background-color: #007bff !important;
    color: white;
}

#contactoResults li[style*="background-color: #007bff"] strong,
#contactoResults li[style*="background-color: #007bff"] small {
    color: white;
}

/* Opción para crear nuevo contacto */
#contactoResults li:last-child {
    background-color: #e8f4fd;
    border-top: 2px solid #007bff;
    font-weight: bold;
}

#contactoResults li:last-child:hover {
    background-color: #d1ecf1;
}

/* Scrollbar personalizado */
#contactoResults::-webkit-scrollbar {
    width: 6px;
}

#contactoResults::-webkit-scrollbar-track {
    background: #f1f1f1;
    border-radius: 3px;
}

#contactoResults::-webkit-scrollbar-thumb {
    background: #c1c1c1;
    border-radius: 3px;
}

#contactoResults::-webkit-scrollbar-thumb:hover {
    background: #a8a8a8;
}



.autocomplete-results {
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    background: white;
    border: 1px solid #ccc;
    border-top: none;
    max-height: 200px;
    overflow-y: auto;
    z-index: 1000;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

.autocomplete-results ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.autocomplete-results li {
    padding: 8px;
    border-bottom: 1px solid #eee;
    cursor: pointer;
}

.autocomplete-results li:hover {
    background-color: #f8f9fa;
}

/* --- ESTILOS PARA ALERTAS MEJORADAS --- */
.alert {
    padding: 8px;
    border-radius: 4px;
    font-size: 0.9em;
}
.alert-info {
    background-color: #d1ecf1;
    color: #0c5460;
    border: 1px solid #bee5eb;
}
.alert-warning {
    background-color: #fff3cd;
    color: #856404;
    border: 1px solid #ffeaa7;
}
.alert-success {
    background-color: #d4edda;
    color: #155724;
    border: 1px solid #c3e6cb;
}

/* ESTILOS PARA FILAS DE EMERGENCIA */
.capitulo {
    background-color: #e3f2fd !important;
    font-weight: bold;
}

.rubro {
    background-color: #f3e5f5 !important;
    margin-left: 20px;
}

.item {
    background-color: #fafafa !important;
    margin-left: 40px;
}

.codigo-capitulo, .codigo-rubro, .codigo-item {
    font-family: 'Courier New', monospace;
    font-weight: bold;
    min-width: 80px;
    display: inline-block;
}

.descripcion-capitulo, .descripcion-rubro, .descripcion-item {
    min-width: 200px;
    display: inline-block;
}

/* Botones de acción */
.btn-agregar-rubro, .btn-agregar-item {
    background: #28a745;
    color: white;
    border: none;
    padding: 5px 10px;
    border-radius: 3px;
    cursor: pointer;
    margin-right: 5px;
}

.btn-agregar-rubro:hover, .btn-agregar-item:hover {
    background: #218838;
}

.btn-eliminar {
    background: #dc3545;
    color: white;
    border: none;
    padding: 5px 10px;
    border-radius: 3px;
    cursor: pointer;
}

.btn-eliminar:hover {
    background: #c82333;
}
