/* =====================================================================
   BLOQUE 8 — Diseño unificado. Va el último de los bloques (tras
   bloque7.css y bloque6.css) para que sus reglas comunes manden.
   Tokens únicos de radio, tarjeta .b4-card, vacío .b4-vacio, rojo legible
   en Noche. Todo color vive en un token; Noche y Día.
   ===================================================================== */
:root{
  --r-pill:999px;   /* botones, chips, campos */
  --r-card:18px;    /* tarjetas y paneles */
  --r-ico:50%;      /* iconos y botones redondos */
  /* Texto rojo pequeño: en Noche el rojo puro (#ff1200) no llega a 4,5:1 */
  --b8-ro-txt:var(--b4-ro-ink);
}
:root[data-theme="light"]{ --b8-ro-txt:var(--accent); }

/* ---------- a) Tarjeta y vacío compartidos ---------- */
.b4-card{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r-card);
  box-shadow:var(--shadow); padding:16px; position:relative; min-width:0;
}
.empty-state.b4-vacio{
  border-radius:var(--r-card); border:1px dashed var(--line-strong);
  padding:22px 16px; gap:10px; font-size:.86rem; line-height:1.4;
  background:transparent;
}
.empty-state.b4-vacio .es-icon{
  width:44px; height:44px; padding:11px; border-radius:var(--r-ico);
  background:var(--b4-az-bg); color:var(--b4-az-ink); opacity:1; box-sizing:border-box;
}
.empty-state.b4-vacio .es-text{max-width:40ch; font-weight:600; color:var(--ink);}
.empty-state.b4-vacio .es-action{border-radius:var(--r-pill);}
.empty-state.b4-vacio.es-compacto{
  border-style:dashed; border-color:var(--line-strong); padding:10px 14px; gap:10px;
  border-radius:var(--r-card);
}
.empty-state.b4-vacio.es-compacto .es-icon{width:30px; height:30px; padding:7px;}
.empty-state.b4-vacio.es-compacto{font-size:.8rem;}
.empty-state.b4-vacio.es-compacto .es-text{font-weight:500; color:var(--ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:none; flex:1 1 auto; min-width:0;}
.empty-state.b4-vacio.is-skeleton{border-style:solid; border-color:var(--line);}

/* Radios únicos en los componentes de uso general */
.btn, .btn-sec, .btn-pill, .chip{border-radius:var(--r-pill);}
.btn-ico, .icon-btn, .btn-check, .panel-close{border-radius:var(--r-ico);}

/* ---------- b) Tableros de Negocio (Betterplace, Captaciones, Cartera,
   Compradores): columnas transparentes y tarjetas redondeadas ---------- */
.board{gap:14px;}
.board .col{background:transparent; border:0; min-height:0; border-radius:var(--r-card);}
.board .col-body{padding:0; gap:12px;}
.board .col.drag-over{outline:2px dashed var(--accent); outline-offset:2px; background:var(--b4-ro-bg);}
.card.b4-card{border-radius:var(--r-card); padding:14px 14px 12px; overflow:hidden;}
.card.b4-card.overdue{border-left:1px solid var(--line); box-shadow:inset 4px 0 0 var(--accent), var(--shadow);}
.card.b4-card .zona{border-radius:var(--r-pill); padding:2px 9px;}
.board .day-header{color:var(--b8-ro-txt); padding:2px 4px 0; font-size:.68rem;}
/* columna vacía: solo un «+» circular discontinuo (nada en móvil) */
.empty-col.b8-col-vacia{display:flex; justify-content:center; padding:10px 0; pointer-events:auto;}
.b8-col-mas.btn-ico{background:transparent; border:1.5px dashed var(--line-strong); color:var(--ink-soft); width:44px; height:44px;}
.b8-col-mas.btn-ico:hover, .b8-col-mas.btn-ico:focus-visible{border-style:solid; border-color:var(--ink); color:var(--ink); background:transparent;}
.b8-col-mas .ico-set{width:20px; height:20px;}
@media (max-width:600px){ .empty-col.b8-col-vacia{display:none;} }

/* Postventa: línea de 12 meses en tarjeta, nodos redondeados */
.pv-scroll{border-radius:var(--r-card); background:var(--surface); box-shadow:var(--shadow);}
.pv-nodo-btn.b4-nodo{border-radius:14px; padding:8px 8px 9px;}
.pv-nodo-btn.b4-nodo.vacio{border-color:var(--line);}
.pv-count{border-radius:var(--r-pill);}
.pv-nodo.drag-over{border-radius:14px;}

/* Alquiler: chips de estado */
.b8-chips{display:flex; flex-wrap:wrap; gap:6px; margin-top:8px;}
.b8-chip{
  display:inline-flex; align-items:center; gap:5px; padding:3px 10px 3px 8px; border-radius:var(--r-pill);
  font-size:.72rem; font-weight:700; line-height:1.3; white-space:nowrap; border:1px solid transparent;
}
.b8-chip .ico-set{width:13px; height:13px; flex:none;}
.b8-chip.t-ok{background:var(--b4-ok-bg); color:var(--b4-ok-ink); border-color:var(--b4-ok);}
.b8-chip.t-ro{background:var(--b4-ro-bg); color:var(--b4-ro-ink); border-color:var(--b4-ro);}
.b8-chip.t-az{background:var(--b4-az-bg); color:var(--b4-az-ink); border-color:var(--b4-az);}
.b8-chip.t-am{background:var(--b4-am-bg); color:var(--b4-am-ink); border-color:var(--b4-am);}
.proximo-paso-badge{border-radius:var(--r-pill); padding:4px 12px; color:var(--b8-ro-txt); display:inline-flex; max-width:100%;}

/* ---------- c) Ajustes: cada sección es una tarjeta con icono y ⓘ ---------- */
#tab-ajustes > section.block.b4-card{padding:18px 18px 20px; margin:0 0 18px;}
#tab-ajustes > section.b8-ajuste .section-head{margin-bottom:14px;}
.b8-aj-ico{
  display:inline-flex; align-items:center; justify-content:center; flex:none;
  width:38px; height:38px; border-radius:var(--r-ico); margin-right:2px;
  background:var(--b4-az-bg); color:var(--b4-az-ink);
}
.b8-aj-ico .ico-set{width:19px; height:19px;}
#tab-ajustes .b4-tit-fila{align-items:center;}
#tab-ajustes .b4-tit-fila h2{font-size:1.12rem;}
/* filas-tarjeta: conexiones, solicitudes y usuarios */
#tab-ajustes .conexiones-lista, #tab-ajustes .usuarios-table{
  border:0; background:transparent; display:flex; flex-direction:column; gap:8px; margin-bottom:12px;
}
#tab-ajustes .conexion-row, #tab-ajustes .usuario-row:not(.usuario-head), #tab-ajustes .solicitud-row{
  border:1px solid var(--line); border-radius:14px; background:var(--surface-2);
}
:root[data-theme="light"] #tab-ajustes .conexion-row,
:root[data-theme="light"] #tab-ajustes .usuario-row:not(.usuario-head),
:root[data-theme="light"] #tab-ajustes .solicitud-row{background:var(--bg);}
#tab-ajustes .conexion-row:last-child, #tab-ajustes .usuario-row:last-child, #tab-ajustes .solicitud-row:last-child{border-bottom:1px solid var(--line);}
#tab-ajustes .usuario-row.usuario-head{background:transparent; border:0; padding-top:0; padding-bottom:0;}
#tab-ajustes .usuarios-vacio{border:1px dashed var(--line-strong); border-radius:14px; text-align:center;}
/* píldora de estado */
.conexion-estado{
  display:inline-flex; align-items:center; gap:6px; align-self:flex-start; max-width:100%;
  padding:2px 10px; border-radius:var(--r-pill); background:var(--b4-track); font-size:.74rem; font-weight:600;
}
.conexion-row.conectada .conexion-estado{background:var(--b4-ok-bg); color:var(--b4-ok-ink);}
.conexion-row.conectada .conexion-estado::before{content:""; width:7px; height:7px; border-radius:50%; background:var(--b4-ok); flex:none;}
.conexion-estado[hidden], .copias-drive .conexion-info [hidden]{display:none;}
.copias-drive-ultima.warn{background:var(--b4-ro-bg); color:var(--b8-ro-txt);}
.usuario-row .u-estado.zona{border-radius:var(--r-pill); padding:3px 10px; font-weight:700;}
.u-revocar, .s-rechazar, .u-reactivar, .ne-cancelar{border-radius:var(--r-pill);}
/* lápiz SVG redondo */
.btn-editar-nombre, .btn-editar-email{
  width:30px; height:30px; padding:0; border-radius:var(--r-ico);
  display:inline-flex; align-items:center; justify-content:center;
}
.btn-editar-nombre .ico-set, .btn-editar-email .ico-set{width:15px; height:15px;}
.nombre-edit input{border-radius:var(--r-pill); padding:7px 12px;}
/* selector segmentado (sustituye a los select de rol) */
.b8-seg{
  display:inline-flex; padding:3px; gap:2px; border-radius:var(--r-pill);
  background:var(--b4-track); border:1px solid var(--line); max-width:100%;
}
.b8-seg-op{
  appearance:none; border:0; background:transparent; color:var(--ink-soft); cursor:pointer;
  font:inherit; font-size:.76rem; font-weight:700; padding:6px 12px; border-radius:var(--r-pill);
  min-height:32px; white-space:nowrap;
}
.b8-seg-op.on{background:var(--ink); color:var(--bg);}
.b8-seg-op:focus-visible{outline:2px solid var(--accent); outline-offset:1px;}
.b8-seg-op:disabled{cursor:not-allowed; opacity:.55;}
.ajustes-form .b8-seg{align-self:end; min-height:40px; box-sizing:border-box;}
.ajustes-form .b8-seg-op{flex:1;}
/* Facturación dentro de su tarjeta: grupos más ligeros (sin tarjeta en tarjeta) */
#sec-ajustes-facturacion .b7-aj-grupo{box-shadow:none; background:var(--b4-track); border-color:transparent;}
@media (max-width:600px){
  #tab-ajustes > section.block.b4-card{padding:14px 14px 16px;}
  .usuario-row .b8-seg, .solicitud-row .b8-seg{width:100%;}
  .usuario-row .b8-seg-op, .solicitud-row .b8-seg-op{flex:1;}
}
select.b8-seg-select{
  position:absolute !important; width:1px !important; height:1px !important; min-height:0 !important;
  padding:0 !important; margin:-1px !important; border:0 !important; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;
}
.ajustes-form .b8-seg{justify-self:start;}
.u-revocar, .u-reactivar, .s-rechazar{white-space:nowrap;}

