/* ========================================================================
   VALORA V.3.1.0 · CUSTOM.CSS · ÚNICA CAPA DE PERSONALIZACIÓN VISUAL
   ------------------------------------------------------------------------
   Este es el fichero que debe editarse para ajustes visuales de Valora.

   Cómo localizar una regla:
   1) Abre las herramientas del navegador (F12) y usa “Inspeccionar”.
   2) En el panel Estilos busca la regla que termina en custom.css:LINEA.
   3) Edita esa misma regla o añade una corrección en el bloque FINAL de
      este fichero. No es necesario ningún Laboratorio Visual.

   Orden recomendado de búsqueda:
   - :root                     Colores, radios y variables generales
   - .page-title/.page-subtitle Tipografía de cabeceras
   - .btn / .btn-outline-valora Botones
   - .master-stat              Tarjetas resumen
   - .master-table             Tablas de datos maestros
   - .entity-form-*            Formularios y modales
   - .service-*                Servicios y composiciones
   - .valuation-*              Valoraciones
   - .reception-* / .bulk-*    Recepción
   ======================================================================== */

:root{
  --ui-primary:#ff8308;
  --ui-primary-hover:#e66f00;
  --ui-primary-soft:#fff3e8;
  --ui-primary-softer:#fffaf5;
  --ui-navy:#122244;
  --ui-navy-2:#1b3b63;
  --ui-page:#f5f7fa;
  --ui-surface:#ffffff;
  --ui-text:#19243d;
  --ui-muted:#697089;
  --ui-border:#e3e7ee;
  --ui-border-soft:#edf0f4;
  --ui-blue-soft:#edf3fc;
  --ui-blue:#355b89;
  --ui-green-soft:#f5fbf7;
  --ui-green:#286448;
  --ui-sidebar:248px;
  --ui-radius:15px;
  --ui-radius-sm:11px;
  --ui-shadow:0 2px 9px rgba(25,36,61,.025);
  --ui-shadow-hover:0 9px 24px rgba(18,46,68,.055);

  /* Mapeo de compatibilidad con la primera versión de Valora. */
  --valora-navy:var(--ui-navy);
  --valora-navy-2:var(--ui-navy-2);
  --valora-gold:var(--ui-primary);
  --valora-gold-soft:var(--ui-primary-soft);
  --valora-bg:var(--ui-page);
  --valora-border:var(--ui-border);
  --valora-muted:var(--ui-muted);
  --valora-card:var(--ui-surface);
  --sidebar-w:var(--ui-sidebar);
}

