/* Levante Solar - panel */
:root { --ls-azul: #0b3d66; --ls-sol: #f5a400; }
.barra { background: var(--ls-azul); }
.login-page {
  min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 16px;
  background: linear-gradient(160deg, #0b3d66 0%, #1d6fa5 60%, #f5a400 140%);
}
.login-box { width: 100%; max-width: 380px; }
.login-logo { font-size: 2.5rem; color: var(--ls-sol); }

@media (min-width: 992px) {
  .sidebar { width: 220px; flex-shrink: 0; min-height: calc(100vh - 56px); border-right: 1px solid var(--bs-border-color); }
}
.sidebar .nav-link { color: var(--bs-body-color); border-radius: .375rem; white-space: nowrap; }
.sidebar .nav-link:hover { background: var(--bs-secondary-bg); }
.sidebar .nav-link.active { background: var(--ls-azul); color: #fff; }
.sidebar .nav-link i { width: 1.4em; display: inline-block; }
.contenido { min-width: 0; }

.kpi .valor { font-size: 1.6rem; font-weight: 600; line-height: 1.1; }
.kpi .icono { font-size: 1.8rem; opacity: .35; }
.table td, .table th { vertical-align: middle; }
.pre-line { white-space: pre-line; }

/* Editor de líneas */
.tabla-lineas td { padding: .25rem; vertical-align: top; }
.tabla-lineas textarea { min-height: 38px; resize: vertical; }
.tabla-lineas .num { text-align: right; }
.tabla-lineas .col-cant { width: 90px; } .tabla-lineas .col-precio { width: 120px; }
.tabla-lineas .col-dto { width: 80px; } .tabla-lineas .col-iva { width: 95px; }
.tabla-lineas .col-coste { width: 110px; } .tabla-lineas .col-imp { width: 110px; }
@media (max-width: 767px) {
  .tabla-lineas thead { display: none; }
  .tabla-lineas tr { display: grid; grid-template-columns: repeat(3, 1fr); gap: .25rem; border-bottom: 1px solid var(--bs-border-color); padding: .5rem 0; }
  .tabla-lineas td { width: auto !important; }
  .tabla-lineas td.col-desc { grid-column: 1 / -1; }
}

/* Agenda de instalaciones */
.agenda { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.agenda .dia { min-height: 96px; border: 1px solid var(--bs-border-color); border-radius: .25rem; padding: 2px 4px; font-size: .8rem; }
.agenda .dia.fuera { opacity: .4; }
.agenda .dia.hoy { border-color: var(--ls-sol); box-shadow: inset 0 0 0 1px var(--ls-sol); }
.agenda .cab { font-weight: 600; text-align: center; font-size: .8rem; }
.agenda a.ev { display: block; border-radius: 3px; padding: 1px 4px; margin-top: 2px; text-decoration: none; color: #fff;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 767px) { .agenda .dia { min-height: 60px; } .agenda a.ev { font-size: .7rem; } }