/* ---------- d) Números ---------- */
/* Comisiones pendientes: tarjetas en lugar de tabla */
.comisiones-table.b8-com-grid{
  border:0; background:transparent; display:grid; gap:12px;
  grid-template-columns:repeat(auto-fill, minmax(260px, 1fr));
}
.comision-row.b8-com-card{
  display:flex; flex-direction:column; gap:12px; padding:14px 16px; border-bottom:1px solid var(--line);
  font-size:.85rem; cursor:pointer;
}
.comision-row.b8-com-card:last-child{border-bottom:1px solid var(--line);}
.comision-row.b8-com-card:hover{background:var(--surface); border-color:var(--line-strong);}
.comision-row.b8-com-card:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
.b8-com-cab{display:flex; align-items:center; justify-content:space-between; gap:8px; min-width:0;}
.b8-com-cab .cr-inmueble{font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0;}
.b8-com-cifras{display:grid; grid-template-columns:1fr 1fr; gap:8px;}
.b8-com-c{display:flex; flex-direction:column; gap:2px; padding:8px 12px; border-radius:14px; background:var(--b4-track);}
.b8-com-c small{font-size:.64rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-soft);}
.b8-com-c b{font-size:1.05rem; font-weight:800;}
.b8-com-c:last-child b{color:var(--b4-ok-ink);}
.b8-com-pie{display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap;}
.b8-com-pie .cr-seguimiento{white-space:nowrap;}
.cr-seguimiento .bar{border-radius:var(--r-pill); overflow:hidden; width:44px; height:6px;}
/* Dashboard: rejilla KPI homogénea (sin huecos), anillo con cifra y barras redondeadas */
#tab-dashboard .stats{grid-template-columns:repeat(auto-fit, minmax(170px, 1fr));}
@media (max-width:600px){ #tab-dashboard .stats{grid-template-columns:repeat(2, minmax(0, 1fr));} }
.b8-dash-cartera{display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.3fr); gap:14px; margin-bottom:26px;}
@media (max-width:820px){ .b8-dash-cartera{grid-template-columns:minmax(0, 1fr);} }
.b8-dash-cartera .dash-donut-row{margin:0; gap:20px; justify-content:center;}
.b8-dash-cartera .dash-legend{min-width:160px;}
.b8-dash-trend .stats-subhead{margin:0 0 12px; color:var(--ink-soft); letter-spacing:.06em;}
.dash-donut-seg{stroke-width:11px;}
.dash-donut-seg:hover, .dash-donut-seg:focus-visible{stroke-width:14px !important;}
#dashDonut circle:first-child{stroke-width:11px; stroke:var(--b4-track);}
.b8-donut-n{fill:var(--ink); font:800 22px "Montserrat",sans-serif; text-anchor:middle;}
.b8-donut-l{fill:var(--ink-soft); font:600 8px "Montserrat",sans-serif; text-anchor:middle; text-transform:uppercase; letter-spacing:.06em;}
.dash-legend-row .dot{border-radius:var(--r-ico);}
.dash-trend-row .dtr-track{height:12px; border-radius:var(--r-pill); background:var(--b4-track); overflow:hidden;}
.dash-trend-row .dtr-bar{border-radius:var(--r-pill); overflow:hidden;}
.dash-trend-row .dtr-total{color:var(--ink); font-weight:800; width:28px;}
.comision-row.b8-com-card{align-items:stretch; text-align:left;}
.comision-row.b8-com-card .cr-escritura{display:inline-flex;}
.comision-row.b8-com-card .cr-parte{display:block;}
.comision-row.b8-com-card .cr-seguimiento{display:flex;}
/* KPI en el móvil: rejilla de 2 sin huecos (la última impar ocupa la fila) */
@media (max-width:600px){
  .stats{grid-template-columns:repeat(2, minmax(0, 1fr));}
  .stats > :last-child:nth-child(odd){grid-column:1 / -1;}
}
/* dentro de la tarjeta hay menos ancho: el formulario pasa a 2 columnas antes */
@media (max-width:1000px) and (min-width:761px){
  #tab-ajustes .ajustes-form:not(.ajustes-form-resenas){grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);}
  #tab-ajustes .ajustes-form:not(.ajustes-form-resenas) > .btn{grid-column:1 / -1; justify-self:start;}
}
#tab-ajustes .ajustes-form > *{min-width:0;}
/* Cierres (negocio cerrado): filtros agrupados en una tarjeta, una línea por grupo */
.b4-nc-filtros.b8-filtros{display:flex; flex-direction:column; align-items:stretch; gap:10px; padding:12px 14px; margin-bottom:12px;}
.b8-filtros .b4-nc-grupo{flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; padding:1px;}
.b8-filtros .b4-nc-grupo::-webkit-scrollbar{display:none;}
.b8-filtros .b4-nc-grupo .chip{flex:none; min-height:34px;}
.b8-filtros .b4-nc-buscar{width:100%; box-sizing:border-box; flex:none;}
@media (min-width:901px){
  .b4-nc-filtros.b8-filtros{flex-direction:row; flex-wrap:wrap; align-items:center;}
  .b8-filtros .b4-nc-grupo{padding-right:12px; border-right:1px solid var(--line);}
  .b8-filtros .b4-nc-buscar{flex:1 1 220px; width:auto;}
}