html{font-size:15px}
body,
.app-body{
  background:var(--ui-page);
  color:var(--ui-text);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:#1f5db5}
a:hover{color:#174d99}

/* ========================================================================
   SIDEBAR / IDENTIDAD
   ======================================================================== */
.sidebar{
  width:var(--ui-sidebar);
  padding:26px 20px 18px;
  border-right:1px solid var(--ui-border);
  background:#fff;
}
.app-content{margin-left:var(--ui-sidebar)}
.brand{
  gap:12px;
  padding:0 0 22px;
  color:var(--ui-text);
  font-size:18px;
  font-weight:760;
  letter-spacing:-.025em;
}
.brand:hover{color:var(--ui-text)}
.brand-mark{
  width:42px;
  height:42px;
  flex:0 0 42px;
  border-radius:11px;
  background:linear-gradient(145deg,#17365b,var(--ui-navy));
  box-shadow:0 9px 22px rgba(18,34,68,.20),0 2px 6px rgba(18,34,68,.12);
}
.brand-mark span{
  font:800 24px/1 Inter,ui-sans-serif,system-ui,sans-serif;
  letter-spacing:-.06em;
}
.brand-name{color:var(--ui-text);font-weight:760}
.sidebar-label{
  margin:0 10px 8px;
  color:#8c93a5;
  font-size:10px;
  font-weight:750;
  letter-spacing:.15em;
}
.sidebar-nav{gap:2px}
.nav-item{
  min-height:44px;
  margin:2px 0;
  padding:0 12px;
  border-radius:11px;
  color:#39435c;
  font-size:14px;
  font-weight:520;
  transition:background .14s ease,color .14s ease;
}
.nav-item i{width:18px;color:#63708b;font-size:16px;text-align:center}
.nav-item:hover{background:#f4f6f9;color:var(--ui-text)}
.nav-item:hover i{color:var(--ui-navy)}
.nav-item.active{background:var(--ui-primary-soft);color:#c15f00;font-weight:650}
.nav-item.active i{color:var(--ui-primary)}
.sidebar-group-label{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:40px;
  margin:18px -4px 7px;
  padding:0 12px;
  border-radius:10px;
  background:#f7f8fa;
  color:#626a80;
  font-size:10px;
  font-weight:760;
  letter-spacing:.11em;
  text-transform:uppercase;
}
.sidebar-group-label>i:first-child{width:16px;color:#738099;font-size:13px;text-align:center}
.sidebar-group-label .sidebar-group-chevron{margin-left:auto;color:#a3a9b5;font-size:10px}
.sidebar-user{
  padding:18px 0 0;
  border-top:1px solid var(--ui-border);
  gap:8px;
}
.avatar{width:36px;height:36px;flex:0 0 36px;background:#eef2f8;color:var(--ui-navy);font-size:12px}
.sidebar-user-text{color:var(--ui-text);line-height:1.2}
.sidebar-user-text strong{font-size:13px;font-weight:700}
.sidebar-user-text small{margin-top:3px;color:var(--ui-muted);font-size:11px}
.logout-link{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;color:#8992a4}
.logout-link:hover{background:#f4f6f9;color:var(--ui-primary)}

/* ========================================================================
   ESTRUCTURA GENERAL
   ======================================================================== */
.main-content{
  max-width:1600px;
  padding:28px 34px 48px;
}
.app-footer{padding:0 34px 20px;color:#9299a8;font-size:11px}
.mobile-header{height:60px;padding:0 16px;border-bottom:1px solid var(--ui-border);background:#fff}
.mobile-header strong{font-size:16px;font-weight:750}
.mobile-brand{display:flex;align-items:center;gap:9px;color:var(--ui-text);text-decoration:none}.mobile-brand:hover{color:var(--ui-text)}
.mobile-brand-mark{width:31px;height:31px;display:grid;place-items:center;transform:rotate(45deg);border-radius:8px;background:linear-gradient(145deg,#17365b,var(--ui-navy));color:#fff;font-size:0}.mobile-brand-mark::after{content:"V";transform:rotate(-45deg);font-size:17px;font-weight:800}
.mobile-header .btn{border:0;background:transparent!important;color:var(--ui-navy);font-size:22px}
.kicker,
.step-caption{
  color:var(--ui-primary)!important;
  font-size:11px;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.page-title{
  margin:3px 0 0;
  color:var(--ui-text);
  font-size:31px;
  line-height:1.08;
  font-weight:760;
  letter-spacing:-.045em;
}
.page-subtitle{
  margin:7px 0 0;
  max-width:860px;
  color:var(--ui-muted);
  font-size:15px;
  line-height:1.5;
}
.page-heading-valora{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:22px;
  margin:0 0 24px;
}
.panel{
  border:1px solid var(--ui-border);
  border-radius:var(--ui-radius);
  background:#fff;
  box-shadow:var(--ui-shadow);
}
.section-title{color:var(--ui-text);font-size:16px;font-weight:730;letter-spacing:-.02em}
.section-note,.section-head small{color:var(--ui-muted)}
.section-head{margin-bottom:16px}

/* ========================================================================
   BOTONES / FORMULARIOS / BADGES
   ======================================================================== */
.btn{
  min-height:40px;
  border-radius:10px;
  font-size:13px;
  font-weight:650;
}
.btn-valora{
  border-color:var(--ui-primary);
  background:var(--ui-primary);
  color:#fff;
}
.btn-valora:hover,.btn-valora:focus{
  border-color:var(--ui-primary-hover);
  background:var(--ui-primary-hover);
  color:#fff;
}
.btn-outline-valora{
  border-color:#ffc78e;
  background:#fff;
  color:#bd5a00;
}
.btn-outline-valora:hover{
  border-color:#f3a85d;
  background:var(--ui-primary-softer);
  color:#a95100;
}
.form-control,.form-select,.input-group-text{
  min-height:43px;
  border-color:#dce1e9;
  border-radius:10px;
  background-color:#fff;
  color:var(--ui-text);
  font-size:14px;
}
.form-control:focus,.form-select:focus{
  border-color:#f2a156;
  box-shadow:0 0 0 3px rgba(255,131,8,.10);
}
.input-group>.input-group-text:first-child{border-radius:10px 0 0 10px}
.input-group>.form-control:last-child{border-radius:0 10px 10px 0}
.search-box .input-group-text{color:#9aa2b2}
.badge-soft,
.choice-count,
.group-count-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:max-content;
  border:0;
  border-radius:999px;
  background:var(--ui-blue-soft);
  color:var(--ui-blue);
  font-size:10px;
  font-weight:650;
  line-height:1;
  white-space:nowrap;
}
.badge-soft{padding:5px 8px}
.badge-gold{background:var(--ui-primary-soft);color:#a95100}
.group-count-badge{margin-top:7px;padding:4px 7px}

/* ========================================================================
   DASHBOARD
   ======================================================================== */
.stat-card{
  min-height:116px;
  height:auto;
  padding:20px;
  gap:16px;
}
.stat-icon{
  width:46px;height:46px;flex:0 0 46px;
  border-radius:13px;
  background:#f7f8fa;
  color:var(--ui-primary);
  font-size:19px;
}
.stat-value{color:var(--ui-text);font-size:25px;font-weight:760;letter-spacing:-.035em}
.stat-label{margin-top:6px;color:#5f6880;font-size:13px}
.stat-link{display:block;margin-top:7px;color:#1f5db5;font-size:11px;font-weight:650}
.quick-link{
  margin-bottom:8px;
  padding:12px;
  border-color:var(--ui-border-soft);
  border-radius:12px;
  color:var(--ui-text);
}
.quick-link:hover{border-color:#dfe4ec;background:#fafbfc;color:var(--ui-text)}
.quick-icon{width:36px;height:36px;border-radius:10px;background:var(--ui-primary-soft);color:var(--ui-primary)}
.quick-link strong{font-size:13px}
.quick-link small{font-size:11px;color:var(--ui-muted)}
.quick-arrow{font-size:12px;color:#9aa2b2}
.empty-state{color:#8a92a3;font-size:13px}

/* ========================================================================
   TABLAS
   ======================================================================== */
.table-valora{font-size:13px}
.table-valora thead th{
  padding:11px 14px;
  border-color:var(--ui-border-soft);
  background:#fafbfc;
  color:#747b8d;
  font-size:11px;
  font-weight:700;
  letter-spacing:0;
  text-transform:none;
}
.table-valora td{padding:12px 14px;border-color:#edf0f4;color:var(--ui-text);font-size:12.5px}
.table-valora tbody tr:hover td{background:#fffaf5}

/* ========================================================================
   NUEVA VALORACIÓN · WIZARD
   ======================================================================== */
.valuation-page-heading{margin-bottom:22px}
.wizard-steps{
  margin-bottom:22px;
  border:1px solid var(--ui-border);
  border-radius:15px;
  background:#fff;
  box-shadow:var(--ui-shadow);
}
.wizard-step{
  min-height:78px;
  padding:14px 18px;
  gap:11px;
  border-right:1px solid var(--ui-border-soft);
  background:#fff;
}
.wizard-num{
  width:32px;height:32px;flex:0 0 32px;
  border:1px solid #dfe3ea;
  border-radius:10px;
  background:#f3f4f8;
  color:#566078;
  font-size:12px;
  font-weight:650;
}
.wizard-step strong{color:var(--ui-text);font-size:13px;font-weight:720}
.wizard-step small{margin-top:3px;color:#8a92a4;font-size:12px;line-height:1.25}
.wizard-step.active{background:#fffaf5}
.wizard-step.active .wizard-num{border-color:#f0cb8c;background:#fff6df;color:#bd5a00}
.wizard-step.done .wizard-num{border-color:#dde2ea;background:#f1f3f7;color:#36415b}

.selection-summary{
  margin-bottom:22px;
  border:1px solid var(--ui-border);
  border-radius:14px;
  background:#fff;
  box-shadow:var(--ui-shadow);
}
.summary-cell{position:relative;padding:12px 14px;border-right:1px solid var(--ui-border-soft)}
.summary-cell:last-child{background:var(--ui-green-soft)}
.summary-label{color:#969dad;font-size:11px;font-weight:780;letter-spacing:.025em}
.summary-value{margin-top:4px;padding-right:24px;color:var(--ui-text);font-size:11px}
.summary-cell:last-child .summary-label,.summary-cell:last-child .summary-value{color:var(--ui-green)}
.summary-edit{
  position:absolute;right:12px;top:50%;transform:translateY(-50%);
  width:25px;height:25px;display:grid;place-items:center;border-radius:7px;
  color:#9ca4b3;font-size:11px;
}
.summary-edit:hover{background:var(--ui-primary-soft);color:var(--ui-primary)}
.summary-tariff-icon{position:absolute;right:13px;top:50%;transform:translateY(-50%);color:var(--ui-green)}

.wizard-panel{min-height:390px;padding:24px}
.wizard-panel.step1-panel{padding:0;overflow:hidden}
.group-layout{grid-template-columns:minmax(390px,.72fr) minmax(0,1.55fr);gap:0;min-height:360px}
.group-column{padding:24px;border-right:1px solid var(--ui-border)}
.group-layout>div:last-child{padding:24px;min-width:0}
.step-heading{margin:3px 0;color:var(--ui-text);font-size:17px;font-weight:630;letter-spacing:-.018em}
.step-context{color:var(--ui-muted);font-size:12px;line-height:1.45}
.group-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:22px}
.group-card{
  min-width:0;
  min-height:100px;
  padding:12px 8px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  border:1px solid #e4e8ef;
  border-radius:11px;
  background:#fafbfc;
  color:var(--ui-navy);
  transition:border-color .15s ease,background .15s ease,box-shadow .15s ease,transform .15s ease;
}
.group-card:hover{
  border-color:#ffc991;
  background:#fffaf5;
  color:var(--ui-navy);
  transform:translateY(-1px);
  box-shadow:var(--ui-shadow-hover);
}
.group-card.selected{
  border-color:var(--ui-primary);
  background:#fff;
  box-shadow:0 0 0 2px rgba(255,131,8,.06);
}
.group-card .choice-icon{width:32px;height:32px;margin:0 0 8px;border-radius:8px;background:#edf3fc;color:#205488;font-size:14px}
.group-card.selected .choice-icon{background:var(--ui-primary-soft);color:var(--ui-primary)}
.group-card strong{font-size:12px;font-weight:720;letter-spacing:.015em}
.group-card small{margin-top:0;color:inherit;font-size:inherit}

.wizard-grid{gap:10px}
.choice-card{
  min-height:90px;
  padding:13px;
  border:1px solid #e8ebf0;
  border-radius:11px;
  background:#fff;
  color:var(--ui-text);
  box-shadow:none;
  transition:border-color .15s ease,background .15s ease,box-shadow .15s ease,transform .15s ease;
}
.choice-card:hover{
  border-color:#ffc68d;
  background:#fffaf5;
  color:var(--ui-text);
  box-shadow:var(--ui-shadow-hover);
  transform:translateY(-1px);
}
.choice-card.selected{border-color:var(--ui-primary);background:#fffaf5}
.choice-icon{
  width:40px;height:40px;flex:0 0 40px;
  border-radius:10px;
  background:var(--ui-primary-soft);
  color:var(--ui-primary);
  font-size:15px;
}
.choice-title{color:var(--ui-text);font-size:12px;font-weight:680;line-height:1.35}
.choice-subtitle{margin-top:4px;color:#7d8597;font-size:11px;line-height:1.35}
.choice-subtitle i{color:#e9a25d}
.choice-count{padding:4px 8px}
.choice-chevron{color:#b3bdc4;font-size:12px;transition:color .15s ease,transform .15s ease}
.choice-card:hover .choice-chevron{color:var(--ui-primary);transform:translateX(2px)}
.search-box{width:min(310px,42%);max-width:none;flex:0 0 auto}
.search-box .form-control,.search-box .input-group-text{min-height:40px;font-size:12px}

.total-card{min-width:190px;padding:14px 18px;border-radius:13px;background:#fffaf5;text-align:right; border: 0px solid var(--ui-primary)}
.total-card small{color:rgb(168, 107, 52);font-size:13px}
.total-card strong{color:var(--ui-primary);font-size:20px;font-weight:700}
.family-heading{
  padding:10px 14px;
  border-color:#f0dfcf;
  background:#fffaf5;
  color:#9a5b1d;
  font-size:11px;
  font-weight:720;
  letter-spacing:.04em;
}
.valuation-footer{padding:14px;border-color:var(--ui-border);background:#fafbfc}

/* ========================================================================
   LOGIN
   ======================================================================== */
.login-body{background:var(--ui-page)}
.login-shell{max-width:390px}
.login-card{
  padding:30px;
  border:1px solid var(--ui-border);
  border-radius:18px;
  box-shadow:0 12px 38px rgba(25,36,61,.055);
}
.brand-login{justify-content:flex-start}
.brand-login .brand-name{font-size:22px}
.login-card h1{color:var(--ui-text)}
.login-version{color:#9299a8}

/* ========================================================================
   RESPONSIVE
   ======================================================================== */
@media(max-width:1199.98px){
  .group-layout{grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr)}
  .group-cards{grid-template-columns:1fr}
  .group-card{min-height:64px;flex-direction:row;justify-content:flex-start;gap:10px;text-align:left;padding:10px 12px}
  .group-card .choice-icon{margin:0}
  .group-card .group-count-badge{margin:0 0 0 auto}
}
@media(max-width:991.98px){
  .sidebar{transform:translateX(-100%);transition:transform .2s ease;box-shadow:0 16px 38px rgba(25,36,61,.12)}
  .sidebar.open{transform:translateX(0)}
  .app-content{margin-left:0}
  .mobile-header{display:flex;position:sticky;top:0;z-index:1030}
  .main-content{padding:20px 18px 92px}
  .app-footer{padding:0 18px 78px}
  .page-title{font-size:27px}
  .group-layout{grid-template-columns:1fr}
  .group-column{border-right:0;border-bottom:1px solid var(--ui-border);padding:20px}
  .group-layout>div:last-child{padding:20px}
  .group-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
  .group-card{min-height:82px;flex-direction:column;justify-content:center;text-align:center}
  .group-card .group-count-badge{margin:7px 0 0}
  .wizard-steps{overflow-x:auto;grid-template-columns:repeat(5,minmax(150px,1fr));scrollbar-width:none}
  .wizard-steps::-webkit-scrollbar{display:none}
  .selection-summary{overflow-x:auto;grid-template-columns:repeat(5,minmax(180px,1fr))}
}
@media(max-width:767.98px){
  .wizard-step{display:flex!important}
  .main-content{padding:17px 14px 90px}
  .page-heading-valora{flex-direction:column;align-items:stretch;gap:14px;margin-bottom:18px}
  .page-title{font-size:25px}.page-subtitle{font-size:14px}
  .wizard-panel{padding:16px}
  .group-column,.group-layout>div:last-child{padding:16px}
  .section-head{align-items:stretch;flex-direction:column}
  .search-box{width:100%}
  .group-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
  .group-card{min-height:78px;padding:8px 5px}.group-card strong{font-size:10px}.group-card .group-count-badge{font-size:9px}
  .wizard-grid,.wizard-grid[style]{grid-template-columns:1fr!important}
  .choice-card{min-height:84px}
  .total-card{width:100%;text-align:left}
  .valuation-footer{align-items:stretch;flex-direction:column}.valuation-footer .btn,.valuation-footer form,.valuation-footer form .btn{width:100%}.valuation-footer .ms-auto{margin-left:0!important}
}
@media(max-width:390px){
  .group-cards{grid-template-columns:1fr}
  .group-card{min-height:60px;flex-direction:row;justify-content:flex-start;text-align:left;padding:9px 12px}
  .group-card .choice-icon{margin:0}.group-card .group-count-badge{margin:0 0 0 auto}
}

/* ========================================================================
   VALORA · AJUSTES V.1.2.0
   ------------------------------------------------------------------------
   Sistema tipográfico, navegación jerárquica y refinamientos del wizard.
   ======================================================================== */
:root{
  --ui-title-size:29px;
  --ui-title-line:31px;
  --ui-title-weight:620;
  --ui-eyebrow-size:11px;
  --ui-eyebrow-weight:620;
  --ui-icon-bg:var(--ui-primary-soft);
}

.kicker,
.step-caption{
  color:var(--ui-primary)!important;
  font-size:var(--ui-eyebrow-size);
  font-weight:var(--ui-eyebrow-weight);
  letter-spacing:.11em;
  line-height:1.25;
  text-transform:uppercase;
}

.page-title{
  margin:3px 0 0;
  color:rgb(25,36,61);
  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:var(--ui-title-size);
  font-weight:var(--ui-title-weight);
  line-height:var(--ui-title-line);
  letter-spacing:-.035em;
}

/* El paso activo utiliza exactamente el mismo fondo que los iconos
   funcionales de las tarjetas. */
.choice-icon,
.wizard-step.active .wizard-num{
  background:var(--ui-icon-bg);
}
.wizard-step.active .wizard-num{
  border-color:#f2d4b1;
  color:var(--ui-primary);
}

.wizard-step-link{
  color:inherit;
  cursor:pointer;
  text-decoration:none;
  transition:background .15s ease;
}
.wizard-step-link:hover{
  background:#fffaf5;
  color:inherit;
}
.wizard-step-link:hover .wizard-num{
  border-color:#f2d4b1;
  background:var(--ui-icon-bg);
  color:var(--ui-primary);
}

.empty-state-bordered{
  min-height:170px;
  border:1px dashed #dfe4eb;
  border-radius:12px;
  background:#fcfcfd;
}
.empty-state-bordered i{
  color:var(--ui-primary);
  font-size:16px;
}
.search-box .form-control:disabled{
  background:#fff;
  color:#a1a8b5;
  opacity:.72;
}

/* Sidebar desplegable. */
.sidebar-group-toggle{
  width:calc(100% + 8px);
  border:0;
  cursor:pointer;
  text-align:left;
  font-family:inherit;
}
.sidebar-group-toggle:hover{
  background:#f2f4f7;
  color:#4f596f;
}
.sidebar-group-chevron{
  transition:transform .18s ease;
}
.sidebar-group-toggle.open .sidebar-group-chevron{
  transform:rotate(180deg);
}
.sidebar-group-menu{
  display:none;
  padding:1px 0 2px 8px;
}
.sidebar-group-menu.open{
  display:flex;
}
.sidebar-group-menu .nav-item{
  min-height:39px;
  margin:1px 0;
  padding:0 11px;
  font-size:13px;
}
.sidebar-group-menu .nav-item i{
  font-size:14px;
}

@media(max-width:991.98px){
  .page-title{font-size:27px;line-height:29px}
}
@media(max-width:767.98px){
  .page-title{font-size:25px;line-height:27px}
}


/* ========================================================================
   VALORA · AJUSTES V.1.3.0 · VALORACIÓN FINAL
   ------------------------------------------------------------------------
   La valoración final se alinea visualmente con la web de referencia:
   una sola tabla para todos los bloques, cabecera interna compacta,
   mismo ancho de columnas y separadores de familia dentro del tbody.
   ======================================================================== */

.consult-result-card{
  padding:0;
  overflow:hidden;
}
.consult-result-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  padding:22px 22px 0;
}
.consult-result-main{min-width:0;}
.consult-result-main .step-heading{margin-bottom:6px;}
.consult-result-sub{
  display:flex;
  align-items:center;
  gap:4px;
  color:var(--ui-muted);
  font-size:11px;
}
.consult-result-sub i{color:#e7a15e;}
.consult-grand-total{
  min-width:182px;
  padding:14px 18px;
  border-radius:13px;
  background:#f9f5ef;
  text-align:right;
}
.consult-grand-total small{
  display:block;
  color:#a08960;
  font-size:10px;
  line-height:1.2;
}
.consult-grand-total strong{
  display:block;
  margin:6px 0 2px;
  color:#c07210;
  font-size:19px;
  font-weight:700;
  line-height:1.1;
}
.consult-grand-total span{
  color:#a08960;
  font-size:10px;
}
.consult-detail-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin:16px 0 0;
  padding:14px 22px 10px;
  border-top:1px solid var(--ui-border-soft);
}
.consult-detail-heading small,
.consult-detail-heading div > small{
  display:block;
  color:var(--ui-primary);
  font-size:11px;
  font-weight:620;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.consult-detail-heading strong,
.consult-detail-heading div > strong{
  display:block;
  margin-top:2px;
  color:var(--ui-text);
  font-size:12px;
  font-weight:650;
}
.consult-detail-heading > span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:58px;
  padding:4px 7px;
  border-radius:999px;
  background:#f1f3f7;
  color:#7a8294;
  font-size:10px;
  font-weight:700;
}
.consult-result-table{padding:0 14px 0;}
.consult-result-table .table-valora thead th:first-child{border-top-left-radius:10px;}
.consult-result-table .table-valora thead th:last-child{border-top-right-radius:10px;}
.consult-result-table .table-valora td strong{
  color:var(--ui-text);
  font-size:12px;
  font-weight:650;
}
.consult-result-table .table-secondary-text{
  display:block;
  margin-top:4px;
  color:#a0a7b6;
  font-size:10px;
  line-height:1.25;
}
.category-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  padding:3px 6px;
  border:1px solid #d9dee8;
  border-radius:6px;
  background:#f7f8fa;
  color:#5c6476;
  font-size:9px;
  font-weight:700;
  line-height:1;
}
.value-nowrap{white-space:nowrap;}
.consult-line-total{font-weight:700;}
.consult-category-heading td{
  padding:0 !important;
  background:#576071 !important;
  border-color:#576071 !important;
}
.consult-category-heading td > .section-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:8px 14px;
}
.consult-category-heading td span{
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:#fff;
  font-size:10px;
  font-weight:650;
  letter-spacing:.04em;
  text-transform:none;
}
.consult-category-heading td span i{color:#f5c892;}
.consult-category-heading td small{
  color:#d5d9e3;
  font-size:10px;
  font-weight:500;
}
.consult-category-heading:hover td{background:#576071 !important;}
.consult-result-footer-actions{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:.8rem;
  padding:12px 14px 14px;
  border-top:1px solid var(--ui-border-soft);
  background:#fff;
}
.consult-result-note{
  display:flex;
  align-items:flex-start;
  gap:8px;
  color:#8d95a3;
  font-size:10px;
  line-height:1.45;
}
.consult-result-note i{color:var(--ui-primary);font-size:12px;transform:translateY(1px);}
.valuation-actions-modern{
  width:100%;
  display:flex;
  flex-wrap:nowrap;
  gap:.5rem;
  overflow-x:auto;
  padding-bottom:2px;
  scrollbar-width:thin;
}
.valuation-actions-modern > *{flex:0 0 auto;}
.valuation-actions-modern form{display:flex !important;}
.valuation-action{
  min-width:165px;
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:10px 14px;
  border:1px solid #e7ebf1;
  border-radius:12px;
  background:#fff;
  color:var(--ui-text);
  text-decoration:none;
  transition:border-color .14s ease, background .14s ease, transform .14s ease;
}
.valuation-action:hover{
  border-color:#d7dee9;
  background:#fbfcfd;
  color:var(--ui-text);
  transform:translateY(-1px);
}
.valuation-action i{
  width:20px;
  height:20px;
  display:grid;
  place-items:center;
  color:#7f8799;
  font-size:14px;
}
.valuation-action span{display:block;line-height:1.2;}
.valuation-action strong{display:block;font-size:12px;font-weight:650;}
.valuation-action small{display:block;margin-top:3px;color:#8e96a4;font-size:10px;}
.valuation-action-primary{
  border-color:var(--ui-primary);
  background:var(--ui-primary);
  color:#fff;
}
.valuation-action-primary:hover{border-color:var(--ui-primary-hover);background:var(--ui-primary-hover);color:#fff;}
.valuation-action-primary i,
.valuation-action-primary small,
.valuation-action-primary strong{color:#fff;}
.valuation-action-edit{border-color:#eadabf;background:#fffaf3;}

@media(max-width:991.98px){
  .consult-result-head{padding:18px 18px 0;}
  .consult-detail-heading{padding:14px 18px 10px;}
  .consult-result-table{padding:0 10px 0;}
}
@media(max-width:767.98px){
  .consult-result-head{flex-direction:column;align-items:stretch;}
  .consult-grand-total{width:100%;text-align:left;}
  .consult-detail-heading{flex-direction:column;align-items:flex-start;}
  .consult-result-footer-actions{padding:12px;}
}

/* ========================================================================
   VALORA · TOKENS VISUALES Y CRUD
   ======================================================================== */
body,.app-body{font-size:var(--lab-body-size,15px)}
.panel{background:var(--lab-panel-bg,var(--ui-surface))}
.sidebar{background:var(--lab-sidebar-bg,#fff)}
.nav-item{min-height:var(--lab-nav-height,44px);color:var(--lab-sidebar-text,#39435c);font-size:var(--lab-nav-size,14px)}
.nav-item:hover{background:var(--lab-sidebar-hover,#f4f6f9)}
.nav-item.active{background:var(--lab-sidebar-active-bg,var(--ui-primary-soft));color:var(--lab-sidebar-active-text,#c15f00)}
.section-title{font-size:var(--lab-section-size,16px);font-weight:var(--lab-section-weight,650)}
.btn{min-height:var(--lab-button-height,40px);border-radius:var(--lab-button-radius,10px);font-size:var(--lab-button-size,13px);font-weight:var(--lab-button-weight,650);align-items:center;justify-content:center;text-align:center}
.btn-valora{border-color:var(--lab-button-bg,var(--ui-primary));background:var(--lab-button-bg,var(--ui-primary))}
.btn-valora:hover,.btn-valora:focus{border-color:var(--lab-button-hover-bg,var(--ui-primary-hover));background:var(--lab-button-hover-bg,var(--ui-primary-hover))}
.form-control,.form-select,.input-group-text{border-color:var(--lab-input-border,#dce1e9);background-color:var(--lab-input-bg,#fff)}
.form-control:focus,.form-select:focus{border-color:var(--lab-input-focus,#f2a156)}
.badge-soft,.choice-count,.group-count-badge,.master-badge{border-radius:var(--lab-badge-radius,20px);background:var(--lab-badge-bg,var(--ui-blue-soft));color:var(--lab-badge-text,var(--ui-blue));font-size:var(--lab-badge-size,10px)}
.choice-card{min-height:var(--lab-card-min-height,90px);padding:var(--lab-card-padding,13px);border-color:var(--lab-card-border,#e8ebf0);border-radius:var(--ui-radius-sm);background:var(--lab-card-bg,#fff)}
.choice-card:hover{border-color:var(--lab-card-hover-border,#ffc68d);background:var(--lab-card-hover-bg,#fffaf5)}
.table-valora{font-size:var(--lab-table-size,12.5px)}
.table-valora thead th{padding:calc(var(--lab-table-py,12px) - 1px) var(--lab-table-px,14px);background:var(--lab-table-head-bg,#fafbfc);color:var(--lab-table-head-text,#747b8d);font-size:var(--lab-table-head-size,11px)}
.table-valora td{padding:var(--lab-table-py,12px) var(--lab-table-px,14px);border-color:var(--lab-table-border,#edf0f4);background:var(--lab-table-row-bg,#fff);font-size:var(--lab-table-size,12.5px)}
.table-valora tbody tr:hover td{background:var(--lab-table-row-hover,#fffaf5)}
.consult-grand-total,.total-card{background:var(--lab-total-bg,#f9f5ef)}
.consult-grand-total strong,.total-card strong{color:var(--lab-total-text,#c07210)}
.consult-category-heading td{background:var(--lab-complement-bg,#576071)!important;border-color:var(--lab-complement-bg,#576071)!important}
.consult-category-heading td span{color:var(--lab-complement-text,#fff)}
.consult-category-heading.is-reception td{background:var(--lab-reception-bg,#365a63)!important;border-color:var(--lab-reception-bg,#365a63)!important}
.consult-category-heading.is-reception td span{color:var(--lab-reception-text,#fff)}
.wizard-step.active{background:var(--lab-wizard-active-bg,#fffaf5)}
.wizard-step.active .wizard-num{background:var(--lab-wizard-number-bg,var(--ui-primary-soft))}

/* Maestros */
.master-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}
.master-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.master-stat{display:flex;align-items:center;gap:13px;min-height:84px;padding:15px 17px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--lab-panel-bg,#fff);box-shadow:var(--ui-shadow)}
.master-stat-icon{width:38px;height:38px;display:grid;place-items:center;flex:0 0 38px;border-radius:10px;background:var(--ui-primary-soft);color:var(--ui-primary);font-size:15px}
.master-stat small{display:block;color:var(--ui-muted);font-size:11px}.master-stat strong{display:block;margin-top:2px;color:var(--ui-text);font-size:18px;font-weight:680}
.master-toolbar{padding:18px;border-bottom:1px solid var(--ui-border-soft)}
.master-toolbar-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.master-toolbar-head h2{margin:0;color:var(--ui-text);font-size:15px;font-weight:680}.master-toolbar-head p{margin:4px 0 0;color:var(--ui-muted);font-size:11px}
.master-filters{display:grid;grid-template-columns:minmax(240px,1.5fr) repeat(3,minmax(150px,.8fr));gap:9px;align-items:end}.master-filters.cols-3{grid-template-columns:minmax(260px,1.6fr) repeat(2,minmax(170px,.8fr))}.master-filter label{display:block;margin:0 0 5px;color:#60697d;font-size:10px;font-weight:650}.master-filter .form-control,.master-filter .form-select{min-height:40px;font-size:12px}
.master-table-wrap{padding:0 18px}.master-table .entity-title{font-size:12px;font-weight:680;color:var(--ui-text)}.master-table .entity-subtitle{display:block;margin-top:3px;color:#9aa1b0;font-size:10px}.master-badge{display:inline-flex;align-items:center;justify-content:center;width:max-content;padding:5px 8px;font-weight:650;white-space:nowrap}.master-badge.neutral{background:#f3f5f8;color:#667086}.master-badge.success{background:var(--lab-success-bg,#eef8f2);color:var(--lab-success-text,#286448)}.master-badge.warn{background:#fff6e9;color:#ae680d}.master-badge.dark{background:#eef0f5;color:#4e586c}
.row-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;white-space:nowrap}.row-action{min-height:34px!important;height:34px;padding:0 10px;border:1px solid var(--ui-border);border-radius:9px;background:#fff;color:var(--ui-text);font-size:11px!important;font-weight:620!important}.row-action:hover{border-color:#f2c18f;background:#fffaf5;color:#a95100}.row-action.icon-only{width:34px;padding:0}
.master-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px 18px;border-top:1px solid var(--ui-border-soft);color:var(--ui-muted);font-size:11px}.pagination-valora{display:flex;align-items:center;gap:5px}.page-btn{min-width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--lab-page-border,#e1e6ed);border-radius:var(--lab-page-radius,9px);background:var(--lab-page-bg,#fff);color:#5f687d;text-decoration:none;font-size:11px;font-weight:650}.page-btn:hover{background:var(--lab-page-hover,#fff7ee);border-color:#f3c18d;color:#a95100}.page-btn.active{border-color:var(--lab-page-active-bg,var(--ui-primary));background:var(--lab-page-active-bg,var(--ui-primary));color:var(--lab-page-active-text,#fff)}.page-btn.disabled{opacity:.45;pointer-events:none}.page-ellipsis{padding:0 3px;color:#9aa1af}
.master-empty{padding:55px 20px;text-align:center;color:var(--ui-muted)}

/* Formularios maestros */
.entity-form-card{max-width:920px}.entity-form-section{padding:20px;border-bottom:1px solid var(--ui-border-soft)}.entity-form-section:last-child{border-bottom:0}.entity-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.entity-form-grid .wide{grid-column:1/-1}.entity-form-actions{display:flex;justify-content:flex-end;gap:8px;padding:16px 20px;background:#fafbfc;border-radius:0 0 var(--ui-radius) var(--ui-radius)}

/* Consulta por código */
.code-search-shell{max-width:860px;margin:0 auto 20px}.code-search-card{padding:22px}.code-search-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px}.code-search-input{font-size:18px!important;font-weight:650;letter-spacing:.02em}.code-result-meta{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border:1px solid var(--ui-border);border-radius:13px;background:#fff;overflow:hidden;margin-bottom:18px}.code-meta-cell{padding:12px 14px;border-right:1px solid var(--ui-border-soft)}.code-meta-cell:last-child{border-right:0}.code-meta-cell small{display:block;color:#929aab;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.code-meta-cell strong{display:block;margin-top:4px;font-size:11px;font-weight:650;color:var(--ui-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}


/* Alineación final de las acciones de valoración */
.consult-result-footer-actions{align-items:end}.valuation-actions-modern{justify-content:flex-end;margin-left:auto}.valuation-action{justify-content:center;text-align:center}.valuation-action span{text-align:center}.valuation-action button,.valuation-actions-modern button{text-align:center}.valuation-actions-modern form{justify-content:flex-end}

@media(max-width:1199.98px){.master-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.master-filters,.master-filters.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:991.98px){.code-result-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.code-meta-cell{border-bottom:1px solid var(--ui-border-soft)}}
@media(max-width:767.98px){.master-page-head{flex-direction:column}.master-stat-grid{grid-template-columns:1fr}.master-filters,.master-filters.cols-3{grid-template-columns:1fr}.master-footer{align-items:flex-start;flex-direction:column}.entity-form-grid{grid-template-columns:1fr}.code-search-form{grid-template-columns:1fr}.code-result-meta{grid-template-columns:1fr}.code-meta-cell{border-right:0}}
/* Ajuste de filtros maestros en una sola línea en escritorio. */
.master-filters{grid-template-columns:minmax(240px,1.5fr) repeat(2,minmax(150px,.8fr)) minmax(130px,.65fr) auto}
.master-filters.cols-3{grid-template-columns:minmax(260px,1.6fr) minmax(170px,.8fr) auto}
@media(max-width:1199.98px){.master-filters,.master-filters.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767.98px){.master-filters,.master-filters.cols-3{grid-template-columns:1fr}}
.valuation-action{font-family:inherit;cursor:pointer}.valuation-actions-modern button.valuation-action{appearance:none;-webkit-appearance:none}


/* ========================================================================
   VALORA V.1.4.1 · AJUSTES DE INTERFAZ
   ======================================================================== */

/* Centrado óptico y geométrico de todos los botones de la aplicación. */
.btn,
a.btn,
button.btn,
.row-action,
.page-btn{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:.38rem;
  text-align:center !important;
  vertical-align:middle;
  line-height:1.15 !important;
}
.btn > i,
.row-action > i,
.page-btn > i{
  flex:0 0 auto;
  margin:0 !important;
  line-height:1 !important;
}
.btn > span,
.row-action > span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1.15;
  text-align:center;
}
button.valuation-action,
a.valuation-action{
  align-items:center;
  justify-content:center;
  text-align:center;
}
.valuation-action > span{
  display:flex;
  min-width:0;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
}

/* Menús contextuales de los datos maestros. */
.master-actions-dropdown{position:relative;}
.master-action-menu{
  min-width:210px;
  padding:8px;
  border:1px solid #dfe4eb;
  border-radius:12px;
  background:#fff;
  box-shadow:0 12px 30px rgba(25,36,61,.12),0 2px 7px rgba(25,36,61,.06);
}
.master-action-menu .dropdown-item{
  min-height:38px;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:10px;
  padding:8px 10px;
  border:0;
  border-radius:8px;
  background:transparent;
  color:var(--ui-text);
  font-size:12px;
  font-weight:520;
  line-height:1.2;
  text-align:left;
}
.master-action-menu .dropdown-item i{
  width:17px;
  flex:0 0 17px;
  margin:0;
  color:#7b8496;
  font-size:13px;
  line-height:1;
  text-align:center;
}
.master-action-menu .dropdown-item:hover,
.master-action-menu .dropdown-item:focus{
  background:#f5f4f8;
  color:var(--ui-text);
}
.master-action-menu .dropdown-divider{
  margin:7px 2px;
  border-color:#eceff3;
}
.master-action-menu form{margin:0;}
.master-action-menu .master-action-danger{color:#b64b4b;}
.master-action-menu .master-action-danger i{color:#c46a6a;}
.master-action-menu .master-action-danger:hover,
.master-action-menu .master-action-danger:focus{
  background:#fff5f5;
  color:#a84040;
}

/* ========================================================================
   VALORA V.1.5.0 · SISTEMA VISUAL COHERENTE / ESTADOS / TOASTS / MODALES
   ======================================================================== */

/* Tipografía configurable por familias. */
.page-title{line-height:var(--ui-title-line,31px);text-transform:var(--lab-title-transform,none)}
.kicker,.step-caption{text-transform:var(--lab-kicker-transform,uppercase)}
.section-title,.master-toolbar-head h2{text-transform:var(--lab-section-transform,none)}
.choice-title{font-size:var(--lab-card-title-size,12px);font-weight:var(--lab-card-title-weight,680)}
.choice-subtitle{font-size:var(--lab-card-subtitle-size,11px)}
.table-secondary-text,.master-table .entity-subtitle{font-size:var(--lab-table-secondary-size,10px)}
.table-valora thead th{font-weight:var(--lab-table-head-weight,700);text-transform:var(--lab-table-head-transform,none)}
.nav-item{text-transform:var(--lab-nav-transform,none)}

/* Botón base: todos los botones reales heredan estos tokens. */
.btn,a.btn,button.btn{
  min-height:var(--lab-button-height,40px);
  padding-left:var(--lab-button-px,14px);
  padding-right:var(--lab-button-px,14px);
  border-radius:var(--lab-button-radius,10px);
  font-size:var(--lab-button-size,13px);
  font-weight:var(--lab-button-weight,650);
  line-height:var(--lab-button-line,1.15)!important;
  letter-spacing:var(--lab-button-letter,0em);
  text-transform:var(--lab-button-transform,none);
  gap:var(--lab-button-gap,6px);
}
.btn-valora{
  border-color:var(--lab-button-border,var(--ui-primary));
  background:var(--lab-button-bg,var(--ui-primary));
  color:var(--lab-button-text,#fff);
}
.btn-valora:hover,.btn-valora:focus{
  border-color:var(--lab-button-hover-border,var(--ui-primary-hover));
  background:var(--lab-button-hover-bg,var(--ui-primary-hover));
  color:var(--lab-button-hover-text,#fff);
}
.btn-outline-secondary,.btn-light{
  border-color:var(--lab-secondary-border,#dfe4eb);
  background:var(--lab-secondary-bg,#fff);
  color:var(--lab-secondary-text,#5f687d);
}
.btn-outline-secondary:hover,.btn-light:hover{
  border-color:var(--lab-secondary-border,#dfe4eb);
  background:var(--lab-secondary-hover-bg,#f7f8fa);
  color:var(--lab-secondary-text,#5f687d);
}

/* Botones de tabla e icono: herencia base + identidad propia. */
.row-action{
  min-height:var(--lab-row-action-height,34px)!important;
  height:var(--lab-row-action-height,34px);
  border-color:var(--lab-row-action-border,var(--ui-border));
  background:var(--lab-row-action-bg,#fff);
  font-size:var(--lab-row-action-size,11px)!important;
  font-weight:var(--lab-row-action-weight,620)!important;
  text-transform:var(--lab-button-transform,none);
}
.row-action:hover{background:var(--lab-row-action-hover,#fffaf5)}
.row-action.icon-only{width:var(--lab-icon-button-size,34px);height:var(--lab-icon-button-size,34px);min-height:var(--lab-icon-button-size,34px)!important;padding:0}

/* Acciones grandes de Valoración, conectadas al laboratorio. */
.valuation-action{
  border-color:var(--lab-val-action-border,#e7ebf1);
  border-radius:var(--lab-val-action-radius,12px);
  background:var(--lab-val-action-bg,#fff);
}
.valuation-action strong{font-size:var(--lab-val-action-title-size,12px);font-weight:var(--lab-val-action-title-weight,650);text-transform:var(--lab-val-action-transform,none)}
.valuation-action small{font-size:var(--lab-val-action-subtitle-size,10px)}
.valuation-action-primary{border-color:var(--lab-button-border,var(--ui-primary));background:var(--lab-button-bg,var(--ui-primary))}
.valuation-action-primary:hover{border-color:var(--lab-button-hover-border,var(--ui-primary-hover));background:var(--lab-button-hover-bg,var(--ui-primary-hover))}

/* Formularios */
.form-control,.form-select,.input-group-text{
  min-height:var(--lab-input-height,43px);
  border-radius:var(--lab-input-radius,10px);
  font-size:var(--lab-input-size,14px);
}

/* Badges */
.master-badge,.badge-soft,.choice-count,.group-count-badge{
  font-size:var(--lab-badge-size,10px);
  font-weight:var(--lab-badge-weight,650);
}
.master-badge.alert-action{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-top:6px;
  padding:5px 8px;
  border:1px solid var(--lab-warning-border,#f2cc91);
  border-radius:var(--lab-badge-radius,20px);
  background:var(--lab-warning-bg,#fff4df);
  color:var(--lab-warning-text,#9a5a00);
  text-decoration:none;
  font-size:var(--lab-badge-size,10px);
  font-weight:var(--lab-badge-weight,650);
  line-height:1.15;
  transition:background .14s ease,border-color .14s ease,transform .14s ease;
}
.master-badge.alert-action:hover{
  border-color:#dfb56d;
  background:#ffeed0;
  color:#824900;
  transform:translateY(-1px);
}
.master-badge.alert-action .badge-arrow{font-size:9px;opacity:.72}

/* Dropdowns */
.master-action-menu{
  border-color:var(--lab-dropdown-border,#e3e7ee);
  border-radius:var(--lab-dropdown-radius,12px);
  background:var(--lab-dropdown-bg,#fff);
}
.master-action-menu .dropdown-item{
  color:var(--lab-dropdown-text,#374158);
  font-size:var(--lab-dropdown-size,11px);
}
.master-action-menu .dropdown-item:hover,.master-action-menu .dropdown-item:focus{background:var(--lab-dropdown-hover,#f7f8fa)}
.master-action-menu .master-action-danger{color:var(--lab-danger-text,#b64b4b)}

/* Paginador */
.page-btn{font-size:var(--lab-page-size,11px)}

/* Toasts flotantes. */
.valora-toast-container{
  position:fixed;
  top:18px;
  right:18px;
  z-index:2000;
  width:min(390px,calc(100vw - 28px));
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:9px;
  pointer-events:none;
}
.valora-toast{
  position:relative;
  display:grid;
  grid-template-columns:36px minmax(0,1fr) 28px;
  gap:10px;
  align-items:start;
  padding:12px 12px 12px 11px;
  border:1px solid var(--lab-toast-border,var(--ui-border));
  border-radius:var(--lab-toast-radius,14px);
  background:var(--lab-toast-bg,#fff);
  box-shadow:0 14px 34px rgba(25,36,61,.13),0 3px 9px rgba(25,36,61,.06);
  pointer-events:auto;
  opacity:0;
  transform:translateY(-8px) translateX(8px);
  transition:opacity .2s ease,transform .2s ease;
  overflow:hidden;
}
.valora-toast.show{opacity:1;transform:none}
.valora-toast::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--toast-accent,#516072)}
.valora-toast.success{--toast-accent:var(--lab-toast-success,#2f7a55)}
.valora-toast.warning{--toast-accent:var(--lab-toast-warning,#b16a09)}
.valora-toast.danger{--toast-accent:var(--lab-toast-danger,#b54848)}
.valora-toast.info{--toast-accent:#416b9a}
.valora-toast-icon{
  width:34px;height:34px;display:grid;place-items:center;border-radius:10px;
  background:color-mix(in srgb,var(--toast-accent) 10%,white);
  color:var(--toast-accent);font-size:15px;
}
.valora-toast-copy{min-width:0;padding-top:1px}
.valora-toast-title{display:block;color:var(--ui-text);font-size:var(--lab-toast-title-size,12px);font-weight:680;line-height:1.25}
.valora-toast-text{display:block;margin-top:3px;color:var(--ui-muted);font-size:var(--lab-toast-text-size,10px);line-height:1.4}
.valora-toast-close{width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:#9aa1af;font-size:14px;cursor:pointer}
.valora-toast-close:hover{background:#f5f6f8;color:#5f687d}

/* Modal de edición rápida */
.valora-entity-modal .modal-dialog{max-width:900px}
.valora-entity-modal .modal-content{
  overflow:hidden;
  border:1px solid var(--lab-modal-border,var(--ui-border));
  border-radius:var(--lab-modal-radius,16px);
  background:var(--lab-modal-bg,#fff);
  box-shadow:0 24px 60px rgba(25,36,61,.20),0 6px 18px rgba(25,36,61,.08);
}
.valora-entity-modal .modal-header{padding:14px 17px;border-bottom:1px solid var(--ui-border-soft);background:var(--lab-modal-header-bg,#fff)}
.valora-entity-modal .modal-title{font-size:14px;font-weight:680;color:var(--ui-text)}
.valora-entity-modal .modal-body{padding:0;background:var(--lab-modal-bg,#fff)}
.valora-entity-modal iframe{display:block;width:100%;height:610px;border:0;background:transparent}
.modal-form-body{margin:0;padding:0;background:transparent!important}
.modal-form-shell{padding:18px;background:var(--lab-modal-bg,#fff)}
.modal-form-shell .entity-form-card{max-width:none;border:0;box-shadow:none}
.modal-form-shell .entity-form-section{padding:4px 0 18px}
.modal-form-shell .entity-form-actions{margin:0 -18px -18px;padding:14px 18px;background:var(--lab-modal-footer-bg,#fafbfc);border-top:1px solid var(--ui-border-soft);border-radius:0}

/* Pantalla de revisión de configuraciones heredadas. */
.review-alert-card{display:flex;gap:13px;align-items:flex-start;padding:16px 18px;margin-bottom:16px;border:1px solid var(--lab-warning-border,#f2cc91);border-radius:14px;background:var(--lab-warning-bg,#fff4df)}
.review-alert-icon{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border-radius:11px;background:#fff;color:var(--lab-warning-text,#9a5a00);font-size:17px}
.review-alert-card h2{margin:0;color:#6f4303;font-size:14px;font-weight:700}.review-alert-card p{margin:5px 0 0;color:#866238;font-size:11px;line-height:1.5}
.review-condition{margin-bottom:16px;overflow:hidden}
.review-condition-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:16px 18px;border-bottom:1px solid var(--ui-border-soft)}
.review-condition-head h2{margin:2px 0 0;font-size:16px;font-weight:680;color:var(--ui-text)}
.review-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px 18px}
.review-config-card{padding:13px;border:1px solid var(--ui-border);border-radius:12px;background:#fff}
.review-config-card.is-active{border-color:#d9e5f2;background:#fbfdff}.review-config-code{display:flex;align-items:center;justify-content:space-between;gap:8px}.review-config-code strong{font-size:13px}.review-config-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.review-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.review-comparison{padding:0 18px 18px}
.review-comparison-title{margin:4px 0 9px;color:var(--ui-muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.review-check{color:#2f7a55;font-size:13px}.review-empty{color:#c0c5cf}


@media(max-width:767.98px){
  .valora-toast-container{top:10px;right:10px;width:calc(100vw - 20px)}
  .review-config-grid{grid-template-columns:1fr}
  .valora-entity-modal .modal-dialog{margin:10px}
  .valora-entity-modal iframe{height:72vh}
}
.btn-outline-valora{
  border-color:var(--lab-outline-border,#ffc78e);
  background:var(--lab-outline-bg,#fff);
  color:var(--lab-outline-text,#bd5a00);
}
.btn-outline-valora:hover,.btn-outline-valora:focus{
  border-color:var(--lab-outline-hover-border,#f3a85d);
  background:var(--lab-outline-hover-bg,#fffaf5);
  color:var(--lab-outline-hover-text,#a95100);
}


/* ========================================================================
   VALORA V.1.5.1 · SIDEBAR ACORDEÓN / JERARQUÍA EN ÁRBOL
   ======================================================================== */
.sidebar-group-menu{
  position:relative;
  padding:2px 0 5px 24px;
}
.sidebar-group-menu::before{
  content:"";
  position:absolute;
  left:12px;
  top:3px;
  bottom:12px;
  width:1px;
  border-radius:999px;
  background:var(--lab-sidebar-tree-line,#dfe4eb);
}
.sidebar-group-menu .nav-item{
  position:relative;
  min-width:0;
}
.sidebar-group-menu .nav-item::before{
  content:"";
  position:absolute;
  left:-12px;
  top:50%;
  width:10px;
  height:1px;
  background:var(--lab-sidebar-tree-line,#dfe4eb);
  transform:translateY(-50%);
  transition:background .14s ease,width .14s ease;
}
.sidebar-group-menu .nav-item:hover::before{
  background:var(--lab-sidebar-tree-hover,#c6ceda);
}
.sidebar-group-menu .nav-item.active::before{
  width:12px;
  background:var(--lab-sidebar-tree-active,var(--ui-primary));
}
.sidebar-group-menu .nav-item.active::after{
  content:"";
  position:absolute;
  left:-14px;
  top:50%;
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--lab-sidebar-tree-active,var(--ui-primary));
  transform:translateY(-50%);
}

/* =========================================================
   VALORA V.1.7.0 · EJERCICIOS Y MOTOR TARIFARIO
   ========================================================= */
.tariff-page-heading{align-items:flex-start}
.master-badge.warning{background:#fff6e9;color:#ae680d}
.master-badge.danger{background:#fdecec;color:#a83d3d}
.tariff-exercise-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.tariff-exercise-card{padding:22px;position:relative;overflow:hidden}
.tariff-exercise-card::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:#c8ced8}
.tariff-exercise-card.publicado::before{background:#2b9676}
.tariff-exercise-card.borrador::before{background:var(--ui-primary)}
.tariff-exercise-card.revision::before{background:#d7a126}
.tariff-exercise-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.tariff-exercise-top h2{margin:4px 0 0;font-size:20px;font-weight:700;color:var(--ui-text)}
.tariff-exercise-revision{margin-top:12px;color:#737d90;font-size:12px}
.tariff-exercise-metrics{display:flex;gap:22px;margin-top:20px;padding:14px 0;border-top:1px solid var(--ui-border-soft);border-bottom:1px solid var(--ui-border-soft);color:#7a8395;font-size:11px}
.tariff-exercise-metrics strong{display:block;color:var(--ui-text);font-size:18px;line-height:1.1}
.tariff-alert-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.tariff-alert-card{display:flex;align-items:center;gap:12px;min-height:76px;padding:14px 16px;border:1px solid var(--ui-border-soft);border-radius:var(--ui-radius,12px);background:#fff}
.tariff-alert-card>i{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:#eef2f7;color:#6e798d}
.tariff-alert-card strong{display:block;font-size:19px;line-height:1;color:var(--ui-text)}
.tariff-alert-card span{display:block;margin-top:5px;color:#747e90;font-size:10px;line-height:1.3}
.tariff-alert-card.danger{border-color:#f1c3c3;background:#fffafa}.tariff-alert-card.danger>i{background:#fdeaea;color:#bd4242}
.tariff-alert-card.warning{border-color:#f0d7a2;background:#fffdf7}.tariff-alert-card.warning>i{background:#fff1cf;color:#a67512}
.tariff-alert-card.success{border-color:#bfe4d6;background:#f9fffc}.tariff-alert-card.success>i{background:#e5f6ef;color:#267b61}
.equivalence-hero{display:flex;align-items:center;gap:18px;border-left:4px solid #bfccd8}
.equivalence-hero.success{border-left-color:#2b9676;background:#f9fffc}.equivalence-hero.danger{border-left-color:#bf4646;background:#fffafa}
.equivalence-icon{width:52px;height:52px;flex:0 0 52px;display:grid;place-items:center;border-radius:15px;background:#eef2f7;color:#657087;font-size:24px}
.equivalence-hero.success .equivalence-icon{background:#e4f5ee;color:#277c62}.equivalence-hero.danger .equivalence-icon{background:#fdeaea;color:#b93e3e}
.equivalence-hero h2{margin:3px 0 5px;font-size:20px;color:var(--ui-text)}
@media(max-width:1199.98px){.tariff-alert-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767.98px){.tariff-exercise-grid,.tariff-alert-grid{grid-template-columns:1fr}.tariff-exercise-card{padding:18px}.equivalence-hero{align-items:flex-start}}

/* Fase 4 · editor visual de servicios predefinidos */
.service-editor-heading{align-items:flex-start}.service-create-card,.service-meta-panel,.service-conditions-panel,.service-composer-panel{padding:1.35rem;margin-bottom:1rem}.service-create-card{max-width:980px}.service-create-intro{display:flex;gap:1rem;align-items:center;padding:1rem 1.1rem;margin-bottom:1.25rem;border-radius:16px;background:linear-gradient(135deg,rgba(var(--valora-primary-rgb,25,93,101),.1),rgba(var(--valora-primary-rgb,25,93,101),.025))}.service-create-intro h2,.service-panel-title h2{font-size:1.15rem;margin:0}.service-create-intro p,.service-panel-title p{color:var(--bs-secondary-color);font-size:.88rem;margin:.25rem 0 0}.service-create-icon{width:48px;height:48px;display:grid;place-items:center;flex:0 0 auto;border-radius:14px;background:var(--valora-primary,#195d65);color:#fff;font-size:1.3rem}.service-condition-choice{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem}.service-condition-choice input{position:absolute;opacity:0;pointer-events:none}.service-condition-choice span{display:flex;align-items:center;gap:.55rem;padding:.75rem .85rem;border:1px solid var(--bs-border-color);border-radius:12px;cursor:pointer;background:#fff;transition:.18s ease}.service-condition-choice strong{display:grid;place-items:center;min-width:34px;height:28px;border-radius:8px;background:#edf3f4;color:var(--valora-primary,#195d65);font-size:.75rem}.service-condition-choice small{font-weight:600}.service-condition-choice input:checked+span{border-color:var(--valora-primary,#195d65);box-shadow:0 0 0 3px rgba(var(--valora-primary-rgb,25,93,101),.12);background:rgba(var(--valora-primary-rgb,25,93,101),.035)}
.service-panel-title{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.entity-form-grid.compact{gap:.85rem}.service-condition-tabs{display:flex;gap:.65rem;overflow-x:auto;padding:.15rem .1rem .45rem}.service-condition-tab{display:flex;flex-direction:column;gap:.15rem;flex:0 0 auto;min-width:175px;padding:.75rem .9rem;border:1px solid var(--bs-border-color);border-radius:12px;color:inherit;text-decoration:none;background:#fff}.service-condition-tab span{font-size:.85rem;font-weight:600}.service-condition-tab strong{display:inline-grid;place-items:center;min-width:30px;height:24px;padding:0 .35rem;margin-right:.4rem;border-radius:7px;background:#edf3f4;color:var(--valora-primary,#195d65);font-size:.7rem}.service-condition-tab small{color:var(--bs-secondary-color);font-size:.72rem}.service-condition-tab:hover{border-color:var(--valora-primary,#195d65);color:inherit}.service-condition-tab.active{border-color:var(--valora-primary,#195d65);box-shadow:0 0 0 3px rgba(var(--valora-primary-rgb,25,93,101),.1)}.service-condition-tab.inactive{opacity:.65}.service-empty-inline{display:flex;align-items:center;gap:.7rem;padding:1rem;border:1px dashed var(--bs-border-color);border-radius:12px;color:var(--bs-secondary-color)}.service-empty-inline i{font-size:1.35rem}.service-add-condition{display:grid;grid-template-columns:1fr 1fr auto;gap:.8rem;align-items:end;padding:1rem;margin-top:.8rem;border-radius:12px;background:var(--bs-tertiary-bg)}
.composer-title{align-items:flex-start}.service-reception-warning{display:flex;align-items:flex-start;gap:.65rem}.service-composer-grid{display:grid;grid-template-columns:minmax(300px,.85fr) minmax(440px,1.15fr);gap:1rem}.service-products-pane,.service-selection-pane{min-height:540px;border:1px solid var(--bs-border-color);border-radius:16px;background:#fff;overflow:hidden}.service-pane-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border-bottom:1px solid var(--bs-border-color);background:var(--bs-tertiary-bg)}.service-pane-head>div{display:flex;flex-direction:column}.service-pane-head strong{font-size:.92rem}.service-pane-head small{font-size:.72rem;color:var(--bs-secondary-color)}.service-product-search{position:relative;padding:.8rem .8rem .35rem}.service-product-search i{position:absolute;left:1.65rem;top:1.55rem;color:var(--bs-secondary-color)}.service-product-search input{padding-left:2.35rem}.service-family-filters{display:flex;gap:.4rem;overflow-x:auto;padding:.45rem .8rem .75rem}.service-family-filters button{border:1px solid var(--bs-border-color);border-radius:999px;background:#fff;padding:.35rem .65rem;white-space:nowrap;font-size:.72rem;font-weight:600;color:var(--bs-secondary-color)}.service-family-filters button.active,.service-family-filters button:hover{border-color:var(--valora-primary,#195d65);background:rgba(var(--valora-primary-rgb,25,93,101),.08);color:var(--valora-primary,#195d65)}.service-products-list,.service-selection-list{max-height:450px;overflow:auto;padding:.35rem .7rem .8rem}.service-product-card{display:flex;align-items:center;justify-content:space-between;gap:.65rem;padding:.72rem .5rem;border-bottom:1px solid var(--bs-border-color)}.service-product-card:last-child{border-bottom:0}.service-product-card.selected{opacity:.55}.service-product-info{display:grid;grid-template-columns:auto 1fr;column-gap:.5rem;align-items:center;min-width:0}.service-product-info strong{grid-column:2;font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.service-product-info small,.service-product-price{grid-column:2;color:var(--bs-secondary-color);font-size:.68rem}.service-product-price{color:var(--valora-primary,#195d65);font-weight:600}.service-family-badge{grid-row:1/4;display:inline-flex;align-items:center;align-self:start;padding:.25rem .38rem;border-radius:7px;background:#e8f0f7;color:#245a86;font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.025em}.service-family-badge.family-complementarios{background:#e7f6ee;color:#237047}.service-family-badge.family-suplidos{background:#fff2d9;color:#8a5b00}.service-family-badge.family-recepciones{background:#f2eaff;color:#6c3fa0}.service-product-add{display:grid;place-items:center;width:34px;height:34px;flex:0 0 auto;border:0;border-radius:10px;background:var(--valora-primary,#195d65);color:#fff}.service-product-add:disabled{background:var(--bs-secondary-bg);color:var(--bs-secondary-color)}.service-products-empty{display:flex;flex-direction:column;align-items:center;gap:.45rem;padding:2.5rem 1rem;color:var(--bs-secondary-color)}
.service-selected-line{display:grid;grid-template-columns:30px 1fr auto;gap:.6rem;align-items:center;padding:.8rem .25rem;border-bottom:1px solid var(--bs-border-color)}.service-selected-line:last-child{border-bottom:0}.service-line-order{display:flex;flex-direction:column;gap:.15rem}.service-line-action{display:inline-flex;align-items:center;gap:.3rem;border:0;border-radius:7px;background:transparent;color:var(--bs-secondary-color);padding:.28rem}.service-line-action:hover:not(:disabled){background:var(--bs-secondary-bg);color:var(--valora-primary,#195d65)}.service-line-action:disabled{opacity:.25}.service-line-action span:empty{display:none}.service-line-action.remove{align-self:start;color:#a94442}.service-line-body{min-width:0}.service-line-title{display:flex;align-items:center;gap:.5rem;margin-bottom:.55rem}.service-line-title .service-family-badge{grid-row:auto;align-self:center}.service-line-title strong{font-size:.82rem}.service-line-controls{display:grid;grid-template-columns:100px minmax(210px,1fr);gap:.55rem;align-items:end}.service-line-controls label{display:flex;flex-direction:column;gap:.2rem}.service-line-controls label>span{font-size:.66rem;font-weight:600;color:var(--bs-secondary-color)}.service-locked-note{grid-column:1/-1;color:#6c3fa0}.service-selection-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;min-height:390px;color:var(--bs-secondary-color)}.service-selection-empty[hidden]{display:none}.service-selection-empty i{font-size:2rem}.service-composer-save{display:flex;align-items:center;justify-content:flex-end;gap:1rem;padding-top:1rem}.service-composer-save .form-check{margin-right:auto}.service-meta-panel .entity-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:991.98px){.service-composer-grid{grid-template-columns:1fr}.service-products-pane,.service-selection-pane{min-height:auto}.service-products-list,.service-selection-list{max-height:420px}.service-condition-choice{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:575.98px){.service-create-card,.service-meta-panel,.service-conditions-panel,.service-composer-panel{padding:1rem}.service-add-condition{grid-template-columns:1fr}.service-line-controls{grid-template-columns:1fr}.service-condition-choice{grid-template-columns:1fr}.service-composer-save{align-items:stretch;flex-direction:column}.service-composer-save .form-check{margin-right:0}.service-composer-save .btn{width:100%}}

/* ========================================================================
   VALORA V.2.1.1 · REFINAMIENTO VISUAL DE MAESTROS Y FLUJOS
   ======================================================================== */

/* Maestros: jerarquía común, tarjetas fluidas y tabla más expresiva. */
.master-page-head{align-items:flex-end;margin-bottom:18px}
.master-stat-grid{
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:14px;
  margin-bottom:18px;
}
.master-stat{
  position:relative;
  min-height:92px;
  padding:17px 18px;
  border:1px solid var(--lab-stat-border,var(--ui-border));
  border-radius:var(--lab-stat-radius,var(--ui-radius));
  background:var(--lab-stat-bg,var(--lab-panel-bg,#fff));
  box-shadow:0 5px 16px rgba(18,46,68,.045);
  overflow:hidden;
  transition:transform .17s ease,border-color .17s ease,box-shadow .17s ease;
}
.master-stat::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--lab-stat-accent,var(--ui-primary));opacity:.9}
.master-stat:hover{transform:translateY(-2px);border-color:var(--lab-stat-hover-border,#efbd88);box-shadow:0 10px 25px rgba(18,46,68,.075)}
.master-stat-icon{width:40px;height:40px;flex:0 0 40px;border-radius:12px;background:var(--ui-primary-soft);color:var(--ui-primary);font-size:16px}
.master-stat-copy small{font-size:10.5px;font-weight:620;letter-spacing:.015em}.master-stat-copy strong{font-size:20px;font-weight:690;letter-spacing:-.02em}
.master-panel{border-color:var(--ui-border);box-shadow:0 7px 24px rgba(18,46,68,.045)}
.master-toolbar-head{margin:0;padding:16px 18px 13px;border-bottom:1px solid var(--ui-border-soft);background:linear-gradient(180deg,#fff,#fcfdfe)}
.master-toolbar-head h2{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:650}.master-toolbar-head h2 i{color:var(--ui-primary)}
.master-result-count{display:inline-flex;align-items:center;min-height:28px;padding:0 9px;border:1px solid var(--ui-border);border-radius:999px;background:#fff;color:var(--ui-muted);font-size:10px;font-weight:620}
.master-filters{padding:14px 18px 16px;border-bottom:1px solid var(--ui-border-soft);background:#fbfcfd}
.master-search{position:relative}.master-search>i{position:absolute;left:13px;top:50%;z-index:2;transform:translateY(-50%);color:#9ba4b2;font-size:12px}.master-search .form-control{padding-left:35px}
.master-filter-actions{display:flex;gap:7px;align-items:end}
.master-table-wrap{padding:0!important}
.master-table{--bs-table-bg:transparent;margin:0}
.master-table thead th{
  padding:11px 16px!important;
  border-bottom:1px solid var(--lab-table-head-border,#dfe4eb)!important;
  background:var(--lab-table-head-bg,#f3f5f8)!important;
  color:var(--lab-table-head-text,#5d6679)!important;
  font-size:var(--lab-table-head-size,10.5px)!important;
  letter-spacing:.025em;
}
.master-table tbody tr:nth-child(odd) td{background:var(--lab-table-row-bg,#fff)}
.master-table tbody tr:nth-child(even) td{background:var(--lab-table-row-alt,#f8fafc)}
.master-table tbody tr:hover td{background:var(--lab-table-row-hover,#fff5ea)!important}
.master-table td{padding:13px 16px!important;vertical-align:middle}
.master-table .entity-title{display:block;color:var(--ui-text);font-size:12.5px;font-weight:var(--lab-table-entity-weight,560);line-height:1.35}
.master-table .entity-subtitle{display:block;margin-top:3px;color:#8b94a4;font-size:10px;font-weight:430;line-height:1.3}
.master-table .entity-subtitle-inline{display:inline-flex;margin-top:0;padding:4px 7px;border-radius:7px;background:#f1f3f6;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#6e7789}
.metric-pill{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:26px;padding:0 8px;border:1px solid #e4e8ee;border-radius:8px;background:#fff;color:#546075;font-size:10.5px;font-weight:650}
.master-badge{gap:5px;padding:5px 8px;border:1px solid transparent;font-weight:600;line-height:1}
.master-badge i{font-size:10px}.master-badge.success{border-color:#d6ebdf;background:var(--lab-success-bg,#eef8f2)}.master-badge.neutral{border-color:#e5e8ed;background:#f4f5f7}.master-badge.warning{border-color:var(--lab-warning-border,#f2cc91);background:var(--lab-warning-bg,#fff4df);color:var(--lab-warning-text,#9a5a00)}
.master-badge.family{border-color:var(--lab-family-border,#dce6f1);background:var(--lab-family-bg,#eef4fa);color:var(--lab-family-text,#46637d)}
.master-empty{display:flex;min-height:180px;flex-direction:column;align-items:center;justify-content:center;gap:5px}.master-empty>i{width:42px;height:42px;display:grid;place-items:center;margin-bottom:4px;border-radius:12px;background:var(--ui-primary-soft);color:var(--ui-primary);font-size:18px}.master-empty strong{color:var(--ui-text);font-size:12px}.master-empty span{font-size:10px}

/* Acciones contextuales: un único botón discreto. */
.row-action.icon-only{border-color:var(--lab-row-action-border,#dfe4eb);background:var(--lab-row-action-bg,#fff);color:#667085;box-shadow:0 1px 2px rgba(18,46,68,.03)}
.row-action.icon-only:hover,.row-action.icon-only:focus{border-color:var(--ui-primary);background:var(--ui-primary);color:#fff;box-shadow:0 5px 14px rgba(255,131,8,.16)}
.master-action-menu{padding:7px;box-shadow:0 16px 38px rgba(18,46,68,.14),0 3px 8px rgba(18,46,68,.05)}
.master-action-menu .dropdown-item{min-height:39px;font-size:11.5px;font-weight:520}.master-action-menu .dropdown-item:hover,.master-action-menu .dropdown-item:focus{background:var(--lab-dropdown-hover,#fff4e8);color:#8f4a08}.master-action-menu .dropdown-item:hover i{color:var(--ui-primary)}

/* Hover corporativo: botones blancos pasan a naranja. */
.btn-outline-valora:hover,.btn-outline-valora:focus,
.btn-outline-secondary:hover,.btn-outline-secondary:focus,
.btn-light:hover,.btn-light:focus{
  border-color:var(--ui-primary)!important;
  background:var(--ui-primary)!important;
  color:#fff!important;
}
.btn-outline-valora:hover i,.btn-outline-secondary:hover i,.btn-light:hover i{color:#fff!important}

/* Modales rápidos de maestros. */
.valora-entity-modal .modal-dialog{max-width:760px}
.valora-entity-modal .modal-content{border-top:3px solid var(--ui-primary);box-shadow:0 28px 70px rgba(18,46,68,.22),0 8px 20px rgba(18,46,68,.08)}
.valora-entity-modal .modal-header{align-items:flex-start;padding:15px 18px 13px}.valora-entity-modal .modal-title{margin-top:2px;font-size:15px;font-weight:650}.modal-kicker{color:var(--ui-primary);font-size:8.5px;font-weight:750;letter-spacing:.12em}
.valora-entity-modal iframe{height:520px}
.modal-form-body{min-height:100vh;background:var(--lab-modal-bg,#fff)!important}
.modal-form-shell{padding:18px 20px 0}
.modal-form-intro{display:flex;align-items:center;gap:12px;padding:0 0 16px;margin-bottom:4px;border-bottom:1px solid var(--ui-border-soft)}
.modal-form-icon{width:42px;height:42px;display:grid;place-items:center;flex:0 0 42px;border-radius:12px;background:var(--ui-primary-soft);color:var(--ui-primary);font-size:17px}.modal-form-intro h1{margin:2px 0 3px;color:var(--ui-text);font-size:16px;font-weight:670}.modal-form-intro p{margin:0;color:var(--ui-muted);font-size:10.5px;line-height:1.4}
.modal-form-shell .entity-form-section{padding:16px 0 18px}.modal-form-shell .entity-form-grid{gap:13px}.modal-form-shell .entity-form-actions{position:sticky;bottom:0;display:flex;justify-content:flex-end;margin:0 -20px;padding:13px 20px;border-top:1px solid var(--ui-border-soft);background:var(--lab-modal-footer-bg,#fafbfc)}
.modal-inline-alert{display:flex;align-items:flex-start;gap:8px;margin-top:12px;padding:10px 12px;border:1px solid #f0c1c1;border-radius:10px;background:#fff7f7;color:#a64b4b;font-size:10.5px}.entity-switch{padding-top:5px}

/* Compositor visual drag & drop. */
.service-composer-panel{padding:20px}.service-composer-legend{display:flex;gap:8px;flex-wrap:wrap}.service-composer-legend span{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid var(--ui-border);border-radius:999px;background:#fff;color:var(--ui-muted);font-size:9.5px}
.service-products-pane,.service-selection-pane{border-color:var(--ui-border);box-shadow:0 4px 14px rgba(18,46,68,.035)}
.service-pane-head{background:#f8fafc!important;border-color:var(--ui-border-soft)!important}.service-pane-head strong{color:var(--ui-text);font-size:12.5px}.service-pane-head small{font-size:10px}
.service-family-filters button{border-color:#e2e6ec!important;color:#677186!important}.service-family-filters button.active,.service-family-filters button:hover{border-color:var(--ui-primary)!important;background:var(--ui-primary-soft)!important;color:#9a4e08!important}
.service-product-card{padding:10px 8px!important;border-color:var(--ui-border-soft)!important;transition:background .14s ease,opacity .14s ease}.service-product-card:hover{background:#fffaf5}.service-product-card.selected{opacity:.5}.service-product-add{background:#fff!important;border:1px solid #f2b779!important;color:var(--ui-primary)!important;transition:.14s ease}.service-product-add:hover:not(:disabled){background:var(--ui-primary)!important;color:#fff!important}.service-product-add:disabled{border-color:#e5e8ed!important;background:#f5f6f8!important;color:#9da5b1!important}
.service-family-badge{background:var(--lab-family-bg,#eef4fa)!important;color:var(--lab-family-text,#46637d)!important;border:1px solid var(--lab-family-border,#dce6f1);font-size:8px!important;font-weight:650!important;text-transform:none!important}
.service-selected-line{grid-template-columns:42px minmax(0,1fr) auto!important;gap:10px!important;margin:7px 3px;padding:11px 10px!important;border:1px solid var(--ui-border)!important;border-radius:12px;background:#fff;box-shadow:0 2px 8px rgba(18,46,68,.025);transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease}
.service-selected-line:hover{border-color:#efc08c!important}.service-selected-line.dragging{opacity:.48;transform:scale(.99)}.service-selected-line.drag-over{border-color:var(--ui-primary)!important;background:#fff8f0;box-shadow:0 0 0 3px rgba(255,131,8,.09)}
.service-drag-handle{width:38px;height:44px;display:grid;grid-template-columns:auto;place-items:center;padding:4px;border:1px solid #e5e8ed;border-radius:10px;background:#f7f8fa;color:#8c95a4;cursor:grab}.service-drag-handle:active{cursor:grabbing}.service-drag-handle i{font-size:14px;line-height:1}.service-drag-handle span{font-size:8px;font-weight:700;color:#a0a8b5}
.service-line-title{margin-bottom:7px!important}.service-line-title strong{font-size:11.5px!important;font-weight:590}.service-line-price{margin-left:auto;color:#7a8392;font-size:10px;font-weight:620}.service-line-controls{grid-template-columns:110px minmax(180px,1fr)!important}.service-line-meta{display:flex;flex-direction:column;justify-content:center;min-height:36px;padding:0 10px;border-left:1px solid var(--ui-border-soft);color:#606a7e;font-size:9.5px}.service-line-meta small{margin-top:2px;color:#9aa2af;font-size:8.5px}.service-line-actions{display:flex;align-items:center;gap:2px}.service-line-action{width:29px;height:29px;display:grid;place-items:center;padding:0!important}.service-line-action:hover:not(:disabled){background:var(--ui-primary-soft)!important;color:var(--ui-primary)!important}.service-line-action.remove:hover{background:#fff1f1!important;color:#b34343!important}
.service-selection-list{padding:5px 6px 10px!important}.service-selection-empty strong{font-size:12px;color:var(--ui-text)}.service-selection-empty span{font-size:10px}.service-save-note{color:var(--ui-muted);font-size:9.5px}.service-save-note i{color:var(--ui-primary);margin-right:4px}
.btn-two-line{min-height:50px!important}.btn-two-line>span{display:flex!important;flex-direction:column;align-items:flex-start!important;text-align:left!important}.btn-two-line strong{font-size:11px;line-height:1.1}.btn-two-line small{margin-top:3px;font-size:8.5px;font-weight:500;opacity:.85}

/* Wizard: la tarifa es contexto final, no un falso paso de interacción. */
.wizard-steps{display:grid;grid-template-columns:repeat(var(--wizard-columns,5),minmax(0,1fr));overflow:hidden}
.wizard-step{display:flex;align-items:center}.wizard-step:last-child{border-right:0}
.wizard-step.tariff-context{background:#fbfcfd}.wizard-step.tariff-context .wizard-num{border-color:#f1c58f;background:#fff6eb;color:var(--ui-primary)}.wizard-step.tariff-context strong{font-weight:650}.wizard-step.tariff-context small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px}


@media(max-width:1199.98px){.master-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wizard-steps{overflow-x:auto;grid-template-columns:repeat(var(--wizard-columns,5),minmax(150px,1fr))}}
@media(max-width:767.98px){.master-stat-grid{grid-template-columns:1fr}.master-page-head{align-items:stretch}.master-filter-actions{width:100%}.master-filter-actions .btn{flex:1}.master-table td,.master-table thead th{padding-left:12px!important;padding-right:12px!important}.valora-entity-modal iframe{height:68vh}.service-selected-line{grid-template-columns:36px minmax(0,1fr)!important}.service-line-actions{grid-column:2;justify-content:flex-end}.service-line-controls{grid-template-columns:1fr!important}.service-line-meta{border-left:0;border-top:1px solid var(--ui-border-soft);padding:7px 0 0}.service-save-note{display:none}}
.valora-entity-modal .modal-dialog{max-width:var(--lab-modal-width,760px)}
.valora-entity-modal .modal-content{border-top-color:var(--lab-modal-accent,var(--ui-primary))}
.service-products-pane,.service-selection-pane{border-color:var(--lab-composer-border,var(--ui-border));border-radius:var(--lab-composer-radius,16px);background:var(--lab-composer-pane-bg,#fff)}
.service-drag-handle{border-color:var(--lab-drag-border,#e5e8ed);background:var(--lab-drag-bg,#f7f8fa)}
.service-selected-line.drag-over{background:var(--lab-drop-bg,#fff8f0)}

/* ================================================================
   VALORA V.2.2.0 · FASE 7 · UX OPERATIVA Y COHERENCIA DE FLUJO
   ================================================================ */

/* Los selects conservan el chevron nativo de Bootstrap. Evitamos el shorthand
   background que eliminaba accidentalmente su background-image. */
.form-select{background-color:var(--lab-input-bg,#fff)!important;background-repeat:no-repeat!important;background-position:right .75rem center!important;background-size:16px 12px!important;padding-right:2.35rem!important}
.form-control,.input-group-text{background-color:var(--lab-input-bg,#fff)!important}

/* Formularios compactos: la rejilla se adapta al contenido, no fuerza una columna. */
.entity-form-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.entity-form-grid .span-2{grid-column:span 2}.entity-form-grid .span-all{grid-column:1/-1}
.form-section-label{display:flex;align-items:baseline;gap:9px;margin-top:2px;padding-top:10px;border-top:1px solid var(--ui-border-soft)}
.form-section-label span{font-size:10.5px;font-weight:700;color:var(--ui-text)}.form-section-label small{font-size:9px;color:var(--ui-muted)}
.form-help-card{display:flex;align-items:flex-start;gap:8px;padding:10px 11px;border:1px solid #e6eaf0;border-radius:10px;background:#f8fafc;color:#667085;font-size:9.5px;line-height:1.45}
.form-help-card i{color:var(--ui-primary);margin-top:1px}.form-help-card.warning{border-color:#f2d7aa;background:#fffaf1;color:#7b5a28}

/* Modal maestro: cabecera única en el contenedor padre y cuerpo sin scroll cuando cabe. */
.valora-entity-modal .modal-dialog{max-width:min(var(--lab-modal-width,900px),calc(100vw - 28px))}
.valora-entity-modal .modal-body{padding:0;overflow:hidden}
.valora-entity-modal iframe{display:block;width:100%;height:420px;max-height:calc(100vh - 170px);border:0;background:#fff;transition:height .16s ease}
.modal-form-shell.compact-modal-form{padding:12px 18px 0}
.modal-form-shell.compact-modal-form .entity-form-section{padding:8px 0 12px}
.modal-form-shell.compact-modal-form .entity-form-grid{gap:10px 12px}
.modal-form-shell.compact-modal-form .form-label{margin-bottom:4px;font-size:9.5px;font-weight:650;color:#596377}
.modal-form-shell.compact-modal-form .form-control,.modal-form-shell.compact-modal-form .form-select{min-height:39px;font-size:11px}
.modal-form-shell.compact-modal-form .entity-form-actions{position:static;margin:2px -18px 0;padding:11px 18px}
.modal-form-shell.compact-modal-form .entity-switch{margin:0;padding-top:2px}

/* Botones operativos: blancos de reposo y naranja corporativo al interactuar. */
.service-save-button{min-width:190px;background:#fff!important;color:#a85205!important;border-color:#efb36f!important;box-shadow:0 2px 7px rgba(18,46,68,.035)!important}
.service-save-button:hover,.service-save-button:focus{background:var(--ui-primary)!important;color:#fff!important;border-color:var(--ui-primary)!important;box-shadow:0 8px 18px rgba(255,131,8,.15)!important}
.service-save-button small{opacity:.72}

/* Compositor: panel derecho con la misma gramática visual que Productos disponibles. */
.service-selection-pane .service-pane-head{position:sticky;top:0;z-index:2}
.service-selection-list{padding:5px 8px 10px!important}
.service-selected-line{display:grid!important;grid-template-columns:34px minmax(0,1fr) 82px 92px auto!important;gap:9px!important;align-items:center!important;margin:0!important;padding:9px 4px!important;border:0!important;border-bottom:1px solid var(--ui-border-soft)!important;border-radius:0!important;background:#fff!important;box-shadow:none!important}
.service-selected-line:last-child{border-bottom:0!important}
.service-selected-line:hover{background:#fffaf5!important;border-color:var(--ui-border-soft)!important}
.service-selected-line.drag-over{background:var(--lab-drop-bg,#fff8f0)!important;box-shadow:inset 3px 0 0 var(--ui-primary)!important}
.service-drag-handle{width:30px;height:38px;border-radius:8px;background:#f8fafc;color:#8b94a4}
.service-selected-info{min-width:0}.service-selected-title{display:flex;align-items:center;gap:7px;min-width:0}.service-selected-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.8px;font-weight:580;color:var(--ui-text)}
.service-selected-info>small{display:block;margin-top:3px;color:#929baa;font-size:8.6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.service-selected-qty{display:flex;flex-direction:column;gap:3px;margin:0}.service-selected-qty>span,.service-selected-price>span{font-size:7.8px;font-weight:650;letter-spacing:.02em;color:#929baa;text-transform:uppercase}
.service-selected-qty .form-control{min-height:34px!important;height:34px;padding:5px 8px;font-size:10px}
.service-selected-price{display:flex;flex-direction:column;align-items:flex-end;gap:1px;white-space:nowrap}.service-selected-price strong{font-size:10.5px;font-weight:620;color:#556074}.service-selected-price small{font-size:7.8px;color:#9ba3b0}
.service-line-actions{display:flex;align-items:center;gap:1px}.service-line-action{width:26px;height:26px!important;border-radius:7px}.service-line-action.subtle{opacity:.48}.service-selected-line:hover .service-line-action.subtle{opacity:.9}.service-line-action.remove{color:#a95d58}

/* Tarjetas de catálogo/servicio en valoración: 4 columnas, compactas y ordenables. */
.wizard-grid.compact-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:10px}
.wizard-grid.compact-grid-4 .choice-card{min-height:84px;padding:11px 10px;gap:9px}
.wizard-grid.compact-grid-4 .choice-icon{width:34px;height:34px;flex:0 0 34px;border-radius:10px}
.wizard-grid.compact-grid-4 .choice-title{font-size:10.5px;line-height:1.3;font-weight:590}
.wizard-grid.compact-grid-4 .choice-subtitle{font-size:8.5px;line-height:1.35}.wizard-grid.compact-grid-4 .choice-count{font-size:8px;padding:4px 6px}
.section-head-actions{display:flex;align-items:flex-end;gap:7px}.section-head-actions .search-box{min-width:260px}
.alpha-sort-btn{width:39px;height:39px;display:grid;place-items:center;flex:0 0 39px;padding:0;border:1px solid #dfe4eb;border-radius:50%;background:#fff;color:#697386;transition:background .14s ease,color .14s ease,border-color .14s ease,transform .14s ease}
.alpha-sort-btn:hover,.alpha-sort-btn:focus{border-color:var(--ui-primary);background:var(--ui-primary);color:#fff;transform:translateY(-1px);outline:0}.alpha-sort-btn i{font-size:14px}

/* Historial / revisiones de valoraciones. */
.valuation-type-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border:1px solid #e3e7ee;border-radius:999px;background:#f8fafc;color:#657084;font-size:8.5px;font-weight:650}.valuation-type-badge.reception{border-color:#e5d9f4;background:#f8f3ff;color:#70459b}
.revision-note{display:flex;align-items:center;gap:7px;margin-top:8px;color:#7d8796;font-size:9.5px}.revision-note i{color:var(--ui-primary)}

/* Configuración: mantenimiento destructivo claramente separado. */
.maintenance-card{border-color:#efd7d5}.maintenance-card .maintenance-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#fff1ef;color:#b14f49;font-size:17px}.maintenance-warning{display:flex;gap:10px;align-items:flex-start;padding:11px;border:1px solid #efd7d5;border-radius:11px;background:#fff8f7;color:#7c5653;font-size:10px;line-height:1.45}

/* PDF-like screen table: reduce peso tipográfico y enfatiza agrupaciones, no cada celda. */
.consult-result-table tbody td strong{font-weight:580}.consult-result-table tbody tr:not(.consult-category-heading):nth-child(even){background:#fbfcfd}.consult-result-table tbody tr:not(.consult-category-heading):hover{background:#fffaf5}

@media(max-width:1199.98px){.wizard-grid.compact-grid-4{grid-template-columns:repeat(3,minmax(0,1fr))!important}.service-selected-line{grid-template-columns:34px minmax(0,1fr) 76px 86px auto!important}}
@media(max-width:991.98px){.wizard-grid.compact-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))!important}.entity-form-grid.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}.entity-form-grid.cols-3 .span-2{grid-column:1/-1}.service-selected-line{grid-template-columns:32px minmax(0,1fr) 76px auto!important}.service-selected-price{display:none}}
@media(max-width:575.98px){.wizard-grid.compact-grid-4{grid-template-columns:1fr!important}.section-head-actions{width:100%}.section-head-actions .search-box{min-width:0;flex:1}.entity-form-grid.cols-3{grid-template-columns:1fr}.entity-form-grid .span-2{grid-column:1/-1}.service-selected-line{grid-template-columns:32px minmax(0,1fr) auto!important}.service-selected-qty{grid-column:2}.service-line-actions{grid-column:3;grid-row:1/3}.service-selected-price{display:none}}

.form-help-link{display:inline-flex;align-items:center;margin-left:4px;color:#9d5108;font-weight:700;text-decoration:none}.form-help-link:hover{color:var(--ui-primary);text-decoration:underline}

/* ================================================================
   VALORA V.2.3.0 · FASE 8 · REFINAMIENTO UX Y CONSISTENCIA
   ================================================================ */

/* Tarjetas de resumen: información compacta, centrada y sin ocupar ancho inútil. */
.master-stat-grid,
.master-stat-grid.compact-stats{
  grid-template-columns:repeat(auto-fit,minmax(190px,240px));
  justify-content:center;
  gap:11px;
}
.master-stat{
  min-height:74px;
  padding:12px 14px;
  border-radius:14px;
  border:1px solid #e5e9ef;
  border-left:2px solid #efad66;
  box-shadow:0 5px 16px rgba(18,46,68,.035);
  transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;
}
.master-stat:hover{transform:translateY(-1px);border-color:#edc49c;box-shadow:0 8px 20px rgba(18,46,68,.055)}
.master-stat-icon{width:34px;height:34px;flex-basis:34px;border-radius:10px;font-size:13px;background:#fff8ef;border:1px solid #f5e5d3}
.master-stat small{font-size:9.5px;letter-spacing:.01em}.master-stat strong{font-size:17px;font-weight:650}

/* Paginación visual: blanco + borde naranja, activo/hover naranja corporativo. */
.pagination-valora{flex-wrap:wrap;justify-content:flex-end;gap:5px}
.page-btn{
  min-width:34px;height:34px;padding:0 8px;
  border-color:#efb46f;
  background:#fff;
  color:#9d560f;
  border-radius:9px;
  transition:background .14s ease,color .14s ease,border-color .14s ease,transform .14s ease;
}
.page-btn:hover,.page-btn:focus{background:var(--ui-primary);border-color:var(--ui-primary);color:#fff;transform:translateY(-1px);outline:0}
.page-btn.active{background:var(--ui-primary);border-color:var(--ui-primary);color:#fff;box-shadow:0 4px 11px rgba(255,131,8,.15)}
.page-btn.page-arrow{border-color:#e3e7ed;color:#6f7889}.page-btn.page-arrow:hover{border-color:var(--ui-primary);color:#fff}
.page-ellipsis{height:34px;display:inline-flex;align-items:center;justify-content:center;min-width:24px;color:#9ca3af}

/* Menús contextuales elevados fuera de tablas/overflow. */
.valora-dropdown-portaled{z-index:2055!important;min-width:205px!important;box-shadow:0 16px 38px rgba(18,46,68,.16)!important;border:1px solid #e1e6ed!important;border-radius:12px!important;padding:6px!important}
.master-action-menu .dropdown-item{display:flex;align-items:center;gap:9px;min-height:34px;border-radius:8px;font-size:10.5px;color:#4f596c}
.master-action-menu .dropdown-item i{width:16px;color:#818a99}.master-action-menu .dropdown-item:hover{background:#fff7ee;color:#a34f00}.master-action-menu .dropdown-item:hover i{color:var(--ui-primary)}
.master-action-menu .master-action-danger{color:#a84d48}.master-action-menu .master-action-danger i{color:#b45b56}.master-action-menu .master-action-danger:hover{background:#fff2f1;color:#983e39}

/* SweetAlert2 con la misma gramática visual de Valora. */
.swal2-container{z-index:2300!important}
.valora-swal-popup{width:min(420px,calc(100vw - 28px))!important;padding:21px 22px 18px!important;border:1px solid var(--lab-modal-border,#e5e9ef)!important;border-top:2px solid var(--lab-modal-accent,var(--ui-primary))!important;border-radius:var(--lab-modal-radius,17px)!important;background:var(--lab-modal-bg,#fff)!important;box-shadow:0 20px 55px rgba(18,46,68,.18)!important}
.valora-swal-title{padding:0!important;color:var(--ui-text)!important;font-size:17px!important;line-height:1.25!important;font-weight:650!important}
.valora-swal-text{margin:9px 0 0!important;color:#6f7889!important;font-size:11px!important;line-height:1.55!important}
.valora-swal-actions{gap:8px!important;margin:18px 0 0!important}
.valora-swal-confirm,.valora-swal-cancel{min-height:38px;padding:7px 15px;border-radius:9px;font-size:11px;font-weight:650;transition:background .14s ease,color .14s ease,border-color .14s ease}
.valora-swal-confirm{border:1px solid var(--ui-primary);background:#fff;color:#a85305}.valora-swal-confirm:hover{background:var(--ui-primary);color:#fff}
.valora-swal-confirm.danger{border-color:#c86d66;color:#a54f49}.valora-swal-confirm.danger:hover{background:#b65b54;border-color:#b65b54;color:#fff}
.valora-swal-cancel{border:1px solid #dfe4eb;background:#fff;color:#667085}.valora-swal-cancel:hover{background:#f5f7f9;color:#3f4859}
.swal2-icon{transform:scale(.78);margin-top:12px!important;margin-bottom:10px!important}

/* Usuarios: listado como maestro, formularios únicamente en modal/página de edición. */
.user-role-badge{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;border:1px solid #e2e6ed;background:#f7f9fb;color:#687286;font-size:8.5px;font-weight:650;white-space:nowrap}
.user-role-badge.role-administrador{background:#fff7ec;border-color:#f0d4ad;color:#9b610f}.user-role-badge.role-administrador i{color:#d48825}
.user-role-badge.role-superadministrador{background:#f3f1fb;border-color:#ddd8f0;color:#5d547e}.user-role-badge.role-superadministrador i{color:#6f64a0}
.entity-switch-wrap{display:flex;flex-direction:column;justify-content:center;gap:3px}.entity-switch-wrap small{color:#9098a7;font-size:8.5px}
.entity-title.compact{font-size:11px!important;font-weight:580!important}

/* Valoraciones guardadas: más aire, detalle legible y sin lenguaje técnico interno. */
.valuation-list-panel{overflow:visible!important}.valuation-table-wrap{overflow-x:auto;overflow-y:visible;padding-bottom:4px}
.valuation-detail-heading{margin-bottom:20px}.valuation-summary{margin-bottom:18px}
.valuation-summary .summary-cell{padding-top:13px;padding-bottom:13px}.valuation-summary .summary-value{line-height:1.35}
.valuation-detail-card{overflow:hidden}.valuation-detail-card .consult-result-head{padding:22px 24px 18px;gap:28px;border-bottom:1px solid var(--ui-border-soft)}
.valuation-detail-card .step-caption{margin-bottom:6px;color:#9a6a36;font-size:8.5px;letter-spacing:.08em}
.valuation-detail-card .step-heading{font-size:17px;line-height:1.35}.valuation-detail-card .consult-result-sub{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:7px;line-height:1.45}
.valuation-detail-card .detail-dot{color:#c1c6cf}.valuation-agreement-state{margin-top:10px}
.valuation-detail-table{padding:15px 18px 0}.valuation-detail-table .table-valora thead th{padding:11px 13px}.valuation-detail-table .table-valora td{padding:13px!important;vertical-align:middle}
.valuation-line-title{display:block;max-width:460px;font-size:11px!important;font-weight:580!important;line-height:1.38}.valuation-line-detail{color:#727c8d;font-size:10px}.valuation-number{white-space:nowrap;color:#5f697a;font-size:10.5px}.valuation-line-total{white-space:nowrap;color:#303b50;font-weight:650!important}
.valuation-detail-card .consult-category-heading td{padding:8px 13px!important}.valuation-detail-card .consult-result-footer-actions{padding:16px 18px 18px;border-top:1px solid var(--ui-border-soft);margin-top:7px}
.valuation-detail-card .consult-result-note{max-width:650px;line-height:1.5}

/* Composición: panel derecho como lista operativa compacta + total vivo. */
.service-composer-panel .composer-title{padding-bottom:13px}.service-selection-pane{display:flex;flex-direction:column;min-height:0}
.service-selection-list{flex:1 1 auto;padding:3px 9px 8px!important}
.service-selected-line{grid-template-columns:32px minmax(0,1fr) 78px 82px 92px 28px!important;gap:8px!important;padding:9px 3px!important}
.service-drag-handle{width:28px;height:34px;border:0;background:transparent;color:#99a1ae}.service-drag-handle:hover{background:#fff5e9;color:#bc690f}.service-drag-handle span{font-size:8px}
.service-selected-title strong{font-size:10.4px;font-weight:580}.service-selected-qty .form-control{height:32px!important;min-height:32px!important}
.service-selected-price,.service-selected-total{display:flex;flex-direction:column;align-items:flex-end;gap:2px;white-space:nowrap}.service-selected-price>span,.service-selected-total>span{font-size:7.5px;font-weight:650;text-transform:uppercase;letter-spacing:.03em;color:#99a1af}.service-selected-price strong{font-size:9.6px;font-weight:560}.service-selected-total strong{font-size:10.3px;font-weight:650;color:#3e495c}.service-selected-price small{font-size:7.3px}
.service-line-action.remove{width:26px;height:26px!important;border:0;background:transparent}.service-line-action.remove:hover{background:#fff1ef;color:#9f4944}
.service-composition-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:auto;border-top:1px solid #e9edf2;background:#fbfcfd}
.service-composition-summary>div{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-right:1px solid #e9edf2}.service-composition-summary>div:last-child{border-right:0}
.service-composition-summary span{color:#8b94a3;font-size:7.8px;font-weight:650;text-transform:uppercase;letter-spacing:.04em}.service-composition-summary strong{color:#525d70;font-size:11px;font-weight:620}
.service-composition-summary .grand{background:#fff8ef}.service-composition-summary .grand span{color:#9b631f}.service-composition-summary .grand strong{color:#a65305;font-size:13px;font-weight:700}
.service-composer-save{min-height:62px;padding:11px 14px!important;gap:14px!important;background:#fff!important;border-top:1px solid var(--ui-border-soft)!important}
.service-save-note{display:flex;align-items:center;gap:6px;margin-left:auto;color:#8a93a2!important;font-size:8.8px!important}.service-save-note i{color:#d88a32}
.service-save-button{min-width:auto!important;min-height:38px!important;height:38px!important;padding:7px 14px!important;border-radius:9px!important;font-size:10.5px!important;font-weight:650!important;gap:7px!important;box-shadow:none!important}
.service-save-button:hover,.service-save-button:focus{box-shadow:0 5px 13px rgba(255,131,8,.13)!important;transform:translateY(-1px)}

/* Modales compactos: aprovechan el ancho antes de recurrir al scroll. */
.valora-entity-modal .modal-content{max-height:calc(100vh - 28px)}
.valora-entity-modal .modal-header{padding:14px 18px}.valora-entity-modal .modal-title{font-size:15px}
.modal-form-shell.compact-modal-form{padding-top:8px}.modal-form-shell.compact-modal-form .entity-form-actions{padding-top:10px;padding-bottom:10px}

@media(max-width:1199.98px){
 .service-selected-line{grid-template-columns:30px minmax(0,1fr) 72px 78px 88px 28px!important}
}
@media(max-width:991.98px){
 .master-stat-grid,.master-stat-grid.compact-stats{grid-template-columns:repeat(auto-fit,minmax(180px,220px))}
 .service-selected-line{grid-template-columns:30px minmax(0,1fr) 72px 88px 28px!important}.service-selected-price{display:none}
 .valuation-detail-card .consult-result-head{padding:18px}.valuation-detail-table{padding:12px 10px 0}
}
@media(max-width:575.98px){
 .master-stat-grid,.master-stat-grid.compact-stats{grid-template-columns:1fr}.master-stat{max-width:none}
 .master-footer{align-items:flex-start;flex-direction:column}.pagination-valora{justify-content:flex-start}
 .service-selected-line{grid-template-columns:28px minmax(0,1fr) 28px!important}.service-selected-qty{grid-column:2}.service-selected-total{grid-column:2;align-items:flex-start}.service-selected-price{display:none}.service-line-action.remove{grid-column:3;grid-row:1/3}
 .service-composition-summary{grid-template-columns:1fr 1fr}.service-composition-summary .grand{grid-column:1/-1}
 .service-composer-save{align-items:flex-start!important;flex-wrap:wrap}.service-save-note{order:3;width:100%;margin-left:0}.service-save-button{margin-left:auto}
}
.valora-swal-toast{border:1px solid var(--lab-toast-border,#e4e8ee)!important;border-left:3px solid var(--ui-primary)!important;border-radius:var(--lab-toast-radius,13px)!important;background:var(--lab-toast-bg,#fff)!important;box-shadow:0 12px 30px rgba(18,46,68,.13)!important;padding:10px 12px!important}
.valora-swal-toast-title{font-size:var(--lab-toast-title-size,11px)!important;font-weight:650!important;color:var(--ui-text)!important;margin:0!important}.valora-swal-toast-text{font-size:var(--lab-toast-text-size,9.5px)!important;line-height:1.4!important;color:#727b8c!important;margin:3px 0 0!important}
.valora-swal-toast .swal2-icon{transform:scale(.55);margin:0 6px 0 0!important}

/* ================================================================
   VALORA V.2.4.0 · FASE 9 · MAESTROS, TARIFAS, PDF E INSTALACIÓN
   ================================================================ */

/* Formularios: mayor legibilidad y menos apariencia de interfaz comprimida. */
.form-label{font-size:12.5px!important;line-height:1.25;font-weight:620!important;color:#566174}
.form-control,.form-select{min-height:42px;font-size:13.5px!important;line-height:1.35}
.form-text{font-size:11px;line-height:1.45}
.input-group-text{font-size:13px}
.modal-form-shell.compact-modal-form .form-label{font-size:12px!important;margin-bottom:5px}
.modal-form-shell.compact-modal-form .form-control,.modal-form-shell.compact-modal-form .form-select{min-height:42px;font-size:13px!important}
.modal-form-shell.compact-modal-form .entity-form-grid{gap:12px 14px}
.modal-form-shell.compact-modal-form .form-help-card{font-size:11px}
.entity-switch .form-check-label,.form-check-label{font-size:12px}

/* Catálogos y servicios: tres columnas, más aire y texto realmente legible. */
.wizard-grid.compact-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:13px}
.wizard-grid.compact-grid-3 .choice-card{min-height:104px;padding:15px 14px;gap:12px;border-radius:15px}
.wizard-grid.compact-grid-3 .choice-icon{width:40px;height:40px;flex:0 0 40px;border-radius:11px}
.wizard-grid.compact-grid-3 .choice-title{font-size:13px;line-height:1.35;font-weight:590}
.wizard-grid.compact-grid-3 .choice-subtitle{font-size:10.5px;line-height:1.4}
.wizard-grid.compact-grid-3 .choice-count{font-size:9.5px;padding:5px 7px}
@media(max-width:991.98px){.wizard-grid.compact-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:575.98px){.wizard-grid.compact-grid-3{grid-template-columns:1fr!important}}

/* Tarifas: producto con peso normal y acciones de edición inequívocas. */
.tariff-product-name{display:block;font-size:12.5px;line-height:1.4;font-weight:500;color:var(--ui-text)}
.tariff-row-actions{display:inline-flex;align-items:center;gap:5px}
.tariff-row-actions .row-action.icon-only{width:34px;height:34px;border:1px solid #e2e6ec;background:#fff;color:#657083;border-radius:9px}
.tariff-row-actions .row-action.icon-only:hover{border-color:var(--ui-primary);background:var(--ui-primary);color:#fff}

/* Clasificación de productos. */
.master-table td:nth-child(3){line-height:1.45}

/* Compositor: el total queda visualmente anclado, sin convertir Guardar en una tarjeta. */
.service-composition-summary .grand{box-shadow:inset 0 2px 0 rgba(255,131,8,.12)}
.service-save-button{background:#fff!important;border:1px solid #efad63!important;color:#a65205!important;border-radius:10px!important}
.service-save-button:hover,.service-save-button:focus{background:var(--ui-primary)!important;border-color:var(--ui-primary)!important;color:#fff!important}

/* ================================================================
   VALORA V.2.5.0 · FASE 10 · RECEPCIÓN POR SERVICIO + TIPOGRAFÍA
   ================================================================ */

/* Escala tipográfica coherente. La jerarquía se crea por peso y espacio,
   evitando saltos arbitrarios de 8/9/10/11 px entre componentes vecinos. */
body{font-size:var(--lab-body-size,15px)}
.page-subtitle,.step-context,.text-muted{font-size:14px;line-height:1.5}
.section-title,.service-panel-title h2{font-size:var(--lab-section-size,17px);line-height:1.3}
.form-label{font-size:13.5px!important;line-height:1.3}
.form-control,.form-select,.input-group-text{font-size:14.5px!important}
.form-text,.form-help-card,.service-panel-title p{font-size:12.5px!important;line-height:1.45}
.table-valora{font-size:var(--lab-table-size,14px)}
.table-valora thead th{font-size:var(--lab-table-head-size,13px)}
.table-secondary-text,.entity-subtitle{font-size:var(--lab-table-secondary-size,12px)!important;line-height:1.4}
.entity-title,.tariff-product-name{font-size:14px!important;line-height:1.4;font-weight:var(--lab-table-entity-weight,560)!important}
.btn{font-size:var(--lab-button-size,14px)}
.row-action,.master-action-menu .dropdown-item{font-size:var(--lab-row-action-size,13px)!important}
.master-badge,.badge-soft,.choice-count,.group-count-badge{font-size:var(--lab-badge-size,11.5px)!important}
.choice-title{font-size:14.5px!important;line-height:1.4}.choice-subtitle{font-size:12.5px!important}
.wizard-step strong{font-size:13.5px}.wizard-step small{font-size:11.5px}
.valuation-action strong{font-size:var(--lab-val-action-title-size,13px)}.valuation-action small{font-size:var(--lab-val-action-subtitle-size,11.5px)}
.service-pane-head strong{font-size:14px!important}.service-pane-head small{font-size:12px!important}
.service-product-info strong,.service-selected-title strong{font-size:13px!important;line-height:1.35}.service-product-info small,.service-selected-info small{font-size:11.5px!important}
.service-product-price{font-size:12px!important}.service-selected-price strong,.service-selected-total strong{font-size:12.5px!important}.service-selected-price>span,.service-selected-total>span,.service-selected-qty>span{font-size:10.5px!important}
.service-composition-summary span{font-size:10.5px!important}.service-composition-summary strong{font-size:13.5px!important}.service-composition-summary .grand strong{font-size:16px!important}

/* Acuerdos: formulario sencillo y centrado en datos contractuales. */
.reception-agreement-card{padding:22px}.reception-agreement-form{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.reception-agreement-form .wide{grid-column:1/-1}
.reception-agreement-note{display:flex;align-items:flex-start;gap:12px;padding:14px 15px;border:1px solid #f0d1ab;border-radius:12px;background:#fffaf4;color:#69553e}.reception-agreement-note>i{color:var(--ui-primary);font-size:18px}.reception-agreement-note div{display:flex;flex-direction:column;gap:3px}.reception-agreement-note strong{font-size:13.5px}.reception-agreement-note span{font-size:12.5px;line-height:1.45}

/* Tercer módulo del servicio: Recepción. */
.service-reception-panel{margin-top:18px;padding:20px}.reception-context-selector{display:grid;grid-template-columns:minmax(220px,1fr) minmax(260px,1.3fr) auto;gap:12px;align-items:end;padding:14px;border:1px solid var(--ui-border);border-radius:14px;background:#fafbfc}.reception-context-selector .btn{height:43px}
.reception-context-card{display:grid;grid-template-columns:1fr 1.25fr 1fr auto;gap:12px;align-items:center;margin-top:12px;padding:13px 15px;border:1px solid #f0d3b3;border-left:3px solid var(--ui-primary);border-radius:13px;background:#fff}.reception-context-card>div{display:flex;flex-direction:column;gap:3px}.reception-context-card small{font-size:11px;color:var(--ui-muted)}.reception-context-card strong{font-size:13px;font-weight:600;color:var(--ui-text)}
.service-reception-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.reception-rule-card{border:1px solid var(--ui-border);border-radius:15px;background:#fff;overflow:hidden}.reception-rule-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 15px;border-bottom:1px solid var(--ui-border-soft);background:#fafbfc}.reception-rule-head>div{display:flex;flex-direction:column;gap:3px}.reception-rule-head strong{font-size:14px}.reception-rule-head small{font-size:12px;color:var(--ui-muted)}
.reception-rule-form{display:grid;grid-template-columns:minmax(0,1fr) 112px auto;gap:10px;align-items:end;padding:14px 15px;border-bottom:1px solid var(--ui-border-soft)}.reception-rule-form .wide{min-width:0}.reception-rule-form .btn{height:43px;white-space:nowrap}.reception-rules-list{padding:6px 10px 10px}.reception-rule-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 8px;border-bottom:1px solid var(--ui-border-soft)}.reception-rule-row:last-child{border-bottom:0}.reception-rule-row>div{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px}.reception-rule-row strong{font-size:13px;font-weight:560;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reception-rule-row small{font-size:11.5px;color:var(--ui-muted);white-space:nowrap}.inline-empty{display:flex;align-items:center;gap:9px;padding:13px 15px;color:var(--ui-muted);font-size:12.5px;line-height:1.45}.inline-empty i{color:var(--ui-primary)}.reception-empty{min-height:180px}.is-muted{opacity:.5}

/* Edición puntual de una valoración, exclusiva del superadministrador. */
.valuation-live-editor{padding:20px}.valuation-live-editor .service-composer-grid{margin:0}.valuation-edit-selection{padding:8px!important}.valuation-edit-line{display:grid;grid-template-columns:minmax(0,1fr) 105px 100px 34px;gap:10px;align-items:center;padding:10px 8px;border-bottom:1px solid var(--ui-border-soft)}.valuation-edit-line>div:first-child{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px 8px;align-items:center}.valuation-edit-line>div:first-child small{grid-column:2;font-size:11.5px;color:var(--ui-muted)}.valuation-edit-line>div:first-child strong{font-size:13px;font-weight:560;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valuation-edit-line label,.valuation-edit-price{display:flex;flex-direction:column;gap:4px}.valuation-edit-line label>span,.valuation-edit-price>span{font-size:10.5px;color:var(--ui-muted);font-weight:600}.valuation-edit-line .form-control{min-height:36px;height:36px}.valuation-edit-price{align-items:flex-end}.valuation-edit-price strong{font-size:12.5px;font-weight:620}.valuation-edit-actions{justify-content:flex-end!important}.valuation-restore-form{display:flex;justify-content:flex-end;padding:0 14px 14px;background:#fff}

@media(max-width:991.98px){.reception-agreement-form{grid-template-columns:repeat(2,minmax(0,1fr))}.service-reception-grid{grid-template-columns:1fr}.reception-context-card{grid-template-columns:1fr 1fr}.reception-context-selector{grid-template-columns:1fr 1fr}.reception-context-selector .btn{grid-column:1/-1;justify-self:end}.valuation-edit-line{grid-template-columns:minmax(0,1fr) 90px 34px}.valuation-edit-price{display:none}}
@media(max-width:575.98px){.reception-agreement-form,.reception-context-selector,.reception-context-card{grid-template-columns:1fr}.reception-rule-form{grid-template-columns:1fr}.reception-rule-row>div{grid-template-columns:auto minmax(0,1fr)}.reception-rule-row small{grid-column:2}.valuation-edit-line{grid-template-columns:minmax(0,1fr) 34px}.valuation-edit-line label{grid-column:1}.valuation-edit-line .btn{grid-column:2;grid-row:1/3}}

/* V.2.5.0 · Afinado final de escala tipográfica y navegación interna.
   Escala base: 11.5 microetiqueta · 12/12.5 auxiliar · 13/14 interfaz · 14.5 campos. */
.sidebar-label,.kicker,.step-caption,.summary-label{font-size:11.5px!important}
.app-footer,.sidebar-user-text small,.group-card small,.total-card small{font-size:12px!important}
.summary-value,.section-note,.group-card strong,.tabs-valora a{font-size:13.5px!important}
.master-stat-copy small{font-size:12.5px!important}.master-result-count,.metric-pill{font-size:12px!important}
.master-empty strong{font-size:14px!important}.master-empty span{font-size:12.5px!important;line-height:1.45}
.modal-kicker{font-size:11.5px!important}.modal-form-intro p,.modal-inline-alert{font-size:12.5px!important}
.modal-form-shell.compact-modal-form .form-label{font-size:13.5px!important}
.modal-form-shell.compact-modal-form .form-control,.modal-form-shell.compact-modal-form .form-select{font-size:14.5px!important}
.modal-form-shell.compact-modal-form .form-help-card{font-size:12.5px!important}
.entity-switch .form-check-label,.form-check-label{font-size:13px!important}
.user-role-badge{font-size:11.5px!important}.entity-switch-wrap small{font-size:12px!important}.entity-title.compact{font-size:14px!important}
.valuation-detail-card .step-caption{font-size:11.5px!important}.valuation-line-title{font-size:14px!important}.valuation-line-detail{font-size:12px!important}.valuation-number{font-size:12.5px!important}
.service-drag-handle span{font-size:10.5px!important}.service-save-note{font-size:12px!important}.service-save-button{font-size:13.5px!important}
.valora-swal-title{font-size:17px!important}.valora-swal-text{font-size:13px!important}.valora-swal-confirm,.valora-swal-cancel{font-size:13px!important}
.valora-swal-toast-title{font-size:var(--lab-toast-title-size,13px)!important}.valora-swal-toast-text{font-size:var(--lab-toast-text-size,11.5px)!important}
.preview-note{font-size:11.5px!important}

.service-editor-nav{display:flex;align-items:center;gap:7px;margin:0 0 16px;padding:5px;width:max-content;max-width:100%;border:1px solid var(--ui-border);border-radius:12px;background:#fff;box-shadow:0 3px 12px rgba(18,46,68,.035)}
.service-editor-nav a{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:7px 11px;border:1px solid transparent;border-radius:9px;color:#687286;font-size:13px;font-weight:600;transition:.15s ease}
.service-editor-nav a i{color:#a76a28}.service-editor-nav a:hover,.service-editor-nav a:focus{border-color:#f0bd86;background:#fff7ee;color:#9e560f}.service-editor-nav a:hover i,.service-editor-nav a:focus i{color:var(--ui-primary)}
#datos-generales,#composicion,#recepcion{scroll-margin-top:18px}
@media(max-width:575.98px){.service-editor-nav{width:100%;overflow-x:auto}.service-editor-nav a{flex:1 0 auto;justify-content:center}}

/* ================================================================
   VALORA V.2.5.1 · EDITOR DE RECEPCIÓN ESCALABLE
   ================================================================ */
.valuation-editor-context{padding:0;overflow:hidden;margin-bottom:16px}
.valuation-context-main{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:16px 18px;background:#fff}
.valuation-context-icon{width:42px;height:42px;display:grid;place-items:center;border:1px solid #f0d0ad;border-radius:12px;background:#fff8f0;color:var(--ui-primary);font-size:18px}
.valuation-context-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.valuation-context-copy small,.valuation-context-facts small{font-size:11.5px;color:var(--ui-muted)}
.valuation-context-copy strong{font-size:15px;font-weight:620;color:var(--ui-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valuation-context-copy span{font-size:12.5px;color:var(--ui-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.valuation-context-facts{display:flex;align-items:stretch;gap:8px}.valuation-context-facts>div{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:128px;padding:8px 11px;border:1px solid var(--ui-border-soft);border-radius:10px;background:#fafbfc}.valuation-context-facts strong{font-size:12.5px;font-weight:620;color:var(--ui-text)}
.valuation-reception-switch{padding:15px 18px 17px;border-top:1px solid var(--ui-border-soft);background:#fcfcfd}
.valuation-reception-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:12px}.valuation-reception-head>div:first-child{display:flex;flex-direction:column;gap:3px}.valuation-reception-head>div:first-child>small{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--ui-primary)}.valuation-reception-head>div:first-child>strong{font-size:14px;font-weight:650;color:var(--ui-text)}.valuation-reception-head>div:first-child>span{max-width:760px;font-size:12.5px;line-height:1.45;color:var(--ui-muted)}
.reception-current-summary{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:190px}.reception-current-summary span{font-size:12px;color:var(--ui-muted)}.reception-current-summary strong{font-size:12.5px;font-weight:650;color:#9d5a13}
.valuation-funeral-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:9px}
.valuation-funeral-card{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px 10px;align-items:center;padding:11px 12px;border:1px solid var(--ui-border);border-radius:12px;background:#fff;color:inherit;text-decoration:none;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease,background .15s ease}
.valuation-funeral-card:hover{border-color:#efbd87;background:#fffaf5;box-shadow:0 5px 16px rgba(93,63,33,.06);transform:translateY(-1px)}.valuation-funeral-card.active{border-color:#e9a85f;background:#fff8f0;box-shadow:0 0 0 2px rgba(255,131,8,.08)}
.funeral-card-check{width:34px;height:34px;display:grid;place-items:center;grid-row:1/3;border:1px solid #e8eaee;border-radius:10px;background:#f8f9fb;color:#737e90}.valuation-funeral-card.active .funeral-card-check{border-color:#efbd87;background:#fff;color:var(--ui-primary)}
.funeral-card-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.funeral-card-copy strong{font-size:13.5px;font-weight:620;color:var(--ui-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.funeral-card-copy span{font-size:11.5px;color:var(--ui-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.funeral-card-meta{grid-column:2;display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.funeral-card-meta small{font-size:11px;color:var(--ui-muted);white-space:nowrap}.funeral-card-meta .master-badge{font-size:10.5px!important;padding:4px 6px}
.valuation-reception-empty{display:flex;align-items:center;gap:9px;padding:11px 12px;border:1px dashed #e4e7ec;border-radius:11px;background:#fff;color:var(--ui-muted);font-size:12.5px}.valuation-reception-empty i{color:var(--ui-primary)}

.valuation-live-editor .service-composer-grid{grid-template-columns:minmax(320px,.82fr) minmax(520px,1.18fr)}
.valuation-edit-selection{display:flex;flex-direction:column;gap:10px;padding:10px!important;background:#fbfcfd}
.valuation-line-group{border:1px solid var(--ui-border-soft);border-radius:12px;background:#fff;overflow:hidden}.valuation-line-group.reception-group{border-color:#eed9f7}.valuation-line-group-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--ui-border-soft);background:#f8fafc}.valuation-line-group.reception-group .valuation-line-group-head{background:#fbf7fe;border-bottom-color:#eedff5}
.valuation-line-group-head>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}.valuation-line-group-head strong{font-size:13px;font-weight:650;color:var(--ui-text)}.valuation-line-group-head small{font-size:11.5px;color:var(--ui-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.valuation-line-group-totals{display:flex;align-items:center;gap:10px;white-space:nowrap}.valuation-line-group-totals span{font-size:11px;color:var(--ui-muted)}.valuation-line-group-totals strong{font-size:12.5px;font-weight:650;color:var(--ui-text)}
.valuation-edit-line{grid-template-columns:minmax(0,1fr) 76px 88px 34px!important;gap:9px!important;padding:10px 11px!important;background:#fff}.valuation-edit-line:last-child{border-bottom:0}.valuation-edit-line.is-reception{background:#fff}
.valuation-edit-product{display:grid!important;grid-template-columns:auto minmax(0,1fr)!important;gap:5px 8px!important;align-items:start!important;min-width:0}.valuation-edit-product>.service-family-badge{grid-row:1/4}.valuation-edit-product>div{display:flex;flex-direction:column;gap:2px;min-width:0}.valuation-edit-product strong{font-size:13px!important;font-weight:560!important;line-height:1.35;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}.valuation-edit-product small{font-size:11.5px!important;color:var(--ui-muted)}
.valuation-origin-badge{display:inline-flex;width:max-content;align-items:center;margin-top:2px;padding:3px 5px;border-radius:6px;font-size:10px;font-weight:650;line-height:1}.valuation-origin-badge.reception{background:#f3eafb;color:#70409a}.valuation-origin-badge.adjustment{background:#fff2df;color:#9f5d12}.valuation-origin-badge.manual{background:#eef2f6;color:#5e6a7a}
.valuation-qty{width:76px;min-width:76px}.valuation-qty .form-control{width:76px!important;max-width:76px!important;padding-left:10px!important;padding-right:7px!important;text-align:center;font-variant-numeric:tabular-nums}.valuation-edit-price{width:88px;min-width:88px}.valuation-edit-price strong{font-variant-numeric:tabular-nums}
.valuation-reception-group-empty{display:flex;align-items:flex-start;gap:10px;padding:13px 14px;border:1px dashed #eadcf1;border-radius:12px;background:#fcf9fd;color:var(--ui-muted)}.valuation-reception-group-empty i{margin-top:1px;color:#7b4ca0}.valuation-reception-group-empty div{display:flex;flex-direction:column;gap:2px}.valuation-reception-group-empty strong{font-size:12.5px;font-weight:620;color:var(--ui-text)}.valuation-reception-group-empty span{font-size:11.5px;line-height:1.4}

/* Los importes se presentan siempre con precisión comercial de dos decimales. */
input[data-product-price]{font-variant-numeric:tabular-nums}

@media(max-width:1199.98px){.valuation-live-editor .service-composer-grid{grid-template-columns:minmax(290px,.75fr) minmax(460px,1.25fr)}.valuation-context-facts>div{min-width:112px}}
@media(max-width:991.98px){.valuation-context-main{grid-template-columns:auto minmax(0,1fr)}.valuation-context-facts{grid-column:1/-1;margin-left:56px}.valuation-live-editor .service-composer-grid{grid-template-columns:1fr}.valuation-reception-head{flex-direction:column}.reception-current-summary{align-items:flex-start}.valuation-funeral-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.valuation-edit-line{grid-template-columns:minmax(0,1fr) 76px 34px!important}.valuation-edit-price{display:none!important}}
@media(max-width:575.98px){.valuation-context-main{grid-template-columns:1fr;padding:14px}.valuation-context-icon{display:none}.valuation-context-facts{grid-column:auto;margin-left:0;display:grid;grid-template-columns:1fr 1fr}.valuation-context-facts>div{min-width:0}.valuation-reception-switch{padding:14px}.valuation-funeral-grid{grid-template-columns:1fr}.valuation-edit-line{grid-template-columns:minmax(0,1fr) 34px!important}.valuation-qty{grid-column:1;width:76px}.valuation-edit-line>.row-action{grid-column:2;grid-row:1/3}.valuation-line-group-head{align-items:flex-start;flex-direction:column}.valuation-line-group-totals{width:100%;justify-content:space-between}}
.consult-reception-banner{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:12px;align-items:center;margin:12px 18px 0;padding:12px 14px;border:1px solid #eadcf1;border-left:3px solid #8a5db0;border-radius:12px;background:#fcf9fd}.consult-reception-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:11px;background:#f3eafb;color:#70409a;font-size:17px}.consult-reception-banner>div:nth-child(2){display:flex;flex-direction:column;gap:2px;min-width:0}.consult-reception-banner small{font-size:10.5px;font-weight:700;letter-spacing:.06em;color:#70409a}.consult-reception-banner strong{font-size:13.5px;font-weight:650;color:var(--ui-text)}.consult-reception-banner span{font-size:11.5px;color:var(--ui-muted)}.consult-reception-metrics{display:flex;gap:8px;align-items:center}.consult-reception-metrics span{display:flex;align-items:center;gap:5px;padding:6px 8px;border:1px solid #eadcf1;border-radius:8px;background:#fff;white-space:nowrap}.consult-reception-metrics strong{font-size:12px;color:#70409a}
@media(max-width:767.98px){.consult-reception-banner{grid-template-columns:40px minmax(0,1fr)}.consult-reception-metrics{grid-column:1/-1;flex-wrap:wrap}}

/* ================================================================
   V.2.5.1 · AJUSTE DE LISTADOS Y TARJETAS
   ================================================================ */

/* Valoraciones guardadas: los metadatos cortos no deben fragmentarse en dos líneas. */
.valuation-list-table{min-width:1280px;table-layout:auto}
.valuation-list-table .valuation-nowrap{white-space:nowrap!important}
.valuation-list-table .valuation-col-ref{width:165px;min-width:165px;white-space:nowrap}
.valuation-list-table .valuation-col-type{width:108px;min-width:108px;white-space:nowrap}
.valuation-list-table .valuation-col-user{width:132px;min-width:132px;white-space:nowrap}
.valuation-list-table .valuation-col-date{width:142px;min-width:142px;white-space:nowrap}
.valuation-list-table .valuation-col-total{width:105px;min-width:105px;white-space:nowrap}
.valuation-list-table .valuation-col-actions{width:72px;min-width:72px;white-space:nowrap}
.valuation-list-table td:nth-child(3){min-width:210px}
.valuation-list-table td:nth-child(4){min-width:310px}
.valuation-list-table td:nth-child(5){min-width:185px}

/* Tarjetas-resumen: variables independientes y editables desde custom.css. */
.master-stat-grid,
.master-stat-grid.compact-stats{
  grid-template-columns:repeat(auto-fit,minmax(190px,var(--lab-stat-width,240px)));
  justify-content:center;
}
.master-stat{
  min-height:var(--lab-stat-min-height,74px)!important;
  padding:var(--lab-stat-padding-y,12px) var(--lab-stat-padding-x,14px)!important;
  gap:var(--lab-stat-gap,12px)!important;
  justify-content:var(--lab-stat-justify,flex-start);
  border:1px solid var(--lab-stat-border,#e3e7ee)!important;
  border-radius:var(--lab-stat-radius,14px)!important;
  background:var(--lab-stat-bg,#fff)!important;
  overflow:hidden;
}
.master-stat::before{
  width:var(--lab-stat-accent-width,2px)!important;
  background:var(--lab-stat-accent,var(--ui-primary))!important;
}
.master-stat:hover{border-color:var(--lab-stat-hover-border,#efbd88)!important}
.master-stat-icon{
  width:var(--lab-stat-icon-box,34px)!important;
  height:var(--lab-stat-icon-box,34px)!important;
  flex:0 0 var(--lab-stat-icon-box,34px)!important;
  font-size:var(--lab-stat-icon-size,13px)!important;
}
.master-stat small,
.master-stat-copy small{
  font-size:var(--lab-stat-label-size,12.5px)!important;
  font-weight:var(--lab-stat-label-weight,600)!important;
}
.master-stat strong,
.master-stat-copy strong{
  font-size:var(--lab-stat-value-size,18px)!important;
  font-weight:var(--lab-stat-value-weight,650)!important;
}
@media(max-width:767.98px){
  .master-stat-grid,.master-stat-grid.compact-stats{grid-template-columns:1fr}
}


/* V.2.6.0 · consistencia de maestros y control operativo */
.master-stat-grid,.master-stat-grid.compact-stats{
  display:grid!important;grid-template-columns:repeat(var(--master-stat-count,3),minmax(0,1fr))!important;
  max-width:none!important;width:100%!important;justify-content:stretch!important;gap:14px!important
}
.master-stat{max-width:none!important;width:100%!important;min-height:76px!important;padding:13px 16px!important}
.master-stat-copy small{font-size:12.5px!important}.master-stat-copy strong{font-size:20px!important}
.master-name-normal{font-weight:520!important}.master-inline-badge{display:table!important;margin-top:6px!important;font-size:11px!important;font-weight:560!important}
.master-table .entity-title{font-weight:560}.master-table .master-name-normal{font-weight:500!important}
.center-choice-body{width:100%;display:flex!important;flex-direction:column;align-items:flex-start;gap:5px}.centro-card{align-items:flex-start!important;min-height:112px!important;padding:16px 17px!important}.centro-card .choice-title{font-size:14px!important;line-height:1.35!important;font-weight:620!important}.center-choice-catalogs{font-size:12.5px;color:var(--ui-muted);font-weight:580}.center-choice-location{display:flex;align-items:center;gap:6px;font-size:12.5px!important}.center-choice-location i{color:var(--ui-primary);font-size:13px}
.service-validation-warning{display:flex;align-items:flex-start;gap:11px;padding:12px 14px;border:1px solid #f1cf9c;border-radius:12px;background:#fff9f1;color:#72501e}.service-validation-warning>i{color:var(--ui-primary);font-size:17px}.service-validation-warning strong,.service-validation-warning span{display:block}.service-validation-warning strong{font-size:13.5px}.service-validation-warning span{margin-top:2px;font-size:12.5px;color:#7c684f}
.valuation-review-strip{display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:13px 15px;border-radius:14px;border:1px solid var(--ui-border);background:#fff}.valuation-review-strip.pending{background:#fffaf4;border-color:#eed1ab}.valuation-review-strip.approved{background:#f5fbf7;border-color:#cee6d7}.valuation-review-icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:#fff;color:var(--ui-primary);border:1px solid rgba(18,46,68,.08);font-size:17px}.valuation-review-copy strong,.valuation-review-copy span{display:block}.valuation-review-copy strong{font-size:13.5px}.valuation-review-copy span{font-size:12.5px;color:var(--ui-muted);margin-top:2px}
.valora-swal-toast .swal2-close{font-size:22px!important;color:#657083!important;right:4px!important;top:2px!important}.valora-swal-toast .swal2-close:hover{color:var(--ui-primary)!important}
@media(max-width:991.98px){.master-stat-grid,.master-stat-grid.compact-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:575.98px){.master-stat-grid,.master-stat-grid.compact-stats{grid-template-columns:1fr!important}.valuation-review-strip{align-items:flex-start;flex-wrap:wrap}.valuation-review-strip .ms-auto{margin-left:50px!important}}

/* ================================================================
   VALORA V.3.0.0 · CIERRE VISUAL Y MANTENIMIENTO ANUAL
   ================================================================ */

/* Resumen de selección: fichas legibles, separadas y con contexto visual. */
.selection-summary.selection-summary-cards{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr))!important;
  gap:10px!important;
  padding:10px!important;
  margin:14px 0 16px!important;
  border:0!important;
  background:transparent!important;
  overflow:visible!important;
}
.selection-summary-cards .summary-cell{
  min-width:0;
  min-height:78px;
  padding:12px 14px!important;
  border:1px solid var(--ui-border)!important;
  border-radius:13px!important;
  background:#fff!important;
  box-shadow:0 3px 12px rgba(18,46,68,.035);
}
.selection-summary-cards .summary-cell:last-child,
.selection-summary-cards .summary-cell-tariff{
  border-color:#efd1ad!important;
  background:#fffaf4!important;
}
.selection-summary-cards .summary-label{
  display:flex;
  align-items:center;
  gap:7px;
  margin:0!important;
  color:#737d8f!important;
  font-size:11.5px!important;
  font-weight:650!important;
  letter-spacing:0!important;
  text-transform:none!important;
}
.selection-summary-cards .summary-icon{
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  border:1px solid #eceff3;
  border-radius:9px;
  background:#f8f9fb;
  color:#8a6571;
  font-size:13px;
}
.selection-summary-cards .summary-cell-tariff .summary-icon{
  border-color:#f0d1ae;
  background:#fff;
  color:var(--ui-primary);
}
.selection-summary-cards .summary-value{
  margin-top:8px!important;
  padding:0!important;
  color:var(--ui-text)!important;
  font-size:13.5px!important;
  font-weight:590!important;
  line-height:1.38;
  overflow-wrap:anywhere;
}
.summary-tariff-icon{display:none!important}

/* Contexto del editor de valoración: servicio, catálogo y centro como datos distintos. */
.valuation-editor-context{
  border-radius:16px!important;
  box-shadow:0 5px 18px rgba(18,46,68,.045);
}
.valuation-context-main{padding:18px 20px!important;gap:16px!important}
.valuation-context-icon{
  width:46px!important;height:46px!important;border-radius:14px!important;
  box-shadow:0 3px 10px rgba(187,112,31,.06)
}
.valuation-context-copy{gap:5px!important}
.valuation-context-copy>strong{font-size:15px!important;font-weight:620!important;line-height:1.4!important}
.valuation-context-tags{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:2px}
.valuation-context-tag{
  display:inline-flex;align-items:center;gap:6px;
  min-height:29px;padding:5px 9px;
  border:1px solid #e5e9ef;border-radius:9px;
  background:#fafbfc;color:#667185;
  font-size:12px;font-weight:540;line-height:1.25
}
.valuation-context-tag i{color:#a66a2a;font-size:12px}
.valuation-context-facts{align-items:center!important;flex-wrap:wrap}
.valuation-context-edit{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  min-height:38px;padding:8px 10px;
  border:1px solid #e3e7ed;border-radius:10px;background:#fff;
  color:#667185;font-size:12px;font-weight:600;text-decoration:none;
  transition:.15s ease
}
.valuation-context-edit:hover{border-color:#e9aa65;background:#fff7ee;color:#9a570f}

/* Más altura útil en la edición para que Recepción no quede cortada. */
.valuation-live-editor{padding:22px!important}
.valuation-live-editor .service-products-pane,
.valuation-live-editor .service-selection-pane{min-height:640px!important}
.valuation-live-editor .service-products-list,
.valuation-live-editor .service-selection-list{
  min-height:455px;
  max-height:555px!important;
  overflow-y:auto!important;
  scrollbar-gutter:stable;
}
.valuation-live-editor .valuation-edit-selection{padding:12px 12px 18px!important;gap:12px!important}
.valuation-live-editor .valuation-line-group{border-radius:14px!important}
.valuation-live-editor .valuation-line-group-head{padding:12px 14px!important}
.valuation-live-editor .valuation-line-group.reception-group{margin-bottom:4px}
.valuation-live-editor .service-composition-summary{flex:0 0 auto}
.valuation-live-editor form[data-valuation-edit-form]{
  margin-top:24px;
  padding-top:18px;
  border-top:1px solid var(--ui-border-soft)
}
.valuation-live-editor .valuation-edit-actions{
  min-height:0!important;
  padding:0!important;
  border-top:0!important;
  background:transparent!important
}
.valuation-live-editor .valuation-restore-form{
  padding:10px 0 0!important;
  background:transparent!important
}
.valuation-live-editor .valuation-edit-actions .btn,
.valuation-live-editor .valuation-restore-form .btn{min-height:40px;border-radius:10px}

/* Creación anual de tarifa/acuerdo: mismo patrón y previsualización inmediata. */
.tariff-variation-preview{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  min-height:58px;padding:10px 12px;
  border:1px solid #efd3b3;border-radius:11px;background:#fffaf4
}
.tariff-variation-preview>div{display:flex;flex-direction:column;gap:2px}
.tariff-variation-preview small{font-size:11.5px;color:#7b8494}
.tariff-variation-preview strong{font-size:15px;font-weight:650;color:#8e561d;font-variant-numeric:tabular-nums}
.tariff-variation-preview>span{padding:5px 8px;border-radius:999px;background:#fff;border:1px solid #f0d8bd;color:#94602b;font-size:11.5px;font-weight:620}

/* Tabla de tarifa: el nombre del producto mantiene una jerarquía normal, no pesada. */
.tariff-table-modern .tariff-product-name{font-weight:500!important;line-height:1.35}
.tariff-table-modern td{vertical-align:middle}
.tariff-master-filters{grid-template-columns:minmax(220px,1.45fr) repeat(3,minmax(145px,.78fr)) auto!important}

@media(max-width:1199.98px){
  .tariff-master-filters{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .valuation-live-editor .service-products-pane,.valuation-live-editor .service-selection-pane{min-height:590px!important}
  .valuation-live-editor .service-products-list,.valuation-live-editor .service-selection-list{min-height:410px;max-height:505px!important}
}
@media(max-width:991.98px){
  .valuation-live-editor .service-products-pane,.valuation-live-editor .service-selection-pane{min-height:auto!important}
  .valuation-live-editor .service-products-list,.valuation-live-editor .service-selection-list{min-height:320px;max-height:460px!important}
  .valuation-context-edit{width:max-content}
}
@media(max-width:767.98px){
  .tariff-master-filters{grid-template-columns:1fr!important}
  .selection-summary.selection-summary-cards{grid-template-columns:1fr!important;padding:6px!important}
}


/* ========================================================================
   V.3.1.0 · SERVICIOS / RECEPCIÓN MASIVA / DUPLICADO
   ------------------------------------------------------------------------
   Bloque final editable. Al inspeccionar estos elementos, el navegador
   apuntará directamente a custom.css.
   ======================================================================== */
.service-select-col{width:42px;min-width:42px;text-align:center;vertical-align:middle!important}
.service-select-col .form-check-input{width:17px;height:17px;margin:0;cursor:pointer;border-color:#cfd6df}
.service-select-col .form-check-input:checked{background-color:var(--ui-primary);border-color:var(--ui-primary)}
.service-bulk-bar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 18px 14px;padding:13px 15px;border:1px solid #f0c796;border-left:3px solid var(--ui-primary);border-radius:12px;background:#fffaf4}
.service-bulk-bar[hidden]{display:none!important}.service-bulk-bar>div:first-child{display:flex;flex-direction:column;gap:2px}.service-bulk-bar strong{font-size:13px;font-weight:650}.service-bulk-bar small{font-size:11.5px;color:var(--ui-muted)}.service-bulk-actions{display:flex;gap:8px;flex-wrap:wrap}
.bulk-reception-modal .modal-dialog{max-width:860px}.bulk-reception-modal .modal-content{border:1px solid var(--ui-border);border-radius:18px;overflow:hidden;box-shadow:0 22px 60px rgba(18,34,68,.16)}.bulk-reception-modal .modal-header{padding:20px 22px 16px;border-bottom:1px solid var(--ui-border-soft)}.bulk-reception-modal .modal-body{padding:20px 22px;max-height:min(72vh,720px);overflow:auto}.bulk-reception-modal .modal-footer{padding:15px 22px;border-top:1px solid var(--ui-border-soft);background:#fbfcfd}.modal-subtitle{margin-top:4px;color:var(--ui-muted);font-size:12.5px}
.bulk-reception-summary{display:flex;align-items:center;gap:11px;margin-bottom:16px;padding:11px 13px;border:1px solid #e7ebf0;border-radius:11px;background:#f8fafc}.bulk-reception-summary>i{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:var(--ui-primary-soft);color:var(--ui-primary)}.bulk-reception-summary>div{display:flex;flex-direction:column;gap:2px}.bulk-reception-summary strong{font-size:13px}.bulk-reception-summary span{font-size:11.5px;color:var(--ui-muted)}
.bulk-mode-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.bulk-mode-options label{position:relative;display:flex;gap:9px;padding:11px 12px;border:1px solid var(--ui-border);border-radius:11px;background:#fff;cursor:pointer}.bulk-mode-options input{margin-top:3px}.bulk-mode-options span{display:flex;flex-direction:column;gap:2px}.bulk-mode-options strong{font-size:12.5px;font-weight:630}.bulk-mode-options small{color:var(--ui-muted);font-size:11px;line-height:1.35}
.bulk-products-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:20px 0 8px}.bulk-products-head>div{display:flex;flex-direction:column;gap:2px}.bulk-products-head strong{font-size:13.5px}.bulk-products-head small{font-size:11.5px;color:var(--ui-muted)}.bulk-products-list{display:flex;flex-direction:column;border:1px solid var(--ui-border);border-radius:12px;overflow:hidden}.bulk-product-row{display:grid;grid-template-columns:24px minmax(0,1fr) 92px;gap:10px;align-items:center;min-height:56px;padding:9px 12px;margin:0;border-bottom:1px solid var(--ui-border-soft);background:#fff;cursor:pointer}.bulk-product-row:last-child{border-bottom:0}.bulk-product-row:hover{background:#fffaf6}.bulk-product-row.is-incompatible{opacity:.42;background:#f7f8fa;cursor:not-allowed}.bulk-product-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.bulk-product-copy strong{font-size:12.5px;font-weight:560;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bulk-product-copy small{font-size:10.5px;color:var(--ui-muted)}.bulk-product-qty{display:grid;grid-template-columns:auto 1fr;gap:5px;align-items:center}.bulk-product-qty small{font-size:10px;color:var(--ui-muted)}.bulk-product-qty .form-control{height:34px;min-height:34px;padding:5px 7px;text-align:center;font-size:12px}
.duplicate-service-source{display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding:13px 14px;border:1px solid var(--ui-border);border-radius:12px;background:#f9fafc}.duplicate-service-source strong{font-size:14px;font-weight:620;color:var(--ui-text)}.duplicate-service-source small{font-size:11.5px;color:var(--ui-muted)}
@media(max-width:767.98px){.service-bulk-bar{align-items:flex-start;flex-direction:column}.bulk-mode-options{grid-template-columns:1fr}.bulk-product-row{grid-template-columns:24px minmax(0,1fr);}.bulk-product-qty{grid-column:2;width:92px}.bulk-reception-modal .modal-body{padding:16px}}

/* ========================================================================
   V.3.1.0 · AJUSTES RÁPIDOS RECOMENDADOS
   ------------------------------------------------------------------------
   Modifica estas variables si quieres cambiar el aspecto global sin buscar
   reglas individuales. Los valores concretos de cada componente pueden
   ajustarse después inspeccionando el selector correspondiente.
   ======================================================================== */
:root{
  /* Color corporativo y texto */
  --valora-custom-primary:var(--ui-primary);
  --valora-custom-text:var(--ui-text);
  /* Radios generales */
  --valora-custom-radius:var(--ui-radius);
  /* Tamaños de texto habituales */
  --valora-custom-body-size:15px;
  --valora-custom-form-size:14.5px;
  --valora-custom-table-size:12.5px;
  --valora-custom-card-label-size:11.5px;
  --valora-custom-card-value-size:18px;
}
body,.app-body{font-size:var(--valora-custom-body-size)}
.form-control,.form-select{font-size:var(--valora-custom-form-size)}
.master-table,.table-valora{font-size:var(--valora-custom-table-size)}
.master-stat-copy small{font-size:var(--valora-custom-card-label-size)}
.master-stat-copy strong{font-size:var(--valora-custom-card-value-size)}

/* ========================================================================
   V.3.1.x · SIDEBAR COMPACTO
   ------------------------------------------------------------------------
   Reduce el espacio vertical entre DOCUMENTACIÓN, DATOS MAESTROS,
   RECEPCIONES y ADMINISTRACIÓN para mantener visible el perfil del usuario.
   ======================================================================== */
.sidebar-group-label{
  min-height:36px;
  margin:9px -4px 4px;
  padding:0 11px;
}
.sidebar-group-menu{
  padding:1px 0 3px 20px;
}
.sidebar-group-menu::before{
  left:10px;
  top:2px;
  bottom:8px;
}
.sidebar-group-menu .nav-item{
  min-height:35px;
  margin:0;
  padding:0 10px;
}
.sidebar-user{
  padding-top:12px;
}

/* ========================================================================
   V.3.1.x · BADGE DE CONTEXTO EN MAESTROS
   ------------------------------------------------------------------------
   Utilizado debajo del nombre de Productos (categoría) y Servicios
   (catálogo). Para cambiar su aspecto, modifica únicamente este selector.
   ======================================================================== */
.master-context-badge{
  display:inline-flex!important;
  align-items:center;
  gap:5px;
  width:max-content;
  max-width:100%;
  margin-top:6px;
  padding:4px 10px;
  border:1px solid #b8d2ee;
  border-radius:999px;
  background:#f0f7ff;
  color:#356a9f;
  font-size:11px;
  font-weight:580;
  line-height:1.2;
  white-space:normal;
  vertical-align:middle;
}
.master-context-badge i{
  flex:0 0 auto;
  color:#4d82b7;
  font-size:10px;
}
/* Evita que la regla general master-inline-badge convierta este contexto en rectángulo. */
.master-badge.master-context-badge.master-inline-badge{
  display:inline-flex!important;
  border-radius:999px!important;
}

/* ========================================================================
   V.3.1.x · MODAL REASIGNACIÓN DE GRUPO CONCESIONAL
   ======================================================================== */
#deleteGroupModal .modal-content{
  border:1px solid var(--ui-border);
  border-radius:17px;
  box-shadow:0 22px 60px rgba(18,34,68,.16);
}
#deleteGroupModal .modal-header,
#deleteGroupModal .modal-footer{
  padding:17px 20px;
}
#deleteGroupModal .modal-body{
  padding:20px;
}
.modal-info-note{
  display:flex;
  gap:11px;
  align-items:flex-start;
  padding:12px 13px;
  border:1px solid #e5eaf0;
  border-radius:11px;
  background:#f8fafc;
}
.modal-info-note>i{
  width:32px;
  height:32px;
  flex:0 0 32px;
  display:grid;
  place-items:center;
  border-radius:9px;
  background:var(--ui-primary-soft);
  color:var(--ui-primary);
}
.modal-info-note>div{display:flex;flex-direction:column;gap:2px}
.modal-info-note strong{font-size:13px;color:var(--ui-text)}
.modal-info-note span{font-size:12px;line-height:1.45;color:var(--ui-muted)}

/* ========================================================================
   V.3.1.x · ROLES E INICIO OPERATIVO
   ------------------------------------------------------------------------
   Usuario y Administrador reciben un inicio deliberadamente sencillo.
   Sin estadísticas globales: solo accesos a las funciones autorizadas.
   ======================================================================== */
.role-home-heading{margin-bottom:18px}
.role-home-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
  max-width:1120px;
}
.role-home-grid.is-admin{grid-template-columns:repeat(3,minmax(0,1fr))}
.role-home-card{
  min-height:126px;
  display:grid;
  grid-template-columns:48px 1fr auto;
  gap:14px;
  align-items:center;
  padding:20px;
  border:1px solid var(--ui-border);
  border-radius:16px;
  background:var(--ui-surface);
  color:var(--ui-text);
  text-decoration:none;
  box-shadow:0 4px 16px rgba(18,34,68,.045);
  transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.role-home-card:hover{border-color:#ffc48b;box-shadow:0 10px 26px rgba(18,34,68,.08);transform:translateY(-1px);color:var(--ui-text)}
.role-home-card.primary{border-color:#ffd2a5;background:linear-gradient(145deg,#fff,#fff8f1)}
.role-home-card.management{background:#f8fbff;border-color:#dce7f3}
.role-home-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:13px;background:var(--ui-primary-soft);color:var(--ui-primary);font-size:20px}
.role-home-card.management .role-home-icon{background:var(--ui-blue-soft);color:var(--ui-blue)}
.role-home-card>span:nth-child(2){display:flex;flex-direction:column;gap:5px;min-width:0}
.role-home-card strong{font-size:15px;color:var(--ui-navy);font-weight:700}
.role-home-card small{font-size:12.5px;line-height:1.45;color:var(--ui-muted)}
.role-home-card>i{color:#a7afbd;font-size:14px}

/* Lectura de datos generales del servicio para Administrador. */
.service-readonly-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:10px;margin-top:4px}
.service-readonly-grid>div{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--ui-border-soft);border-radius:11px;background:#f8fafc}
.service-readonly-grid small{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ui-muted);font-weight:700}
.service-readonly-grid strong{font-size:13.5px;color:var(--ui-navy);font-weight:650}

/* ========================================================================
   V.3.1.x · DASHBOARD ADMINISTRADOR GLOBAL
   ------------------------------------------------------------------------
   Centro de control orientado a decisiones: actividad, adopción, calidad,
   anomalías y señales que requieren revisión. Mantiene la estética Valora.
   ======================================================================== */
.dashboard-heading{align-items:flex-end;margin-bottom:16px}
.dashboard-period{display:flex;align-items:center;gap:9px;min-width:205px}
.dashboard-period label{font-size:11.5px;color:var(--ui-muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.dashboard-period .form-select{min-width:126px;height:38px;font-size:13px}
.dashboard-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:14px}
.dashboard-kpi{display:flex;gap:11px;align-items:center;min-width:0;padding:14px;border:1px solid var(--ui-border);border-radius:14px;background:#fff;box-shadow:0 3px 12px rgba(18,34,68,.035)}
.dashboard-kpi-icon{width:39px;height:39px;flex:0 0 39px;display:grid;place-items:center;border-radius:11px;background:var(--ui-primary-soft);color:var(--ui-primary);font-size:17px}
.dashboard-kpi>div:last-child{display:flex;flex-direction:column;min-width:0}
.dashboard-kpi strong{font-size:20px;line-height:1.05;color:var(--ui-navy);font-weight:750}
.dashboard-kpi span{font-size:12px;color:var(--ui-text);font-weight:650;margin-top:4px}
.dashboard-kpi small{font-size:10.5px;color:var(--ui-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:20px;align-items:start}
.dashboard-grid-main{grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr);align-items:start}
.dashboard-bottom-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:6px;margin-bottom:20px;align-items:start}
.dashboard-card{padding:18px;border-radius:15px;margin:0;min-width:0}.users-dashboard-card{margin-bottom:6px}
.dashboard-wide{grid-column:1/-1}
.dashboard-card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:15px}
.dashboard-card-head h2{font-size:16px;line-height:1.25;color:var(--ui-navy);margin:1px 0 0;font-weight:720}
.dashboard-card-head p{font-size:12px;color:var(--ui-muted);margin:4px 0 0}
.dashboard-card-head>a{font-size:11.5px;color:var(--ui-primary);font-weight:700;text-decoration:none;white-space:nowrap;flex-shrink:0}
.dashboard-context-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:999px;background:var(--ui-blue-soft);color:var(--ui-blue);font-size:10.5px;font-weight:700;white-space:nowrap}
.dashboard-line-chart{width:100%;min-height:210px;border-radius:11px;background:linear-gradient(180deg,#fbfcfe,#fff);overflow:hidden}
.dashboard-line-chart svg{display:block;width:100%;height:auto;min-height:210px}
.dash-grid-line{stroke:#e9edf3;stroke-width:1}
.dash-line{fill:none;stroke:var(--ui-primary);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.dash-line-dot{fill:#fff;stroke:var(--ui-primary);stroke-width:3}
.dashboard-chart-foot{display:flex;justify-content:space-between;gap:12px;margin-top:7px;color:var(--ui-muted);font-size:10.5px}
.dashboard-split-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;margin-bottom:12px}
.dashboard-split-row strong{font-size:13px;color:var(--ui-text)}
.dashboard-split-row span{font-size:12px;color:var(--ui-muted)}
.dashboard-progress{height:7px;background:#edf0f4;border-radius:999px;overflow:hidden;grid-column:1/-1;margin-top:-5px}
.dashboard-progress>span{display:block;height:100%;border-radius:inherit;background:var(--ui-primary)}
.dash-bars{display:flex;flex-direction:column;gap:10px}
.dash-bar-row{display:grid;grid-template-columns:minmax(140px,1.1fr) minmax(90px,1fr) auto;gap:10px;align-items:center}
.dash-bar-label{display:flex;flex-direction:column;min-width:0}
.dash-bar-label strong{font-size:12px;color:var(--ui-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:650}
.dash-bar-label small{font-size:10.5px;color:var(--ui-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-bar-track{height:7px;background:#edf0f4;border-radius:999px;overflow:hidden}
.dash-bar-track>span{display:block;height:100%;min-width:2px;border-radius:inherit;background:linear-gradient(90deg,var(--ui-primary),#ffad5d)}
.dash-bar-row>strong{font-size:11.5px;color:var(--ui-navy);font-weight:750;min-width:26px;text-align:right}
.dashboard-empty{display:flex;align-items:center;justify-content:center;min-height:130px;padding:18px;border:1px dashed var(--ui-border);border-radius:11px;color:var(--ui-muted);font-size:12px;text-align:center}
.attention-card{border-color:#f0e1cf;background:linear-gradient(180deg,#fff,#fffdf9)}
.attention-list{display:flex;flex-direction:column;gap:8px}
.attention-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 11px;border:1px solid var(--ui-border-soft);border-radius:11px;background:#fff;text-decoration:none;color:var(--ui-text)}
.attention-row:hover{border-color:#ffd0a1;color:var(--ui-text)}
.attention-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:#fff4e8;color:var(--ui-primary)}
.attention-row.warning .attention-icon{background:#fff6df;color:#a96f00}.attention-row.critical .attention-icon{background:#fff0ef;color:#b43b31}.attention-row.info .attention-icon{background:var(--ui-blue-soft);color:var(--ui-blue)}
.attention-content{display:flex;align-items:center;gap:10px;min-width:0}.attention-count{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 8px;border-radius:999px;background:#f5f7fb;color:var(--ui-navy);font-size:12.5px;font-weight:750;line-height:1}.attention-row.critical .attention-count{background:#fff0ef;color:#b43b31}.attention-row.warning .attention-count{background:#fff6df;color:#a96f00}.attention-row.info .attention-count{background:var(--ui-blue-soft);color:var(--ui-blue)}.attention-text{display:block;min-width:0;font-size:13px;line-height:1.35;color:var(--ui-text)}.attention-row>i{color:#aab1bc;font-size:12px;flex-shrink:0}
.dashboard-user-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.dashboard-user-columns h3{font-size:13px;color:var(--ui-navy);margin:0 0 8px;font-weight:720}
.dashboard-user-table{width:100%;border-collapse:separate;border-spacing:0;font-size:11.5px}
.dashboard-user-table th{padding:7px 7px;border-bottom:1px solid var(--ui-border);color:var(--ui-muted);font-size:9.8px;text-transform:uppercase;letter-spacing:.035em;font-weight:700;white-space:nowrap}
.dashboard-user-table td{padding:10px 7px;border-bottom:1px solid var(--ui-border-soft);vertical-align:middle;color:var(--ui-text);line-height:1.35}
.dashboard-user-table tbody tr:last-child td{border-bottom:0}
.dashboard-user-table .user-name{display:flex;flex-direction:column;gap:3px;min-width:0}.dashboard-user-table .user-name strong{font-size:12px;font-weight:680;color:var(--ui-navy);line-height:1.25}.dashboard-user-table .user-name small{font-size:10.2px;color:var(--ui-muted);line-height:1.2}
.dashboard-never{display:inline-flex;padding:3px 7px;border-radius:999px;background:#f3f4f6;color:#7a8290;font-size:10px;font-weight:650}
.quality-list{display:flex;flex-direction:column;gap:0}
.quality-list>a{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--ui-border-soft);font-size:12px;color:var(--ui-text);text-decoration:none}.quality-list>a:last-child{border-bottom:0}.quality-list>a:hover{color:var(--ui-navy)}
.quality-list>a>i{font-size:11px;color:#aab1bc}.quality-action{font-size:10.5px;color:var(--ui-primary);font-weight:700;opacity:.9}.quality-list strong{min-width:30px;text-align:center;padding:3px 8px;border-radius:999px;font-size:11px}.quality-list strong.is-ok{background:#edf8f2;color:#28714c}.quality-list strong.has-issue{background:#fff3e8;color:#b95e00}
.technical-status{display:flex;gap:13px;align-items:center;padding:15px;border:1px solid var(--ui-border-soft);border-radius:12px;background:#fafbfc}
.technical-status>span{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:11px;font-size:19px}.technical-status.ok>span{background:#edf8f2;color:#28714c}.technical-status.has-errors>span{background:#fff0ef;color:#b43b31}
.technical-status>div{display:flex;flex-direction:column;gap:4px}.technical-status strong{font-size:13px;color:var(--ui-navy)}.technical-status small{font-size:11px;line-height:1.4;color:var(--ui-muted)}

/* Diagnóstico asociado al dashboard. */
.diagnostic-nav{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px;padding:5px;border:1px solid var(--ui-border);border-radius:12px;background:#fff;width:max-content;max-width:100%}
.diagnostic-nav a{padding:7px 11px;border-radius:9px;color:var(--ui-muted);text-decoration:none;font-size:11.5px;font-weight:650}.diagnostic-nav a:hover{color:var(--ui-navy);background:#f6f8fa}.diagnostic-nav a.active{color:#fff;background:var(--ui-navy)}
.diagnostic-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.diagnostic-summary-card{display:grid;grid-template-columns:42px 1fr auto;gap:12px;align-items:center;padding:15px;border:1px solid var(--ui-border);border-radius:13px;background:#fff;color:var(--ui-text);text-decoration:none}.diagnostic-summary-card:hover{border-color:#ffc58f;color:var(--ui-text)}
.diagnostic-summary-card>span{width:42px;height:42px;display:grid;place-items:center;border-radius:11px;background:var(--ui-primary-soft);color:var(--ui-primary);font-size:18px}.diagnostic-summary-card>div{display:flex;flex-direction:column}.diagnostic-summary-card strong{font-size:20px;line-height:1;color:var(--ui-navy)}.diagnostic-summary-card small{font-size:11px;color:var(--ui-muted);margin-top:4px}.diagnostic-summary-card>i{font-size:11px;color:#aab1bc}
.duplicate-score{display:inline-flex;padding:4px 8px;border-radius:999px;background:#fff3e8;color:#b85e00;font-size:11px;font-weight:750}
.diagnostic-code{display:block;max-width:680px;padding:5px 7px;border-radius:6px;background:#f5f7fa;color:#43506a;font-size:10.5px;white-space:normal;word-break:break-word}

@media (max-width:1280px){.dashboard-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.diagnostic-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:980px){.role-home-grid,.role-home-grid.is-admin{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid,.dashboard-grid-main,.dashboard-bottom-grid{grid-template-columns:1fr}.dashboard-wide{grid-column:auto}.dashboard-user-columns{grid-template-columns:1fr}.service-readonly-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:680px){.role-home-grid,.role-home-grid.is-admin{grid-template-columns:1fr}.role-home-card{min-height:104px;padding:15px}.dashboard-heading{align-items:flex-start}.dashboard-period{width:100%}.dashboard-period .form-select{flex:1}.dashboard-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-kpi{padding:11px}.dashboard-grid,.dashboard-bottom-grid{gap:12px;margin-bottom:14px}.dash-bar-row{grid-template-columns:minmax(110px,1fr) minmax(70px,.8fr) auto}.attention-content{gap:8px}.attention-text{font-size:12.5px}.diagnostic-summary-grid{grid-template-columns:1fr}.service-readonly-grid{grid-template-columns:1fr}}