/* ---------- f) Iconos SVG de línea en lugar de emojis ---------- */
.b8-gico{display:inline-flex; vertical-align:-2px; margin-right:5px;}
.b8-gico .ico-set{width:14px; height:14px;}
.b8-dato{display:flex; align-items:center; gap:7px;}
.b8-dato .ico-set{width:15px; height:15px; color:var(--ink-soft); flex:none;}
.dropdown-item .ico-set, #btnEditarPlan .ico-set{width:16px; height:16px; flex:none; margin-right:6px; vertical-align:-3px;}
.tarj-check .ico-set{width:12px; height:12px;}
.tarj-ico .ico-set{width:20px; height:20px;}

/* ---------- g) Textos de una línea ---------- */
.bp-estado:not([hidden]){display:flex; flex-wrap:wrap; gap:6px; margin:0 0 10px !important; max-width:100%;}
.b8-bp-pild{
  display:inline-block; max-width:100%; box-sizing:border-box; padding:4px 12px; border-radius:var(--r-pill);
  background:var(--b4-track); font-size:.76rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.bp-estado.warn .b8-bp-pild{background:var(--b4-ro-bg); color:var(--b8-ro-txt);}
#tab-dashboard .stat .sub-note, #tab-facturacion .stat .sub-note{white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
@media (max-width:600px){
  .bf-hero .briefing-headline{font-size:1.08rem;}
  .bf-cierre{font-size:.86rem;}
}

/* ---------- h) Texto rojo pequeño legible en Noche (≥ 4,5:1). En Día
   --b8-ro-txt es el mismo --accent de siempre. ---------- */
.eyebrow, .day-header, .briefing-mas, .stats-subhead, .field-group .fg-title,
.card .meta .od, .card .meta .od b, .prospecto-card .pc-badges, .live-note.warn,
.month-card .mname .tag, .pilar-card .num, .argum-pilar .ap-titulo, .sync-note.warn,
.backup-row.mal, .copias-drive-ultima.warn, .bp-estado.warn, .icon-btn.danger,
.b4-p360-mes.current .b4-p360-est-t, .proximo-paso-badge{color:var(--b8-ro-txt);}
.month-card .mname .tag{color:var(--accent-ink);}

/* ---------- i) Academia: módulos como tarjetas plegables ---------- */
.modulos-grid{align-items:start;}
.modulo-card.b8-mod{display:flex; flex-direction:column; gap:6px; padding:16px 18px;}
.modulo-card.b8-mod .mod-pilar, .modulo-card.b8-mod .mod-fuente{border-radius:var(--r-pill); padding:2px 10px; align-self:flex-start;}
.modulo-card.b8-mod h3{margin:4px 0 0;}
.b8-mod-resumen{margin:0; font-size:.84rem; color:var(--ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.b8-mod-resumen[hidden], .modulo-card.b8-mod ul[hidden]{display:none;}
.modulo-card.b8-mod ul{margin-top:4px;}
.b8-mod-ver.btn{align-self:flex-start; min-height:34px; padding:6px 18px; margin-top:6px;}
.modulo-card.b8-mod.abierto{border-color:var(--line-strong);}
/* resto de la Academia con el mismo radio de tarjeta */
.energias-card, .mercado-card, .pilar-card{border-radius:var(--r-card); overflow:hidden;}
.argum-objecion{border-left:0; border-radius:14px; padding:10px 14px; background:var(--b4-track); box-shadow:inset 3px 0 0 var(--accent);}
.mercado-card .m{border-radius:14px;}

/* ---------- Negocio → Cierres: último paso del recorrido, con contador del año ---------- */
.chip.b8-chip-cierres .chip-n{background:var(--b4-ok); color:#fff; font-weight:800;}
.chip.b8-chip-cierres.active .chip-n{background:var(--b4-ok); color:#fff;}
:root[data-theme="light"] .chip.b8-chip-cierres .chip-n{background:var(--b4-ok); color:#fff;}

/* ---------- Otros: Briefing sin solapes ---------- */
.bf-hora.b8-hora-tapada{visibility:hidden;}
/* Agenda semana: citas y huecos con el radio común */
.sem-item, .sem-hueco{border-radius:12px;}
/* Fichas: bloques de actividad y avisos redondeados; selects que quedan nativos en píldora */
.activity-block{border-radius:var(--r-card);}
.post-firma-calc{border-radius:14px;}
.overlay .field select:not(.sr-only), #tarMin{border-radius:var(--r-pill);}
/* notas de las cifras: siempre una línea */
.stat .sub-note{white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%;}
.b4-nc-filtros.b8-filtros{min-width:0; max-width:100%; box-sizing:border-box;}
.b8-filtros > *{min-width:0; max-width:100%;}
@media (max-width:600px){
  /* Dinero: la primera cifra (comisiones + tu parte) a todo el ancho; las otras dos, en pareja */
  #dashDineroStats > :first-child{grid-column:1 / -1;}
  #dashDineroStats > :last-child:nth-child(odd){grid-column:auto;}
}
.tarj[aria-checked="true"] .tarj-check{display:flex; align-items:center; justify-content:center;}
.tarj-check .ico-set{width:13px; height:13px; stroke-width:2.6;}
.aparicion-row{border-radius:14px;}
:root[data-theme="light"] #sec-ajustes-facturacion .b7-aj-grupo{background:var(--bg); border-color:var(--line);}

/* ---------- 030 · Ajustes → Usuarios: «Añadir agente» (solo alta por el responsable) ---------- */
#tab-ajustes .usuarios-alta-barra{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:2px 0 16px;}
.btn.usuarios-btn-alta{min-height:48px; padding:0 22px; gap:10px; justify-content:center; font-weight:800; border-radius:999px;}
.usuarios-btn-alta .ico-set{width:20px; height:20px;}
.usuarios-btn-alta.btn-pill::after, .usuarios-btn-alta.btn-pill::before{display:none;}
.alta-usuario-dlg{max-width:480px;}
.alta-usuario-form{display:flex; flex-direction:column; gap:14px; margin:0;}
.alta-usuario-form .field{margin:0;}
.alta-usuario-form .field input{width:100%; border-radius:var(--r-pill);}
.alta-usuario-form .b8-seg{width:100%;}
.alta-usuario-form .b8-seg-op{flex:1;}
.alta-usuario-msg{margin:0; padding:10px 14px; border-radius:14px; background:var(--b4-ro-bg); color:var(--b4-ro-ink); font-size:.85rem; font-weight:700;}
@media (max-width:520px){
  #tab-ajustes .usuarios-alta-barra .usuarios-btn-alta{width:100%;}
  /* Solicitudes antiguas: el rol (Agente · Mentor · Responsable) en su propia línea */
  .solicitud-row > .b8-seg{grid-column:1 / -1;}
}
